// $ANTLR start "forStatementInitialiserPart" // JavaScript.g:138:1: forStatementInitialiserPart : ( expression -> ^( EXPRESSIONSTATEMENT expression ) | 'var' ( LT )* variableDeclarationList ); public JavaScriptParser.forStatementInitialiserPart_return forStatementInitialiserPart() // throws RecognitionException [1] { JavaScriptParser.forStatementInitialiserPart_return retval = new JavaScriptParser.forStatementInitialiserPart_return(); retval.Start = input.LT(1); object root_0 = null; IToken string_literal136 = null; IToken LT137 = null; JavaScriptParser.expression_return expression135 = default(JavaScriptParser.expression_return); JavaScriptParser.variableDeclarationList_return variableDeclarationList138 = default(JavaScriptParser.variableDeclarationList_return); object string_literal136_tree=null; object LT137_tree=null; RewriteRuleSubtreeStream stream_expression = new RewriteRuleSubtreeStream(adaptor,"rule expression"); try { // JavaScript.g:139:2: ( expression -> ^( EXPRESSIONSTATEMENT expression ) | 'var' ( LT )* variableDeclarationList ) int alt73 = 2; int LA73_0 = input.LA(1); if ( ((LA73_0 >= Identifier && LA73_0 <= RegexLiteral) || (LA73_0 >= 39 && LA73_0 <= 40) || LA73_0 == 42 || (LA73_0 >= 66 && LA73_0 <= 67) || (LA73_0 >= 99 && LA73_0 <= 100) || (LA73_0 >= 104 && LA73_0 <= 114)) ) { alt73 = 1; } else if ( (LA73_0 == 45) ) { alt73 = 2; } else { if ( state.backtracking > 0 ) {state.failed = true; return retval;} NoViableAltException nvae_d73s0 = new NoViableAltException("", 73, 0, input); throw nvae_d73s0; } switch (alt73) { case 1 : // JavaScript.g:139:4: expression { PushFollow(FOLLOW_expression_in_forStatementInitialiserPart1113); expression135 = expression(); state.followingStackPointer--; if (state.failed) return retval; if ( (state.backtracking==0) ) stream_expression.Add(expression135.Tree); // AST REWRITE // elements: expression // 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 = (object)adaptor.GetNilNode(); // 139:16: -> ^( EXPRESSIONSTATEMENT expression ) { // JavaScript.g:139:19: ^( EXPRESSIONSTATEMENT expression ) { object root_1 = (object)adaptor.GetNilNode(); root_1 = (object)adaptor.BecomeRoot(new ExpressionStatement(EXPRESSIONSTATEMENT), root_1); adaptor.AddChild(root_1, stream_expression.NextTree()); adaptor.AddChild(root_0, root_1); } } retval.Tree = root_0;retval.Tree = root_0;} } break; case 2 : // JavaScript.g:140:4: 'var' ( LT )* variableDeclarationList { root_0 = (object)adaptor.GetNilNode(); string_literal136=(IToken)Match(input,45,FOLLOW_45_in_forStatementInitialiserPart1130); if (state.failed) return retval; if ( state.backtracking == 0 ) {string_literal136_tree = new VarDeclStatement(string_literal136) ; root_0 = (object)adaptor.BecomeRoot(string_literal136_tree, root_0); } // JavaScript.g:140:31: ( LT )* do { int alt72 = 2; int LA72_0 = input.LA(1); if ( (LA72_0 == LT) ) { alt72 = 1; } switch (alt72) { case 1 : // JavaScript.g:140:31: LT { LT137=(IToken)Match(input,LT,FOLLOW_LT_in_forStatementInitialiserPart1136); if (state.failed) return retval; } break; default: goto loop72; } } while (true); loop72: ; // Stops C# compiler whining that label 'loop72' has no statements PushFollow(FOLLOW_variableDeclarationList_in_forStatementInitialiserPart1140); variableDeclarationList138 = variableDeclarationList(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, variableDeclarationList138.Tree); } break; } retval.Stop = input.LT(-1); if ( (state.backtracking==0) ) { 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 "variableStatement" // JavaScript.g:82:1: variableStatement : 'var' ( LT )* variableDeclarationList statementEnd ; public JavaScriptParser.variableStatement_return variableStatement() // throws RecognitionException [1] { JavaScriptParser.variableStatement_return retval = new JavaScriptParser.variableStatement_return(); retval.Start = input.LT(1); object root_0 = null; IToken string_literal63 = null; IToken LT64 = null; JavaScriptParser.variableDeclarationList_return variableDeclarationList65 = default(JavaScriptParser.variableDeclarationList_return); JavaScriptParser.statementEnd_return statementEnd66 = default(JavaScriptParser.statementEnd_return); object string_literal63_tree=null; object LT64_tree=null; try { // JavaScript.g:83:2: ( 'var' ( LT )* variableDeclarationList statementEnd ) // JavaScript.g:83:4: 'var' ( LT )* variableDeclarationList statementEnd { root_0 = (object)adaptor.GetNilNode(); string_literal63=(IToken)Match(input,45,FOLLOW_45_in_variableStatement604); if (state.failed) return retval; if ( state.backtracking == 0 ) {string_literal63_tree = new VarDeclStatement(string_literal63) ; root_0 = (object)adaptor.BecomeRoot(string_literal63_tree, root_0); } // JavaScript.g:83:31: ( LT )* do { int alt36 = 2; int LA36_0 = input.LA(1); if ( (LA36_0 == LT) ) { alt36 = 1; } switch (alt36) { case 1 : // JavaScript.g:83:31: LT { LT64=(IToken)Match(input,LT,FOLLOW_LT_in_variableStatement610); if (state.failed) return retval; } break; default: goto loop36; } } while (true); loop36: ; // Stops C# compiler whining that label 'loop36' has no statements PushFollow(FOLLOW_variableDeclarationList_in_variableStatement614); variableDeclarationList65 = variableDeclarationList(); state.followingStackPointer--; if (state.failed) return retval; if ( state.backtracking == 0 ) adaptor.AddChild(root_0, variableDeclarationList65.Tree); PushFollow(FOLLOW_statementEnd_in_variableStatement616); statementEnd66 = statementEnd(); state.followingStackPointer--; if (state.failed) return retval; } retval.Stop = input.LT(-1); if ( (state.backtracking==0) ) { 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; }