[antlr-interest] Re: exception thrown in syntatic predicate can't be caught!
martinkbraid
mbraid at sqlworks.com
Mon Apr 14 15:07:39 PDT 2003
The input to my lexer/parser is a series of statements delimited by
semicolons. I was using the lexer exception to tell the parser to
skip over the current statement and consumeUntil() the next semicolon
(ie skip over the remainder of the stmt). Since I posted my message I
made some progress by using the filter=rule option in the lexer and
have that rule automatically throw a TokenStreamException which my
parser captures. That works ... to a point. When the parser gets that
exception it does a consumeUntil(SEMICOLON), but if there is a 2nd
garabage character the lexer throws another exception and the whole
thing becomes a mess.
Think I'll heed your advice and look at controlling the lexer more
carefully.
--- In antlr-interest at yahoogroups.com, mzukowski at y... wrote:
> Syntactic predicates work by trying a piece of syntax and then
checking if
> an exception was thrown. When it finds a predicate that works it
then calls
> the parser for real, with actions turned back on. Syntactic
predicates
> won't work if you can catch their exceptions. Catch the exception
after the
> predicate has decide where to go.
>
> Or just catch and handle the exception in the lexer. What exactly
are you
> doing with the exceptions anyhow?
>
> Monty
>
> -----Original Message-----
> From: martinkbraid [mailto:mbraid at s...]
> Sent: Sunday, April 13, 2003 7:07 PM
> To: antlr-interest at yahoogroups.com
> Subject: [antlr-interest] exception thrown in syntatic predicate
can't
> be caught!
>
>
> Because I need to be able to handle garbage characters passed to my
> parser/lexer, I'm doing my own error processing in a top level rule
> by catching ANTLRExceptions.
>
> By chance, during syntactic predicate processing, the lexer
> encounters a garbage character and throws a TokenStreamException.
But
> because inputState.guessing > 0 (because it was in a syntactic
> predicate), my exception handler does NOT get control and the
> exception passes out of the parser. What do I do? It would be
> impossible to avoid syntatic predicates?
>
> Thanks, Martin Braid
>
>
>
>
> Your use of Yahoo! Groups is subject to
http://docs.yahoo.com/info/terms/
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list