CHAR : [\32-\126] # except ', " ESCAPE : \n | \t | \' | \" INT : -?[0-9]+ DOUBLE : -?[0-9]+.[0-9]+ STRING : " CHAR* " ID : [a-zA-Z_][a-zA-Z_0-9]* EXPR : FUNC | VAR | APP | ( EXPR ) | INT | DOUBLE | STRING tuple : ( EXPR (, EXPR)* ) list : [ EXPR (, EXPR)* ] FUNC : (\ ID)? . EXPR VAR : ID APP : EXPR EXPR assignmnets : VAR = EXPR ;