Add regression test for issue #509
This commit is contained in:
parent
c6e6ccde4c
commit
cb0119e761
|
@ -497,6 +497,25 @@ public class TestLeftRecursion extends BaseTest {
|
||||||
assertNull(stderrDuringParse);
|
assertNull(stderrDuringParse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a regression test for antlr/antlr4#509 "Incorrect rule chosen in
|
||||||
|
* unambiguous grammar".
|
||||||
|
* https://github.com/antlr/antlr4/issues/509
|
||||||
|
*/
|
||||||
|
@Test public void testPrecedenceFilterConsidersContext() throws Exception {
|
||||||
|
String grammar =
|
||||||
|
"grammar T;\n" +
|
||||||
|
"prog\n" +
|
||||||
|
"@after {System.out.println($ctx.toStringTree(this));}\n" +
|
||||||
|
": statement* EOF {};\n" +
|
||||||
|
"statement: letterA | statement letterA 'b' ;\n" +
|
||||||
|
"letterA: 'a';\n";
|
||||||
|
|
||||||
|
String found = execParser("T.g4", grammar, "TParser", "TLexer", "prog",
|
||||||
|
"aa", false);
|
||||||
|
assertEquals("(prog (statement (letterA a)) (statement (letterA a)) <EOF>)\n", found);
|
||||||
|
}
|
||||||
|
|
||||||
public void runTests(String grammar, String[] tests, String startRule) {
|
public void runTests(String grammar, String[] tests, String startRule) {
|
||||||
rawGenerateAndBuildRecognizer("T.g4", grammar, "TParser", "TLexer");
|
rawGenerateAndBuildRecognizer("T.g4", grammar, "TParser", "TLexer");
|
||||||
writeRecognizerAndCompile("TParser",
|
writeRecognizerAndCompile("TParser",
|
||||||
|
|
Loading…
Reference in New Issue