[antlr-interest] Re: woohoo! ParseTrees for free, Debugging for me!
lgcraymer
lgc at mail1.jpl.nasa.gov
Sun Nov 30 00:16:35 PST 2003
--- In antlr-interest at yahoogroups.com, Terence Parr <parrt at c...>
wrote:
>
> On Saturday, November 29, 2003, at 10:16 PM, lgcraymer wrote:
>
> > Ter--
> >
> > If I interpret this right, you're actually visualizing parse
trees
> > without generating them.
>
> Nope, i build parse trees and then rewalk them to get step i of
> derivation. You can ask for any intermediate step or all of 'em :)
That is impressive, then--you've discovered a whole new approach to
instrumenting ANTLR. I assume that you've made the overrides user
programmable? It sounds like an approach that might support an
ANTLR test harness for grammars.
>
> > Modifying ANTLR to build parse trees is even easier--add the root
> > node creation code in genRule (XXXCodeGenerator) and modify
refRule
> > in DefineGrammarSymbols.java, then adding an option recognizer to
> > ParserGrammar.java. About 10-15 lines total, unless I've missed
> > something.
>
> Sounds great! I just wanted something quickly that didn't require
> modifications to ANTLR. Figured I'd break something ;) and we
will
> have a bug release first before features. :)
It's not quite that easy to break ANTLR internals--you have to look
at them cross-eyed ... :).
--Loring
> Ter
> >
> >
> > --Loring
> >
> >
> > --- In antlr-interest at yahoogroups.com, Terence Parr <parrt at c...>
> > wrote:
> >> Howdy,
> >>
> >> I just made ANTLR generate parse trees w/o modifying the tool
> > itself.
> >> I just overrode match(), traceIn(), traceOut() in the parser and
> > turned
> >> on -traceParser. :) Not only will it build a parse tree for you
> > to
> >> look at, it knows how to dump the derivation tree! This is
super
> > great
> >> thing for debugging big grammars. The question is always "how
is
> > xxx
> >> being matched? I know it's not right!" This derivation tool
will
> >> pretty much tell you. For example, here is the output when I
> > run "int
> >> i;" into a tinyc example with parse tree construction overrides:
> >>
> >> $ java Test < decl.c
> >> parse tree: ( <program> ( <declaration> ( <variable> ( <type>
> > int ) (
> >> <declarator> i ) ; ) ) EOF )
> >> derivation:
> >> <program>
> >> => <declaration> EOF
> >> => <variable> EOF
> >> => <type> <declarator> ; EOF
> >> => int <declarator> ; EOF
> >> => int i ; EOF
> >>
> >> pretty cool, n'est-ce pas? You can see precisely how your input
> > is
> >> matched by the grammar.
> >>
> >> Note: this is what a parse tree is for...not translation. For
> > that you
> >> use an AST or token stream rewriting (got something comin on
that
> > too).
> >> :)
> >>
> >> I'm going to go to the gym and if I have the energy I'll write
up
> > the
> >> mechanism later and post to ANTLR.org.
> >>
> >> Anybody wanna port to C#? ;) I know somebody that could use it
> > about
> >> now ;) Should I roll this into 2.7.3? Perhaps not as we want
to
> >> quickly get out a bug fix release w/o having to wait for C++ and
> > C#
> >> implementations...
> >>
> >> Ter
> >> --
> >> Professor Comp. Sci., University of San Francisco
> >> Creator, ANTLR Parser Generator, http://www.antlr.org
> >> Co-founder, http://www.jguru.com
> >> Co-founder, http://www.knowspam.net enjoy email again!
> >> Co-founder, http://www.peerscope.com pure link sharing
> >
> >
> >
> >
> > Your use of Yahoo! Groups is subject to
> > http://docs.yahoo.com/info/terms/
> >
> >
> >
> --
> Professor Comp. Sci., University of San Francisco
> Creator, ANTLR Parser Generator, http://www.antlr.org
> Co-founder, http://www.jguru.com
> Co-founder, http://www.knowspam.net enjoy email again!
> Co-founder, http://www.peerscope.com link sharing, pure-n-simple
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list