@Override public ILexLocation defaultPStateDesignator(PStateDesignator node) throws AnalysisException { return node.getLocation(); }
public static void beforeAssignmentSet(AAssignmentStm assignStmt, Value oldval, Value newval) { if (checker != null && checker.reuiresCheck(assignStmt.getTarget())) { synchronized (values) { values.add(assignStmt.getTarget().getLocation()); } } }
public static AMapSeqStateDesignator newAMapSeqStateDesignator( PStateDesignator mapseq, PExp exp) { AMapSeqStateDesignator result = new AMapSeqStateDesignator(); initStateDesignator(result, mapseq.getLocation()); result.setMapseq(mapseq); result.setExp(exp); return result; }
public static AFieldStateDesignator newAFieldStateDesignator( PStateDesignator object, ILexIdentifierToken field) { AFieldStateDesignator result = new AFieldStateDesignator(); initStateDesignator(result, object.getLocation()); result.setObject(object); result.setField(field); return result; }
public MapApplyObligation(PStateDesignator root, PExp arg, IPOContextStack ctxt, IPogAssistantFactory af) throws AnalysisException { super(root, POType.MAP_APPLY, ctxt, root.getLocation(), af); AMapDomainUnaryExp dom_exp = new AMapDomainUnaryExp(); dom_exp.setExp(root.clone().apply(new StateDesignatorToExpVisitor())); // We don't care about type of the exp. This is just for the CGP to not crash. dom_exp.setType(new AUnknownType()); AInSetBinaryExp inSetExp = AstExpressionFactory.newAInSetBinaryExp(arg.clone(), dom_exp); stitch = inSetExp; valuetree.setPredicate(ctxt.getPredWithContext(inSetExp)); } }
public SeqApplyObligation(PStateDesignator root, PExp arg, IPOContextStack ctxt, IPogAssistantFactory af) throws AnalysisException { super(root, POType.SEQ_APPLY, ctxt, root.getLocation(), af); // arg >0 AIntLiteralExp zeroExp = new AIntLiteralExp(); zeroExp.setValue(new LexIntegerToken(0, null)); AGreaterNumericBinaryExp grExp = AstExpressionFactory.newAGreaterNumericBinaryExp(arg.clone(), zeroExp); // len(root) ALenUnaryExp lenExp = new ALenUnaryExp(); PExp stateExp = root.apply(new StateDesignatorToExpVisitor()); lenExp.setExp(stateExp.clone()); // len(root)+1 AIntLiteralExp oneExp = new AIntLiteralExp(); oneExp.setValue(new LexIntegerToken(1, null)); APlusNumericBinaryExp plusExp = AstExpressionFactory.newAPlusNumericBinaryExp(lenExp, oneExp); // arg <= len(root) +1 ALessEqualNumericBinaryExp lteExp = AstExpressionFactory.newALessEqualNumericBinaryExp(arg.clone(), plusExp); // arg > 0 and arg <= len(root)+1 AAndBooleanBinaryExp andExp = AstExpressionFactory.newAAndBooleanBinaryExp(grExp, lteExp); stitch = andExp; valuetree.setPredicate(ctxt.getPredWithContext(stitch)); } }
String cname = ctype.getName().getName(); node.setObjectfield(new LexNameToken(cname, field.getName(), node.getObject().getLocation())); PDefinition fdef = question.assistantFactory.createPDefinitionAssistant().findName(ctype.getClassdef(), node.getObjectfield(), NameScope.STATE);