Esempio n. 1
0
    // $ANTLR start "paramlist"
    // abevformula.g:26:0: paramlist : param ( ',' param )* -> ( param )+ ;
    private abevformulaParser.paramlist_return paramlist(  )
    {
        abevformulaParser.paramlist_return retval = new abevformulaParser.paramlist_return();
        retval.start = input.LT(1);
        int        paramlist_StartIndex = input.Index;
        CommonTree root_0 = null;

        IToken char_literal9 = null;

        abevformulaParser.param_return param8  = default(abevformulaParser.param_return);
        abevformulaParser.param_return param10 = default(abevformulaParser.param_return);

        CommonTree char_literal9_tree         = null;
        RewriteRuleITokenStream  stream_8     = new RewriteRuleITokenStream(adaptor, "token 8");
        RewriteRuleSubtreeStream stream_param = new RewriteRuleSubtreeStream(adaptor, "rule param");

        try
        {
            if (state.backtracking > 0 && AlreadyParsedRule(input, 4))
            {
                return(retval);
            }
            // abevformula.g:26:13: ( param ( ',' param )* -> ( param )+ )
            // abevformula.g:26:13: param ( ',' param )*
            {
                PushFollow(Follow._param_in_paramlist143);
                param8 = param();

                state._fsp--;
                if (state.failed)
                {
                    return(retval);
                }
                if (state.backtracking == 0)
                {
                    stream_param.Add(param8.Tree);
                }
                // abevformula.g:26:19: ( ',' param )*
                for ( ; ;)
                {
                    int alt1  = 2;
                    int LA1_0 = input.LA(1);

                    if ((LA1_0 == 8))
                    {
                        alt1 = 1;
                    }


                    switch (alt1)
                    {
                    case 1:
                        // abevformula.g:26:20: ',' param
                    {
                        char_literal9 = (IToken)Match(input, 8, Follow._8_in_paramlist146); if (state.failed)
                        {
                            return(retval);
                        }
                        if (state.backtracking == 0)
                        {
                            stream_8.Add(char_literal9);
                        }

                        PushFollow(Follow._param_in_paramlist148);
                        param10 = param();

                        state._fsp--;
                        if (state.failed)
                        {
                            return(retval);
                        }
                        if (state.backtracking == 0)
                        {
                            stream_param.Add(param10.Tree);
                        }
                    }
                    break;

                    default:
                        goto loop1;
                    }
                }

loop1:
                ;



                {
                    // AST REWRITE
                    // elements: param
                    // token labels:
                    // rule labels: retval
                    // token list labels:
                    // rule list labels:
                    // wildcard labels:
                    if (state.backtracking == 0)
                    {
                        retval.tree = root_0;
                        RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null?retval.tree:null);

                        root_0 = (CommonTree)adaptor.Nil();
                        // 26:32: -> ( param )+
                        {
                            if (!(stream_param.HasNext))
                            {
                                throw new RewriteEarlyExitException();
                            }
                            while (stream_param.HasNext)
                            {
                                adaptor.AddChild(root_0, stream_param.NextTree());
                            }
                            stream_param.Reset();
                        }

                        retval.tree = root_0;
                    }
                }
            }

            retval.stop = input.LT(-1);

            if (state.backtracking == 0)
            {
                retval.tree = (CommonTree)adaptor.RulePostProcessing(root_0);
                adaptor.SetTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re)
        {
            ReportError(re);
            Recover(input, re);
            retval.tree = (CommonTree)adaptor.ErrorNode(input, retval.start, input.LT(-1), re);
        }
        finally
        {
            if (state.backtracking > 0)
            {
                Memoize(input, 4, paramlist_StartIndex);
            }
        }
        return(retval);
    }
Esempio n. 2
0
    // $ANTLR start "funcwithparams"
    // abevformula.g:24:0: funcwithparams : '[' func ',' paramlist ']' -> ^( FUNC func paramlist ) ;
    private abevformulaParser.funcwithparams_return funcwithparams(  )
    {
        abevformulaParser.funcwithparams_return retval = new abevformulaParser.funcwithparams_return();
        retval.start = input.LT(1);
        int        funcwithparams_StartIndex = input.Index;
        CommonTree root_0 = null;

        IToken char_literal2 = null;
        IToken char_literal4 = null;
        IToken char_literal6 = null;

        abevformulaParser.func_return      func3      = default(abevformulaParser.func_return);
        abevformulaParser.paramlist_return paramlist5 = default(abevformulaParser.paramlist_return);

        CommonTree char_literal2_tree             = null;
        CommonTree char_literal4_tree             = null;
        CommonTree char_literal6_tree             = null;
        RewriteRuleITokenStream  stream_9         = new RewriteRuleITokenStream(adaptor, "token 9");
        RewriteRuleITokenStream  stream_8         = new RewriteRuleITokenStream(adaptor, "token 8");
        RewriteRuleITokenStream  stream_10        = new RewriteRuleITokenStream(adaptor, "token 10");
        RewriteRuleSubtreeStream stream_func      = new RewriteRuleSubtreeStream(adaptor, "rule func");
        RewriteRuleSubtreeStream stream_paramlist = new RewriteRuleSubtreeStream(adaptor, "rule paramlist");

        try
        {
            if (state.backtracking > 0 && AlreadyParsedRule(input, 2))
            {
                return(retval);
            }
            // abevformula.g:24:18: ( '[' func ',' paramlist ']' -> ^( FUNC func paramlist ) )
            // abevformula.g:24:18: '[' func ',' paramlist ']'
            {
                char_literal2 = (IToken)Match(input, 9, Follow._9_in_funcwithparams109); if (state.failed)
                {
                    return(retval);
                }
                if (state.backtracking == 0)
                {
                    stream_9.Add(char_literal2);
                }

                PushFollow(Follow._func_in_funcwithparams111);
                func3 = func();

                state._fsp--;
                if (state.failed)
                {
                    return(retval);
                }
                if (state.backtracking == 0)
                {
                    stream_func.Add(func3.Tree);
                }
                char_literal4 = (IToken)Match(input, 8, Follow._8_in_funcwithparams113); if (state.failed)
                {
                    return(retval);
                }
                if (state.backtracking == 0)
                {
                    stream_8.Add(char_literal4);
                }

                PushFollow(Follow._paramlist_in_funcwithparams115);
                paramlist5 = paramlist();

                state._fsp--;
                if (state.failed)
                {
                    return(retval);
                }
                if (state.backtracking == 0)
                {
                    stream_paramlist.Add(paramlist5.Tree);
                }
                char_literal6 = (IToken)Match(input, 10, Follow._10_in_funcwithparams117); if (state.failed)
                {
                    return(retval);
                }
                if (state.backtracking == 0)
                {
                    stream_10.Add(char_literal6);
                }



                {
                    // AST REWRITE
                    // elements: func, paramlist
                    // token labels:
                    // rule labels: retval
                    // token list labels:
                    // rule list labels:
                    // wildcard labels:
                    if (state.backtracking == 0)
                    {
                        retval.tree = root_0;
                        RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null?retval.tree:null);

                        root_0 = (CommonTree)adaptor.Nil();
                        // 24:45: -> ^( FUNC func paramlist )
                        {
                            // abevformula.g:24:48: ^( FUNC func paramlist )
                            {
                                CommonTree root_1 = (CommonTree)adaptor.Nil();
                                root_1 = (CommonTree)adaptor.BecomeRoot((CommonTree)adaptor.Create(FUNC, "FUNC"), root_1);

                                adaptor.AddChild(root_1, stream_func.NextTree());
                                adaptor.AddChild(root_1, stream_paramlist.NextTree());

                                adaptor.AddChild(root_0, root_1);
                            }
                        }

                        retval.tree = root_0;
                    }
                }
            }

            retval.stop = input.LT(-1);

            if (state.backtracking == 0)
            {
                retval.tree = (CommonTree)adaptor.RulePostProcessing(root_0);
                adaptor.SetTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re)
        {
            ReportError(re);
            Recover(input, re);
            retval.tree = (CommonTree)adaptor.ErrorNode(input, retval.start, input.LT(-1), re);
        }
        finally
        {
            if (state.backtracking > 0)
            {
                Memoize(input, 2, funcwithparams_StartIndex);
            }
        }
        return(retval);
    }