[antlr-interest] Flattening lists?

Jim Idle jimi at temporal-wave.com
Mon Dec 15 08:40:36 PST 2008


On Mon, 2008-12-15 at 08:44 -0600, Gary R. Van Sickle wrote:

> Hi all,
> 
> Not sure if this is something that should be obvious or not, but is there a
> way, completely in ANTLR 3.x (C backend FWIW), to flatten a list of
> "things"?  What I mean is, say I have a language I'm trying to parse with
> constructs something like this:
> 
> 	// Declare a bunch of variables.
> 	int varA, varB, varC;
> 
> Now, it's pretty straightforward to convert this via lexer->parser->tree
> parser into:
> 
> 	(VAR_DECL int (INITIALIZER varA) (INITIALIZER varB) (INITIALIZER
> varC))
> 
> But is there a way to get this instead?:
> 
> 	(VAR_DECL int varA) (VAR_DECL int varB) (VAR_DECL int varC)
> 
> Of course once I have the AST I can traverse it with C &&/|| C++, but it
> would sure be nice if ANTLR was able to flatten these sort of constructs for
> me.
> 
> Thanks,
> 



rule : INT i+=ID (COMMA i+=ID)  ->^(VAR_DECL INT $i)+
  ;


Jim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20081215/aaa872d2/attachment.html 


More information about the antlr-interest mailing list