// $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); }
// $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); }