#define _CRT_SECURE_NO_DEPRECATE
#define _SCL_SECURE_NO_DEPRECATE
#include <boost/config.hpp>
#include <string>
#include <boost/bimap/bimap.hpp>
#include <boost/xpressive/xpressive.hpp>
#include <boost/xpressive/regex_actions.hpp>
using namespace boost::bimaps;
using namespace boost::xpressive;
namespace xp = boost::xpressive;
int main()
{
typedef bimap< std::string, int > bm_type;
bm_type bm;
std::string rel_str("one <--> 1 two <--> 2 three <--> 3");
sregex rel = ( (s1= +_w) >> " <--> " >> (s2= +_d) )
[
xp::ref(bm)->*insert( xp::construct<bm_type::value_type>(s1, as<int>(s2)) )
];
sregex relations = rel >> *(+_s >> rel);
regex_match(rel_str, relations);
assert( bm.size() == 3 );
return 0;
}