[antlr-interest] [C target] Duplicating tree error

Gavin Lambert antlr at mirality.co.nz
Thu Jan 21 03:42:01 PST 2010


At 00:21 22/01/2010, =?koi8-r?B?4NLV28vJziDtycjBycw=?= wrote:
 >type_declaration_stmt
 >   : label? declaration_type_spec ( (T_COMMA  attr_spec )*
 >T_COLON_COLON )?
 >     entity_decl (T_COMMA entity_decl)* end_of_stmt    	
 >     -> ^(T_TYPE_DECLARATION_STMT declaration_type_spec 
attr_spec*
 >entity_decl)+
 >   ;
[...]
 >BUT declaration_type_spec subtree isn't dublicated (only the 
root
 >of subtree).
 >
 >Where is mistake?

IIRC, when you use a rule name in a rewrite rule, it represents 
"the first unused instance of this rule in the input" (which is 
why entity_decl is doing what it is).  So the second and 
subsequent times it appears (during the + loop) the value is empty 
since it didn't occur any more times in the input.  To duplicate 
nodes you need to use a label.



More information about the antlr-interest mailing list