public SimpleBooleanParser.expr_return expr() { EnterRule_expr(); EnterRule("expr", 2); TraceIn("expr", 2); SimpleBooleanParser.expr_return retval = new SimpleBooleanParser.expr_return(this); retval.Start = (IToken)input.LT(1); object root_0 = default(object); SimpleBooleanParser.andexpr_return andexpr2 = default(SimpleBooleanParser.andexpr_return); try { DebugEnterRule(GrammarFileName, "expr"); DebugLocation(19, 14); try { // D:\\projects\\common\\Antlr\\simpleboolean-parser\\SimpleBoolean.g:19:6: ( andexpr ) DebugEnterAlt(1); // D:\\projects\\common\\Antlr\\simpleboolean-parser\\SimpleBoolean.g:19:8: andexpr { root_0 = (object)adaptor.Nil(); DebugLocation(19, 8); PushFollow(Follow._andexpr_in_expr145); andexpr2 = andexpr(); PopFollow(); adaptor.AddChild(root_0, andexpr2.Tree); } retval.Stop = (IToken)input.LT(-1); retval.Tree = (object)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop); } catch (RecognitionException re) { ReportError(re); Recover(input, re); retval.Tree = (object)adaptor.ErrorNode(input, retval.Start, input.LT(-1), re); } finally { TraceOut("expr", 2); LeaveRule("expr", 2); LeaveRule_expr(); } DebugLocation(19, 14); } finally { DebugExitRule(GrammarFileName, "expr"); } return(retval); }
private SimpleBooleanParser.andexpr_return andexpr() { EnterRule_andexpr(); EnterRule("andexpr", 3); TraceIn("andexpr", 3); SimpleBooleanParser.andexpr_return retval = new SimpleBooleanParser.andexpr_return(this); retval.Start = (IToken)input.LT(1); object root_0 = default(object); IToken AND4 = default(IToken); SimpleBooleanParser.orexpr_return orexpr3 = default(SimpleBooleanParser.orexpr_return); SimpleBooleanParser.orexpr_return orexpr5 = default(SimpleBooleanParser.orexpr_return); object AND4_tree = default(object); try { DebugEnterRule(GrammarFileName, "andexpr"); DebugLocation(20, 31); try { // D:\\projects\\common\\Antlr\\simpleboolean-parser\\SimpleBoolean.g:20:9: ( orexpr ( AND orexpr )* ) DebugEnterAlt(1); // D:\\projects\\common\\Antlr\\simpleboolean-parser\\SimpleBoolean.g:20:11: orexpr ( AND orexpr )* { root_0 = (object)adaptor.Nil(); DebugLocation(20, 11); PushFollow(Follow._orexpr_in_andexpr152); orexpr3 = orexpr(); PopFollow(); adaptor.AddChild(root_0, orexpr3.Tree); DebugLocation(20, 18); // D:\\projects\\common\\Antlr\\simpleboolean-parser\\SimpleBoolean.g:20:18: ( AND orexpr )* try { DebugEnterSubRule(1); while (true) { int alt1 = 2; try { DebugEnterDecision(1, false); int LA1_0 = input.LA(1); if ((LA1_0 == AND)) { alt1 = 1; } } finally { DebugExitDecision(1); } switch (alt1) { case 1: DebugEnterAlt(1); // D:\\projects\\common\\Antlr\\simpleboolean-parser\\SimpleBoolean.g:20:19: AND orexpr { DebugLocation(20, 22); AND4 = (IToken)Match(input, AND, Follow._AND_in_andexpr155); AND4_tree = (object)adaptor.Create(AND4); root_0 = (object)adaptor.BecomeRoot(AND4_tree, root_0); DebugLocation(20, 24); PushFollow(Follow._orexpr_in_andexpr158); orexpr5 = orexpr(); PopFollow(); adaptor.AddChild(root_0, orexpr5.Tree); } break; default: goto loop1; } } loop1: ; } finally { DebugExitSubRule(1); } } retval.Stop = (IToken)input.LT(-1); retval.Tree = (object)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop); } catch (RecognitionException re) { ReportError(re); Recover(input, re); retval.Tree = (object)adaptor.ErrorNode(input, retval.Start, input.LT(-1), re); } finally { TraceOut("andexpr", 3); LeaveRule("andexpr", 3); LeaveRule_andexpr(); } DebugLocation(20, 31); } finally { DebugExitRule(GrammarFileName, "andexpr"); } return(retval); }