解析数学表达式,这种方法的分类是什么?

时间:2012-12-06 16:25:22

标签: parsing math expression

我为3-5*6*8之类的表达式编写了一个词法分析器和解析器,它被编译为以下标记:

  • 数(3)
  • 运算符( - )
  • 数(5)
  • 运算符(*)
  • 数(6)
  • 运算符(*)
  • 数(8)

然后解析器采用一种方法,我觉得这种方法是递归下降和反向优先攀爬的组合。它的工作方式大致如下:

parse(3-5*6*8)
add(parse(3), -parse(5*6*8))
add(3, -product(parse(5), parse(6), parse(8))
add(3, -product(5, 6, 8))

像这样,令牌序列从最低优先级解析到最高递归。它还通过括号处理系统处理函数,但这超出了这个问题的范围。

此方法可以归类为任何已知的运算符优先级解析器方法,还是这种新的(奇怪)事物?

我可以想象防止我的方法被轻易归类的一件事是像sumproduct这样的运算符的多操作数系统,但是我的特定应用程序需要这样来简化实现。 / p>

1 个答案:

答案 0 :(得分:0)

这听起来有点像Dijkstra的分流算法here