use of org.snt.inmemantlr.GenericParser in project inmemantlr by julianthome.
the class TestExternalGrammars method testZ.
@Test
public void testZ() {
if (!toCheck("z"))
return;
Subject s = subjects.get("z");
// Assertions.assertTrue(mfiles.size() > 0);
GenericParser gp = null;
try {
gp = new GenericParser(s.g4.toArray(new File[0]));
} catch (FileNotFoundException e) {
fail();
}
try {
File util1 = new File("src/test/resources/grammars-v4/z/src/main/java" + "/ZOperatorListener.java");
File util2 = new File("src/test/resources/grammars-v4/z/src/main/java" + "/ZSupport.java");
gp.addUtilityJavaFiles(util1, util2);
} catch (FileNotFoundException e) {
fail();
}
assertNotNull(gp);
DefaultTreeListener mdt = new DefaultTreeListener();
assertDoesNotThrow(gp::compile);
gp.setListener(mdt);
verify(gp, s.examples, s.nexamples, s.entrypoint);
}
use of org.snt.inmemantlr.GenericParser in project inmemantlr by julianthome.
the class TestHello method testInterpreter.
@Test
public void testInterpreter() throws IOException {
try (InputStream sgrammar = getClass().getClassLoader().getResourceAsStream("inmemantlr/Hello.g4")) {
sgrammarcontent = FileUtils.getStringFromStream(sgrammar);
}
GenericParser gp = new GenericParser(sgrammarcontent);
DefaultTreeListener t = new DefaultTreeListener();
gp.setListener(t);
boolean compile;
try {
gp.compile();
compile = true;
} catch (CompilationException e) {
compile = false;
}
Assertions.assertTrue(compile);
}
use of org.snt.inmemantlr.GenericParser in project inmemantlr by julianthome.
the class TestNonCombinedGrammar method testParserLexer.
@Test
public void testParserLexer() throws IOException {
LOGGER.debug("Test multi file parsing");
File[] files = { new File(getClass().getClassLoader().getResource("inmemantlr/MySQLLexer.g4").getFile()), new File(getClass().getClassLoader().getResource("inmemantlr/MySQLParser.g4").getFile()) };
GenericParser gp = new GenericParser(files);
DefaultTreeListener t = new DefaultTreeListener();
gp.setListener(t);
boolean compile;
try {
gp.compile();
compile = true;
} catch (CompilationException e) {
compile = false;
}
Assertions.assertTrue(compile);
try {
ParseTree parseTree;
gp.parse("select a from b;");
parseTree = t.getParseTree();
Assertions.assertEquals(13, parseTree.getNodes().size());
LOGGER.debug(parseTree.toDot());
} catch (IllegalWorkflowException | ParsingException e) {
LOGGER.error(e.getMessage(), e);
}
}
use of org.snt.inmemantlr.GenericParser in project inmemantlr by julianthome.
the class TestParseTreeProcessor method testProcessor.
@Test
public void testProcessor() {
GenericParser gp = new GenericParser(sgrammarcontent);
boolean compile;
try {
gp.compile();
compile = true;
} catch (CompilationException e) {
compile = false;
}
assertTrue(compile);
assertTrue(s != null && !s.isEmpty());
DefaultTreeListener dlist = new DefaultTreeListener();
gp.setListener(dlist);
try {
gp.parse(s);
} catch (IllegalWorkflowException | ParsingException e) {
fail();
}
ParseTree parseTree = dlist.getParseTree();
// Process the tree bottom up
ParseTreeProcessor<String, String> processor = new ParseTreeProcessor<String, String>(parseTree) {
int cnt = 0;
@Override
public String getResult() {
return String.valueOf(cnt);
}
@Override
protected void initialize() {
for (ParseTreeNode n : this.parseTree.getNodes()) {
smap.put(n, "");
}
}
@Override
protected void process(ParseTreeNode n) {
cnt++;
simpleProp(n);
assertNotNull(getElement(n));
}
};
try {
processor.process();
} catch (ParseTreeProcessorException e) {
fail();
}
assertNotNull(processor.debug());
}
use of org.snt.inmemantlr.GenericParser in project inmemantlr by julianthome.
the class TestArtifactSerialization method testArtifactSerialization.
@Test
public void testArtifactSerialization() throws IOException {
try (InputStream sgrammar = getClass().getClassLoader().getResourceAsStream("inmemantlr/Simple.g4")) {
sgrammarcontent = FileUtils.getStringFromStream(sgrammar);
}
ToolCustomizer tc = t -> t.genPackage = "com.github.inmemantlr.parser";
GenericParser gp = new GenericParser(tc, sgrammarcontent);
DefaultTreeListener t = new DefaultTreeListener();
gp.setListener(t);
boolean compile;
try {
gp.compile();
compile = true;
} catch (CompilationException e) {
compile = false;
}
Assertions.assertTrue(compile);
gp.writeAntlrAritfactsTo("/tmp/test/out");
Assertions.assertTrue(Files.exists(Paths.get("/tmp/test/out")));
}
Aggregations