@Override public void visitBinaryOperation(BinaryOperation binaryOperation) { incr(); space(); System.out.println("Binary operator: " + binaryOperation.getType()); binaryOperation.getLeftExpression().accept(this); binaryOperation.getRightExpression().accept(this); decr(); }
public static <T> Matrix<T> product(Matrix<T> A, Matrix<T> B) { if (A.ring != B.ring || A.n != B.m) throw new IllegalArgumentException(); BinaryOperation<T> addition = A.ring.addition(); BinaryOperation<T> times = A.ring.multiplication(); Matrix<T> product = new Matrix<T>(A.ring, A.m, B.n); for (int i = 0; i < A.m; i++) for (int k = 0; k < B.n; k++) { T t = A.zero; for (int j = 0; j < A.n; j++) t = addition.op(t, times.op(A.get(i, j), B.get(j, k))); product.set(i, k, t); } return product; }
private Formula readInfixP1() throws ParseException { Formula left = readInfixP2(); char c = peek(0); LinkedList<BinaryOperation> parts = new LinkedList<>(); while (c == '+' || c == '-') { String op = Character.toString(c); readSymbol(op); Formula part = readInfixP2(); parts.add(new BinaryOperation(BinaryOperation.fromSymbol(op), null, part)); c = peek(0); } Formula result = left; while (!parts.isEmpty()) { BinaryOperation part = parts.removeFirst(); result = new BinaryOperation(part.getOperation(), result, part.getRight()); } return result; }
public int operate(int op1, int op2) { return addition.operate(op1, op2); }
@Override public void setRight(ASTNode node) { super.setRight(node); }
@Override public void visitBinaryOperation(BinaryOperation binaryOperation) { binaryOperation.getLeftExpression().accept(this); binaryOperation.getRightExpression().accept(this); }