读书人

含有一元操作符的中缀表达式有办法转

发布时间: 2012-02-26 20:19:45 作者: rapoo

含有一元操作符的中缀表达式,有办法转化为后缀表达式么?
昨天考虑将一个简单的正则表达式转化为后缀形式的时候遇到了这个难题。
比如(a|b)*(c|d)*
在正则表达式中,*表示字表达式出现0次或多次,是一元操作符,并且优先级高过|。所以根据优先级,应该先算a|b 再算c|d,之后接着算两个*。
我首先想到的后缀形式为ab|cd|**.(.表示连结),但是这实际上是(a|b)((c|d)*)*的后缀表达式。
如果写成ab|*cd|*.,则破坏了括号优先计算的规则。

真心求教下各位。

[解决办法]

探讨

引用:

ab|*cd|*没破坏括号优先规则吧

在后缀表达式中,计算顺序不就是运算符号出现的顺序么?所以计算顺序是 | * | *。 如果括号优先不是先算 || 再算 * * 么?

读书人网 >软件架构设计

热点推荐