私の問題は次のとおりです。次のように定義されたastノードがあります。
struct foo_node{
std::vector<std::string> value;
}
そして、構造体に解析するためのこのようなパーサーがあります。これは正常に機能します。
typedef x3::rule<struct foo_node_class, foo_node> foo_node_type;
const foo_node_type foo_node = "foo_node";
auto const foo_node_def = "(" >> +x3::string("bar") >> ")";
ここで、パーサーが括弧なしで も解析することを達成したいと考えてい"bar"
ますが、それが単一のバーである場合に限ります。私はこのようにそれをやろうとしました:
auto const foo_node_def = x3::string("bar")
| "(" > +x3::string("bar") > ")";
しかし、これはコンパイル時エラーを引き起こしx3::string("bar")
ますstd::vector<std::string>
。私の質問は、x3::string("bar")
パーサー (および文字列を返す他のすべてのパーサー) がベクトルに解析することをどのように達成できますか?