@Test public void testLookback() throws Exception { LexerGrammar g = new LexerGrammar( "lexer grammar t;\n" + "ID : 'a'..'z'+;\n" + "INT : '0'..'9'+;\n" + "SEMI : ';';\n" + "ASSIGN : '=';\n" + "PLUS : '+';\n" + "MULT : '*';\n" + "WS : ' '+;\n"); // Tokens: 012345678901234567 // Input: x = 3 * 0 + 2 * 0; CharStream input = new ANTLRInputStream("x = 3 * 0 + 2 * 0;"); LexerInterpreter lexEngine = g.createLexerInterpreter(input); TokenStream tokens = createTokenStream(lexEngine); tokens.consume(); // get x into buffer Token t = tokens.LT(-1); assertEquals("x", t.getText()); tokens.consume(); tokens.consume(); // consume '=' t = tokens.LT(-3); assertEquals("x", t.getText()); t = tokens.LT(-2); assertEquals(" ", t.getText()); t = tokens.LT(-1); assertEquals("=", t.getText()); }
@Test public void testCompleteBufferAfterConsuming() throws Exception { LexerGrammar g = new LexerGrammar( "lexer grammar t;\n" + "ID : 'a'..'z'+;\n" + "INT : '0'..'9'+;\n" + "SEMI : ';';\n" + "ASSIGN : '=';\n" + "PLUS : '+';\n" + "MULT : '*';\n" + "WS : ' '+;\n"); // Tokens: 012345678901234567 // Input: x = 3 * 0 + 2 * 0; CharStream input = new ANTLRInputStream("x = 3 * 0 + 2 * 0;"); LexerInterpreter lexEngine = g.createLexerInterpreter(input); TokenStream tokens = createTokenStream(lexEngine); Token t = tokens.LT(1); while (t.getType() != Token.EOF) { tokens.consume(); t = tokens.LT(1); } String result = tokens.getText(); String expecting = "x = 3 * 0 + 2 * 0;"; assertEquals(expecting, result); }
@Test public void test2ndToken() throws Exception { LexerGrammar g = new LexerGrammar( "lexer grammar t;\n" + "ID : 'a'..'z'+;\n" + "INT : '0'..'9'+;\n" + "SEMI : ';';\n" + "ASSIGN : '=';\n" + "PLUS : '+';\n" + "MULT : '*';\n" + "WS : ' '+;\n"); // Tokens: 012345678901234567 // Input: x = 3 * 0 + 2 * 0; CharStream input = new ANTLRInputStream("x = 3 * 0 + 2 * 0;"); LexerInterpreter lexEngine = g.createLexerInterpreter(input); TokenStream tokens = createTokenStream(lexEngine); String result = tokens.LT(2).getText(); String expecting = " "; assertEquals(expecting, result); }