more tests

[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 6808]
This commit is contained in:
parrt 2010-04-10 16:50:12 -08:00
parent 47a3f66fea
commit f6eaa737a4
2 changed files with 20 additions and 4 deletions

View File

@ -84,10 +84,7 @@ public class NFAConfig {
/** An NFA configuration is equal to another if both have
* the same state, they predict the same alternative, and
* syntactic/semantic contexts are the same. I don't think
* the state|alt|ctx could be the same and have two different
* semantic contexts, but might as well define equals to be
* everything.
* syntactic/semantic contexts are the same.
*/
public boolean equals(Object o) {
if ( o==null ) return false;

View File

@ -62,6 +62,25 @@ public class TestPredicatedDFAConstruction extends BaseTest {
System.err.println(msgs);
}
@Test
public void testSemanticContextPreventsEarlyTerminationOfClosure() throws Exception {
String g =
"parser grammar T;\n" +
"a : loop SEMI | ID SEMI\n" +
" ;\n" +
"loop\n" +
" : {while}? ID\n" +
" | {do}? ID\n" +
" | {for}? ID\n" +
" ;";
String expecting =
"s0-ID->s1\n" +
"s1-SEMI->s2\n" +
"s2-({while}?||{for}?||{do}?)->:s3=>1\n" +
"s2-true->:s4=>2\n";
checkRuleDFA(g, "a", expecting);
}
@Test public void _template() throws Exception {
String g =
"";