/** * Returns a deep clone of this {@link ALetDefExp} node. * @return a deep clone of this {@link ALetDefExp} node */ public ALetDefExp clone() { return new ALetDefExp( _type, _location, cloneList(_localDefs), cloneNode(_expression) ); }
/** * Creates a deep clone of this {@link ALetDefExp} node while putting all * old node-new node relations in the map {@code oldToNewMap}. * @param oldToNewMap the map filled with the old node-new node relation * @return a deep clone of this {@link ALetDefExp} node */ public ALetDefExp clone(Map<INode,INode> oldToNewMap) { ALetDefExp node = new ALetDefExp( _type, _location, cloneList(_localDefs, oldToNewMap), cloneNode(_expression, oldToNewMap) ); oldToNewMap.put(this, node); return node; }
public static ALetDefExp newALetDefExp(ILexLocation start, List<PDefinition> localDefs, PExp readConnectiveExpression) { ALetDefExp result = new ALetDefExp(); initExpression(result, start); result.setLocalDefs(localDefs); result.setExpression(readConnectiveExpression); return result; }
@Override public PExp getContextNode(PExp stitch) { if (!exp.getLocalDefs().isEmpty()) { ALetDefExp letDefExp = new ALetDefExp(); letDefExp.setLocalDefs(exp.clone().getLocalDefs()); letDefExp.setExpression(stitch); return letDefExp; } else { return stitch; } }
private PExp buildStructuralComparison(PExp left_exp, PExp right_exp, int measureLexical) { if (measureLexical == 0) // what about 1 measures? same as 0? { return AstExpressionFactory.newAGreaterNumericBinaryExp(left_exp, right_exp); } ALetDefExp let_exp = new ALetDefExp(); AValueDefinition left_def = buildValueDef(left_exp, LEFT_MEASURE_NAME); AValueDefinition right_def = buildValueDef(right_exp, RIGHT_MEASURE_NAME); List<PDefinition> localDefs = new LinkedList<PDefinition>(); localDefs.add(left_def); localDefs.add(right_def); let_exp.setLocalDefs(localDefs); // let left = [left expression], right=[right expression] // in ... // we don't strictly need the let in AVariableExp leftName_exp = wrapName(new LexNameToken(null, LEFT_MEASURE_NAME, null)); AVariableExp rightName_exp = wrapName(new LexNameToken(null, RIGHT_MEASURE_NAME, null)); // build the left < right structural comparison expression let_exp.setExpression(buildStructuralLessThan(leftName_exp, rightName_exp, 1, measureLexical).clone()); return let_exp; }
ALetDefExp letDefExp = new ALetDefExp(); AEqualsDefinition localDef = new AEqualsDefinition(); localDef.setPattern(result.getPattern().clone());
ALetDefExp letDefExp = new ALetDefExp();
ALetDefExp letExp = new ALetDefExp(); letExp.setType(def.getInvExpression().getType().clone()); List<PDefinition> invDefs = new Vector<PDefinition>();