[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
pushing text back into the input stream
Etienne. I am trying to add a simple error recovery mechanism to sable's parser.
Since the lexer uses a pushback reader, I thought of a simple approach which
involves pushing expected tokens into the input stream. So what I did was to
add the following method to the lexer.
public void unread(String str) throws IOException
{
int length = str.length();
for(int i = length - 1; i >= 0; i--)
{
eof = false;
in.unread(str.charAt(i));
}
}
If this is a stupid idea, please tell me so. Otherwise, perhaps you
can tell me why the text I unread causes unrecognized token errors in
the lexer. Here's the error message I get.
[3,2] Unknown token: <
html.lexer.LexerException: [3,2] Unknown token: <
at html.lexer.Lexer.getToken(Compiled Code)
at html.lexer.Lexer.peek(Compiled Code)
at html.parser.Parser.parse(Compiled Code)
at html.Translator.main(Compiled Code)
Exception in thread "main" java.lang.ClassCastException: html.lexer.LexerException
at html.Translator.main(Compiled Code)
and my .grammar file contains the token
open = '<';
Thanks,
Jeff
----