string: '`' {.} '`' | '"' {.} '"'; _bin_digit: '0' - '1'; _oct_digit: _bin_digit | '2' - '7'; _dec_digit: _oct_digit | '8' - '9'; _hex_digit: _dec_digit | 'A' - 'F' | 'a' - 'f'; number: ['-' | '+'] '0' 'b' _bin_digit {_bin_digit | '_'} | ['-' | '+'] '0' 'o' _oct_digit {_oct_digit | '_'} | ['-' | '+'] _dec_digit {_dec_digit | '_'} | ['-' | '+'] '0' 'x' _hex_digit {_hex_digit | '_'}; _name_initial: 'A' - 'Z' | 'a' - 'z' | '_' | '~' | '!' | '@' | '#' | '$' | '%' | '^' | '&' | '*' | '-' | '_' | '+' | '=' | '?' | '/' | '.' | '\''; _name_char: _name_initial | _dec_digit; name: _name_initial {_name_char}; !whitespace: ' ' | '\t' | '\n' | '\r'; !comment: ';' {.} '\n'; << import ( "azalea/schema/ast" "azalea/schema/token" ) >> Schema: ExprList; ExprList : Expr <> | ExprList Expr <> ; ValList : Val <> | ValList Val <> ; Val : string <> | number <> | name <> | Expr <> ; Expr : "(" name Val Val ")" <> | "(" name Val ")" <> | "(" name ")" <> | "(" "." ValList ")" <> ;