[antlr-interest] ANTLR 3.0 tree construction proposal

Martin Probst mail at martin-probst.com
Mon Jan 31 14:34:02 PST 2005


Hi,

I didn't have the time to really dig into that. Getting rid of #() and
#[] sounds good to me. Also removing {} actions for tree construction
etc. seems to be a good idea. ^^ on subrules is a thing I've been
looking for several times too.
I've never used tree rewriting though so I cannot be any help regarding
that. I'm just feeling uneasy with my ANTLR code because every time I
read it it takes me quite some time to figure out what the heck I'm
doing in there ;-)

> Do you think the new rewrite stuff would be easy to understand? Some of 
> surely would.  For example, build a flat tree with elements reordered:
> 
> r : A B => B A ;

You really should use a different operator in this case. Parsers and
Lexers share the same operators (as they are basically the same as far
as I understand) so the user assumes this for tree parsers too. 
And this just looks like a wrong syntactic predicate.

Loring's stuff looks a little bit more consistent - ^{ } for actions,
^() for trees, ^[] for nodes. I'm not enough into it to decide what's
better.

BTW is there currently a way of specifying that a (sub-)rule should stop
matching and exit? I've found myself trying to specify:
( A B => subruleB
| A C => subruleC
| else => return
)

Regards,
Martin



More information about the antlr-interest mailing list