visitLogical method
Implementation
@override
dynamic visitLogical(LogicalExpr expr) {
final op = expr.operator.lexeme;
// Short-circuit evaluation
if (op == 'and' || op == '&&') {
final left = _toBool(expr.left.accept(this));
if (!left) return false;
return _toBool(expr.right.accept(this));
}
if (op == 'or' || op == '||') {
final left = _toBool(expr.left.accept(this));
if (left) return true;
return _toBool(expr.right.accept(this));
}
throw EvaluationException('Unknown logical operator: $op');
}