Well, you are rewriting the tree with ^(....)+ but the tree grammar only walks one declaration ^(...). Unless you are using the + higher up the rule chain.
Example is: ... e+=entity_decl (COMMA e+=entity_decl)* ... -> ^(X .... $e)+ Also, your rewrite rule loses the label. It is generally a good idea to break components up in to separate rules when rewriting as then the token boundaries of nodes are correctly set. So here, you would move label? In to a higher rule for instance. Jim > -----Original Message----- > From: [email protected] [mailto:antlr-interest- > [email protected]] On Behalf Of Þðóøêèí Ìèõàèë > Sent: Thursday, January 21, 2010 3:57 AM > To: Gavin Lambert; [email protected] > Subject: Re: [antlr-interest] [C target] Duplicating tree error > > Excuse me, what you mean behind "you need to use a label"? Could you > send > me > example? > > And, currently, I haven't seen problems with duplicating of > "entity_decl" > tree. > I have a fault with a coping of "declaration_type_spec" tree. > > > Gavin Lambert <[email protected]> писал(а) в своём письме Thu, 21 > Jan > 2010 14:42:01 +0300: > > > 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. > > > > > > __________ Information from ESET Smart Security, version of virus > > signature database 4792 (20100121) __________ > > > > The message was checked by ESET Smart Security. > > > > http://www.esetnod32.ru > > > > > > > > > -- > Best regards, > Michael > > 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/il-antlr-interest?hl=en.
