[antlr-interest] error in tree grammar syntax...
Gavin Lambert
antlr at mirality.co.nz
Mon Dec 29 13:41:26 PST 2008
At 10:27 30/12/2008, Pady Srinivasan wrote:
>When I try something like this in my tree grammar, I get an
error:
>
>statement
> : assignment
> | ^('if' boolExpression assignment? statement* ^('else'
> (statement)? (statement)? )? )
> ;
>
>
>error(100): GwfWalker.g:32:85: syntax error: antlr:
>GwfWalker.g:32:85: expecting RPAREN, found '?'
>error(100): GwfWalker.g:32:87: syntax error: antlr:
>GwfWalker.g:32:87: expecting SEMI, found ')'
>error(106): GwfWalker.g:26:4: reference to undefined rule:
>statement
Did you try removing the parentheses around "statement"?
Also, you're going to have trouble with a construct like
that. Having two optional statements in series -- when only one
statement is present in the input tree, which is it? The first or
the second? You need to either put more structure in your AST or
change the nesting so that it's obvious which one is "more
optional" than the other, when only one of the two is present.
You'll have similar trouble with "assignment? statement*", since
an assignment is a statement. This is a redundancy, and those
almost always lead to ambiguity and weird behaviour.
More information about the antlr-interest
mailing list