编译器设计:如何区分“op_Minus数”和“负数”?

时间:2011-03-02 19:42:44

标签: compiler-construction language-design compiler-theory

如何区分令牌序列“op_Minus”“number”和简单的负数?

1 个答案:

答案 0 :(得分:1)

我认为它依赖于上下文,并且依赖于在解析源代码时遇到的操作数的数量。

根据您选择/遇到的语法类型,当您处理减法时,您可能会有类似的内容:

operand1 - operand2

或者如果您的语言使用前缀表示法,您最终会得到类似的结果:

- operand1 operand2
(- operand1 operand2)

在这两种情况下,如果您正在处理减法或负数,您应该能够从前一个令牌(在中缀表示法的情况下)或从前瞻到下一个令牌/下两个令牌中推断出来鉴于后者只有一个操作数。