private Expr transformExpr(Expr expr, ExprTransform exprTransform) { if ( expr == null || exprTransform == null ) return expr ; return ExprTransformer.transform(exprTransform, expr) ; } }
/** transform an expression that may involve aggregates into one that just uses the variable for the aggregate */ public static Expr replaceAggregateByVariable(Expr expr) { return ExprTransformer.transform(replaceAgg, expr) ; }
private ExprList transformExpr(ExprList exprList, ExprTransform exprTransform) { if ( exprList == null || exprTransform == null ) return exprList ; return ExprTransformer.transform(exprTransform, exprList) ; }
private Expr transformExpr(Expr expr, ExprTransform exprTransform) { if ( expr == null || exprTransform == null ) return expr ; return ExprTransformer.transform(exprTransform, expr) ; } }
private ExprList transformExpr(ExprList exprList, ExprTransform exprTransform) { if ( exprList == null || exprTransform == null ) return exprList ; return ExprTransformer.transform(exprTransform, exprList) ; }
private static Expr transform(Expr expr, ExprTransform exprTransform) { if ( expr == null || exprTransform == null ) return expr ; return ExprTransformer.transform(exprTransform, expr) ; }
private static Expr rewrite(Expr expr, ExprTransform transform) { return ExprTransformer.transform(transform, expr) ; }
private List<ExprAggregator> processAggregators(List<ExprAggregator> aggs, ExprTransform transform) { List<ExprAggregator> newAggs = new ArrayList<>(); for (ExprAggregator agg : aggs) { ExprAggregator e2 = (ExprAggregator) ExprTransformer.transform(transform, agg); newAggs.add(e2); } return newAggs; }
private static void transformExprList(List<Expr> exprList, ExprTransform exprTransform) { for (int i = 0; i < exprList.size(); i++) { Expr e1 = exprList.get(0); Expr e2 = ExprTransformer.transform(exprTransform, e1); if (e2 == null || e2 == e1) continue; exprList.set(i, e2); } }
/** Attempt to fold any sub-expressions of the Expr. * Return an expression that is equivalent to the argument but maybe simpler. * @param expr * @return Expression */ public static Expr foldConstants(Expr expr) { return ExprTransformer.transform(new ExprTransformConstantFold(), expr) ; }
public static Expr expandExpr(Expr expr, Map<Var, Expr> varDefs) { ExprTransform exprTransform = VarExprListUtils.createExprTransform(varDefs); Expr result = ExprTransformer.transform(exprTransform, expr); return result; }
public static Expr normalizeConcatExpressions(Expr expr) { Predicate<Expr> isConcatExpr = e -> e instanceof E_StrConcat;// || e instanceof E_StrConcatPermissive; Predicate<Expr> isOmittedExpr = e -> e instanceof E_Str; Expr e1 = ExprTransformer.transform(new ExprTransformFlattenFunction(isConcatExpr), expr); Expr e2 = ExprTransformer.transform(new ExprTransformConcatMergeConstants(isConcatExpr), e1); Expr result = ExprTransformer.transform(new ExprTransformSubstituteWithArgument(isOmittedExpr), e2); return result; }
public static Expr expandExpr(Expr expr, Map<Var, Expr> varDefs) { ExprTransform exprTransform = createExprTransform(varDefs); Expr result = ExprTransformer.transform(exprTransform, expr); return result; }
public void updateAssignments(Var v, Expr e) { ExprTransformSubstitute transform = new ExprTransformSubstitute(v, e); for (Var assignVar : this.assignments.keySet()) { Expr assignExpr = this.assignments.get(assignVar); assignExpr = ExprTransformer.transform(transform, assignExpr); this.assignments.put(assignVar, assignExpr); } }
public static Expr expandExpr(Expr expr, Map<Var, Expr> varDefs) { ExprTransform exprTransform = VarExprListUtils.createExprTransform(varDefs); Expr result = ExprTransformer.transform(exprTransform, expr); return result; }
public static Expr normalizeConcatExpressions(Expr expr) { Predicate<Expr> isConcatExpr = e -> e instanceof E_StrConcat;// || e instanceof E_StrConcatPermissive; Predicate<Expr> isOmittedExpr = e -> e instanceof E_Str; Expr e1 = ExprTransformer.transform(new ExprTransformFlattenFunction(isConcatExpr), expr); Expr e2 = ExprTransformer.transform(new ExprTransformConcatMergeConstants(isConcatExpr), e1); Expr result = ExprTransformer.transform(new ExprTransformSubstituteWithArgument(isOmittedExpr), e2); return result; }
public static Expr expandExpr(Expr expr, Map<Var, Expr> varDefs) { ExprTransform exprTransform = createExprTransform(varDefs); Expr result = ExprTransformer.transform(exprTransform, expr); return result; }
public static Map<Var, Expr> expandDefs(Map<Var, Expr> src, Map<Var, Expr> varDefs) { ExprTransform exprTransform = createExprTransform(varDefs); // Expand previously expanded variables Map<Var, Expr> result = src.entrySet().stream() .collect(Collectors.toMap( Entry::getKey, e -> { Expr expr = e.getValue(); Expr r = ExprTransformer.transform(exprTransform, expr); return r; }, (u, v) -> { throw new RuntimeException("duplicate"); }, LinkedHashMap::new )); return result; }
private static void transformSortConditions(List<SortCondition> conditions, ExprTransform exprTransform) { for (int i = 0; i < conditions.size(); i++) { SortCondition s1 = conditions.get(i); Expr e = ExprTransformer.transform(exprTransform, s1.expression); if (e == null || s1.expression.equals(e)) continue; conditions.set(i, new SortCondition(e, s1.direction)); } }
public static Map<Var, Expr> expandDefs(Map<Var, Expr> src, Map<Var, Expr> varDefs) { ExprTransform exprTransform = VarExprListUtils.createExprTransform(varDefs); // Expand previously expanded variables Map<Var, Expr> result = src.entrySet().stream() .collect(Collectors.toMap( Entry::getKey, e -> { Expr expr = e.getValue(); Expr r = ExprTransformer.transform(exprTransform, expr); return r; }, (u, v) -> { throw new RuntimeException("duplicate"); }, LinkedHashMap::new )); return result; }