[antlr-interest] parentheses sequence validation

Martin Probst mail at martin-probst.com
Tue Jan 25 08:47:40 PST 2005


> Ex: ((()())()) : Validated OK
> (() : The error is thrown: expecting RPAREN, found : OK
> BUT when trying validate the expression: ()) no error is thrown!!!

You need to check for the EOF condition. In your case your parser just
stops parsing if it can't continue to match rules. The trailing ')' is
silently ignored. Fix it by writing:

expr: LPAREN (expr)* RPAREN EOF!

( EOF is the meta-token for the End-Of-File, the ! operator keeps it out
of your parse tree).


More information about the antlr-interest mailing list