如何将负数从中缀转换为后缀?
假设我有一个表达式
a = - b - (-cd)
在某些地方,我读到您可以对负数进行复述,例如
a = (-b) - (-cd)
但是在这里,如果我这样做,我会在后缀表达式的开头得到一个类似“ab-”的术语,这意味着 ab 并且是不正确的。
我该如何转换?
如何将负数从中缀转换为后缀?
假设我有一个表达式
a = - b - (-cd)
在某些地方,我读到您可以对负数进行复述,例如
a = (-b) - (-cd)
但是在这里,如果我这样做,我会在后缀表达式的开头得到一个类似“ab-”的术语,这意味着 ab 并且是不正确的。
我该如何转换?
在中缀表示法中,您必须区分二元减法运算符sub和一元否定运算符neg。两者都用减号表示,但上下文会告诉你哪个是哪个。
你有一个negation,当减号在表达式的开头,或者在左括号之后或在二元运算符之后:
− ( x + y ) → x y add neg
4 × − x → 4 x neg mult
2 × (− x + y) → 2 x neg y add mult
当减号在右括号之后或符号之后,即在变量或数字之后,你得到了减法:
1 - x → 1 x sub
(4 * x ) - 1 → 4 x mult 1 sub
注意一元运算符neg只从堆栈中取出一个参数。如果你想坚持使用二元运算符,你可以在第二个操作数之前推一个零并使用二元sub:
- ( x + y ) → 0 x y add sub
4 x neg mult → 4 0 x sub mult
2 x neg y add mult → 2 0 x sub y add mult
最后,您可以将类似的逻辑应用于一元加号,您可以忽略它:
+ x → x
+ ( x + y ) → x y 加