C++ 解决C+中std::函数的循环依赖关系+;

C++ 解决C+中std::函数的循环依赖关系+;,c++,c++11,circular-reference,C++,C++11,Circular Reference,出于教育目的,我正在尝试实现解析器组合器。解析器被简单地定义为std::function。我已经到了一个地步,我将能够定义一个简单的表达式语法,使用如下代码: auto expression; // the type does not matter for the context auto factor = number | (token('(') >= expression >= token(')')) ; auto t

出于教育目的,我正在尝试实现解析器组合器。解析器被简单地定义为
std::function
。我已经到了一个地步,我将能够定义一个简单的表达式语法,使用如下代码:

auto expression;  // the type does not matter for the context
auto factor =   number
              | (token('(') >= expression >= token(')'))
              ;
auto term = factor >= *( (token('*') | token('/')) >= factor );
expression = term >= *( (token('+') | token('-')) >= term ); 

可以看出,问题在于循环依赖关系。我想不出一种方法来解决分组因素导致的循环依赖性。构造因子解析器的运算符需要表达式解析器,但表达式解析器仅在最后构造。我该如何解决这个问题?

引入一个间接层,即使用指针。不回答你的问题,只是指出你可能被卷入其中。@NeilButterworth你是说std::function*?所以我需要重写每一个操作符来处理它们,并且只在使用时进行deref?将事物的名称从事物中分离出来。有无数种方法可以做到这一点。