@Override public K apply(KApply k) { if (predicates.values().contains(k)) { return BooleanUtils.TRUE; } return super.apply(k); } }.apply(requires);
List<Rule> rules = macros.get(k.klabel()); if (rules == null) return super.apply(k); K applied = super.apply(k); for (Rule r : rules) { if (!r.requires().equals(BooleanUtils.TRUE)) { coverage.println(r.att().get("UNIQUE_ID")); return apply(new TransformK() { @Override public K apply(KVariable k) {
@Override public K apply(KVariable k) { if (ANON_VAR.equals(k)) { return newDotVariable(); } return super.apply(k); } }.apply(term);
public K apply(KSequence kseq) { return super.apply(((ADT.KSequence) kseq).kApply()); } }.apply(ruleBody);
@Override public K apply(KApply k) { return super.apply(closeCell(k)); }
@Override public K apply(KSequence k) { ArrayList<K> newItems = new ArrayList<>(k.items()); boolean change = false; for (int i = 0; i < newItems.size(); ++i) { K in = newItems.get(i); K out = apply(newItems.get(i)); newItems.set(i, out); change = change || (in != out); } if (change) { return KSequence(newItems, k.att()); } else { return k; } }
@Override public K apply(KApply k) { if (k.klabel().name().equals(userCellLabel.name())) { return getUnblockRuleBody(streamProduction, sort); } else { return super.apply(k); } }
@Override public K apply(KApply k) { ArrayList<K> newItems = new ArrayList<>(k.klist().items()); boolean change = false; for (int i = 0; i < newItems.size(); ++i) { K in = newItems.get(i); K out = apply(in); newItems.set(i, out); change = change || (in != out); } if (change) { return KApply(apply(k.klabel()), KList(newItems), k.att()); } else { return k; } }
@Override public K apply(KVariable k) { if (normalization.containsKey(k)) { return KVariable(normalization.get(k), k.att().add("denormal", k.name())); } return super.apply(k); } }.apply(denormal);
public K apply(KVariable var) { if (var.name(). equals("HOLE") && transitions.stream().noneMatch(att::contains)) { return KVariable(var.name(), var.att().add(Sort.class, Outer.parseSort(att.getOptional("result").orElse("KResult")))); } return super.apply(var); } }.apply(body);
@Override public K apply(KSequence k) { k = (KSequence) super.apply(k); return KSequence(k.items(), k.att()); }
@Override public K apply(KApply k) { if (k.klabel() instanceof KVariable && predicates.containsKey(k.klabel())) { return KApply(apply(k.klabel()), k.klist().items().stream().map(this::apply).collect(org.kframework.Collections.toList()), k.att()); } return super.apply(k); }
@Override public K apply(KApply k) { if (k.klabel().name().startsWith("#SemanticCastTo")) { sort = k.att().get(Production.class).sort(); } return super.apply(k); }
@Override public K apply(KRewrite k) { k = (KRewrite) super.apply(k); return KRewrite(k.left(), k.right(), k.att()); }
@Override public K apply(KRewrite k) { K left = super.apply(k.left()); return KRewrite(left, k.right(), k.att()); } }.apply(term);
@Override public K apply(KApply k) { for (KLabel collectionLabel : collectionFor.keySet()) { Optional<String> wrapElement = m.attributesFor().apply(collectionLabel).getOptional("wrapElement"); if (wrapElement.isPresent()) { KLabel wrappedLabel = KLabel(wrapElement.get()); KLabel elementLabel = KLabel(m.attributesFor().apply(collectionLabel).get("element")); if (k.klabel().equals(elementLabel)) { return k; } if (k.klabel().equals(wrappedLabel)) { if (collectionIsMap(collectionLabel)) { // Map return KApply(elementLabel, super.apply(k.klist().items().get(0)), super.apply(k)); } else if (collectionIsBag(collectionLabel)) { // bags are handled differently in the java backend, so we don't want to infer here return super.apply(k); } else { return KApply(elementLabel, super.apply(k)); } } } } return super.apply(k); } }.apply(term);
@Override public K apply(InjectedKLabel k) { if (k.klabel() instanceof KVariable && predicates.containsKey(k.klabel())) { return InjectedKLabel(apply(k.klabel()), k.att()); } return super.apply(k); }