我有下一个用于解析Python中表达式的算法:
def parse(strinput):
for operator in ["+-", "*/"]:
depth = 0
for p in range(len(strinput) - 1, -1, -1):
if strinput[p] == ')': depth += 1
elif strinput[p] == '(': depth -= 1
elif depth==0 and strinput[p] in operator:
# strinput is a compound expression
return (strinput[p], parse(strinput[:p]), parse(strinput[p+1:]))
strinput = strinput.strip()
if strinput[0] == '(':
# strinput is a parenthesized expression?
return parse(strinput[1:-1])
# strinput is an atom!
return strinput
(可以在这里找到:http : //news.ycombinator.com/item?id=284842)
我很难理解它,因为我发现Python文档在这种情况下不是很有帮助。有人可以告诉我:这for operator in ["+-", "*/"]:是什么意思?我知道它的结构就像每个字符串变量一样,这是这2个元素的数组中的运算符,但是为什么它写成这样的[“ +-,* /”]?Python如何分隔它?在第一次迭代中,运算符是“ +-”吗?
任何帮助都将非常重要。谢谢
相关分类