public virtual object VisitCaseLabel(CaseNode caseLabel, object data) { stackMap.Push(caseLabel); caseLabel.Ranges.AcceptVisitor(this, data); caseLabel.Statements.AcceptVisitor(this, data); stackMap.Pop(); return(null); }
private CaseNode ParseCase() { CaseNode node = new CaseNode(curtok); bool isDefault = (curtok.ID == TokenID.Default); Advance(); // advance over CASE or DEFAULT if (!isDefault) { node.Ranges.Add(ParseExpression()); } else { node.IsDefaultCase = true; } AssertAndAdvance(TokenID.Colon); // may be multiple cases, but must be at least one while (curtok.ID == TokenID.Case || curtok.ID == TokenID.Default) { isDefault = (curtok.ID == TokenID.Default); Advance(); // advance over CASE or DEFAULT if (!isDefault) { node.Ranges.Add(ParseExpression()); } else { node.IsDefaultCase = true; } AssertAndAdvance(TokenID.Colon); } do { node.Statements.Add(ParseStatement()); } while (curtok.ID != TokenID.Eof && curtok.ID != TokenID.Case && curtok.ID != TokenID.Default && curtok.ID != TokenID.RCurly); return node; }
private CaseNode ParseCase() { CaseNode node = new CaseNode(curtok); bool isDefault = (curtok.ID == TokenID.Default); Advance(); // advance over CASE or DEFAULT if (!isDefault) { node.Ranges.Add(ParseExpression()); } else { node.IsDefaultCase = true; } AssertAndAdvance(TokenID.Colon); // may be multiple cases, but must be at least one while (curtok.ID == TokenID.Case || curtok.ID == TokenID.Default) { isDefault = (curtok.ID == TokenID.Default); Advance(); // advance over CASE or DEFAULT if (!isDefault) { node.Ranges.Add(ParseExpression()); } else { node.IsDefaultCase = true; } AssertAndAdvance(TokenID.Colon); } if (curtok.ID != TokenID.LCurly) { node.StatementBlock.HasBraces = false; } ParseBlock(node.StatementBlock, true); return node; }
public virtual object VisitCaseLabel(CaseNode caseLabel, object data) { stackMap.Push(caseLabel); caseLabel.Ranges.AcceptVisitor(this, data); caseLabel.StatementBlock.AcceptVisitor(this, data); stackMap.Pop(); return null; }