Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 6th, 2012  |  syntax: None  |  size: 0.94 KB  |  hits: 13  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Boost.Spirit.Qi: Take a rule's attribute and set it as a field of an enclosing rule's struct attribute?
  2. struct Integer {
  3.   int value;
  4. };
  5. BOOST_FUSION_ADAPT_STRUCT(Integer, (int, value))
  6.        
  7. qi::rule<Iterator, Integer> integer;
  8.        
  9. integer = qi::int_;
  10.        
  11. qi::phrase_parse(iter, end, g, space, myInteger);
  12.        
  13. integer = qi::int_[qi::_val = qi::_1]; //compiles, uninitialized value
  14. integer = qi::int_[qi::_r1 = qi::_1]; //doesn't compile
  15. integer = qi::int_[phoenix::bind(&Integer::value, qi::_val) = qi::_1]; //doesn't
  16. integer = qi::int_[phoenix::at_c<0>(qi::_val) = qi::_1]; //doesn't
  17.        
  18. qi::rule<Iterator, Integer()> integer;
  19.        
  20. integer = qi::int_[qi::_val = qi::_1];
  21.        
  22. struct Integer {
  23.     int value;
  24.     Integer& operator=(int) {...}
  25. };
  26.        
  27. integer = qi::int_ >> qi::eps;
  28.        
  29. integer = qi::int_[qi::_r1 = qi::_1];
  30.        
  31. integer = qi::int_[phoenix::bind(&Integer::value, qi::_val) = qi::_1];
  32.        
  33. integer = qi::int_[phoenix::at_c<0>(qi::_val) = qi::_1];