示例#1
0
        private Expression equility()
        {
            Expression expression = comparison();

            while (match(TokenType.BANG_EQUAL, TokenType.EQUAL_EQUAL))
            {
                Token      op    = previous();
                Expression right = comparison();
                expression = new Expression.Binary(expression, op, right);
            }
            return(expression);
        }
示例#2
0
        private Expression factor()
        {
            Expression expression = unary();

            while (match(TokenType.SLASH, TokenType.STAR))
            {
                Token      op    = previous();
                Expression right = unary();
                expression = new Expression.Binary(expression, op, right);
            }

            return(expression);
        }
示例#3
0
        private Expression term()
        {
            Expression expression = factor();

            while (match(TokenType.MINUS, TokenType.PLUS))
            {
                Token      op    = previous();
                Expression right = factor();
                expression = new Expression.Binary(expression, op, right);
            }

            return(expression);
        }
示例#4
0
        private Expression comparison()
        {
            Expression expression = term();

            while (match(TokenType.GREATER, TokenType.GREATER_EQUAL, TokenType.LESS, TokenType.LESS_EQUAL))
            {
                Token      op    = previous();
                Expression right = term();
                expression = new Expression.Binary(expression, op, right);
            }

            return(expression);
        }
示例#5
0
 public string visitBinaryExpression(Expression.Binary expression)
 {
     return(parenthesize(expression.op.lexeme, expression.left, expression.right));
 }