编辑:当我想在另一个规则上使用它时,我扩展了 sehe 的示例以显示问题:http: //liveworkspace.org/code/22lxL7 $17
我正在尝试提高我的 Boost Spirit 解析器的性能,我看到自 C++11 以来,可以使用这样的自动规则:
auto comment = "/*" >> *(char_ - "*/") >> "*/";
(或使用 BOOST_AUTO 或 BOOST_SPIRIT_AUTO)。
我有一个这样的规则声明器:
qi::rule<lexer::Iterator, ast::SimpleType()> simple_type;
并像这样定义:
simple_type %=
const_
>> lexer.identifier;
如果我用 auto 声明它,它会编译,但它不能在其他规则中用作 AST。
是否可以使用自动规则定义创建 AST 的规则?我也对在 Boost Spirit 中加速 AST 创建的其他方法感兴趣。