Search in sources :

Example 86 with ErrorQueue

use of org.antlr.v4.test.runtime.ErrorQueue in project antlr4 by antlr.

the class BaseJavaTest method checkGrammarSemanticsWarning.

protected void checkGrammarSemanticsWarning(ErrorQueue equeue, GrammarSemanticsMessage expectedMessage) throws Exception {
    ANTLRMessage foundMsg = null;
    for (int i = 0; i < equeue.warnings.size(); i++) {
        ANTLRMessage m = equeue.warnings.get(i);
        if (m.getErrorType() == expectedMessage.getErrorType()) {
            foundMsg = m;
        }
    }
    assertNotNull("no error; " + expectedMessage.getErrorType() + " expected", foundMsg);
    assertTrue("error is not a GrammarSemanticsMessage", foundMsg instanceof GrammarSemanticsMessage);
    assertEquals(Arrays.toString(expectedMessage.getArgs()), Arrays.toString(foundMsg.getArgs()));
    if (equeue.size() != 1) {
        System.err.println(equeue);
    }
}
Also used : GrammarSemanticsMessage(org.antlr.v4.tool.GrammarSemanticsMessage) ANTLRMessage(org.antlr.v4.tool.ANTLRMessage)

Example 87 with ErrorQueue

use of org.antlr.v4.test.runtime.ErrorQueue in project antlr4 by antlr.

the class TestPerformance method testExponentialInclude.

@Test(timeout = 20000)
public void testExponentialInclude() {
    String grammarFormat = "parser grammar Level_%d_%d;\n" + "\n" + "%s import Level_%d_1, Level_%d_2;\n" + "\n" + "rule_%d_%d : EOF;\n";
    RuntimeTestUtils.mkdir(getTempDirPath());
    long startTime = System.nanoTime();
    int levels = 20;
    for (int level = 0; level < levels; level++) {
        String leafPrefix = level == levels - 1 ? "//" : "";
        String grammar1 = String.format(grammarFormat, level, 1, leafPrefix, level + 1, level + 1, level, 1);
        writeFile(getTempDirPath(), "Level_" + level + "_1.g4", grammar1);
        if (level > 0) {
            String grammar2 = String.format(grammarFormat, level, 2, leafPrefix, level + 1, level + 1, level, 1);
            writeFile(getTempDirPath(), "Level_" + level + "_2.g4", grammar2);
        }
    }
    ErrorQueue equeue = BaseRuntimeTest.antlrOnString(getTempDirPath(), "Java", "Level_0_1.g4", false);
    Assert.assertTrue(equeue.errors.isEmpty());
    long endTime = System.nanoTime();
    System.out.format("%s milliseconds.%n", (endTime - startTime) / 1000000.0);
}
Also used : ErrorQueue(org.antlr.v4.test.runtime.ErrorQueue) BaseRuntimeTest(org.antlr.v4.test.runtime.BaseRuntimeTest) Test(org.junit.Test)

Example 88 with ErrorQueue

use of org.antlr.v4.test.runtime.ErrorQueue in project antlr4 by antlr.

the class BaseJavaToolTest method testErrors.

public void testErrors(String[] pairs, boolean printTree) {
    for (int i = 0; i < pairs.length; i += 2) {
        String grammarStr = pairs[i];
        String expect = pairs[i + 1];
        String[] lines = grammarStr.split("\n");
        String fileName = getFilenameFromFirstLineOfGrammar(lines[0]);
        // use default language target in case test overrides
        ErrorQueue equeue = BaseRuntimeTest.antlrOnString(getTempDirPath(), null, fileName, grammarStr, false);
        String actual = equeue.toString(true);
        actual = actual.replace(getTempDirPath() + File.separator, "");
        // System.err.println(actual);
        String msg = grammarStr;
        msg = msg.replace("\n", "\\n");
        msg = msg.replace("\r", "\\r");
        msg = msg.replace("\t", "\\t");
        assertEquals("error in: " + msg, expect, actual);
    }
}
Also used : ErrorQueue(org.antlr.v4.test.runtime.ErrorQueue)

Aggregations

ErrorQueue (org.antlr.v4.test.runtime.ErrorQueue)45 Grammar (org.antlr.v4.tool.Grammar)34 Test (org.junit.Test)34 ANTLRMessage (org.antlr.v4.tool.ANTLRMessage)27 BaseRuntimeTest (org.antlr.v4.test.runtime.BaseRuntimeTest)23 LexerGrammar (org.antlr.v4.tool.LexerGrammar)23 GrammarSemanticsMessage (org.antlr.v4.tool.GrammarSemanticsMessage)17 BaseRuntimeTest.antlrOnString (org.antlr.v4.test.runtime.BaseRuntimeTest.antlrOnString)12 STGroupString (org.stringtemplate.v4.STGroupString)12 ArrayList (java.util.ArrayList)10 ST (org.stringtemplate.v4.ST)10 ATNFactory (org.antlr.v4.automata.ATNFactory)9 LexerATNFactory (org.antlr.v4.automata.LexerATNFactory)9 ParserATNFactory (org.antlr.v4.automata.ParserATNFactory)9 CodeGenerator (org.antlr.v4.codegen.CodeGenerator)9 SemanticPipeline (org.antlr.v4.semantics.SemanticPipeline)9 ATN (org.antlr.v4.runtime.atn.ATN)8 DecisionState (org.antlr.v4.runtime.atn.DecisionState)8 STGroup (org.stringtemplate.v4.STGroup)7 HashSet (java.util.HashSet)6