@Override public void exitArithmeticBinaryTerm(ArithmeticBinaryTermContext context) { BinaryExpression result = new BinaryExpression(); Operator operator; String text = context.operator.getText(); switch (text) { case "+": operator = Operator.ADD; break; case "-": operator = Operator.SUBTRACT; break; default: throw new IllegalArgumentException("The string \"" + text + "\" isn't valid additive operator"); } result.setOperator(operator); result.setLeft(context.left.result); result.setRight(context.right.result); context.result = result; }
@Override public void exitArithmeticBinaryFactor(ArithmeticBinaryFactorContext context) { BinaryExpression result = new BinaryExpression(); Operator operator; String text = context.operator.getText(); switch (text) { case "*": operator = Operator.MULTIPLY; break; case "/": operator = Operator.DIVIDE; break; case "%": operator = Operator.REMAINDER; break; default: throw new IllegalArgumentException("The string \"" + text + "\" isn't valid multiplicative operator"); } result.setOperator(operator); result.setLeft(context.left.result); result.setRight(context.right.result); context.result = result; }
@Override public void exitBooleanBinaryTerm(BooleanBinaryTermContext context) { BinaryExpression result = new BinaryExpression(); result.setOperator(Operator.OR); result.setLeft(context.left.result); result.setRight(context.right.result); context.result = result; }
@Override public void exitBooleanBinaryFactor(BooleanBinaryFactorContext context) { BinaryExpression result = new BinaryExpression(); result.setOperator(Operator.AND); result.setLeft(context.left.result); result.setRight(context.right.result); context.result = result; }
result.setRight(context.right.result); context.result = result;
result.setOperator(operator); result.setLeft(left); result.setRight(right); return result;