负数后缀的中缀



如何将负数从中缀转换为后缀?

假设我有一个表达式

a=-b-(-c-d)

在某些地方,我读到你可以像一样将负数进行合成

a=(-b)-(-c-d)

但在这里,如果我这样做,我会在后缀表达式的开头得到一个像"ab-"这样的术语,它的意思是a-b,是不正确的。

如何转换?

在中缀表示法中,必须区分二进制减法运算符sub和一元否定运算符neg。两者都用减号表示,但上下文告诉你哪个是哪个。

当减号在表达式开头、左括号后面或二进制运算符后面时,您得到了否定

 emsp&减(x+y)/emsp→emspxy添加neg
/emsp 4&次&减号x/emsp→emsp;4xmult
 emsp;2&次;(减号;x+y)/emsp→emsp;2xnegy添加mult

当减号在右括号后面或符号后面时,即在变量或数字后面时,您就得到了减法

 emsp;1&减号x/emsp→emsp;1xsub
/emsp (4*x)&减号1/emsp→emsp;4xmult1sub

注意一元运算符neg只从堆栈中取出一个参数。如果你想坚持使用二进制运算符,你可以在第二个操作数之前加一个零,并使用二进制sub:

 emsp&减(x+y)/emsp→emsp;0xy添加sub
/emsp 4xneg多重 rarr 4 0xmult
 emsp;2xnegy添加mult rarr 2 0xy添加mult

最后,您可以将类似的逻辑应用于一元加号,您可以忽略它:

 emsp;+x/emsp→emspx
/emsp +(x+y)/emsp→emspxy添加

相关内容

  • 没有找到相关文章

最新更新