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); }
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); }
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); }
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); }
public string visitBinaryExpression(Expression.Binary expression) { return(parenthesize(expression.op.lexeme, expression.left, expression.right)); }