parser grammar SymTabLoader; /* Unserializes an AST serialized with toStringTree - uses the input lexer symbols used to create the ast initially. Note: EVEN abstract tokens need to have a lexical representation for this to work.*/ options { tokenVocab = InputSyntax; output = AST; } program : module ; module : '(' firstSymb subTree* ')' -> ^(firstSymb subTree*) ; firstSymb : ~( '(' | ')' ) ; subTree : firstSymb | module ;