想象一下,我们想用 Boost.Spirit 解析和生成简单的 C++ 成员函数声明。
Qi 语法可能如下所示:
function_ %= type_ > id_ > "()" > matches["const"];
这意味着,函数是否const
存储在bool
.
用Karma怎么写对应的生成器?
function_ %= type_ << ' ' << id_ << "()" << XXX[" const"];
在这里,我们需要一个使用布尔属性的指令,如果属性是则执行嵌入式生成器,true
否则不执行任何操作。我们想要使以下测试成功的东西。
test_generator_attr("abc", XXX["abc"], true);
test_generator_attr("", XXX["abc"], false);
Boost.Spirit 中是否已经提供了这样的指令?