Hi,
I'm a new user of xpresssive and I'd like to first give a big thank
you for this wonderful tool.
I'm having problems with the syntax for static regexes. The cheat
sheet in the documentation says that (set= 'a','b','c')
and as_xpr('a') | 'b' |'c'
are
equivalent yet the example
sregex parentheses;
parentheses = '(' >> *(keep(+~(boost::xpressive::set='(',')'))|by_ref(parentheses)) >> ')';
compiles while
sregex parentheses;
parentheses = '(' >> *(keep(+~(as_xpr('(')|')'))|by_ref(parentheses)) >> ')';
fails to do so (code and abbreviated errors attached). Additionally,
combining the
original lines into one construction, like so:
sregex parentheses = '(' >> *(keep(+~(boost::xpressive::set='(',')'))|by_ref(parentheses)) >> ')';
compiles but running the code fails with:
regnestest: /usr/include/boost/xpressive/detail/utility/tracking_ptr.hpp:457:
const boost::shared_ptr<T>& boost::xpressive::detail::tracking_ptr<Type>::get_(bool) const [with Type = boost::xpressive::detail::regex_impl<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >]:
Assertion `!this->has_deps_()' failed.
and using as_xpr for the first term:
sregex parentheses = as_xpr('(') >> *(keep(+~(boost::xpressive::set='(',')'))|by_ref(parentheses)) >> ')';
also compiles but causes a seg fault when run!
All this is using g++ 4.2.3 and boost 1.34 as packaged with Debian
testing. These seem like library errors to me, but like I said, I'm
new to xpressive, and I'd be even happier to have my understanding
improved.
Zachary