Sorry, I'm refering tree_node<>::value.id().to_long(). The token_node_d directive in the code below creates these nodes, and stores the associated rule id in them. The rule id being stored changed when I upgraded to the latest version of Spirit. Please reread my message below with this context in mind.
Thanks, Jon -----Original Message----- From: Joel de Guzman [mailto:[EMAIL PROTECTED] Sent: Monday, March 24, 2003 3:58 AM To: Boost mailing list Subject: Re: [boost] spirit::rule<>::set_id() Jon Wray wrote: > Thanks! I noticed that this change leads to different behavior when > assigning rules. Consider this code: > > typename rule_<ScannerT, IDENTIFIER>::type Identifier; > typename rule_<ScannerT, FUNCTION>::type Function; > typename rule_<ScannerT, PREDICATE>::type Predicate; > typename rule_<ScannerT, VARIABLE>::type Variable; > > Identifier = lexeme_d[token_node_d[(alpha_p | '_' | '$') >> > *(alnum_p >> '_' | '$')]]; > Function = Identifier; > Predicate = Identifier; > Variable = Identifier; > > value.id().to_long() used to return FUNCTION, PREDICATE, or VARIABLE, > but it now returns IDENTIFIER. [snip] Huh? AFAICT, Function.id() == FUNCTION, Predicate.id() == PREDICATE and Variable.id() == VARIABLE. I tested this... rule<scanner<>, parser_context, parser_tag<1> > r1; rule<scanner<>, parser_context, parser_tag<2> > r2; r1 = r2; assert(r1.id() == 1); assert(r2.id() == 2); What am I missing? -- Joel de Guzman joel at boost-consulting.com http://www.boost-consulting.com http://spirit.sf.net _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost