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