[antlr-interest] help understanding the parsing error

John B. Brodie jbb at acm.org
Fri May 11 15:42:38 PDT 2012


Greetings!

On 05/11/2012 11:29 AM, Mikhail Kruk wrote:
> I have a very simple grammar (attached, but here's the relevant part):
> 
> 
> start
> 	:	(simple_expression | dotted_identifier)*
> 	;
> 
> simple_expression
> 	:	'XYZ' 'HAHA'
> 	;
> 
> identifier
> 	:	ID	
>    	;
> 
> dotted_identifier
> 	:	identifier ( DOT identifier )*
> 	;
> 
> It pretty much works as expected, accepting "XYZ HAHA", "BLAH.TEST"
> and "ABC".  But when I try to parse "XYZ.A" or "A.XYZ" it gets
> confused trying to apply simple_expression to 'XYZ'.  I don't
> understand why this is happening.  Shouldn't backtracking tear right
> through this?

ANTLR does not backtrack across the Parser-Lexer interface.

So as soon as the Lexer recognizes string "XYZ" as the keyword in your
grammar 'XYZ' it can never be (re-)considered to be an ID token.

Please search the mailing list archives for "keywords as identifiers" or
other similar searches for the ways around this issue.

Hope this helps...
   -jbb



More information about the antlr-interest mailing list