Has*_*yed 12 c++ parsing recursive-descent boost-spirit tmp
我已经想出如何使用精神 - 也就是说,我写了一个中等复杂的语法.我总是采用增长程序的方法 - 一次一个子系统.我已经为复杂模型编写了数据结构,该模型在最高级别有4种类型.
我想使用由规则方法组成的语法一次解析一个类型的顶级类型 - 即,我想用一个顶级语法编写4个语法.如果这是可能的(我开始怀疑),有人可以发布片段或对这样做的项目的引用.
一个顶级语法具有50+(可能更多)规则(用于正确的错误处理)听起来不是很有趣(TMP代码易失/慢编译,并提供无用的错误消息).
jus*_*ody 11
从实际程序简化,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;
...
}
Run Code Online (Sandbox Code Playgroud)