evalBinaryExpression method

  1. @protected
dynamic evalBinaryExpression(
  1. BinaryExpression expression,
  2. Map<String, dynamic> context
)
inherited

Implementation

@protected
dynamic evalBinaryExpression(
    BinaryExpression expression, Map<String, dynamic> context) {
  var left = eval(expression.left, context);
  right() => eval(expression.right, context);
  switch (expression.operator) {
    case '||':
      return left || right();
    case '&&':
      return left && right();
    case '|':
      return left | right();
    case '^':
      return left ^ right();
    case '&':
      return left & right();
    case '==':
      return left == right();
    case '!=':
      return left != right();
    case '<=':
      return left <= right();
    case '>=':
      return left >= right();
    case '<':
      return left < right();
    case '>':
      return left > right();
    case '<<':
      return left << right();
    case '>>':
      return left >> right();
    case '+':
      return left + right();
    case '-':
      return left - right();
    case '*':
      return left * right();
    case '/':
      return left / right();
    case '%':
      return left % right();
    case '~/':
      return left ~/ right();
    case '??':
      return left ?? right();
  }
  throw ArgumentError(
      'Unknown operator ${expression.operator} in expression');
}