我已想出如何使用精神 - 即,我已经写了中等复杂的语法。我始终以不断增长的一个程序的方法 - 每次一个子系统。我已经写了数据结构复杂的模型,它具有4种类型的最高水平。

我想使用文法组成从规则接近同时解析顶级类型的一种类型 - 即,我想写4个语法与一个顶级的语法。如果这是可能的(我现在开始怀疑),可能有人请张贴片段或到这一点。

一个项目的引用

50 +(可能更大量)一个顶层的语法规则(对于适当的错误处理)听起来不像乐趣(TMP代码是易失性/缓慢进行编译,并提供无用错误消息)。

有帮助吗?

解决方案

与实际的程序简化,应该工作相同的

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;
    ...
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top