Exemplo n.º 1
0
        public Node Factor()
        {
            Node result = null;

            if (CurrentToken().type == TokenType.LEFT_PAREN)
            {
                MatchAndEat(TokenType.LEFT_PAREN);
                result = Expression();
                MatchAndEat(TokenType.RIGHT_PAREN);
            }
            else if (IsNumber())
            {
                Token token = MatchAndEat(TokenType.NUMBER);
                result = new NumberNode(Int32.Parse(token.text));
            }
            else if (IsString())
            {
                Token token = MatchAndEat(TokenType.STRING);
                result = new StringNode((token.text).ToString());
            }
            else if (IsKeyWord())
            {
                result = Variable();
            }
            return(result);
        }
Exemplo n.º 2
0
        public static void main(string[] args)
        {
            NumberNode firstNumber  = new NumberNode(100);
            NumberNode secondNumber = new NumberNode(200);

            Node sumNode = new BinOpNode(TokenType.ADD, firstNumber, secondNumber);

            Console.WriteLine("100 + 200 = " + sumNode.Eval());
            Node compareNode = new BinOpNode(TokenType.LESS, firstNumber, secondNumber);

            Console.WriteLine("100 < 200 = " + compareNode.Eval());
        }