// $ANTLR start "ifelse" // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:250:1: ifelse returns [IfStatementElement ret] : ( 'if' LEFTBRACE ( varorstruct ) ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) (e13= var_int_or_double_literal | e14= string_literal ) RIGHTBRACE LEFTPARANTHESIS ( (e11= ifloop ) | ) RIGHTPARANTHESIS ) ( 'else' LEFTPARANTHESIS ( (e12= ifloop ) | ) RIGHTPARANTHESIS )? ; public spinachParser.ifelse_return ifelse() // throws RecognitionException [1] { spinachParser.ifelse_return retval = new spinachParser.ifelse_return(); retval.Start = input.LT(1); object root_0 = null; IToken string_literal107 = null; IToken LEFTBRACE108 = null; IToken string_literal110 = null; IToken string_literal111 = null; IToken char_literal112 = null; IToken string_literal113 = null; IToken char_literal114 = null; IToken string_literal115 = null; IToken RIGHTBRACE116 = null; IToken LEFTPARANTHESIS117 = null; IToken RIGHTPARANTHESIS118 = null; IToken string_literal119 = null; IToken LEFTPARANTHESIS120 = null; IToken RIGHTPARANTHESIS121 = null; spinachParser.var_int_or_double_literal_return e13 = null; spinachParser.string_literal_return e14 = null; spinachParser.ifloop_return e11 = null; spinachParser.ifloop_return e12 = null; spinachParser.varorstruct_return varorstruct109 = null; object string_literal107_tree=null; object LEFTBRACE108_tree=null; object string_literal110_tree=null; object string_literal111_tree=null; object char_literal112_tree=null; object string_literal113_tree=null; object char_literal114_tree=null; object string_literal115_tree=null; object RIGHTBRACE116_tree=null; object LEFTPARANTHESIS117_tree=null; object RIGHTPARANTHESIS118_tree=null; object string_literal119_tree=null; object LEFTPARANTHESIS120_tree=null; object RIGHTPARANTHESIS121_tree=null; retval.ret = new IfStatementElement(); try { // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:254:1: ( ( 'if' LEFTBRACE ( varorstruct ) ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) (e13= var_int_or_double_literal | e14= string_literal ) RIGHTBRACE LEFTPARANTHESIS ( (e11= ifloop ) | ) RIGHTPARANTHESIS ) ( 'else' LEFTPARANTHESIS ( (e12= ifloop ) | ) RIGHTPARANTHESIS )? ) // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:254:2: ( 'if' LEFTBRACE ( varorstruct ) ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) (e13= var_int_or_double_literal | e14= string_literal ) RIGHTBRACE LEFTPARANTHESIS ( (e11= ifloop ) | ) RIGHTPARANTHESIS ) ( 'else' LEFTPARANTHESIS ( (e12= ifloop ) | ) RIGHTPARANTHESIS )? { root_0 = (object)adaptor.GetNilNode(); // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:254:2: ( 'if' LEFTBRACE ( varorstruct ) ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) (e13= var_int_or_double_literal | e14= string_literal ) RIGHTBRACE LEFTPARANTHESIS ( (e11= ifloop ) | ) RIGHTPARANTHESIS ) // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:254:3: 'if' LEFTBRACE ( varorstruct ) ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) (e13= var_int_or_double_literal | e14= string_literal ) RIGHTBRACE LEFTPARANTHESIS ( (e11= ifloop ) | ) RIGHTPARANTHESIS { string_literal107=(IToken)Match(input,40,FOLLOW_40_in_ifelse1447); string_literal107_tree = (object)adaptor.Create(string_literal107); adaptor.AddChild(root_0, string_literal107_tree); LEFTBRACE108=(IToken)Match(input,LEFTBRACE,FOLLOW_LEFTBRACE_in_ifelse1449); LEFTBRACE108_tree = (object)adaptor.Create(LEFTBRACE108); adaptor.AddChild(root_0, LEFTBRACE108_tree); // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:254:18: ( varorstruct ) // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:254:19: varorstruct { PushFollow(FOLLOW_varorstruct_in_ifelse1452); varorstruct109 = varorstruct(); state.followingStackPointer--; adaptor.AddChild(root_0, varorstruct109.Tree); retval.ret.setLhs(((varorstruct109 != null) ? varorstruct109.ret : null)); } // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:254:69: ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) int alt32 = 6; switch ( input.LA(1) ) { case EQUALITYEXPRESSION: { alt32 = 1; } break; case NONEQUALITYEXPRESSION: { alt32 = 2; } break; case LESSTHANEXPRESSION: { alt32 = 3; } break; case LESSTHANEQUALTOEXPRESSION: { alt32 = 4; } break; case GREATERTHANEXPRESSION: { alt32 = 5; } break; case GREATERTHANEQUALTOEXPRESSION: { alt32 = 6; } break; default: NoViableAltException nvae_d32s0 = new NoViableAltException("", 32, 0, input); throw nvae_d32s0; } switch (alt32) { case 1 : // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:255:7: '==' { string_literal110=(IToken)Match(input,EQUALITYEXPRESSION,FOLLOW_EQUALITYEXPRESSION_in_ifelse1463); string_literal110_tree = (object)adaptor.Create(string_literal110); adaptor.AddChild(root_0, string_literal110_tree); retval.ret.OP = "eq"; } break; case 2 : // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:256:7: '!=' { string_literal111=(IToken)Match(input,NONEQUALITYEXPRESSION,FOLLOW_NONEQUALITYEXPRESSION_in_ifelse1473); string_literal111_tree = (object)adaptor.Create(string_literal111); adaptor.AddChild(root_0, string_literal111_tree); retval.ret.OP = "ne"; } break; case 3 : // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:257:7: '<' { char_literal112=(IToken)Match(input,LESSTHANEXPRESSION,FOLLOW_LESSTHANEXPRESSION_in_ifelse1483); char_literal112_tree = (object)adaptor.Create(char_literal112); adaptor.AddChild(root_0, char_literal112_tree); retval.ret.OP = "lt"; } break; case 4 : // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:258:7: '<=' { string_literal113=(IToken)Match(input,LESSTHANEQUALTOEXPRESSION,FOLLOW_LESSTHANEQUALTOEXPRESSION_in_ifelse1494); string_literal113_tree = (object)adaptor.Create(string_literal113); adaptor.AddChild(root_0, string_literal113_tree); retval.ret.OP = "le"; } break; case 5 : // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:259:7: '>' { char_literal114=(IToken)Match(input,GREATERTHANEXPRESSION,FOLLOW_GREATERTHANEXPRESSION_in_ifelse1504); char_literal114_tree = (object)adaptor.Create(char_literal114); adaptor.AddChild(root_0, char_literal114_tree); retval.ret.OP = "gt"; } break; case 6 : // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:260:7: '>=' { string_literal115=(IToken)Match(input,GREATERTHANEQUALTOEXPRESSION,FOLLOW_GREATERTHANEQUALTOEXPRESSION_in_ifelse1515); string_literal115_tree = (object)adaptor.Create(string_literal115); adaptor.AddChild(root_0, string_literal115_tree); retval.ret.OP = "ge"; } break; } // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:262:1: (e13= var_int_or_double_literal | e14= string_literal ) int alt33 = 2; int LA33_0 = input.LA(1); if ( ((LA33_0 >= VARIABLE && LA33_0 <= DOUBLE_LITERAL)) ) { alt33 = 1; } else if ( (LA33_0 == 27) ) { alt33 = 2; } else { NoViableAltException nvae_d33s0 = new NoViableAltException("", 33, 0, input); throw nvae_d33s0; } switch (alt33) { case 1 : // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:262:2: e13= var_int_or_double_literal { PushFollow(FOLLOW_var_int_or_double_literal_in_ifelse1528); e13 = var_int_or_double_literal(); state.followingStackPointer--; adaptor.AddChild(root_0, e13.Tree); retval.ret.setRhs(((e13 != null) ? e13.ret : null)); } break; case 2 : // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:262:64: e14= string_literal { PushFollow(FOLLOW_string_literal_in_ifelse1535); e14 = string_literal(); state.followingStackPointer--; adaptor.AddChild(root_0, e14.Tree); retval.ret.setRhs(((e14 != null) ? e14.ret : null)); } break; } RIGHTBRACE116=(IToken)Match(input,RIGHTBRACE,FOLLOW_RIGHTBRACE_in_ifelse1539); RIGHTBRACE116_tree = (object)adaptor.Create(RIGHTBRACE116); adaptor.AddChild(root_0, RIGHTBRACE116_tree); LEFTPARANTHESIS117=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_ifelse1541); LEFTPARANTHESIS117_tree = (object)adaptor.Create(LEFTPARANTHESIS117); adaptor.AddChild(root_0, LEFTPARANTHESIS117_tree); // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:262:143: ( (e11= ifloop ) | ) int alt34 = 2; int LA34_0 = input.LA(1); if ( (LA34_0 == VARIABLE || LA34_0 == VARTYPE || LA34_0 == STRINGTYPE || LA34_0 == 28 || LA34_0 == 32 || (LA34_0 >= 35 && LA34_0 <= 36) || LA34_0 == 40 || LA34_0 == 42 || (LA34_0 >= 46 && LA34_0 <= 48) || (LA34_0 >= 52 && LA34_0 <= 56)) ) { alt34 = 1; } else if ( (LA34_0 == RIGHTPARANTHESIS) ) { alt34 = 2; } else { NoViableAltException nvae_d34s0 = new NoViableAltException("", 34, 0, input); throw nvae_d34s0; } switch (alt34) { case 1 : // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:262:144: (e11= ifloop ) { // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:262:144: (e11= ifloop ) // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:262:145: e11= ifloop { PushFollow(FOLLOW_ifloop_in_ifelse1549); e11 = ifloop(); state.followingStackPointer--; adaptor.AddChild(root_0, e11.Tree); retval.ret.IFCODE = ((e11 != null) ? e11.ret : null); } } break; case 2 : // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:262:190: { } break; } RIGHTPARANTHESIS118=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_ifelse1554); RIGHTPARANTHESIS118_tree = (object)adaptor.Create(RIGHTPARANTHESIS118); adaptor.AddChild(root_0, RIGHTPARANTHESIS118_tree); } // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:262:208: ( 'else' LEFTPARANTHESIS ( (e12= ifloop ) | ) RIGHTPARANTHESIS )? int alt36 = 2; int LA36_0 = input.LA(1); if ( (LA36_0 == 41) ) { alt36 = 1; } switch (alt36) { case 1 : // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:262:209: 'else' LEFTPARANTHESIS ( (e12= ifloop ) | ) RIGHTPARANTHESIS { string_literal119=(IToken)Match(input,41,FOLLOW_41_in_ifelse1557); string_literal119_tree = (object)adaptor.Create(string_literal119); adaptor.AddChild(root_0, string_literal119_tree); LEFTPARANTHESIS120=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_ifelse1560); LEFTPARANTHESIS120_tree = (object)adaptor.Create(LEFTPARANTHESIS120); adaptor.AddChild(root_0, LEFTPARANTHESIS120_tree); // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:262:233: ( (e12= ifloop ) | ) int alt35 = 2; int LA35_0 = input.LA(1); if ( (LA35_0 == VARIABLE || LA35_0 == VARTYPE || LA35_0 == STRINGTYPE || LA35_0 == 28 || LA35_0 == 32 || (LA35_0 >= 35 && LA35_0 <= 36) || LA35_0 == 40 || LA35_0 == 42 || (LA35_0 >= 46 && LA35_0 <= 48) || (LA35_0 >= 52 && LA35_0 <= 56)) ) { alt35 = 1; } else if ( (LA35_0 == RIGHTPARANTHESIS) ) { alt35 = 2; } else { NoViableAltException nvae_d35s0 = new NoViableAltException("", 35, 0, input); throw nvae_d35s0; } switch (alt35) { case 1 : // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:262:234: (e12= ifloop ) { // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:262:234: (e12= ifloop ) // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:262:235: e12= ifloop { PushFollow(FOLLOW_ifloop_in_ifelse1569); e12 = ifloop(); state.followingStackPointer--; adaptor.AddChild(root_0, e12.Tree); retval.ret.ELSECODE = ((e12 != null) ? e12.ret : null); } } break; case 2 : // C:\\Documents and Settings\\Administrator\\Desktop\\Spinach\\InterpreterFrontEnd\\spinach.g:262:283: { } break; } RIGHTPARANTHESIS121=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_ifelse1575); RIGHTPARANTHESIS121_tree = (object)adaptor.Create(RIGHTPARANTHESIS121); adaptor.AddChild(root_0, RIGHTPARANTHESIS121_tree); } break; } } 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; }
// throws RecognitionException [1] // $ANTLR start "ifelse" // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:176:1: ifelse returns [IfStatementElement ret] : ( 'if' LEFTBRACE ( equality | nonequality ) RIGHTBRACE LEFTPARANTHESIS ( (e11= program ) | ) RIGHTPARANTHESIS ) ( 'else' LEFTPARANTHESIS ( (e12= program ) | ) RIGHTPARANTHESIS )? ; public spinachParser.ifelse_return ifelse() { spinachParser.ifelse_return retval = new spinachParser.ifelse_return(); retval.Start = input.LT(1); object root_0 = null; IToken string_literal83 = null; IToken LEFTBRACE84 = null; IToken RIGHTBRACE87 = null; IToken LEFTPARANTHESIS88 = null; IToken RIGHTPARANTHESIS89 = null; IToken string_literal90 = null; IToken LEFTPARANTHESIS91 = null; IToken RIGHTPARANTHESIS92 = null; spinachParser.program_return e11 = null; spinachParser.program_return e12 = null; spinachParser.equality_return equality85 = null; spinachParser.nonequality_return nonequality86 = null; object string_literal83_tree=null; object LEFTBRACE84_tree=null; object RIGHTBRACE87_tree=null; object LEFTPARANTHESIS88_tree=null; object RIGHTPARANTHESIS89_tree=null; object string_literal90_tree=null; object LEFTPARANTHESIS91_tree=null; object RIGHTPARANTHESIS92_tree=null; retval.ret = new IfStatementElement(); try { // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:1: ( ( 'if' LEFTBRACE ( equality | nonequality ) RIGHTBRACE LEFTPARANTHESIS ( (e11= program ) | ) RIGHTPARANTHESIS ) ( 'else' LEFTPARANTHESIS ( (e12= program ) | ) RIGHTPARANTHESIS )? ) // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:2: ( 'if' LEFTBRACE ( equality | nonequality ) RIGHTBRACE LEFTPARANTHESIS ( (e11= program ) | ) RIGHTPARANTHESIS ) ( 'else' LEFTPARANTHESIS ( (e12= program ) | ) RIGHTPARANTHESIS )? { root_0 = (object)adaptor.GetNilNode(); // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:2: ( 'if' LEFTBRACE ( equality | nonequality ) RIGHTBRACE LEFTPARANTHESIS ( (e11= program ) | ) RIGHTPARANTHESIS ) // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:3: 'if' LEFTBRACE ( equality | nonequality ) RIGHTBRACE LEFTPARANTHESIS ( (e11= program ) | ) RIGHTPARANTHESIS { string_literal83=(IToken)Match(input,36,FOLLOW_36_in_ifelse949); string_literal83_tree = (object)adaptor.Create(string_literal83); adaptor.AddChild(root_0, string_literal83_tree); LEFTBRACE84=(IToken)Match(input,LEFTBRACE,FOLLOW_LEFTBRACE_in_ifelse951); LEFTBRACE84_tree = (object)adaptor.Create(LEFTBRACE84); adaptor.AddChild(root_0, LEFTBRACE84_tree); // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:18: ( equality | nonequality ) int alt16 = 2; int LA16_0 = input.LA(1); if ( (LA16_0 == VARIABLE) ) { int LA16_1 = input.LA(2); if ( (LA16_1 == EQUALITYEXPRESSION) ) { alt16 = 1; } else if ( (LA16_1 == NONEQUALITYEXPRESSION) ) { alt16 = 2; } else { NoViableAltException nvae_d16s1 = new NoViableAltException("", 16, 1, input); throw nvae_d16s1; } } else { NoViableAltException nvae_d16s0 = new NoViableAltException("", 16, 0, input); throw nvae_d16s0; } switch (alt16) { case 1 : // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:19: equality { PushFollow(FOLLOW_equality_in_ifelse954); equality85 = equality(); state.followingStackPointer--; adaptor.AddChild(root_0, equality85.Tree); retval.ret.CONDITION = ((equality85 != null) ? equality85.ret : null); } break; case 2 : // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:67: nonequality { PushFollow(FOLLOW_nonequality_in_ifelse957); nonequality86 = nonequality(); state.followingStackPointer--; adaptor.AddChild(root_0, nonequality86.Tree); retval.ret.CONDITION = ((nonequality86 != null) ? nonequality86.ret : null); } break; } RIGHTBRACE87=(IToken)Match(input,RIGHTBRACE,FOLLOW_RIGHTBRACE_in_ifelse961); RIGHTBRACE87_tree = (object)adaptor.Create(RIGHTBRACE87); adaptor.AddChild(root_0, RIGHTBRACE87_tree); LEFTPARANTHESIS88=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_ifelse963); LEFTPARANTHESIS88_tree = (object)adaptor.Create(LEFTPARANTHESIS88); adaptor.AddChild(root_0, LEFTPARANTHESIS88_tree); // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:149: ( (e11= program ) | ) int alt17 = 2; int LA17_0 = input.LA(1); if ( (LA17_0 == VARIABLE || LA17_0 == VARTYPE || LA17_0 == STRINGTYPE || LA17_0 == 23 || (LA17_0 >= 29 && LA17_0 <= 33) || LA17_0 == 36 || (LA17_0 >= 38 && LA17_0 <= 46)) ) { alt17 = 1; } else if ( (LA17_0 == RIGHTPARANTHESIS) ) { alt17 = 2; } else { NoViableAltException nvae_d17s0 = new NoViableAltException("", 17, 0, input); throw nvae_d17s0; } switch (alt17) { case 1 : // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:150: (e11= program ) { // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:150: (e11= program ) // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:151: e11= program { PushFollow(FOLLOW_program_in_ifelse971); e11 = program(); state.followingStackPointer--; adaptor.AddChild(root_0, e11.Tree); retval.ret.IFCODE = ((e11 != null) ? e11.ret : null); } } break; case 2 : // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:197: { } break; } RIGHTPARANTHESIS89=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_ifelse976); RIGHTPARANTHESIS89_tree = (object)adaptor.Create(RIGHTPARANTHESIS89); adaptor.AddChild(root_0, RIGHTPARANTHESIS89_tree); } // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:215: ( 'else' LEFTPARANTHESIS ( (e12= program ) | ) RIGHTPARANTHESIS )? int alt19 = 2; int LA19_0 = input.LA(1); if ( (LA19_0 == 37) ) { alt19 = 1; } switch (alt19) { case 1 : // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:216: 'else' LEFTPARANTHESIS ( (e12= program ) | ) RIGHTPARANTHESIS { string_literal90=(IToken)Match(input,37,FOLLOW_37_in_ifelse979); string_literal90_tree = (object)adaptor.Create(string_literal90); adaptor.AddChild(root_0, string_literal90_tree); LEFTPARANTHESIS91=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_ifelse982); LEFTPARANTHESIS91_tree = (object)adaptor.Create(LEFTPARANTHESIS91); adaptor.AddChild(root_0, LEFTPARANTHESIS91_tree); // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:240: ( (e12= program ) | ) int alt18 = 2; int LA18_0 = input.LA(1); if ( (LA18_0 == VARIABLE || LA18_0 == VARTYPE || LA18_0 == STRINGTYPE || LA18_0 == 23 || (LA18_0 >= 29 && LA18_0 <= 33) || LA18_0 == 36 || (LA18_0 >= 38 && LA18_0 <= 46)) ) { alt18 = 1; } else if ( (LA18_0 == RIGHTPARANTHESIS) ) { alt18 = 2; } else { NoViableAltException nvae_d18s0 = new NoViableAltException("", 18, 0, input); throw nvae_d18s0; } switch (alt18) { case 1 : // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:241: (e12= program ) { // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:241: (e12= program ) // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:242: e12= program { PushFollow(FOLLOW_program_in_ifelse991); e12 = program(); state.followingStackPointer--; adaptor.AddChild(root_0, e12.Tree); retval.ret.ELSECODE = ((e12 != null) ? e12.ret : null); } } break; case 2 : // C:\\Users\\Jegan\\Documents\\MSCE\\FALL 09\\SoftwareStudio\\SPINACH-Srinivasan\\ConsoleApplication1\\ConsoleApplication1\\spinach.g:180:291: { } break; } RIGHTPARANTHESIS92=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_ifelse997); RIGHTPARANTHESIS92_tree = (object)adaptor.Create(RIGHTPARANTHESIS92); adaptor.AddChild(root_0, RIGHTPARANTHESIS92_tree); } break; } } 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 "ifelse" // spinach.g:229:1: ifelse returns [IfStatementElement ret] : ( 'if' LEFTBRACE ( equality | nonequality | lessthan | lessthanequalto | greaterthan | greaterthanequalto ) RIGHTBRACE LEFTPARANTHESIS ( (e11= ifloop ) | ) RIGHTPARANTHESIS ) ( 'else' LEFTPARANTHESIS ( (e12= ifloop ) | ) RIGHTPARANTHESIS )? ; public spinachParser.ifelse_return ifelse() // throws RecognitionException [1] { spinachParser.ifelse_return retval = new spinachParser.ifelse_return(); retval.Start = input.LT(1); object root_0 = null; IToken string_literal88 = null; IToken LEFTBRACE89 = null; IToken RIGHTBRACE96 = null; IToken LEFTPARANTHESIS97 = null; IToken RIGHTPARANTHESIS98 = null; IToken string_literal99 = null; IToken LEFTPARANTHESIS100 = null; IToken RIGHTPARANTHESIS101 = null; spinachParser.ifloop_return e11 = null; spinachParser.ifloop_return e12 = null; spinachParser.equality_return equality90 = null; spinachParser.nonequality_return nonequality91 = null; spinachParser.lessthan_return lessthan92 = null; spinachParser.lessthanequalto_return lessthanequalto93 = null; spinachParser.greaterthan_return greaterthan94 = null; spinachParser.greaterthanequalto_return greaterthanequalto95 = null; object string_literal88_tree=null; object LEFTBRACE89_tree=null; object RIGHTBRACE96_tree=null; object LEFTPARANTHESIS97_tree=null; object RIGHTPARANTHESIS98_tree=null; object string_literal99_tree=null; object LEFTPARANTHESIS100_tree=null; object RIGHTPARANTHESIS101_tree=null; retval.ret = new IfStatementElement(); try { // spinach.g:233:1: ( ( 'if' LEFTBRACE ( equality | nonequality | lessthan | lessthanequalto | greaterthan | greaterthanequalto ) RIGHTBRACE LEFTPARANTHESIS ( (e11= ifloop ) | ) RIGHTPARANTHESIS ) ( 'else' LEFTPARANTHESIS ( (e12= ifloop ) | ) RIGHTPARANTHESIS )? ) // spinach.g:233:2: ( 'if' LEFTBRACE ( equality | nonequality | lessthan | lessthanequalto | greaterthan | greaterthanequalto ) RIGHTBRACE LEFTPARANTHESIS ( (e11= ifloop ) | ) RIGHTPARANTHESIS ) ( 'else' LEFTPARANTHESIS ( (e12= ifloop ) | ) RIGHTPARANTHESIS )? { root_0 = (object)adaptor.GetNilNode(); // spinach.g:233:2: ( 'if' LEFTBRACE ( equality | nonequality | lessthan | lessthanequalto | greaterthan | greaterthanequalto ) RIGHTBRACE LEFTPARANTHESIS ( (e11= ifloop ) | ) RIGHTPARANTHESIS ) // spinach.g:233:3: 'if' LEFTBRACE ( equality | nonequality | lessthan | lessthanequalto | greaterthan | greaterthanequalto ) RIGHTBRACE LEFTPARANTHESIS ( (e11= ifloop ) | ) RIGHTPARANTHESIS { string_literal88=(IToken)Match(input,40,FOLLOW_40_in_ifelse1339); string_literal88_tree = (object)adaptor.Create(string_literal88); adaptor.AddChild(root_0, string_literal88_tree); LEFTBRACE89=(IToken)Match(input,LEFTBRACE,FOLLOW_LEFTBRACE_in_ifelse1341); LEFTBRACE89_tree = (object)adaptor.Create(LEFTBRACE89); adaptor.AddChild(root_0, LEFTBRACE89_tree); // spinach.g:233:18: ( equality | nonequality | lessthan | lessthanequalto | greaterthan | greaterthanequalto ) int alt25 = 6; int LA25_0 = input.LA(1); if ( (LA25_0 == VARIABLE) ) { switch ( input.LA(2) ) { case NONEQUALITYEXPRESSION: { alt25 = 2; } break; case EQUALITYEXPRESSION: { alt25 = 1; } break; case LESSTHANEQUALTOEXPRESSION: { alt25 = 4; } break; case LESSTHANEXPRESSION: { alt25 = 3; } break; case GREATERTHANEQUALTOEXPRESSION: { alt25 = 6; } break; case GREATERTHANEXPRESSION: { alt25 = 5; } break; default: NoViableAltException nvae_d25s1 = new NoViableAltException("", 25, 1, input); throw nvae_d25s1; } } else { NoViableAltException nvae_d25s0 = new NoViableAltException("", 25, 0, input); throw nvae_d25s0; } switch (alt25) { case 1 : // spinach.g:233:19: equality { PushFollow(FOLLOW_equality_in_ifelse1344); equality90 = equality(); state.followingStackPointer--; adaptor.AddChild(root_0, equality90.Tree); retval.ret.CONDITION = ((equality90 != null) ? equality90.ret : null); } break; case 2 : // spinach.g:233:67: nonequality { PushFollow(FOLLOW_nonequality_in_ifelse1347); nonequality91 = nonequality(); state.followingStackPointer--; adaptor.AddChild(root_0, nonequality91.Tree); retval.ret.CONDITION = ((nonequality91 != null) ? nonequality91.ret : null); } break; case 3 : // spinach.g:233:121: lessthan { PushFollow(FOLLOW_lessthan_in_ifelse1350); lessthan92 = lessthan(); state.followingStackPointer--; adaptor.AddChild(root_0, lessthan92.Tree); retval.ret.CONDITION = ((lessthan92 != null) ? lessthan92.ret : null); } break; case 4 : // spinach.g:234:4: lessthanequalto { PushFollow(FOLLOW_lessthanequalto_in_ifelse1356); lessthanequalto93 = lessthanequalto(); state.followingStackPointer--; adaptor.AddChild(root_0, lessthanequalto93.Tree); retval.ret.CONDITION = ((lessthanequalto93 != null) ? lessthanequalto93.ret : null); } break; case 5 : // spinach.g:234:66: greaterthan { PushFollow(FOLLOW_greaterthan_in_ifelse1359); greaterthan94 = greaterthan(); state.followingStackPointer--; adaptor.AddChild(root_0, greaterthan94.Tree); retval.ret.CONDITION =((greaterthan94 != null) ? greaterthan94.ret : null); } break; case 6 : // spinach.g:234:120: greaterthanequalto { PushFollow(FOLLOW_greaterthanequalto_in_ifelse1363); greaterthanequalto95 = greaterthanequalto(); state.followingStackPointer--; adaptor.AddChild(root_0, greaterthanequalto95.Tree); retval.ret.CONDITION = ((greaterthanequalto95 != null) ? greaterthanequalto95.ret : null); } break; } RIGHTBRACE96=(IToken)Match(input,RIGHTBRACE,FOLLOW_RIGHTBRACE_in_ifelse1368); RIGHTBRACE96_tree = (object)adaptor.Create(RIGHTBRACE96); adaptor.AddChild(root_0, RIGHTBRACE96_tree); LEFTPARANTHESIS97=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_ifelse1370); LEFTPARANTHESIS97_tree = (object)adaptor.Create(LEFTPARANTHESIS97); adaptor.AddChild(root_0, LEFTPARANTHESIS97_tree); // spinach.g:235:30: ( (e11= ifloop ) | ) int alt26 = 2; int LA26_0 = input.LA(1); if ( (LA26_0 == VARIABLE || LA26_0 == VARTYPE || LA26_0 == STRINGTYPE || LA26_0 == 28 || LA26_0 == 32 || (LA26_0 >= 34 && LA26_0 <= 37) || LA26_0 == 40 || (LA26_0 >= 42 && LA26_0 <= 43) || (LA26_0 >= 46 && LA26_0 <= 48) || (LA26_0 >= 52 && LA26_0 <= 56)) ) { alt26 = 1; } else if ( (LA26_0 == RIGHTPARANTHESIS) ) { alt26 = 2; } else { NoViableAltException nvae_d26s0 = new NoViableAltException("", 26, 0, input); throw nvae_d26s0; } switch (alt26) { case 1 : // spinach.g:235:31: (e11= ifloop ) { // spinach.g:235:31: (e11= ifloop ) // spinach.g:235:32: e11= ifloop { PushFollow(FOLLOW_ifloop_in_ifelse1378); e11 = ifloop(); state.followingStackPointer--; adaptor.AddChild(root_0, e11.Tree); retval.ret.IFCODE = ((e11 != null) ? e11.ret : null); } } break; case 2 : // spinach.g:235:77: { } break; } RIGHTPARANTHESIS98=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_ifelse1383); RIGHTPARANTHESIS98_tree = (object)adaptor.Create(RIGHTPARANTHESIS98); adaptor.AddChild(root_0, RIGHTPARANTHESIS98_tree); } // spinach.g:235:95: ( 'else' LEFTPARANTHESIS ( (e12= ifloop ) | ) RIGHTPARANTHESIS )? int alt28 = 2; int LA28_0 = input.LA(1); if ( (LA28_0 == 41) ) { alt28 = 1; } switch (alt28) { case 1 : // spinach.g:235:96: 'else' LEFTPARANTHESIS ( (e12= ifloop ) | ) RIGHTPARANTHESIS { string_literal99=(IToken)Match(input,41,FOLLOW_41_in_ifelse1386); string_literal99_tree = (object)adaptor.Create(string_literal99); adaptor.AddChild(root_0, string_literal99_tree); LEFTPARANTHESIS100=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_ifelse1389); LEFTPARANTHESIS100_tree = (object)adaptor.Create(LEFTPARANTHESIS100); adaptor.AddChild(root_0, LEFTPARANTHESIS100_tree); // spinach.g:235:120: ( (e12= ifloop ) | ) int alt27 = 2; int LA27_0 = input.LA(1); if ( (LA27_0 == VARIABLE || LA27_0 == VARTYPE || LA27_0 == STRINGTYPE || LA27_0 == 28 || LA27_0 == 32 || (LA27_0 >= 34 && LA27_0 <= 37) || LA27_0 == 40 || (LA27_0 >= 42 && LA27_0 <= 43) || (LA27_0 >= 46 && LA27_0 <= 48) || (LA27_0 >= 52 && LA27_0 <= 56)) ) { alt27 = 1; } else if ( (LA27_0 == RIGHTPARANTHESIS) ) { alt27 = 2; } else { NoViableAltException nvae_d27s0 = new NoViableAltException("", 27, 0, input); throw nvae_d27s0; } switch (alt27) { case 1 : // spinach.g:235:121: (e12= ifloop ) { // spinach.g:235:121: (e12= ifloop ) // spinach.g:235:122: e12= ifloop { PushFollow(FOLLOW_ifloop_in_ifelse1398); e12 = ifloop(); state.followingStackPointer--; adaptor.AddChild(root_0, e12.Tree); retval.ret.ELSECODE = ((e12 != null) ? e12.ret : null); } } break; case 2 : // spinach.g:235:170: { } break; } RIGHTPARANTHESIS101=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_ifelse1404); RIGHTPARANTHESIS101_tree = (object)adaptor.Create(RIGHTPARANTHESIS101); adaptor.AddChild(root_0, RIGHTPARANTHESIS101_tree); } break; } } 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 "ifelse" // spinach.g:241:1: ifelse returns [IfStatementElement ret] : ( 'if' LEFTBRACE ( varorstruct ) ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) (e13= var_int_or_double_literal | e14= string_literal ) RIGHTBRACE LEFTPARANTHESIS ( (e11= ifloop ) | ) RIGHTPARANTHESIS ) ( 'else' LEFTPARANTHESIS ( (e12= ifloop ) | ) RIGHTPARANTHESIS )? ; public spinachParser.ifelse_return ifelse() // throws RecognitionException [1] { spinachParser.ifelse_return retval = new spinachParser.ifelse_return(); retval.Start = input.LT(1); object root_0 = null; IToken string_literal99 = null; IToken LEFTBRACE100 = null; IToken string_literal102 = null; IToken string_literal103 = null; IToken char_literal104 = null; IToken string_literal105 = null; IToken char_literal106 = null; IToken string_literal107 = null; IToken RIGHTBRACE108 = null; IToken LEFTPARANTHESIS109 = null; IToken RIGHTPARANTHESIS110 = null; IToken string_literal111 = null; IToken LEFTPARANTHESIS112 = null; IToken RIGHTPARANTHESIS113 = null; spinachParser.var_int_or_double_literal_return e13 = null; spinachParser.string_literal_return e14 = null; spinachParser.ifloop_return e11 = null; spinachParser.ifloop_return e12 = null; spinachParser.varorstruct_return varorstruct101 = null; object string_literal99_tree=null; object LEFTBRACE100_tree=null; object string_literal102_tree=null; object string_literal103_tree=null; object char_literal104_tree=null; object string_literal105_tree=null; object char_literal106_tree=null; object string_literal107_tree=null; object RIGHTBRACE108_tree=null; object LEFTPARANTHESIS109_tree=null; object RIGHTPARANTHESIS110_tree=null; object string_literal111_tree=null; object LEFTPARANTHESIS112_tree=null; object RIGHTPARANTHESIS113_tree=null; retval.ret = new IfStatementElement(); try { // spinach.g:245:1: ( ( 'if' LEFTBRACE ( varorstruct ) ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) (e13= var_int_or_double_literal | e14= string_literal ) RIGHTBRACE LEFTPARANTHESIS ( (e11= ifloop ) | ) RIGHTPARANTHESIS ) ( 'else' LEFTPARANTHESIS ( (e12= ifloop ) | ) RIGHTPARANTHESIS )? ) // spinach.g:245:2: ( 'if' LEFTBRACE ( varorstruct ) ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) (e13= var_int_or_double_literal | e14= string_literal ) RIGHTBRACE LEFTPARANTHESIS ( (e11= ifloop ) | ) RIGHTPARANTHESIS ) ( 'else' LEFTPARANTHESIS ( (e12= ifloop ) | ) RIGHTPARANTHESIS )? { root_0 = (object)adaptor.GetNilNode(); // spinach.g:245:2: ( 'if' LEFTBRACE ( varorstruct ) ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) (e13= var_int_or_double_literal | e14= string_literal ) RIGHTBRACE LEFTPARANTHESIS ( (e11= ifloop ) | ) RIGHTPARANTHESIS ) // spinach.g:245:3: 'if' LEFTBRACE ( varorstruct ) ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) (e13= var_int_or_double_literal | e14= string_literal ) RIGHTBRACE LEFTPARANTHESIS ( (e11= ifloop ) | ) RIGHTPARANTHESIS { string_literal99=(IToken)Match(input,40,FOLLOW_40_in_ifelse1386); string_literal99_tree = (object)adaptor.Create(string_literal99); adaptor.AddChild(root_0, string_literal99_tree); LEFTBRACE100=(IToken)Match(input,LEFTBRACE,FOLLOW_LEFTBRACE_in_ifelse1388); LEFTBRACE100_tree = (object)adaptor.Create(LEFTBRACE100); adaptor.AddChild(root_0, LEFTBRACE100_tree); // spinach.g:245:18: ( varorstruct ) // spinach.g:245:19: varorstruct { PushFollow(FOLLOW_varorstruct_in_ifelse1391); varorstruct101 = varorstruct(); state.followingStackPointer--; adaptor.AddChild(root_0, varorstruct101.Tree); retval.ret.setLhs(((varorstruct101 != null) ? varorstruct101.ret : null)); } // spinach.g:245:69: ( '==' | '!=' | '<' | '<=' | '>' | '>=' ) int alt30 = 6; switch ( input.LA(1) ) { case EQUALITYEXPRESSION: { alt30 = 1; } break; case NONEQUALITYEXPRESSION: { alt30 = 2; } break; case LESSTHANEXPRESSION: { alt30 = 3; } break; case LESSTHANEQUALTOEXPRESSION: { alt30 = 4; } break; case GREATERTHANEXPRESSION: { alt30 = 5; } break; case GREATERTHANEQUALTOEXPRESSION: { alt30 = 6; } break; default: NoViableAltException nvae_d30s0 = new NoViableAltException("", 30, 0, input); throw nvae_d30s0; } switch (alt30) { case 1 : // spinach.g:246:7: '==' { string_literal102=(IToken)Match(input,EQUALITYEXPRESSION,FOLLOW_EQUALITYEXPRESSION_in_ifelse1402); string_literal102_tree = (object)adaptor.Create(string_literal102); adaptor.AddChild(root_0, string_literal102_tree); retval.ret.OP = "eq"; } break; case 2 : // spinach.g:247:7: '!=' { string_literal103=(IToken)Match(input,NONEQUALITYEXPRESSION,FOLLOW_NONEQUALITYEXPRESSION_in_ifelse1412); string_literal103_tree = (object)adaptor.Create(string_literal103); adaptor.AddChild(root_0, string_literal103_tree); retval.ret.OP = "ne"; } break; case 3 : // spinach.g:248:7: '<' { char_literal104=(IToken)Match(input,LESSTHANEXPRESSION,FOLLOW_LESSTHANEXPRESSION_in_ifelse1422); char_literal104_tree = (object)adaptor.Create(char_literal104); adaptor.AddChild(root_0, char_literal104_tree); retval.ret.OP = "lt"; } break; case 4 : // spinach.g:249:7: '<=' { string_literal105=(IToken)Match(input,LESSTHANEQUALTOEXPRESSION,FOLLOW_LESSTHANEQUALTOEXPRESSION_in_ifelse1433); string_literal105_tree = (object)adaptor.Create(string_literal105); adaptor.AddChild(root_0, string_literal105_tree); retval.ret.OP = "le"; } break; case 5 : // spinach.g:250:7: '>' { char_literal106=(IToken)Match(input,GREATERTHANEXPRESSION,FOLLOW_GREATERTHANEXPRESSION_in_ifelse1443); char_literal106_tree = (object)adaptor.Create(char_literal106); adaptor.AddChild(root_0, char_literal106_tree); retval.ret.OP = "gt"; } break; case 6 : // spinach.g:251:7: '>=' { string_literal107=(IToken)Match(input,GREATERTHANEQUALTOEXPRESSION,FOLLOW_GREATERTHANEQUALTOEXPRESSION_in_ifelse1454); string_literal107_tree = (object)adaptor.Create(string_literal107); adaptor.AddChild(root_0, string_literal107_tree); retval.ret.OP = "ge"; } break; } // spinach.g:253:1: (e13= var_int_or_double_literal | e14= string_literal ) int alt31 = 2; int LA31_0 = input.LA(1); if ( ((LA31_0 >= VARIABLE && LA31_0 <= DOUBLE_LITERAL)) ) { alt31 = 1; } else if ( (LA31_0 == 27) ) { alt31 = 2; } else { NoViableAltException nvae_d31s0 = new NoViableAltException("", 31, 0, input); throw nvae_d31s0; } switch (alt31) { case 1 : // spinach.g:253:2: e13= var_int_or_double_literal { PushFollow(FOLLOW_var_int_or_double_literal_in_ifelse1467); e13 = var_int_or_double_literal(); state.followingStackPointer--; adaptor.AddChild(root_0, e13.Tree); retval.ret.setRhs(((e13 != null) ? e13.ret : null)); } break; case 2 : // spinach.g:253:64: e14= string_literal { PushFollow(FOLLOW_string_literal_in_ifelse1474); e14 = string_literal(); state.followingStackPointer--; adaptor.AddChild(root_0, e14.Tree); retval.ret.setRhs(((e14 != null) ? e14.ret : null)); } break; } RIGHTBRACE108=(IToken)Match(input,RIGHTBRACE,FOLLOW_RIGHTBRACE_in_ifelse1478); RIGHTBRACE108_tree = (object)adaptor.Create(RIGHTBRACE108); adaptor.AddChild(root_0, RIGHTBRACE108_tree); LEFTPARANTHESIS109=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_ifelse1480); LEFTPARANTHESIS109_tree = (object)adaptor.Create(LEFTPARANTHESIS109); adaptor.AddChild(root_0, LEFTPARANTHESIS109_tree); // spinach.g:253:143: ( (e11= ifloop ) | ) int alt32 = 2; int LA32_0 = input.LA(1); if ( (LA32_0 == VARIABLE || LA32_0 == VARTYPE || LA32_0 == STRINGTYPE || LA32_0 == 28 || LA32_0 == 32 || (LA32_0 >= 35 && LA32_0 <= 36) || LA32_0 == 40 || LA32_0 == 42 || (LA32_0 >= 46 && LA32_0 <= 48) || (LA32_0 >= 52 && LA32_0 <= 56)) ) { alt32 = 1; } else if ( (LA32_0 == RIGHTPARANTHESIS) ) { alt32 = 2; } else { NoViableAltException nvae_d32s0 = new NoViableAltException("", 32, 0, input); throw nvae_d32s0; } switch (alt32) { case 1 : // spinach.g:253:144: (e11= ifloop ) { // spinach.g:253:144: (e11= ifloop ) // spinach.g:253:145: e11= ifloop { PushFollow(FOLLOW_ifloop_in_ifelse1488); e11 = ifloop(); state.followingStackPointer--; adaptor.AddChild(root_0, e11.Tree); retval.ret.IFCODE = ((e11 != null) ? e11.ret : null); } } break; case 2 : // spinach.g:253:190: { } break; } RIGHTPARANTHESIS110=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_ifelse1493); RIGHTPARANTHESIS110_tree = (object)adaptor.Create(RIGHTPARANTHESIS110); adaptor.AddChild(root_0, RIGHTPARANTHESIS110_tree); } // spinach.g:253:208: ( 'else' LEFTPARANTHESIS ( (e12= ifloop ) | ) RIGHTPARANTHESIS )? int alt34 = 2; int LA34_0 = input.LA(1); if ( (LA34_0 == 41) ) { alt34 = 1; } switch (alt34) { case 1 : // spinach.g:253:209: 'else' LEFTPARANTHESIS ( (e12= ifloop ) | ) RIGHTPARANTHESIS { string_literal111=(IToken)Match(input,41,FOLLOW_41_in_ifelse1496); string_literal111_tree = (object)adaptor.Create(string_literal111); adaptor.AddChild(root_0, string_literal111_tree); LEFTPARANTHESIS112=(IToken)Match(input,LEFTPARANTHESIS,FOLLOW_LEFTPARANTHESIS_in_ifelse1499); LEFTPARANTHESIS112_tree = (object)adaptor.Create(LEFTPARANTHESIS112); adaptor.AddChild(root_0, LEFTPARANTHESIS112_tree); // spinach.g:253:233: ( (e12= ifloop ) | ) int alt33 = 2; int LA33_0 = input.LA(1); if ( (LA33_0 == VARIABLE || LA33_0 == VARTYPE || LA33_0 == STRINGTYPE || LA33_0 == 28 || LA33_0 == 32 || (LA33_0 >= 35 && LA33_0 <= 36) || LA33_0 == 40 || LA33_0 == 42 || (LA33_0 >= 46 && LA33_0 <= 48) || (LA33_0 >= 52 && LA33_0 <= 56)) ) { alt33 = 1; } else if ( (LA33_0 == RIGHTPARANTHESIS) ) { alt33 = 2; } else { NoViableAltException nvae_d33s0 = new NoViableAltException("", 33, 0, input); throw nvae_d33s0; } switch (alt33) { case 1 : // spinach.g:253:234: (e12= ifloop ) { // spinach.g:253:234: (e12= ifloop ) // spinach.g:253:235: e12= ifloop { PushFollow(FOLLOW_ifloop_in_ifelse1508); e12 = ifloop(); state.followingStackPointer--; adaptor.AddChild(root_0, e12.Tree); retval.ret.ELSECODE = ((e12 != null) ? e12.ret : null); } } break; case 2 : // spinach.g:253:283: { } break; } RIGHTPARANTHESIS113=(IToken)Match(input,RIGHTPARANTHESIS,FOLLOW_RIGHTPARANTHESIS_in_ifelse1514); RIGHTPARANTHESIS113_tree = (object)adaptor.Create(RIGHTPARANTHESIS113); adaptor.AddChild(root_0, RIGHTPARANTHESIS113_tree); } break; } } 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; }