我正准备为类似mathematica的语言编写一个解析器,并且发现,有时会调用我的灵魂语法来解析表达式的子部分,这将是很好的。是否允许递归助推精神语法?
即如果我要解析
a+b*c+d
这将是很方便的调用parse()
上的“B * C”的一部分,而查询“+”号。
使用相同我的语法实例可以这么做吗? (语法参数为'* this')
尽管我还不完全相信这是否是完成这项特定任务的最佳方式,但我觉得这个问题相当有趣,因为我找不到文档中的任何内容。
很显然,如果我使用这种技术,我不应该依赖类本地或全局变量。但我想知道它是否主要由精神设计所允许。
编辑:
我的语法实例如下所示:
class MyGrammar : public boost::spirit::qi::grammar<...>
{
/* a few rules. Some with local and/or inherited attributes */
MyGrammar(void)
{
/* assign all the rules, use a few 'on_error' statements */
// In one or two rules I would like to invoke parse(...,*this,...)
// on a subrange of the expression
}
}
谢谢!
实例怎么样子? – elyashiv
@elyashiv请参阅编辑 – iolo
这是一个高度非特定的问题,带有无意义的代码片段。为什么不从文档中的示例开始:http://boost-spirit.com/home/doc/ – sehe