[antlr-interest] Multiple pass tree walking Q
gt54-antlr at cyconix.com
Wed Oct 4 01:12:53 PDT 2006
Hill, Robert wrote:
> I've pretty much gone down the multiple tree parser routes, its a real
> pain in the ass though, as if you modify your parser, you then have to
> modify all the tree parser grammars too. I must be missing something
> here. :(
> there must be a rule that ignores a whole branch, but i've tried all
> sorts and haven't succeeded ,
> ignoreme : ^(.*) ... if only :)
> which is why i ended up with 3 tree parse phases. I just get this
> nagging feeling im missing the point.
You won't like this reply, but this is why I don't use tree grammars.
I've got 8 passes, each of which needs to modify the AST. I manually
parse the tree, and cut out branches when I've finished with them (or
replace nodes, or whatever).
The recursive tree parse in each pass is (almost) trivial, so a grammar
would buy me little. I do have occasional complications with having to
find my context in the tree, parsing node lists right-to-left instead of
left-to-right, and so on, but no major problems, and certainly nothing
that would justify maintaining 8 different grammars. One major advantage
is that I can trivially add extra passes that do almost nothing, except
maybe some cleaning up for the next pass.
Disclaimer: I've never actually tried the tree grammar route, so I (too)
may have missed easy ways to do what I'm now doing manually.
There's a lot on this in the archives - have a look. You could start
with Andy Tripp's reply in the "How much use is ANTLR for manipulating
ASTs?" thread (18/06/2005).
More information about the antlr-interest