Hi Graham

Does this give you what you want ?

localVariableDeclaration
   : LOCAL! variableDeclarationList
   ;

variableDeclarationList
   : variableDcl ( ',' variableDcl )* -> ^(LOCAL variableDcl)+
   ;

If you also use the variableDeclarationList rule for non-local
declarations you could give it a parameter...

localVariableDeclaration
   : LOCAL! variableDeclarationList[LOCAL]
   ;

variableDeclarationList[int type]
   : variableDcl ( ',' variableDcl )*
   -> {type == LOCAL}? ^(LOCAL variableDcl)+
   -> ^(OTHER variableDcl)+
   ;


Michael


On 6 April 2011 07:39, Graham Mer <gd.an...@gmail.com> wrote:
> Hello list,
>
> The following rule generates the AST that I want:
>
> localVariableDeclaration
>    : LOCAL variableDcl ( ',' variableDcl )* -> ^(LOCAL variableDcl)+
>    ;
>
> But how do I generate an equivalent AST if the variableDcl list is not
> in the localVariableDeclaration rule, as in the following fragment?
>
> localVariableDeclaration
>    : LOCAL variableDeclarationList
>    ;
>
> variableDeclarationList
>    : variableDcl ( ',' variableDcl )*
>    ;
>
> I want to produce a set of ^(LOCAL variableDcl) subtrees, but I want
> to reuse the variableDeclarationList from other rules, so I'd rather
> not inline it.
>
> Thanks!
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: 
> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>

List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe: 
http://www.antlr.org/mailman/options/antlr-interest/your-email-address

-- 
You received this message because you are subscribed to the Google Groups 
"il-antlr-interest" group.
To post to this group, send email to il-antlr-inter...@googlegroups.com.
To unsubscribe from this group, send email to 
il-antlr-interest+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en.

Reply via email to