Exemplo n.º 1
0
        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.");
            }
            }
        }
Exemplo n.º 2
0
        public string Visit(NLiteral nLiteral)
        {
            string retVal = "\t\tldc.r8 " + nLiteral.AnchorToken.Lexeme + "\n";

            return(retVal);
        }