[antlr-interest] Question about lists in tree rewrites
    Jim Idle 
    jimi at temporal-wave.com
       
    Thu Mar 22 16:20:53 PDT 2007
    
    
  
Miguel,
Rather than rename you rule, just label it:
selectList    : d1=displayedColumn (COMMA d2=displayedColumn )*  
               -> ^(SELECT_LIST $d1 (COMMA $d2)* );
Also, are you sure you needs those commas in the AST? When you out put
your translated code, you can infer that they are needed by consequence
of the fact that there is more than one displayed column.
Jim
-----Original Message-----
From: antlr-interest-bounces at antlr.org
[mailto:antlr-interest-bounces at antlr.org] On Behalf Of Miguel Ping
Sent: Thursday, March 22, 2007 4:16 PM
To: antlr-interest
Subject: [antlr-interest] Question about lists in tree rewrites
Hi all,
Suppose I got this rule
selectList    : displayedColumn (COMMA displayedColumn )*  ->
^(SELECT_LIST displayedColumn+ );
I know antlr (v3) is smart and sees that 'displayedColumn' repeats at
least once, and manages the list for me in the rewrite rule.
But suppose I am writing a translator, and really need thosesCOMMAS
tokens, how should I do the rewrite rule to include the COMMA's ?
Right now I made a stupid hack:
selectList	: displayedColumn (COMMA otherColumn)*  -> ^(SELECT_LIST
displayedColumn (COMMA otherColumn)* )
;
	otherColumn	:	displayedColumn; //dummy rule
But as I said, I feel a bit stupid and wonder if is there an easier
way to do this...
Thanks in advance,
Miguel Ping
    
    
More information about the antlr-interest
mailing list