我正在创建一个包含类似于
的表达式的解析树 3 - 4 * 8
或
8 * -5
或
-(10 * 1)
我需要一种方法来区分一元和二元减号。我的语法现在的方式是二进制减去第一个,但我想改变它并添加一个保存最后一个变量的标志变量。
例如:如果是5 - 6
该标志持有5,如果它看到减号并且该标志是一个数字,则跳过一元并转到二进制。
但是我不确定如何在C ++中实现它
非常感谢任何帮助。
由于
答案 0 :(得分:6)
实现解析器的最简单方法是使用Recursive Descent方法。确保给二进制减去比一元减去更高的优先级,就像在引用的站点中一样:
E --> | E "+" E
| E "-" E
| "-" E
| E "*" E
| E "/" E
| E "^" E
| "(" E ")"
| v