ws:alias = [ \b\f\n\r\t\v]; comment:alias = ";" [^\n]*; wsc:alias = ws | comment; number = "-"? ("0" | [1-9][0-9]*) ("." [0-9]+)? ([eE] [+\-]? [0-9]+)?; string = "\"" ([^\\"] | "\\" .)* "\""; symbol = ([^\\ \n\t\b\f\r\v\"()] | "\\" .)+; list = "(" wsc* (expression wsc*)* ")"; expression:alias = number | string | symbol | list; s-expression = expression;