public static void check(Module m) { m.getItems().stream().forEach(CheckListDecl::check); // i -> check(i) }
public void visit(Module mod) { this.moduleName = mod.getName(); mod.getItems().forEach(mi -> { if (mi instanceof Syntax) visit((Syntax)mi); }); }
checkCircularModuleImports(mainModule, visitedModules); CheckListDecl.check(mainModule); 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()); Set<Import> importedModuleNames = mainModule.getItems().stream() .filter(imp -> imp instanceof Import) .map(imp -> (Import) imp)
@Test public void testEmptyRules() throws Exception { // TODO: remove once the new parser is fully functional String def = "module TEST rule endmodule"; List<DefinitionItem> defItemList = Outer.parse(Source.apply("generated by OuterParsingTests"), def, null); Module mod = (Module) defItemList.get(0); StringSentence sen = (StringSentence) mod.getItems().get(0); Assert.assertEquals(sen.getContent(), ""); }
@Test public void testLexicalRules() throws Exception { // TODO: remove once the new parser is fully functional String def = "module TEST syntax Str ::= Token{((~[\\'\\n\\r\\\\])|([\\\\]~[\\n\\r]))*} endmodule"; List<DefinitionItem> defItemList = Outer.parse(Source.apply("generated by OuterParsingTests"), def, null); Module mod = (Module) defItemList.get(0); Syntax syn = (Syntax) mod.getItems().get(0); Lexical lex = (Lexical) syn.getPriorityBlocks().get(0).getProductions().get(0).getItems().get(0); Assert.assertEquals("((~[\\'\\n\\r\\\\])|([\\\\]~[\\n\\r]))*", lex.getLexicalRule()); }
@Test public void testLexicalRules2() throws Exception { // TODO: remove once the new parser is fully functional String def = "module TEST syntax Str ::= Token{{[a]|[b] \".\"}+NT~[x]*} endmodule"; List<DefinitionItem> defItemList = Outer.parse(Source.apply("generated by OuterParsingTests"), def, null); Module mod = (Module) defItemList.get(0); Syntax syn = (Syntax) mod.getItems().get(0); Lexical lex = (Lexical) syn.getPriorityBlocks().get(0).getProductions().get(0).getItems().get(0); Assert.assertEquals("{[a]|[b] \".\"}+NTDz~[x]*", lex.getLexicalRule()); } }
Collections.sort(module.getItems(), new EndPositionComparator()); items.add(markLoc(loc, module)); module = null;