SingleLineComment = "//" (!("\n") .)* "\n" => [[ ignore ]] MultiLineComment = "/*" (!("*/") .)* "*/" => [[ ignore ]] Space = " " | "\t" | "\r" | "\n" | SingleLineComment | MultiLineComment Punctuation = "(" | ")" | "[" | "]" | ";" String = '"' (!('"') .) '"' => [[ second >string token-string boa ]] Word = !(String) (!(Space | Punctuation) .)+ => [[ >string token-word boa ]] Tok = Spaces (Number | Word | String | Punctuation ) Toks = Tok* Spaces