我的AST元素大致定义为
struct Something
{
boost::optional<string> foo;
string bar;
}
在我的解析代码中,我将其解析为
-(identifier >> ':')
>> type
现在,问题在于:如果我向解析器提供字符串hello:world
,一切正常,即
foo = hello
bar = world
但是,如果我向解析器提供字符串hello
,我会得到
foo = hello
bar = hello
而我想要的是
foo = boost::optional<string>()
bar = hello
如何在Boost.Spirit中实现这一目标?