如何区分令牌序列“op_Minus”“number”和简单的负数?
答案 0 :(得分:1)
我认为它依赖于上下文,并且依赖于在解析源代码时遇到的操作数的数量。
根据您选择/遇到的语法类型,当您处理减法时,您可能会有类似的内容:
operand1 - operand2
或者如果您的语言使用前缀表示法,您最终会得到类似的结果:
- operand1 operand2
(- operand1 operand2)
在这两种情况下,如果您正在处理减法或负数,您应该能够从前一个令牌(在中缀表示法的情况下)或从前瞻到下一个令牌/下两个令牌中推断出来鉴于后者只有一个操作数。