private ForItem for_item() { EnterRule_for_item(); EnterRule("for_item", 28); TraceIn("for_item", 28); ForItem value = default(ForItem); string a = default(string); Expr b = default(Expr); Expr c = default(Expr); Expr d = default(Expr); try { DebugEnterRule(GrammarFileName, "for_item"); DebugLocation(379, 1); try { // SugarWalker.g:380:2: ( ^( For_Item_To a= ident b= expr c= expr (d= expr )? ) | ^( For_Item_Down_To a= ident b= expr c= expr (d= expr )? ) | ^( For_Item_Each a= ident b= expr ) | ^( For_Item_When b= expr ) ) int alt51=4; try { DebugEnterDecision(51, false); switch (input.LA(1)) { case For_Item_To: { alt51 = 1; } break; case For_Item_Down_To: { alt51 = 2; } break; case For_Item_Each: { alt51 = 3; } break; case For_Item_When: { alt51 = 4; } break; default: { NoViableAltException nvae = new NoViableAltException("", 51, 0, input); DebugRecognitionException(nvae); throw nvae; } } } finally { DebugExitDecision(51); } switch (alt51) { case 1: DebugEnterAlt(1); // SugarWalker.g:380:4: ^( For_Item_To a= ident b= expr c= expr (d= expr )? ) { DebugLocation(380, 4); DebugLocation(380, 6); Match(input,For_Item_To,Follow._For_Item_To_in_for_item1470); Match(input, TokenTypes.Down, null); DebugLocation(380, 19); PushFollow(Follow._ident_in_for_item1474); a=ident(); PopFollow(); DebugLocation(380, 27); PushFollow(Follow._expr_in_for_item1478); b=expr(); PopFollow(); DebugLocation(380, 34); PushFollow(Follow._expr_in_for_item1482); c=expr(); PopFollow(); DebugLocation(380, 40); // SugarWalker.g:380:40: (d= expr )? int alt49=2; try { DebugEnterSubRule(49); try { DebugEnterDecision(49, false); int LA49_0 = input.LA(1); if (((LA49_0>=Expr_Access && LA49_0<=Expr_Tuple)||LA49_0==IDENT||LA49_0==Match_Tuple||LA49_0==NUMBER||LA49_0==STRING||LA49_0==75||LA49_0==78||LA49_0==82||LA49_0==85||LA49_0==89||LA49_0==95||LA49_0==98||LA49_0==102||LA49_0==104||LA49_0==110||LA49_0==113||LA49_0==117||LA49_0==150||LA49_0==DOUBLE)) { alt49 = 1; } } finally { DebugExitDecision(49); } switch (alt49) { case 1: DebugEnterAlt(1); // SugarWalker.g:380:41: d= expr { DebugLocation(380, 42); PushFollow(Follow._expr_in_for_item1487); d=expr(); PopFollow(); } break; } } finally { DebugExitSubRule(49); } Match(input, TokenTypes.Up, null); DebugLocation(381, 2); value = new ForItemTo(a, b, c, d); } break; case 2: DebugEnterAlt(2); // SugarWalker.g:384:4: ^( For_Item_Down_To a= ident b= expr c= expr (d= expr )? ) { DebugLocation(384, 4); DebugLocation(384, 6); Match(input,For_Item_Down_To,Follow._For_Item_Down_To_in_for_item1499); Match(input, TokenTypes.Down, null); DebugLocation(384, 24); PushFollow(Follow._ident_in_for_item1503); a=ident(); PopFollow(); DebugLocation(384, 32); PushFollow(Follow._expr_in_for_item1507); b=expr(); PopFollow(); DebugLocation(384, 39); PushFollow(Follow._expr_in_for_item1511); c=expr(); PopFollow(); DebugLocation(384, 45); // SugarWalker.g:384:45: (d= expr )? int alt50=2; try { DebugEnterSubRule(50); try { DebugEnterDecision(50, false); int LA50_0 = input.LA(1); if (((LA50_0>=Expr_Access && LA50_0<=Expr_Tuple)||LA50_0==IDENT||LA50_0==Match_Tuple||LA50_0==NUMBER||LA50_0==STRING||LA50_0==75||LA50_0==78||LA50_0==82||LA50_0==85||LA50_0==89||LA50_0==95||LA50_0==98||LA50_0==102||LA50_0==104||LA50_0==110||LA50_0==113||LA50_0==117||LA50_0==150||LA50_0==DOUBLE)) { alt50 = 1; } } finally { DebugExitDecision(50); } switch (alt50) { case 1: DebugEnterAlt(1); // SugarWalker.g:384:46: d= expr { DebugLocation(384, 47); PushFollow(Follow._expr_in_for_item1516); d=expr(); PopFollow(); } break; } } finally { DebugExitSubRule(50); } Match(input, TokenTypes.Up, null); DebugLocation(385, 2); value = new ForItemDownTo(a, b, c, d); } break; case 3: DebugEnterAlt(3); // SugarWalker.g:388:4: ^( For_Item_Each a= ident b= expr ) { DebugLocation(388, 4); DebugLocation(388, 6); Match(input,For_Item_Each,Follow._For_Item_Each_in_for_item1528); Match(input, TokenTypes.Down, null); DebugLocation(388, 21); PushFollow(Follow._ident_in_for_item1532); a=ident(); PopFollow(); DebugLocation(388, 29); PushFollow(Follow._expr_in_for_item1536); b=expr(); PopFollow(); Match(input, TokenTypes.Up, null); DebugLocation(389, 2); value = new ForItemEach(a, b); } break; case 4: DebugEnterAlt(4); // SugarWalker.g:392:4: ^( For_Item_When b= expr ) { DebugLocation(392, 4); DebugLocation(392, 6); Match(input,For_Item_When,Follow._For_Item_When_in_for_item1546); Match(input, TokenTypes.Down, null); DebugLocation(392, 21); PushFollow(Follow._expr_in_for_item1550); b=expr(); PopFollow(); Match(input, TokenTypes.Up, null); DebugLocation(393, 2); value = new ForItemWhen(b); } break; } } catch (RecognitionException re) { ReportError(re); Recover(input,re); } finally { TraceOut("for_item", 28); LeaveRule("for_item", 28); LeaveRule_for_item(); } DebugLocation(396, 1); } finally { DebugExitRule(GrammarFileName, "for_item"); } return value; }
private ForItem for_item() { EnterRule_for_item(); EnterRule("for_item", 37); TraceIn("for_item", 37); ForItem value = default(ForItem); string a = default(string); Expr b = default(Expr); Expr c = default(Expr); Expr d = default(Expr); try { DebugEnterRule(GrammarFileName, "for_item"); DebugLocation(509, 1); try { // SugarWalker.g:510:2: ( ^( For_Item_To a= ident b= expr c= expr (d= expr )? ) | ^( For_Item_Til a= ident b= expr c= expr (d= expr )? ) | ^( For_Item_Down_To a= ident b= expr c= expr (d= expr )? ) | ^( For_Item_Each a= ident b= expr ) | ^( For_Item_Map a= ident b= expr ) | ^( For_Item_When b= expr ) ) int alt64=6; try { DebugEnterDecision(64, false); switch (input.LA(1)) { case For_Item_To: { alt64 = 1; } break; case For_Item_Til: { alt64 = 2; } break; case For_Item_Down_To: { alt64 = 3; } break; case For_Item_Each: { alt64 = 4; } break; case For_Item_Map: { alt64 = 5; } break; case For_Item_When: { alt64 = 6; } break; default: { NoViableAltException nvae = new NoViableAltException("", 64, 0, input); DebugRecognitionException(nvae); throw nvae; } } } finally { DebugExitDecision(64); } switch (alt64) { case 1: DebugEnterAlt(1); // SugarWalker.g:510:4: ^( For_Item_To a= ident b= expr c= expr (d= expr )? ) { DebugLocation(510, 4); DebugLocation(510, 6); Match(input,For_Item_To,Follow._For_Item_To_in_for_item1902); Match(input, TokenTypes.Down, null); DebugLocation(510, 19); PushFollow(Follow._ident_in_for_item1906); a=ident(); PopFollow(); DebugLocation(510, 27); PushFollow(Follow._expr_in_for_item1910); b=expr(); PopFollow(); DebugLocation(510, 34); PushFollow(Follow._expr_in_for_item1914); c=expr(); PopFollow(); DebugLocation(510, 40); // SugarWalker.g:510:40: (d= expr )? int alt61=2; try { DebugEnterSubRule(61); try { DebugEnterDecision(61, false); int LA61_0 = input.LA(1); if (((LA61_0>=Expr_Access && LA61_0<=Expr_Alloc_Equal)||(LA61_0>=Expr_Bin && LA61_0<=Expr_Where)||LA61_0==IDENT||LA61_0==Match_Expr||LA61_0==Match_Tuple||LA61_0==NUMBER||LA61_0==STRING||LA61_0==89||LA61_0==92||LA61_0==96||LA61_0==99||LA61_0==104||LA61_0==110||LA61_0==113||LA61_0==118||LA61_0==121||LA61_0==128||LA61_0==131||LA61_0==135||LA61_0==183||LA61_0==DOUBLE)) { alt61 = 1; } } finally { DebugExitDecision(61); } switch (alt61) { case 1: DebugEnterAlt(1); // SugarWalker.g:510:41: d= expr { DebugLocation(510, 42); PushFollow(Follow._expr_in_for_item1919); d=expr(); PopFollow(); } break; } } finally { DebugExitSubRule(61); } Match(input, TokenTypes.Up, null); DebugLocation(511, 2); value = new ForItemRange(a, b, c, d, ForItemRangeType.To); } break; case 2: DebugEnterAlt(2); // SugarWalker.g:514:4: ^( For_Item_Til a= ident b= expr c= expr (d= expr )? ) { DebugLocation(514, 4); DebugLocation(514, 6); Match(input,For_Item_Til,Follow._For_Item_Til_in_for_item1931); Match(input, TokenTypes.Down, null); DebugLocation(514, 20); PushFollow(Follow._ident_in_for_item1935); a=ident(); PopFollow(); DebugLocation(514, 28); PushFollow(Follow._expr_in_for_item1939); b=expr(); PopFollow(); DebugLocation(514, 35); PushFollow(Follow._expr_in_for_item1943); c=expr(); PopFollow(); DebugLocation(514, 41); // SugarWalker.g:514:41: (d= expr )? int alt62=2; try { DebugEnterSubRule(62); try { DebugEnterDecision(62, false); int LA62_0 = input.LA(1); if (((LA62_0>=Expr_Access && LA62_0<=Expr_Alloc_Equal)||(LA62_0>=Expr_Bin && LA62_0<=Expr_Where)||LA62_0==IDENT||LA62_0==Match_Expr||LA62_0==Match_Tuple||LA62_0==NUMBER||LA62_0==STRING||LA62_0==89||LA62_0==92||LA62_0==96||LA62_0==99||LA62_0==104||LA62_0==110||LA62_0==113||LA62_0==118||LA62_0==121||LA62_0==128||LA62_0==131||LA62_0==135||LA62_0==183||LA62_0==DOUBLE)) { alt62 = 1; } } finally { DebugExitDecision(62); } switch (alt62) { case 1: DebugEnterAlt(1); // SugarWalker.g:514:42: d= expr { DebugLocation(514, 43); PushFollow(Follow._expr_in_for_item1948); d=expr(); PopFollow(); } break; } } finally { DebugExitSubRule(62); } Match(input, TokenTypes.Up, null); DebugLocation(515, 2); value = new ForItemRange(a, b, c, d, ForItemRangeType.Til); } break; case 3: DebugEnterAlt(3); // SugarWalker.g:518:4: ^( For_Item_Down_To a= ident b= expr c= expr (d= expr )? ) { DebugLocation(518, 4); DebugLocation(518, 6); Match(input,For_Item_Down_To,Follow._For_Item_Down_To_in_for_item1960); Match(input, TokenTypes.Down, null); DebugLocation(518, 24); PushFollow(Follow._ident_in_for_item1964); a=ident(); PopFollow(); DebugLocation(518, 32); PushFollow(Follow._expr_in_for_item1968); b=expr(); PopFollow(); DebugLocation(518, 39); PushFollow(Follow._expr_in_for_item1972); c=expr(); PopFollow(); DebugLocation(518, 45); // SugarWalker.g:518:45: (d= expr )? int alt63=2; try { DebugEnterSubRule(63); try { DebugEnterDecision(63, false); int LA63_0 = input.LA(1); if (((LA63_0>=Expr_Access && LA63_0<=Expr_Alloc_Equal)||(LA63_0>=Expr_Bin && LA63_0<=Expr_Where)||LA63_0==IDENT||LA63_0==Match_Expr||LA63_0==Match_Tuple||LA63_0==NUMBER||LA63_0==STRING||LA63_0==89||LA63_0==92||LA63_0==96||LA63_0==99||LA63_0==104||LA63_0==110||LA63_0==113||LA63_0==118||LA63_0==121||LA63_0==128||LA63_0==131||LA63_0==135||LA63_0==183||LA63_0==DOUBLE)) { alt63 = 1; } } finally { DebugExitDecision(63); } switch (alt63) { case 1: DebugEnterAlt(1); // SugarWalker.g:518:46: d= expr { DebugLocation(518, 47); PushFollow(Follow._expr_in_for_item1977); d=expr(); PopFollow(); } break; } } finally { DebugExitSubRule(63); } Match(input, TokenTypes.Up, null); DebugLocation(519, 2); value = new ForItemRange(a, b, c, d, ForItemRangeType.DownTo); } break; case 4: DebugEnterAlt(4); // SugarWalker.g:522:4: ^( For_Item_Each a= ident b= expr ) { DebugLocation(522, 4); DebugLocation(522, 6); Match(input,For_Item_Each,Follow._For_Item_Each_in_for_item1989); Match(input, TokenTypes.Down, null); DebugLocation(522, 21); PushFollow(Follow._ident_in_for_item1993); a=ident(); PopFollow(); DebugLocation(522, 29); PushFollow(Follow._expr_in_for_item1997); b=expr(); PopFollow(); Match(input, TokenTypes.Up, null); DebugLocation(523, 2); value = new ForItemEach(a, b); } break; case 5: DebugEnterAlt(5); // SugarWalker.g:526:4: ^( For_Item_Map a= ident b= expr ) { DebugLocation(526, 4); DebugLocation(526, 6); Match(input,For_Item_Map,Follow._For_Item_Map_in_for_item2007); Match(input, TokenTypes.Down, null); DebugLocation(526, 20); PushFollow(Follow._ident_in_for_item2011); a=ident(); PopFollow(); DebugLocation(526, 28); PushFollow(Follow._expr_in_for_item2015); b=expr(); PopFollow(); Match(input, TokenTypes.Up, null); DebugLocation(527, 2); value = new ForItemMap(a, b); } break; case 6: DebugEnterAlt(6); // SugarWalker.g:530:4: ^( For_Item_When b= expr ) { DebugLocation(530, 4); DebugLocation(530, 6); Match(input,For_Item_When,Follow._For_Item_When_in_for_item2025); Match(input, TokenTypes.Down, null); DebugLocation(530, 21); PushFollow(Follow._expr_in_for_item2029); b=expr(); PopFollow(); Match(input, TokenTypes.Up, null); DebugLocation(531, 2); value = new ForItemWhen(b); } break; } } catch (RecognitionException re) { ReportError(re); Recover(input,re); } finally { TraceOut("for_item", 37); LeaveRule("for_item", 37); LeaveRule_for_item(); } DebugLocation(534, 1); } finally { DebugExitRule(GrammarFileName, "for_item"); } return value; }