Restore missing test testAlternateQuotes

This commit is contained in:
Sam Harwell 2015-05-22 15:39:35 -05:00
parent 131599af1a
commit e248be48d1
1 changed files with 39 additions and 0 deletions

View File

@ -107,6 +107,45 @@ public class TestParserExec extends BaseTest {
assertEquals("line 1:6 rule floating_constant DEC:A floating-point constant cannot have internal white space\n", stderrDuringParse);
}
/**
* This is a regression test for antlr/antlr4#563 "Inconsistent token
* handling in ANTLR4".
* https://github.com/antlr/antlr4/issues/563
*/
// TODO: port to test framework (missing templates)
@Test public void testAlternateQuotes() throws Exception {
String lexerGrammar =
"lexer grammar ModeTagsLexer;\n" +
"\n" +
"// Default mode rules (the SEA)\n" +
"OPEN : '«' -> mode(ISLAND) ; // switch to ISLAND mode\n" +
"TEXT : ~'«'+ ; // clump all text together\n" +
"\n" +
"mode ISLAND;\n" +
"CLOSE : '»' -> mode(DEFAULT_MODE) ; // back to SEA mode \n" +
"SLASH : '/' ;\n" +
"ID : [a-zA-Z]+ ; // match/send ID in tag to parser\n";
String parserGrammar =
"parser grammar ModeTagsParser;\n" +
"\n" +
"options { tokenVocab=ModeTagsLexer; } // use tokens from ModeTagsLexer.g4\n" +
"\n" +
"file: (tag | TEXT)* ;\n" +
"\n" +
"tag : '«' ID '»'\n" +
" | '«' '/' ID '»'\n" +
" ;";
boolean success = rawGenerateAndBuildRecognizer("ModeTagsLexer.g4",
lexerGrammar,
null,
"ModeTagsLexer");
assertTrue(success);
String found = execParser("ModeTagsParser.g4", parserGrammar, "ModeTagsParser", "ModeTagsLexer", "file", "", false);
assertEquals("", found);
assertNull(stderrDuringParse);
}
/**
* This is a regression test for antlr/antlr4#672 "Initialization failed in