@Override public void visit(OuterProduct node) { result = null; node.getLeft().accept(this); Expression leftResult = result; node.getRight().accept(this); Expression rightResult = result; if (leftResult != null || rightResult != null) result = new OuterProduct(leftResult, rightResult); }
/** * Creates a single expression of expression array, which represents the wedge arguments * @param arr The expression array * @return The created expression */ public static Expression exprArrToOuterProduct(Expression[] arr) { if (arr.length == 1) { return arr[0]; } else { OuterProduct r = new OuterProduct(arr[0], null); OuterProduct cur = r; for (int i=1;i<arr.length-1;i++) { OuterProduct add = new OuterProduct(arr[i], null); cur.setRight(add); cur = add; } cur.setRight(arr[arr.length-1]); return r; } }
@Override public OuterProduct create(Expression left, Expression right) { return new OuterProduct(left, right); } }
@Override public Object visitOuterProduct(CluCalcParser.OuterProductContext ctx) { return new OuterProduct((Expression) visit(ctx.left), (Expression) visit(ctx.right)); }
@Override public Expression copy() { return new OuterProduct(getLeft().copy(), getRight().copy()); }
result = new OuterProduct(l, r);