public string Visit(NCaseList nCaseList, string exitAll) { string retVal = ""; foreach (NCase nCase in nCaseList) { string jumpNext = GenerateLabel(); retVal += Visit(nCase, exitAll, jumpNext); retVal += jumpNext + ":\n"; } return(retVal); }
public string Visit(NSwitchStmt nSwitchStmt) { string retVal = ""; string exitAll = GenerateLabel(); Node testVar = nSwitchStmt[0]; retVal += Visit((dynamic)testVar); NCaseList nCaseList = (NCaseList)nSwitchStmt[1]; retVal += Visit((dynamic)nCaseList, exitAll); NStmtList nStmtList = (NStmtList)nSwitchStmt[2]; retVal += Visit((dynamic)nStmtList); retVal += exitAll + ":\n"; retVal += "\t\tpop\n"; return(retVal); }
// Return NSwitchStmt public Node SwitchStmt() { NSwitchStmt nSwitchStmt = new NSwitchStmt(); Expect(TokenCategory.SWITCH); Expect(TokenCategory.PARENTHESIS_LEFT); nSwitchStmt.Add(Expr()); Expect(TokenCategory.PARENTHESIS_RIGHT); Expect(TokenCategory.CURLY_BRACE_LEFT); NCaseList nCaseList = new NCaseList(); while (CurrentToken == TokenCategory.CASE) { nCaseList.Add(Case()); } nSwitchStmt.Add(nCaseList); if (CurrentToken == TokenCategory.DEFAULT) { nSwitchStmt.Add(Default()); } Expect(TokenCategory.CURLY_BRACE_RIGHT); return(nSwitchStmt); }
//------------------------------------------------------------ public void Visit(NCaseList node) { Console.WriteLine($"+++++++++++++++ NCaseList ++++++++++++++++"); VisitChildren(node); }
public void Visit(NCaseList nCaseList) { GenericChildVisitor(nCaseList); }