Я пытаюсь разобрать либо аддитивное выражение формы «A + C», либо только «A». После нескольких тестов я понял, что проблема, по-видимому, заключается в том, что я использую дополнительный синтаксический анализатор, поэтому для примера:
qi::rule<string::iterator, string()> Test;
Test =
(
qi::string("A")[qi::_val= qi::_1]
>> -(
qi::string("B")[qi::_val += qi::_1]
>> qi::string("C")[qi::_val += qi::_1]
)
)
;
string s1, s2;
s1 = "AB";
bool a= qi::parse(s1.begin(), s1.end(), Test, s2);
Идея состоит в том, чтобы проанализировать «A» или «ABC», но если значение s1 равно «AB» без «C», значение a истинно. Я считаю, что хотя я ставлю скобки после оператора '-', а затем использую оператор ">>", часть 'C' считается необязательной, а не B>>C в целом. Есть идеи?