public Node Simple() { switch (CurrentToken) { case TokenCategory.LITERAL: { NLiteral nLiteral = new NLiteral(); nLiteral.AnchorToken = Expect(TokenCategory.LITERAL); return(nLiteral); } case TokenCategory.ASTERISK: { NDuplicate nDuplicate = new NDuplicate(); nDuplicate.AnchorToken = Expect(TokenCategory.ASTERISK); nDuplicate.Add(Simple()); return(nDuplicate); } case TokenCategory.SQUARE_BRACKET_LEFT: { NSummation nSummation = new NSummation(); nSummation.AnchorToken = Expect(TokenCategory.SQUARE_BRACKET_LEFT); MaxList(nSummation); Expect(TokenCategory.SQUARE_BRACKET_RIGHT); if (nSummation.children.Count == 1) { return(nSummation[0]); } return(nSummation); } default: { Console.WriteLine(CurrentToken); throw new Exception("This code should never be reached."); } } }
public string Visit(NDuplicate nDuplicate) { string retVal = Visit((dynamic)nDuplicate[0]); retVal += "\t\tdup\n"; retVal += "\t\tadd\n"; return(retVal); }