Search in sources :

Example 31 with CompilationException

use of org.snt.inmemantlr.exceptions.CompilationException in project inmemantlr by julianthome.

the class TestSimple method testInterpreter.

@Test
public void testInterpreter() throws IOException {
    try (InputStream sgrammar = getClass().getClassLoader().getResourceAsStream("inmemantlr/Simple.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);
    // this example shows you how one could use inmemantlr for incremental parsing
    try {
        ParseTree parseTree;
        gp.parse("PRINT a+b");
        parseTree = t.getParseTree();
        LOGGER.debug(parseTree.toDot());
        Assertions.assertEquals(parseTree.getNodes().size(), 6);
        gp.parse("PRINT \"test\"");
        parseTree = t.getParseTree();
        LOGGER.debug(parseTree.toDot());
        Assertions.assertEquals(parseTree.getNodes().size(), 4);
    } catch (IllegalWorkflowException | ParsingException e) {
        LOGGER.error(e.getMessage(), e);
    }
}
Also used : CompilationException(org.snt.inmemantlr.exceptions.CompilationException) InputStream(java.io.InputStream) ParsingException(org.snt.inmemantlr.exceptions.ParsingException) IllegalWorkflowException(org.snt.inmemantlr.exceptions.IllegalWorkflowException) DefaultTreeListener(org.snt.inmemantlr.listener.DefaultTreeListener) ParseTree(org.snt.inmemantlr.tree.ParseTree) GenericParser(org.snt.inmemantlr.GenericParser) Test(org.junit.jupiter.api.Test)

Aggregations

GenericParser (org.snt.inmemantlr.GenericParser)31 CompilationException (org.snt.inmemantlr.exceptions.CompilationException)31 Test (org.junit.jupiter.api.Test)29 DefaultTreeListener (org.snt.inmemantlr.listener.DefaultTreeListener)23 IllegalWorkflowException (org.snt.inmemantlr.exceptions.IllegalWorkflowException)19 ParsingException (org.snt.inmemantlr.exceptions.ParsingException)19 FileNotFoundException (java.io.FileNotFoundException)17 File (java.io.File)16 ParseTree (org.snt.inmemantlr.tree.ParseTree)16 InputStream (java.io.InputStream)8 IOException (java.io.IOException)7 ParserRuleContext (org.antlr.v4.runtime.ParserRuleContext)7 Assertions (org.junit.jupiter.api.Assertions)7 Logger (org.slf4j.Logger)7 LoggerFactory (org.slf4j.LoggerFactory)7 CasedStreamProvider (org.snt.inmemantlr.stream.CasedStreamProvider)7 ToolCustomizer (org.snt.inmemantlr.tool.ToolCustomizer)7 FileUtils (org.snt.inmemantlr.utils.FileUtils)7 java.util (java.util)6 Collectors (java.util.stream.Collectors)6