[antlr-interest] Build Question
Tiller, Michael (M.M.)
mtiller at ford.com
Tue Mar 12 07:12:48 PST 2002
Could you post an example of how this is done?
--
Mike
> -----Original Message-----
> From: mzukowski at bco.com [mailto:mzukowski at bco.com]
> Sent: Tuesday, March 12, 2002 10:08 AM
> To: antlr-interest at yahoogroups.com
> Subject: RE: [antlr-interest] Build Question
>
>
> One way to accomplish what you wish would be to do some
> preprocessing. I'm
> particularly fond of the "noweb" literate programming tool,
> which I used to
> build the GCC grammar. It allowed me to reuse grammar
> fragments and then
> add my own actions. More importantly for me it allowed me to
> keep related
> rules in the same area of the noweb file, so my declaration
> rules for the
> ANSI C Parser, GCC Parser, GCC tree walker, GCC tree emitter were all
> together, and while debugging when I modified one rule I was
> right there to
> make sure the other rules were changed in sync.
>
> Antlr subclassing is most useful when there are no actions to
> subclass. So
> I use it for a tree grammar that I subclass with actions for
> specific passes
> of a translator. Subclassing a grammar with actions would be almost
> useless. In fact I would reorganize my grammars as a
> literate program so I
> could reuse parts as I wish, it ends up being more flexible
> than antlr's
> subclassing.
>
> Monty
>
> > -----Original Message-----
> > From: Tiller, Michael (M.M.) [mailto:mtiller at ford.com]
> > Sent: Tuesday, March 12, 2002 6:48 AM
> > To: 'antlr-interest at yahoogroups.com'
> > Subject: RE: [antlr-interest] Build Question
> >
> >
> > A few followup comments...
> >
> > I was hoping to support both Java and C++ for future
> > development. It seems like this is impractical for the
> > following reasons:
> >
> > 1) Trying to write a language independent way comment rule
> > that "eats" comments doesn't seem possible.
> > 2) Perhaps for misguided reasons, I'd like to be able to add
> > "child" nodes to my AST during tree construction. It isn't
> > clear to me how that can be done in a language neutral way.
> > It would be nice if ANTLR's tree construction shorthand were
> > extended to allow this.
> > 3) The target language has to be specified in the grammar
> > (couldn't this be a command line option?)
> > 4) The difficulties with trying to do grammar inheritance
> (see below).
> >
> > This isn't really criticism (ANTLR is a great tool).
> > Consider it ideas for future releases. Because of these
> > problems, I think I'm going to have to abandon my hope of a
> > language neutral grammar and just start plugging in my C++ code.
> >
> > --
> > Mike
> >
> > > -----Original Message-----
> > > From: Ric Klaren [mailto:klaren at cs.utwente.nl]
> > > Sent: Tuesday, March 12, 2002 3:51 AM
> > > To: antlr-interest at yahoogroups.com
> > > Subject: Re: [antlr-interest] Build Question
> > >
> > >
> > > On Mon, Mar 11, 2002 at 01:03:27PM -0500, Tiller, Michael
> > > (M.M.) wrote:
> > > > So far so good I imagine (although I haven't gotten far
> > > enough to figure
> > > > out if this is a good idea yet). The problem I'm running
> > > into is that I
> > > > imagine these grammars may be shared among several distinct
> > > applications.
> > > > For that reason, I keep the ".g" files away from everything
> > > else. So when
> > > > I run ANTLR, the Makefile rule looks like this:
> > > >
> > > > $(ANTLR) -glib $(ROOTDIR)/base.g -o $(GENDIR)
> > > $(ROOTDIR)/base_java.g
> > > >
> > > > where GENDIR is the location for the generated code and
> > > ROOTDIR is where I
> > > > keep the .g files. This way, I can generate the set of
> > > source files for
> > > > each project based on the grammars.
> > > >
> > > > The problem is that when you use grammar inheritance, ANTLR
> > > expands the
> > > > complete grammar into "expandedbase_java.g". Except that
> > > it actually names
> > > > it "expanded$(ROOTDIR)/base_java.g" (where ROOTDIR is
> > > actually expanded).
> > > > In other words, it assumes that the ".g" is in the current
> > > directory.
> > > >
> > > > Any suggestions about how to avoid this problem? I'm
> > > surprised that I
> > > > can't explicitly specify the name of the expanded grammar.
> > > That would have
> > > > been a nice option.
> > >
> > > Been there done that. Doesn't work. It needs some serious
> > > fixing in antlr
> > > to make this behave well. I already looked at it when I ran
> > > into it, it's
> > > not completely easy to fix in antlr. I currently copy .g
> > > files around with
> > > Make rules to get the right behaviour.
> > >
> > > I personally must say that I found antlr's grammar
> > inheritance pretty
> > > useless (gives to little control over what you want to
> > > override, in the end
> > > you end up copying action code in a complicated way so I
> > > figured I'd better
> > > copy stuff around in an easy way). YMMV though I suspect some
> > > ppl on the
> > > list may have gotten nice results with it.
> > >
> > > Ric
> > > --
> > > -----+++++****************************************************
> > > *+++++++++-------
> > > ---- Ric Klaren ----- klaren at cs.utwente.nl ----- +31 53
> > > 4893722 ----
> > > -----+++++****************************************************
> > > *+++++++++-------
> > > Time what is time - I wish I knew how to tell You why - It
> > > hurts to know -
> > > Aren't we machines - Time what is time - Unlock the door
> > > - And see the truth - Then time is time again
> > > From: 'Time what is Time' by Blind Guardian
> > >
> > >
> > >
> > >
> > > Your use of Yahoo! Groups is subject to
> > > http://docs.yahoo.com/info/terms/
> > >
> > >
> >
> >
> >
> > Your use of Yahoo! Groups is subject to
> http://docs.yahoo.com/info/terms/
>
>
>
>
>
> Your use of Yahoo! Groups is subject to
> http://docs.yahoo.com/info/terms/
>
>
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list