Я использую Boost Spirit для анализа некоторых сложных выражений, таких как "0b111 << (0x111 + 1) * ....", проблема в синтаксическом анализе значений hex и bin, синтаксический анализатор обнаружил 0 перед 'b' илисначала «x» и принимает его как num, но я хочу взять «0b1111».Пытался это сделать, но эффекта нет. </p>
............
factor =
num [ qi::_val = qi::_1 ]
| '(' >> expr [ qi::_val = qi::_1 ] >>')'
| '-' >> num [ qi::_val = -qi::_1 ]
| '+' >> num [ qi::_val = qi::_1 ]
| '~' >> num [ qi::_val = ~qi::_1 ]
;
num =
qi::uint_ [ qi::_val = qi::_1 ]
| hexOrBinNum [ qi::_val = qi::_1 ]
;
hexOrBinNum =
"0x" >> qi::int_parser<int, 16>{} [ qi::_val = qi::_1 ]
| "0b" >> qi::int_parser<int, 2>{} [ qi::_val = qi::_1 ]
;