Dave Gomboc wrote: > When I define rules x, y, and z such that > > x = ch_p('a'); > y = ch_p('a'); > z = !x >> y; > > it appears to operate the same as if z were defined to be > > z = (ch_p('a') | epsilon_p) >> 'a'; > > which accepts "aa", but rejects "a". > > > On the other hand, if I define z as > > z = (epsilon_p | ch_p('a')) >> 'a' > > then "a" is accepted, but "aa" is rejected. > > > (These are, of course, not the actual rules I am interested in, but a > vast simplification of them, focusing on the point of interest.) > > My original expectation had been that first the choice on the left > side of the or operation would be attempted, but when ultimately > failing to match > the entire string later on, to then backtrack and attempt matching > via the choice on the right side of the or. How can I achieve this > behaviour?
I am not quiet sure what you mean. AFAICT, given "aa" or "a", both (ch_p('a') | epsilon_p) and (epsilon_p | ch_p('a')) does not fail. What do you mean by "failing to match" above? > In the real problem the semantic actions associated with x and y are > different, but the inputs they match individually have significant > overlap, and where they do overlap, I need y to be matched rather > than x. Perhaps I can answer this after your first question is clarified. > On a related note, when I defined BOOST_SPIRIT_DEBUG before > #including the core, and specified BOOST_SPIRIT_DEBUG_RULE(test); in > my grammar I > received the following error message using g++-3.2.2 on linux-i686: > > test_grammar.hpp:45: ISO C++ forbits declaration of > `get_node_registry' > with no type > test_grammar.hpp:45: invalid use of `::' > test_grammar.hpp:45: syntax error before `.' token > > Any idea what I might be doing wrong? Not sure. Can I peek into your test_grammar.hpp? > Also, please let me know if I should be asking this on a > spriit-specific > list rather than boost's. Spirit-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/spirit-devel I already cross-posted this there. Regards, -- 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