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);
        }
Esempio n. 3
0
        // 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);
        }
Esempio n. 4
0
//------------------------------------------------------------
        public void Visit(NCaseList node)
        {
            Console.WriteLine($"+++++++++++++++ NCaseList ++++++++++++++++");

            VisitChildren(node);
        }
 public void Visit(NCaseList nCaseList)
 {
     GenericChildVisitor(nCaseList);
 }