private SwitchStatement ParseSwitch() { SwitchStatement node = new SwitchStatement(curtok); Advance(); // advance over SWITCH AssertAndAdvance(TokenID.LParen); node.Test = ParseExpression(); AssertAndAdvance(TokenID.RParen); AssertAndAdvance(TokenID.LCurly); while (curtok.ID == TokenID.Case || curtok.ID == TokenID.Default) { node.Cases.Add(ParseCase()); } AssertAndAdvance(TokenID.RCurly); if (curtok.ID == TokenID.Semi) Advance(); return node; }
public virtual object VisitSwitchStatement(SwitchStatement switchStatement, object data) { stackMap.Push(switchStatement); switchStatement.Test.AcceptVisitor(this, data); switchStatement.Cases.AcceptVisitor(this, data); stackMap.Pop(); return null; }