[antlr-interest] wildcard in tree grammar

Gavin Lambert antlr at mirality.co.nz
Mon Dec 1 11:51:14 PST 2008


At 05:43 2/12/2008, Terence Parr wrote:
 >'.' is great to avoid a subtree or any random operand node
 >you don't care about.  As a root, it can only be a node so
 >it's pretty easy to give the set of valid roots if necessary.

"Easy" is a relative term, depending on how many of them there are 
:)

 >Remember that AST construction is all about identifying the
 >ops and pseudo-ops in your program, then making them roots.
 >Why would you ever want to ingore what operation your looking 
at?

That's not the only use for them.  They can be used to indicate 
types or categories as well -- and in some contexts you care, 
while in others you might not.  This is especially true when you 
have multiple tree parsers reading a single AST input, since 
different walkers might care about different things.

 >Oh, I just found one.  You want to find all ID refs...well,
 >actually that is just:
 >
 >id : ID ;
 >
 >If you don't care about the root, just don't give it, right?
 >
 >x : ^(. ID) ;
 >
 >is identical to ID except it won't match ID as a root but
 >plain ID would.

If ID on its own can match a tree of ^(FOO ID), then that's a bug.

 >If you don't care about structure, one could argue why you're 
using
 >a grammar to do that ;)

You might not care *sometimes*, in *some contexts*.  But you care 
a lot about other contexts.



More information about the antlr-interest mailing list