を解析されていません。Boost.Spirit私はブースト::精神::気のルールを持って、全体入力
auto dquote = qi::char_('\"');
auto comma = qi::char_(',');
auto newline = qi::char_('\n');
auto nonEscaped = *(qi::char_ - newline - comma - dquote);
auto escaped = *qi::blank >> dquote >> *((qi::char_ - dquote) | (dquote >> dquote)) >> dquote >> *qi::blank;
auto field = nonEscaped | escaped;
私は入力を解析しようとすると:
string input(" \"e\"\"e\" ");
qi::phrase_parse(begin(input), end(input), field, qi::char_('\r'));
入力が完全ではありませんescaped
ルールと一致しますが、nonEscaped
ルールのみが適用されます。したがって、最初のスペースのみが一致します。スピリットを理解して、入力全体を解析するか、できるかぎり解析するにはどうすればよいですか?
field
ルールのバリアントの順序を次のように変更すると、機能します。しかし、それは正しい解決策ですか?
auto field = escaped | nonEscaped;