1*16467b97STreehugger Robot// @@ANTLR Tool Options@@: -trace 2*16467b97STreehugger Robottree grammar t047treeparserWalker; 3*16467b97STreehugger Robotoptions { 4*16467b97STreehugger Robot language=JavaScript; 5*16467b97STreehugger Robot tokenVocab=t047treeparser; 6*16467b97STreehugger Robot ASTLabelType=CommonTree; 7*16467b97STreehugger Robot} 8*16467b97STreehugger Robot 9*16467b97STreehugger Robotprogram 10*16467b97STreehugger Robot : declaration+ 11*16467b97STreehugger Robot ; 12*16467b97STreehugger Robot 13*16467b97STreehugger Robotdeclaration 14*16467b97STreehugger Robot : variable 15*16467b97STreehugger Robot | ^(FUNC_DECL functionHeader) 16*16467b97STreehugger Robot | ^(FUNC_DEF functionHeader block) 17*16467b97STreehugger Robot ; 18*16467b97STreehugger Robot 19*16467b97STreehugger Robotvariable returns [res] 20*16467b97STreehugger Robot : ^(VAR_DEF type declarator) 21*16467b97STreehugger Robot { 22*16467b97STreehugger Robot $res = $declarator.text; 23*16467b97STreehugger Robot } 24*16467b97STreehugger Robot ; 25*16467b97STreehugger Robot 26*16467b97STreehugger Robotdeclarator 27*16467b97STreehugger Robot : ID 28*16467b97STreehugger Robot ; 29*16467b97STreehugger Robot 30*16467b97STreehugger RobotfunctionHeader 31*16467b97STreehugger Robot : ^(FUNC_HDR type ID formalParameter+) 32*16467b97STreehugger Robot ; 33*16467b97STreehugger Robot 34*16467b97STreehugger RobotformalParameter 35*16467b97STreehugger Robot : ^(ARG_DEF type declarator) 36*16467b97STreehugger Robot ; 37*16467b97STreehugger Robot 38*16467b97STreehugger Robottype 39*16467b97STreehugger Robot : 'int' 40*16467b97STreehugger Robot | 'char' 41*16467b97STreehugger Robot | 'void' 42*16467b97STreehugger Robot | ID 43*16467b97STreehugger Robot ; 44*16467b97STreehugger Robot 45*16467b97STreehugger Robotblock 46*16467b97STreehugger Robot : ^(BLOCK variable* stat*) 47*16467b97STreehugger Robot ; 48*16467b97STreehugger Robot 49*16467b97STreehugger Robotstat: forStat 50*16467b97STreehugger Robot | expr 51*16467b97STreehugger Robot | block 52*16467b97STreehugger Robot ; 53*16467b97STreehugger Robot 54*16467b97STreehugger RobotforStat 55*16467b97STreehugger Robot : ^('for' expr expr expr block) 56*16467b97STreehugger Robot ; 57*16467b97STreehugger Robot 58*16467b97STreehugger Robotexpr: ^(EQEQ expr expr) 59*16467b97STreehugger Robot | ^(LT expr expr) 60*16467b97STreehugger Robot | ^(PLUS expr expr) 61*16467b97STreehugger Robot | ^(EQ ID expr) 62*16467b97STreehugger Robot | atom 63*16467b97STreehugger Robot ; 64*16467b97STreehugger Robot 65*16467b97STreehugger Robotatom 66*16467b97STreehugger Robot : ID 67*16467b97STreehugger Robot | INT 68*16467b97STreehugger Robot ; 69