// $ANTLR start "program" // MathExpr.g:148:1: program : ( exprOrFuncDecl ( ';' )* )* ; public MathExprParser.program_return program() // throws RecognitionException [1] { MathExprParser.program_return retval = new MathExprParser.program_return(); retval.Start = input.LT(1); int program_StartIndex = input.Index(); AstNode root_0 = null; IToken char_literal107 = null; MathExprParser.exprOrFuncDecl_return exprOrFuncDecl106 = default(MathExprParser.exprOrFuncDecl_return); AstNode char_literal107_tree=null; try { if ( (state.backtracking > 0) && AlreadyParsedRule(input, 24) ) { return retval; } // MathExpr.g:148:8: ( ( exprOrFuncDecl ( ';' )* )* ) // MathExpr.g:148:10: ( exprOrFuncDecl ( ';' )* )* { root_0 = (AstNode)adaptor.GetNilNode(); // MathExpr.g:148:10: ( exprOrFuncDecl ( ';' )* )* do { int alt26 = 2; int LA26_0 = input.LA(1); if ( (LA26_0 == IF || (LA26_0 >= FOR && LA26_0 <= REPEAT) || LA26_0 == RETURN || LA26_0 == IDENT || LA26_0 == 53) ) { alt26 = 1; } switch (alt26) { case 1 : // MathExpr.g:148:12: exprOrFuncDecl ( ';' )* { PushFollow(FOLLOW_exprOrFuncDecl_in_program1564); exprOrFuncDecl106 = exprOrFuncDecl(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, exprOrFuncDecl106.Tree); // MathExpr.g:148:30: ( ';' )* do { int alt25 = 2; int LA25_0 = input.LA(1); if ( (LA25_0 == 55) ) { alt25 = 1; } switch (alt25) { case 1 : // MathExpr.g:0:0: ';' { char_literal107=(IToken)Match(input,55,FOLLOW_55_in_program1566); if (state.failed) return retval; } break; default: goto loop25; } } while (true); loop25: ; // Stops C# compiler whining that label 'loop25' has no statements } break; default: goto loop26; } } while (true); loop26: ; // Stops C# compiler whining that label 'loop26' has no statements } retval.Stop = input.LT(-1); if ( (state.backtracking==0) ) { retval.Tree = (AstNode)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.Tree, (IToken) retval.Start, (IToken) retval.Stop);} } catch (RecognitionException re) { ReportError(re); Recover(input,re); // Conversion of the second argument necessary, but harmless retval.Tree = (AstNode)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re); } finally { if ( state.backtracking > 0 ) { Memoize(input, 24, program_StartIndex); } } return retval; }
// $ANTLR start "program" // antlr_temp_dir\\MathExpr.g:91:1: program : ( expr )* ; public MathExprParser.program_return program() // throws RecognitionException [1] { MathExprParser.program_return retval = new MathExprParser.program_return(); retval.Start = input.LT(1); object root_0 = null; MathExprParser.expr_return expr18 = default(MathExprParser.expr_return); try { // antlr_temp_dir\\MathExpr.g:91:8: ( ( expr )* ) // antlr_temp_dir\\MathExpr.g:91:10: ( expr )* { root_0 = (object)adaptor.GetNilNode(); // antlr_temp_dir\\MathExpr.g:91:10: ( expr )* do { int alt5 = 2; int LA5_0 = input.LA(1); if ( (LA5_0 == PRINT || LA5_0 == IDENT) ) { alt5 = 1; } switch (alt5) { case 1 : // antlr_temp_dir\\MathExpr.g:91:10: expr { PushFollow(FOLLOW_expr_in_program483); expr18 = expr(); state.followingStackPointer--; adaptor.AddChild(root_0, expr18.Tree); } break; default: goto loop5; } } while (true); loop5: ; // Stops C# compiler whining that label 'loop5' has no statements } retval.Stop = input.LT(-1); retval.Tree = (object)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.Tree, (IToken) retval.Start, (IToken) retval.Stop); } catch (RecognitionException re) { ReportError(re); Recover(input,re); // Conversion of the second argument necessary, but harmless retval.Tree = (object)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re); } finally { } return retval; }
// $ANTLR start "program" // MathExpr.g:208:1: program : exprList ; public MathExprParser.program_return program() // throws RecognitionException [1] { MathExprParser.program_return retval = new MathExprParser.program_return(); retval.Start = input.LT(1); int program_StartIndex = input.Index(); AstNode root_0 = null; MathExprParser.exprList_return exprList178 = default(MathExprParser.exprList_return); try { if ( (state.backtracking > 0) && AlreadyParsedRule(input, 26) ) { return retval; } // MathExpr.g:208:8: ( exprList ) // MathExpr.g:208:11: exprList { root_0 = (AstNode)adaptor.GetNilNode(); PushFollow(FOLLOW_exprList_in_program2093); exprList178 = exprList(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, exprList178.Tree); } retval.Stop = input.LT(-1); if ( (state.backtracking==0) ) { retval.Tree = (AstNode)adaptor.RulePostProcessing(root_0); adaptor.SetTokenBoundaries(retval.Tree, (IToken) retval.Start, (IToken) retval.Stop);} } catch (RecognitionException re) { ReportError(re); Recover(input,re); // Conversion of the second argument necessary, but harmless retval.Tree = (AstNode)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re); } finally { if ( state.backtracking > 0 ) { Memoize(input, 26, program_StartIndex); } } return retval; }