在解析树的一元和二元减

Dfr*_*373 6 c++ binary-operators operator-precedence parse-tree unary-operator

我正在创建一个包含类似于的表达式的解析树

3 - 4 * 8

要么

8 * -5

要么

-(10 * 1)

我需要一种方法来区分一元和二元减.我的语法现在的方式是二进制减去第一个,但我想改变它并添加一个保存最后一个变量的标志变量.

例如:如果是的话 5 - 6

该标志持有5,如果它看到减号并且标志是数字,则跳过一元并转到二进制.

但是我不确定如何在C++中实现它

任何帮助将不胜感激.

谢谢

Tem*_*Rex 6

实现解析器的最简单方法是使用Recursive Descent方法.确保给二进制减去比一元减去更高的优先级,就像在引用的站点中一样:

 E -->  | E "+" E
        | E "-" E
        | "-" E
        | E "*" E
        | E "/" E
        | E "^" E
        | "(" E ")"
        | v
Run Code Online (Sandbox Code Playgroud)