public ActionPreCondition applySubst(Substitution subst) { return new ActionPreCondition((getPreCondition() == null) ? null : getPreCondition().applySubst(subst), getSignatures(), getSourceInfo()); }
/** * @return A {@link MentalStateCondition} of the form "bel(precondition)" that * represents the precondition of this action. */ @Override public MentalStateCondition getPrecondition() { // Create mental state condition of the form "self.bel(precondition)". if (this.precondition == null) { return new MentalStateCondition(null, null); } else { List<MentalFormula> formulalist = new ArrayList<>(1); formulalist.add(new BelLiteral(true, new Selector(SelectorType.SELF, this.precondition.getSourceInfo()), this.precondition.getPreCondition(), this.precondition.getSignatures(), this.precondition.getSourceInfo())); return new MentalStateCondition(formulalist, this.precondition.getSourceInfo()); } }
@Override public UserSpecAction applySubst(Substitution substitution) { // Apply substitution to action parameters, pre- and post-condition. List<Term> parameters = new ArrayList<>(getParameters().size()); for (Term parameter : getParameters()) { parameters.add(parameter.applySubst(substitution)); } ActionPreCondition precondition = (getFullPreCondition() == null) ? null : getFullPreCondition().applySubst(substitution); ActionPostCondition positivePostcondition = (getPositivePostcondition() == null) ? null : getPositivePostcondition().applySubst(substitution); ActionPostCondition negativePostcondition = (getNegativePostcondition() == null) ? null : getNegativePostcondition().applySubst(substitution); return new UserSpecAction(getName(), parameters, isExternal(), precondition, positivePostcondition, negativePostcondition, getSourceInfo()); }
postvars.addAll(negativePostcondition.getPostCondition().getFreeVar()); if (precondition != null && precondition.getPreCondition() != null) { postvars.removeAll(precondition.getPreCondition().getFreeVar());
@Override public ActionPreCondition visitPre(PreContext ctx) { String krFragment = (ctx.KR_BLOCK() == null) ? "" : removeLeadTrailCharacters(ctx.KR_BLOCK().getText()); Query pre = null; Set<String> signatures = null; try { CognitiveKR ckr = getCognitiveKR(); SourceInfo info = getSourceInfo(ctx.KR_BLOCK()); info = (info == null) ? null : new InputStreamPosition(info.getLineNumber(), info.getCharacterPosition() + 1, info.getStartIndex() + 1, info.getStopIndex() - 1, info.getSource()); pre = ckr.visitBeliefQuery(krFragment, info); if (pre != null) { signatures = ckr.getUsedSignatures(pre); } reportEmbeddedLanguageErrors(ckr); } catch (ParserException e) { reportParsingException(e); } return (pre == null) ? null : new ActionPreCondition(pre, signatures, getSourceInfo(ctx)); }