【发布时间】:2012-09-27 08:08:06
【问题描述】:
我即将为类似数学的语言编写解析器,并且发现有时调用我的精神语法来解析表达式的子部分会很好。
即如果我要解析
a+b*c+d
在查询“+”号时,在“b*c”部分调用parse() 会很方便。
在使用我的语法的 same 实例时可以这样做吗? (语法参数是'*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
}
}
谢谢!
【问题讨论】:
-
这是一个高度非特定的问题,带有无意义的代码 sn-p。为什么不从文档中的示例开始:boost-spirit.com/home/doc
-
@sehe 这怎么不具体?我想知道 boost-spirit 是否支持使用相同的语法实例对 parse() 进行递归调用。 (是或否)
标签: c++ boost boost-spirit