Search in sources :

Example 21 with ANTLRMessage

use of org.antlr.v4.tool.ANTLRMessage in project antlr4 by tunnelvisionlabs.

the class TestCompositeGrammars method testErrorInImportedGetsRightFilename.

@Test
public void testErrorInImportedGetsRightFilename() throws Exception {
    String slave = "parser grammar S;\n" + "a : 'a' | c;\n";
    mkdir(tmpdir);
    writeFile(tmpdir, "S.g4", slave);
    String master = "grammar M;\n" + "import S;\n";
    writeFile(tmpdir, "M.g4", master);
    ErrorQueue equeue = antlr("M.g4", false, "-lib", tmpdir);
    ANTLRMessage msg = equeue.errors.get(0);
    assertEquals(ErrorType.UNDEFINED_RULE_REF, msg.getErrorType());
    assertEquals("c", msg.getArgs()[0]);
    assertEquals(2, msg.line);
    assertEquals(10, msg.charPosition);
    assertEquals("S.g4", new File(msg.fileName).getName());
}
Also used : ANTLRMessage(org.antlr.v4.tool.ANTLRMessage) File(java.io.File) Test(org.junit.Test)

Example 22 with ANTLRMessage

use of org.antlr.v4.tool.ANTLRMessage in project antlr4 by antlr.

the class TestCompositeGrammars method testErrorInImportedGetsRightFilename.

@Test
public void testErrorInImportedGetsRightFilename() throws Exception {
    String slave = "parser grammar S;\n" + "a : 'a' | c;\n";
    RuntimeTestUtils.mkdir(getTempDirPath());
    writeFile(getTempDirPath(), "S.g4", slave);
    String master = "grammar M;\n" + "import S;\n";
    writeFile(getTempDirPath(), "M.g4", master);
    ErrorQueue equeue = BaseRuntimeTest.antlrOnString(getTempDirPath(), "Java", "M.g4", false, "-lib", getTempDirPath());
    ANTLRMessage msg = equeue.errors.get(0);
    assertEquals(ErrorType.UNDEFINED_RULE_REF, msg.getErrorType());
    assertEquals("c", msg.getArgs()[0]);
    assertEquals(2, msg.line);
    assertEquals(10, msg.charPosition);
    assertEquals("S.g4", new File(msg.fileName).getName());
}
Also used : ErrorQueue(org.antlr.v4.test.runtime.ErrorQueue) ANTLRMessage(org.antlr.v4.tool.ANTLRMessage) File(java.io.File) BaseRuntimeTest.writeFile(org.antlr.v4.test.runtime.BaseRuntimeTest.writeFile) BaseRuntimeTest(org.antlr.v4.test.runtime.BaseRuntimeTest) Test(org.junit.Test)

Example 23 with ANTLRMessage

use of org.antlr.v4.tool.ANTLRMessage in project antlr4 by antlr.

the class BaseBrowserTest method checkError.

protected void checkError(ErrorQueue equeue, ANTLRMessage expectedMessage) throws Exception {
    //System.out.println("errors="+equeue);
    ANTLRMessage foundMsg = null;
    for (int i = 0; i < equeue.errors.size(); i++) {
        ANTLRMessage m = equeue.errors.get(i);
        if (m.getErrorType() == expectedMessage.getErrorType()) {
            foundMsg = m;
        }
    }
    assertTrue("no error; " + expectedMessage.getErrorType() + " expected", !equeue.errors.isEmpty());
    assertTrue("too many errors; " + equeue.errors, equeue.errors.size() <= 1);
    assertNotNull("couldn't find expected error: " + expectedMessage.getErrorType(), foundMsg);
    /*
		assertTrue("error is not a GrammarSemanticsMessage",
				   foundMsg instanceof GrammarSemanticsMessage);
		 */
    assertArrayEquals(expectedMessage.getArgs(), foundMsg.getArgs());
}
Also used : ANTLRMessage(org.antlr.v4.tool.ANTLRMessage)

Example 24 with ANTLRMessage

use of org.antlr.v4.tool.ANTLRMessage in project antlr4 by antlr.

the class BasePythonTest method checkError.

protected void checkError(ErrorQueue equeue, ANTLRMessage expectedMessage) throws Exception {
    //System.out.println("errors="+equeue);
    ANTLRMessage foundMsg = null;
    for (int i = 0; i < equeue.errors.size(); i++) {
        ANTLRMessage m = equeue.errors.get(i);
        if (m.getErrorType() == expectedMessage.getErrorType()) {
            foundMsg = m;
        }
    }
    assertTrue("no error; " + expectedMessage.getErrorType() + " expected", !equeue.errors.isEmpty());
    assertTrue("too many errors; " + equeue.errors, equeue.errors.size() <= 1);
    assertNotNull("couldn't find expected error: " + expectedMessage.getErrorType(), foundMsg);
    /*
		assertTrue("error is not a GrammarSemanticsMessage",
				   foundMsg instanceof GrammarSemanticsMessage);
		 */
    assertArrayEquals(expectedMessage.getArgs(), foundMsg.getArgs());
}
Also used : ANTLRMessage(org.antlr.v4.tool.ANTLRMessage)

Example 25 with ANTLRMessage

use of org.antlr.v4.tool.ANTLRMessage in project antlr4 by antlr.

the class BasePythonTest method checkGrammarSemanticsError.

protected void checkGrammarSemanticsError(ErrorQueue equeue, GrammarSemanticsMessage expectedMessage) throws Exception {
    ANTLRMessage foundMsg = null;
    for (int i = 0; i < equeue.errors.size(); i++) {
        ANTLRMessage m = equeue.errors.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)

Aggregations

ANTLRMessage (org.antlr.v4.tool.ANTLRMessage)29 GrammarSemanticsMessage (org.antlr.v4.tool.GrammarSemanticsMessage)15 LexerGrammar (org.antlr.v4.tool.LexerGrammar)12 ErrorQueue (org.antlr.v4.test.runtime.ErrorQueue)11 ATN (org.antlr.v4.runtime.atn.ATN)8 DecisionState (org.antlr.v4.runtime.atn.DecisionState)8 Grammar (org.antlr.v4.tool.Grammar)8 File (java.io.File)5 ATNState (org.antlr.v4.runtime.atn.ATNState)4 Test (org.junit.Test)3 ST (org.stringtemplate.v4.ST)3 ArrayList (java.util.ArrayList)2 Tool (org.antlr.v4.Tool)2 BaseRuntimeTest (org.antlr.v4.test.runtime.BaseRuntimeTest)2 BaseRuntimeTest.writeFile (org.antlr.v4.test.runtime.BaseRuntimeTest.writeFile)2 DefaultToolListener (org.antlr.v4.tool.DefaultToolListener)2 IOException (java.io.IOException)1 STGroupFile (org.stringtemplate.v4.STGroupFile)1 STGroupString (org.stringtemplate.v4.STGroupString)1