use of org.antlr.v4.runtime.Recognizer.EOF in project antlr4 by tunnelvisionlabs.
the class TestATNDeserialization method testEOF.
@Test
public void testEOF() throws Exception {
Grammar g = new Grammar("parser grammar T;\n" + "a : EOF ;");
checkDeserializationIsStable(g);
}
use of org.antlr.v4.runtime.Recognizer.EOF in project antlr4 by tunnelvisionlabs.
the class BaseTest method getTokenTypes.
public List<String> getTokenTypes(LexerGrammar lg, ATN atn, CharStream input) {
LexerATNSimulator interp = new LexerATNSimulator(atn);
List<String> tokenTypes = new ArrayList<String>();
int ttype;
boolean hitEOF = false;
do {
if (hitEOF) {
tokenTypes.add("EOF");
break;
}
int t = input.LA(1);
ttype = interp.match(input, Lexer.DEFAULT_MODE);
if (ttype == Token.EOF) {
tokenTypes.add("EOF");
} else {
tokenTypes.add(lg.typeToTokenList.get(ttype));
}
if (t == IntStream.EOF) {
hitEOF = true;
}
} while (ttype != Token.EOF);
return tokenTypes;
}
use of org.antlr.v4.runtime.Recognizer.EOF in project antlr4 by tunnelvisionlabs.
the class TestCompositeGrammars method test3LevelImport.
// Make sure that M can import S that imports T.
@Test
public void test3LevelImport() throws Exception {
ErrorQueue equeue = new ErrorQueue();
String slave = "parser grammar T;\n" + "a : T ;\n";
mkdir(tmpdir);
writeFile(tmpdir, "T.g4", slave);
String slave2 = "parser grammar S;\n" + "import T;\n" + "a : S ;\n";
mkdir(tmpdir);
writeFile(tmpdir, "S.g4", slave2);
String master = "grammar M;\n" + "import S;\n" + "a : M ;\n";
writeFile(tmpdir, "M.g4", master);
Grammar g = new Grammar(tmpdir + "/M.g4", master, equeue);
// S and T aren't imported; overridden
String expectedTokenIDToTypeMap = "{EOF=-1, M=1}";
String expectedStringLiteralToTypeMap = "{}";
String expectedTypeToTokenList = "[M]";
assertEquals(expectedTokenIDToTypeMap, g.tokenNameToTypeMap.toString());
assertEquals(expectedStringLiteralToTypeMap, g.stringLiteralToTypeMap.toString());
assertEquals(expectedTypeToTokenList, realElements(g.typeToTokenList).toString());
assertEquals("unexpected errors: " + equeue, 0, equeue.errors.size());
boolean ok = rawGenerateAndBuildRecognizer("M.g4", master, "MParser", null);
// should be ok
boolean expecting = true;
assertEquals(expecting, ok);
}
use of org.antlr.v4.runtime.Recognizer.EOF in project antlr4 by tunnelvisionlabs.
the class TestCompositeGrammars method testRulesVisibleThroughMultilevelImport.
@Test
public void testRulesVisibleThroughMultilevelImport() throws Exception {
ErrorQueue equeue = new ErrorQueue();
String slave = "parser grammar T;\n" + "x : T ;\n";
mkdir(tmpdir);
writeFile(tmpdir, "T.g4", slave);
String slave2 = // A, B, C token type order
"parser grammar S;\n" + "import T;\n" + "a : S ;\n";
mkdir(tmpdir);
writeFile(tmpdir, "S.g4", slave2);
String master = "grammar M;\n" + "import S;\n" + // x MUST BE VISIBLE TO M
"a : M x ;\n";
writeFile(tmpdir, "M.g4", master);
Grammar g = new Grammar(tmpdir + "/M.g4", master, equeue);
String expectedTokenIDToTypeMap = "{EOF=-1, M=1, T=2}";
String expectedStringLiteralToTypeMap = "{}";
String expectedTypeToTokenList = "[M, T]";
assertEquals(expectedTokenIDToTypeMap, g.tokenNameToTypeMap.toString());
assertEquals(expectedStringLiteralToTypeMap, g.stringLiteralToTypeMap.toString());
assertEquals(expectedTypeToTokenList, realElements(g.typeToTokenList).toString());
assertEquals("unexpected errors: " + equeue, 0, equeue.errors.size());
}
use of org.antlr.v4.runtime.Recognizer.EOF in project antlr4 by tunnelvisionlabs.
the class TestExpectedTokens method testFollowIncluded.
@Test
public void testFollowIncluded() throws Exception {
String gtext = "parser grammar T;\n" + "a : b A ;\n" + "b : B | ;";
Grammar g = new Grammar(gtext);
String atnText = "RuleStart_a_0->s4\n" + "s4-b->RuleStart_b_2\n" + "s5-A->s6\n" + "s6->RuleStop_a_1\n" + "RuleStop_a_1-EOF->s11\n";
checkRuleATN(g, "a", atnText);
atnText = "RuleStart_b_2->BlockStart_9\n" + "BlockStart_9->s7\n" + "BlockStart_9->s8\n" + "s7-B->BlockEnd_10\n" + "s8->BlockEnd_10\n" + "BlockEnd_10->RuleStop_b_3\n" + "RuleStop_b_3->s5\n";
checkRuleATN(g, "b", atnText);
ATN atn = g.getATN();
// From the start of 'b' with empty stack, can only see B and EOF
int blkStartStateNumber = 9;
IntervalSet tokens = atn.getExpectedTokens(blkStartStateNumber, ParserRuleContext.emptyContext());
assertEquals("{<EOF>, B}", tokens.toString(g.getVocabulary()));
// Now call from 'a'
tokens = atn.getExpectedTokens(blkStartStateNumber, new ParserRuleContext(ParserRuleContext.emptyContext(), 4));
assertEquals("{A, B}", tokens.toString(g.getVocabulary()));
}
Aggregations