@SuppressWarnings("unchecked") public Set<org.kframework.definition.Sentence> apply(ModuleItem i) { if (i instanceof Syntax || i instanceof PriorityExtended) { return (Set<org.kframework.definition.Sentence>) apply((ASTNode) i); } else if (i instanceof Restrictions) { return Sets.newHashSet(); } else { return Sets.newHashSet((org.kframework.definition.Sentence) apply((ASTNode) i)); } }
public org.kframework.definition.Module apply(Module mainModule, Set<Module> allKilModules, Map<String, org.kframework.definition.Module> koreModules) { return apply(mainModule, allKilModules, koreModules, Seq()); }
public org.kframework.definition.Definition apply(Definition d) { // Set<org.kframework.definition.Require> requires = d.getItems().stream() // .filter(i -> i instanceof Require).map(i -> apply((Require) i)) // .collect(Collectors.toSet()); Set<Module> kilModules = d.getItems().stream().filter(i -> i instanceof Module) .map(mod -> (Module) mod).collect(Collectors.toSet()); Module mainModule = kilModules.stream() .filter(mod -> mod.getName().equals(d.getMainModule())).findFirst().get(); HashMap<String, org.kframework.definition.Module> koreModules = new HashMap<>(); apply(mainModule, kilModules, koreModules); // Set<org.kframework.definition.Module> modules = kilModules.map(i -> // apply((Module) i)) // .collect(Collectors.toSet()); // TODO: handle LiterateDefinitionComments return Definition( koreModules.get(mainModule.getName()), immutable(new HashSet<>(koreModules.values())), Att()); }
public Set<Module> loadModules( Set<Module> previousModules, String definitionText, Source source, File currentDirectory, List<File> lookupDirectories, Set<File> requiredFiles, boolean kore) { List<org.kframework.kil.Module> kilModules = slurp(definitionText, source, currentDirectory, lookupDirectories, requiredFiles); Definition def = new Definition(); def.setItems((List<DefinitionItem>) (Object) kilModules); Context context = new Context(); new CollectProductionsVisitor(kore, context).visit(def); KILtoKORE kilToKore = new KILtoKORE(context, false, kore); HashMap<String, Module> koreModules = new HashMap<>(); koreModules.putAll(previousModules.stream().collect(Collectors.toMap(Module::name, m -> m))); HashSet<org.kframework.kil.Module> kilModulesSet = new HashSet<>(kilModules); return kilModules.stream().map(m -> kilToKore.apply(m, kilModulesSet, koreModules)).flatMap(m -> Stream.concat(Stream.of(m), Stream.of(koreModules.get(m.name() + "$SYNTAX")))).collect(Collectors.toSet()); }
Set<org.kframework.definition.Sentence> items = mainModule.getItems().stream() .filter(j -> !(j instanceof org.kframework.kil.Import)) .flatMap(j -> apply(j).stream()).collect(Collectors.toSet()); org.kframework.definition.Module result = koreModules.get(mod.getName()); if (result == null) { result = apply(mod, allKilModules, koreModules, cons(mainModule, visitedModules));
/** * Takes a definition in e-kore textual format and a main module name, and returns the KORE * representation of that module. Current implementation uses JavaCC and goes through KIL. * * @param definitionText textual representation of the modules. * @param mainModule main module name. * @return KORE representation of the main module. */ public static Module parseMainModuleOuterSyntax(String definitionText, Source source, String mainModule) { Definition def = new Definition(); def.setItems(Outer.parse(source, definitionText, null)); def.setMainModule(mainModule); def.setMainSyntaxModule(mainModule); Context context = new Context(); new CollectProductionsVisitor(false, context).visit(def); KILtoKORE kilToKore = new KILtoKORE(context); return kilToKore.apply(def).getModule(mainModule).get(); }