这里是我第一个python程序,是一个逆波兰式的表达式分析器,完全照抄另外一个C语言版本的,原作者看到了请见谅哈!
非常简陋,什么错误检测都没有,纯粹是练笔的东东:
1
#My first python
2
import sys
3
def parse(str):
4
"""Expression Parser"""
5
(s, exp, i, str) = ([], [], 0, "(" + str + ")#")
6
while str[i] != "#":
7
if (str[i] >= '0' and str[i] <= '9') or (str[i] >= 'a' and str[i] <= 'z'):
8
exp.append(str[i])
9![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
elif str[i] == '(':
11
s.append(str[i])
12![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
elif str[i] == ')':
14
while s[-1] != '(':
15
exp.append(s.pop())
16
s.pop()
17![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
18
elif str[i] in ['+', '-']:
19
while s[-1] != '(':
20
exp.append(s.pop())
21
s.append(str[i])
22![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
23
elif str[i] in ['*', '/']:
24
while s[-1] in ['*', '/']:
25
exp.append(s.pop())
26
s.append(str[i])
27
i += 1
28
print '=============='
29
print exp
30![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
31
if __name__ == "__main__":
32
parse("a-b*c/(3+6)")
33![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
要是python支持t-sql那样的between语法就好了。