Related articles |
---|
Java Comment-Preserving Grammar matthew-google@faredge.com.au (2004-05-24) |
Re: Java Comment-Preserving Grammar sreeni@viswanadha.net (Sreenivasa Viswanadha) (2004-05-30) |
Re: Java Comment-Preserving Grammar martin@cs.uu.nl (Martin Bravenboer) (2004-05-30) |
Re: Java Comment-Preserving Grammar cdodd@acm.org (Chris Dodd) (2004-05-30) |
Re: Java Comment-Preserving Grammar dobes@dobesland.com (Dobes Vandermeer) (2004-05-30) |
RE: Java Comment-Preserving Grammar matt@faredge.com.au (Matthew Herrmann) (2004-05-30) |
Re: Java Comment-Preserving Grammar tbauer@cadrc.calpoly.edu (Tim Bauer) (2004-05-30) |
Re: Java Comment-Preserving Grammar jens.troeger@light-speed.de (2004-06-06) |
Re: Java Comment-Preserving Grammar clint@0lsen.net (Clint Olsen) (2004-06-06) |
Re: Java Comment-Preserving Grammar gah@ugcs.caltech.edu (glen herrmannsfeldt) (2004-06-09) |
Re: Java Comment-Preserving Grammar cfc@shell01.TheWorld.com (Chris F Clark) (2004-06-11) |
[3 later articles] |
From: | Dobes Vandermeer <dobes@dobesland.com> |
Newsgroups: | comp.compilers |
Date: | 30 May 2004 13:21:02 -0400 |
Organization: | Compilers Central |
References: | 04-05-075 |
Keywords: | Java, parse |
Posted-Date: | 30 May 2004 13:21:02 EDT |
On 24 May 2004 00:32:15 -0400, Matthew Herrmann
<matthew-google@faredge.com.au> wrote:
> Hi All,
>
> Is there an available Java grammar which preserves comments in an
> output AST tree? I know there are plenty of java grammars out there,
> but all ignore comments. I'm happy to use any tool providing I can
> gain access to the comments in the tree.
>
> My end goal is to parse commented-out extensions to the java language:
>
> class /*#immutable*/ Blah {
>
> public /*#input*/ int x;
> public /*#result*/ int y;
>
> }
>
> Any suggestions appreciated,
A simple thing to do would be to change the lexer grammar so that it
treated your special directive comments as non-comments, and change the
java grammar to correctly handle these in the places you want them.
A more flexible approach is to change the lexer so that comments are
attached to each token. You can add two fields to your lexer result
called "post_comment" and "pre_comment" (each comment would be referenced
to by two tokens). Then you can propagate this information so its still
available when the AST is finished contructing.
Implementing this in a grammar can be very complex; there are many
possible uses of comments in an expression:
a + /*var b*/ b
a + b /* sum */
a /* lets do a sum */ + b
This means your grammar has to take on a form like:
ADDITION: ( comment ) ? expr ( comment ) ? '+' ( comment ) ? expr
( comment ) ?
Which is a lot of work for very little gain.
CU
Dobes
Return to the
comp.compilers page.
Search the
comp.compilers archives again.