我的问题如下。我有一个 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")
解析器(以及所有其他返回字符串的解析器)解析为向量?