Zep*_*hyr 1 infix-notation infix-operator postfix
如何将负数从中缀转换为后缀?
假设我有一个表达式
a =-b-(-cd)
在某些地方,我读到您可以将诸如
a =(-b)-(-cd)
但是在这里,如果我这样做的话,我将在后缀表达式的开头得到类似“ ab-”的术语,表示ab且不正确。
我该如何转换呢?
在后缀表示法中,您必须区分二进制减法运算符sub和一元否定运算符neg。两者都用减号表示,但是上下文告诉您哪个是哪个。
你已经有了一个否定,当减为表达式的开始,还是后一个左括号或二元运算后:
- (X + Ý)→ X ý 附加 负
4× - X →4 X NEG MULT
2×( - X + Y)→2 X NEG ÿ 附加 MULT
当减号在右括号后或符号后,即在变量或数字后,您将得到减法:
1 − x →1 x 子
(4?x)− 1 →4 x 多 1 子
请注意,一元运算符neg只会从堆栈中取出一个参数。如果要使用二进制运算符,可以在第二个操作数之前加一个零,并使用binary sub:
−(x + y)→0 x y 添加 sub
4 x 否 mult →4 0 x sub mult
2 x ne y add mul →2 0 x sub y 添加 mult
最后,您可以将类似的逻辑应用于一元加号,您可以忽略该逻辑:
+ x → x
+(x + y)→ x y 加