[antlr-interest] Rules with multiple parameters
John Ridgway
john.ridgway at trincoll.edu
Tue Nov 6 09:54:15 PST 2007
This is a copy of an earlier message. I didn't see it on the list
and saw no responses; so I'm guessing that it never made it to the list:
Consider the following in a grammar with the output=AST option:
methodOrFieldDecl[Tree modifiers, Tree type]
: identifier! methodDeclaratorRest[modifiers, type
$identifier.tree]
;
methodDeclaratorRest[Tree modifiers, Tree type, Tree name]
which is a fragment of a Java 1.5 grammar. The methodDeclaratorRest
rule takes three parameters, which seems entirely reasonable
(actually it's totally unreasonable, but Java was not designed for
parsing...). In order to pass three arguments to it I have to play
with the locations of commas in the "call/usage" in order that the
generated Java is correct. If I tried to use
methodDeclaratorRest[modifiers, type, $identifier.tree]
(note the comma after type), I would end up with an extra comma in
the generated Java.
This is clearly (to me) a bug. It is likely to be fixed?
Note. It gets even worse if we want to do something like:
x
: a! b! c! d[$a $b $c]
;
This won't work even with no commas in the given code. To make it
work I have to introduce some names:
x
: a! bb=b! c! d[$a bb $c]
;
probably does work...
Peace
- John
More information about the antlr-interest
mailing list