visitBinaryExpression method

  1. @override
void visitBinaryExpression(
  1. BinaryExpression e,
  2. void arg
)
override

Implementation

@override
void visitBinaryExpression(BinaryExpression e, void arg) {
  visit(e.left, arg);

  final operatorSymbol = const {
    TokenType.doublePipe: '||',
    TokenType.star: '*',
    TokenType.slash: '/',
    TokenType.percent: '%',
    TokenType.plus: '+',
    TokenType.minus: '-',
    TokenType.shiftLeft: '<<',
    TokenType.shiftRight: '>>',
    TokenType.ampersand: '&',
    TokenType.pipe: '|',
    TokenType.less: '<',
    TokenType.lessEqual: '<=',
    TokenType.more: '>',
    TokenType.moreEqual: '>=',
    TokenType.equal: '=',
    TokenType.doubleEqual: '==',
    TokenType.exclamationEqual: '!=',
    TokenType.lessMore: '<>',
    TokenType.dashRangle: '->',
    TokenType.dashRangleRangle: '->>',
  }[e.operator.type];

  if (operatorSymbol != null) {
    symbol(operatorSymbol, spaceBefore: true, spaceAfter: true);
  } else {
    keyword(e.operator.type);
  }

  visit(e.right, arg);
}