private Expression And() { Expression expression = Equality(); while (Match(TokenType.AND)) { Token op = Previous(); Expression right = Equality(); expression = new Expression.Logical(expression, op, right); } return(expression); }
private Expression Or() { Expression expression = And(); while (Match(TokenType.OR)) { Token op = Previous(); Expression right = And(); expression = new Expression.Logical(expression, op, right); } return(expression); }
public object VisitLogicalExpression(Expression.Logical expression) { object left = Evaluate(expression.left); if (expression.op.type == TokenType.OR) { if (IsTruthy(left)) { return(left); } } else { if (!IsTruthy(left)) { return(left); } } return(Evaluate(expression.right)); }
public string VisitLogicalExpression(Expression.Logical expression) { throw new NotImplementedException(); }
public object VisitLogicalExpression(Expression.Logical expression) { Resolve(expression.left); Resolve(expression.right); return(null); }
public object VisitLogicalExpr(Expression.Logical expr) { throw new NotImplementedException("Resolver VisitLogicalExpr is not implemented"); }
public object VisitLogicalExpr(Expression.Logical expr) { throw new NotImplementedException(); }