使用boost::spirit从语法中组合语法

12
我已经学会如何使用Spirit,也就是说,我已经编写了一个相对复杂的语法。我总是采用逐步增加程序子系统的方法。我已经为一个复杂模型编写了数据结构,该模型在最高级别上有4种类型。
我想使用基于规则组合的语法逐个解析顶层类型 - 也就是说,我想编写4个语法,每个语法都有一个顶层语法。如果这是可能的(我开始怀疑),请有人发布一段代码片段或指向一个可以做到这一点的项目的参考。
一个顶层语法,拥有50多个(可能更多)规则(用于正确的错误处理),听起来并不好玩(TMP代码易变/编译速度慢,并提供无用的错误消息)。
1个回答

12

这段代码简化自实际程序,其中Qi应该和Karma的功能一样。

template<class Iter>
struct subgrammar_1
: karma::grammar<Iter, ...>
{
    ...
}

template<class Iter>
struct top_level_grammar
: karma::grammar<Iter, ...>
{
    top_level_grammar() : top_level_grammar::base_type(start)
    {
        start %= r1 | r2;
    }
    karma::rule<Iter, ...> r1;
    subgrammar_1<Iter> r2;
    ...
}

没错,那就是我想要的:P,等我有时间了就试一试。 - Hassan Syed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接