compute method
dynamic
compute(
- SymbolTable? scope
)
override
Implementation
@override
dynamic compute(scope) {
var l = left.compute(scope), r = right.compute(scope);
switch (operator.type) {
case TokenType.asterisk:
return l * r;
case TokenType.slash:
return l / r;
case TokenType.plus:
if (l is String || r is String) return l.toString() + r.toString();
return l + r;
case TokenType.minus:
return l - r;
case TokenType.lt:
return l < r;
case TokenType.gt:
return l > r;
case TokenType.lte:
return l <= r;
case TokenType.gte:
return l >= r;
case TokenType.equ:
return l == r;
case TokenType.nequ:
return l != r;
case TokenType.elvis:
return l ?? r;
default:
throw UnsupportedError(
'Unsupported binary operator: "${operator.span.text}".');
}
}