private boolean isList(K item, boolean klist, boolean rhs, VarInfo vars, boolean anywhereRule) { return !klist && ((item instanceof KVariable && getSortOfVar((KVariable)item, vars).equals("K")) || item instanceof KSequence || (item instanceof KAs && isList(((KAs) item).alias(), klist, rhs, vars, anywhereRule)) || (item instanceof KApply && (functions.contains(((KApply) item).klabel()) || (((anywhereKLabels.contains(((KApply) item).klabel()) && !anywhereRule) || ((KApply) item).klabel() instanceof KVariable) && rhs)))) && !(!rhs && item instanceof KApply && collectionFor.containsKey(((KApply) item).klabel())); }
Optional<Integer> getLevel(KApply k) { int level = cfg.getLevel(k.klabel()); if (level >= 0) { return Optional.of(level); } else { return Optional.empty(); } }
@Override public Boolean apply(KApply k) { return isConstructorLike(k.klabel()) && super.apply(k); } }).apply(term);
@Override public K apply(KApply orig) { String name = orig.klabel().name(); return options.omittedKLabels.contains(name) ? omitTerm(mod, orig) : options.tokenizedKLabels.contains(name) ? tokenizeTerm(mod, orig) : options.flattenedKLabels.contains(name) ? flattenTerm(mod, orig) : options.tokastKLabels.contains(name) ? toKASTTerm(mod, orig) : orig ; } }.apply(term);
@Override public void apply(KApply k) { if (k.klabel().name().equals("#externalCell")) { hasConfigVar = true; } super.apply(k); }
private boolean isInitRule(String initLabel, String cellLabel, Sentence s) { try { // rule initXCell(Init) => <x> ... </x> KRewrite body = (KRewrite) ((Rule) s).body(); KApply left = (KApply) body.left(); KApply right = (KApply) body.right(); return left.klabel().name().equals(initLabel) // initXCell && right.klabel().name().equals(cellLabel); // <x> } catch (ClassCastException ignored) { return false; } }
private boolean isCell(K k) { return k instanceof KApply && cfg.isCell(labelInfo.getCodomain(((KApply) k).klabel())); } }
public void applyKLabel(KApply k) { sb.append("KApply ("); apply(k.klabel()); sb.append(", "); apply(k.klist().items(), true); sb.append(")"); }
@Override public void apply(KApply k) { if (k.klabel().name().equals("<k>")) { assert !inKCell; inKCell = true; super.apply(k); inKCell = false; } else { super.apply(k); } } @Override
@Override public K apply(KApply k) { if (k.klabel().name().equals(userCellLabel.name())) { return getUnblockRuleBody(streamProduction, sort); } else { return super.apply(k); } }
public scala.collection.Set<K> apply(KApply k) { if (k.klabel().name().equals(Strategy.strategyCellName())) return org.kframework.Collections.Set(k); else return super.apply(k); } }.apply(theNew).head();
private boolean isCellFragmentTest(KApply app) { if (app.klist().size() != 1) return false; K argument = app.klist().items().get(0); if (!(argument instanceof KVariable)) return false; VarInfo info = variables.get((KVariable)argument); if (info == null) return false; KLabel expectedPredicate = KLabel("is"+cfg.getCellSort(info.parentCell).toString()+"Fragment"); return app.klabel().equals(expectedPredicate); }
@Override default org.kframework.kore.KLabel klabel() { if (kLabel() instanceof KLabelInjection) { return ((KApply) ((KLabelInjection) kLabel()).term()).klabel(); } else { return (KLabel) kLabel(); } }
public static K toKASTTerm(Module mod, KApply kapp) { String kastTerm = ToKast.apply(kapp); Sort finalSort = Sorts.K(); Option<Sort> termSort = mod.sortFor().get(kapp.klabel()); if (! termSort.isEmpty()) { finalSort = termSort.get(); } return KToken(kastTerm, finalSort); } }
public static K flattenTerm(Module mod, KApply kapp) { List<K> items = new ArrayList<>(); Att att = mod.attributesFor().apply(KLabel(kapp.klabel().name())); if (att.contains("assoc") && att.contains("unit")) { items = Assoc.flatten(kapp.klabel(), kapp.klist().items(), KLabel(att.get("unit"))); } else { items = kapp.klist().items(); } return KApply(kapp.klabel(), KList(items), kapp.att()); }
@Override public K apply(KApply k) { k = (KApply) super.apply(k); return KApply(apply(k.klabel()), k.klist(), k.att()); }
private Production production(KApply term) { if (term.klabel().name().equals(KLabels.INJ)) return Production(INJ_PROD.klabel(), INJ_PROD.sort(), INJ_PROD.items(), Att.empty().add("originalPrd", Production.class, INJ_PROD)); scala.collection.Set<Production> prods = module.productionsFor().apply(((KApply) term).klabel()); assert(prods.size() == 1); return computePolyProd(prods.head()); }
private K tokenizeTerm(Module mod, KApply kapp) { Module unparsingModule = RuleGrammarGenerator.getCombinedGrammar(mod, false).getExtensionModule(); String tokenizedTerm = unparseTerm(kapp, unparsingModule, ColorSetting.OFF); Sort finalSort = Sorts.K(); Option<Sort> termSort = mod.sortFor().get(kapp.klabel()); if (! termSort.isEmpty()) { finalSort = termSort.get(); } return KToken(tokenizedTerm, finalSort); }