コード例 #1
0
    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);
    }
コード例 #2
0
    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);
    }