public org.kframework.definition.Definition loadDefinition( String mainModuleName, String syntaxModuleName, String definitionText, File source, File currentDirectory, List<File> lookupDirectories, boolean autoImportDomains, boolean kore) { return loadDefinition(mainModuleName, syntaxModuleName, definitionText, Source.apply(source.getAbsolutePath()), currentDirectory, lookupDirectories, autoImportDomains, kore); }
public org.kframework.definition.Definition loadDefinition( String mainModuleName, String syntaxModuleName, String definitionText, Source source, File currentDirectory, List<File> lookupDirectories, boolean autoImportDomains, boolean kore) { Set<Module> previousModules = new HashSet<>(); Set<File> requiredFiles = new HashSet<>(); if (autoImportDomains) previousModules.addAll(loadModules(new HashSet<>(), Kompile.REQUIRE_PRELUDE_K, source, currentDirectory, lookupDirectories, requiredFiles, kore)); Set<Module> modules = loadModules(previousModules, definitionText, source, currentDirectory, lookupDirectories, requiredFiles, kore); modules.addAll(previousModules); // add the previous modules, since load modules is not additive Module mainModule = getMainModule(mainModuleName, modules); Optional<Module> opt; opt = modules.stream().filter(m -> m.name().equals(syntaxModuleName)).findFirst(); Module syntaxModule; if (!opt.isPresent()) { kem.registerCompilerWarning("Could not find main syntax module with name " + syntaxModuleName + " in definition. Use --syntax-module to specify one. Using " + mainModuleName + " as default."); syntaxModule = mainModule; } else { syntaxModule = opt.get(); } return org.kframework.definition.Definition.apply(mainModule, immutable(modules), Att().add(Att.syntaxModule(), syntaxModule.name())); }
public Definition resolve(Definition d) { klabels = new HashSet<>(); Module transformedMainModule = resolve(d.mainModule()); return Definition.apply(transformedMainModule, add(transformedMainModule, minus(d.mainModule(), d.entryModules())), d.att()); }
public static Tuple2<Definition, Module> getProofDefinition(File proofFile, String defModuleName, String specModuleName, CompiledDefinition compiledDefinition, Backend backend, FileUtil files, KExceptionManager kem, Stopwatch sw) { Kompile kompile = new Kompile(compiledDefinition.kompileOptions, files, kem, sw, true); if (defModuleName == null) { defModuleName = compiledDefinition.kompiledDefinition.mainModule().name(); } if (specModuleName == null) { specModuleName = FilenameUtils.getBaseName(proofFile.getName()).toUpperCase(); } java.util.Set<Module> modules = kompile.parseModules(compiledDefinition, defModuleName, files.resolveWorkingDirectory(proofFile).getAbsoluteFile()); Map<String, Module> modulesMap = new HashMap<>(); modules.forEach(m -> modulesMap.put(m.name(), m)); Module defModule = getModule(defModuleName, modulesMap, compiledDefinition.getParsedDefinition()); Module specModule = getModule(specModuleName, modulesMap, compiledDefinition.getParsedDefinition()); specModule = backend.specificationSteps(compiledDefinition.kompiledDefinition).apply(specModule); specModule = spliceModule(specModule, compiledDefinition.kompiledDefinition); Definition combinedDef = Definition.apply(defModule, compiledDefinition.getParsedDefinition().entryModules(), compiledDefinition.getParsedDefinition().att()); Definition compiled = compileDefinition(backend, combinedDef); return Tuple2.apply(compiled, specModule); }
@Test public void testFrom() throws Exception { org.kframework.definition.Definition actual = Definition.from("module X endmodule"); Module modSyntax = Module.apply("X$SYNTAX", Set()); Module mod = new Module("X", Set(modSyntax), Set(), Att()); assertEquals(org.kframework.definition.Definition.apply(mod, Set(mod, modSyntax), Att()), actual); } }