WHITESPACE = _{ " " | "\t" | "\r" | "\n" }
COMMENT = _{ ";" ~ (!"\n" ~ ANY)* }
file = { SOI ~ s_expr* ~ EOI }
s_expr = _{ list | atom }
list = { "(" ~ s_expr* ~ ")" }
atom = _{ number | boolean | symbol | string }
number = @{ "-"? ~ ASCII_DIGIT+ ~ ("." ~ ASCII_DIGIT+)? }
boolean = @{ "true" | "false" }
symbol = @{ (ASCII_ALPHANUMERIC | ":" | "_" | "-" | "!" | "$" | "%" | "&" | "*" | "+" | "." | "/" | "<" | "=" | ">" | "?" | "@" | "^" | "~")+ }
string = ${ "\"" ~ (!"\"" ~ ANY)* ~ "\"" }