MCPcopy
hub / github.com/Jack-Lee-Hiter/AlgorithmsByPython / buildParseTree

Function buildParseTree

ParseTree.py:11–35  ·  view source on GitHub ↗
(fpexp)

Source from the content-addressed store, hash-verified

9
10# 构造解析树
11def buildParseTree(fpexp):
12 fplist = fpexp.split()
13 pStack = Stack()
14 eTree = BinaryTree('')
15 pStack.push(eTree)
16 currentTree = eTree
17 for i in fplist:
18 if i == '(':
19 currentTree.insertLeft('')
20 pStack.push(currentTree)
21 currentTree = currentTree.getLeftChild()
22 elif i not in ['+', '-', '*', '/', ')']:
23 currentTree.setRootVal(int(i))
24 parent = pStack.pop()
25 currentTree = parent
26 elif i in ['+', '-', '*', '/']:
27 currentTree.setRootVal(i)
28 currentTree.insertRight('')
29 pStack.push(currentTree)
30 currentTree = currentTree.getRightChild()
31 elif i == ')':
32 currentTree = pStack.pop()
33 else:
34 raise ValueError
35 return eTree
36
37# 递归实现两个叶结点的运算
38def evaluate(parseTree):

Callers 1

ParseTree.pyFile · 0.85

Calls 10

pushMethod · 0.95
popMethod · 0.95
StackClass · 0.90
BinaryTreeClass · 0.90
splitMethod · 0.80
insertLeftMethod · 0.80
getLeftChildMethod · 0.80
setRootValMethod · 0.80
insertRightMethod · 0.80
getRightChildMethod · 0.80

Tested by

no test coverage detected