Пример #1
0
 def test_InteriorNode_valueTest3(self):
     leaf1 = LeafNode(5)
     leaf2 = LeafNode(10)
     node1 = InteriorNode(Token('+'), leaf1, leaf2)
     node2 = InteriorNode(Token('*'), leaf1, node1)
     node3 = InteriorNode(Token('-'), node2, leaf2)
     self.assertEqual(node3.value(), 65)
Пример #2
0
 def test_InteriorNode_postfixTest2(self):
     leaf1 = LeafNode(72)
     leaf2 = LeafNode(14)
     node1 = InteriorNode(Token('+'), leaf1, leaf2)
     node2 = InteriorNode(Token('*'), leaf1, node1)
     node3 = InteriorNode(Token('/'), node2, leaf2)
     s = "72 72 14 + * 14 /"
     self.assertEqual(node3.postfix(), s)
Пример #3
0
 def test_InteriorNode_prefixTest2(self):
     leaf1 = LeafNode(72)
     leaf2 = LeafNode(14)
     node1 = InteriorNode(Token('+'), leaf1, leaf2)
     node2 = InteriorNode(Token('*'), leaf1, node1)
     node3 = InteriorNode(Token('/'), node2, leaf2)
     s = "/ * 72 + 72 14 14"
     self.assertEqual(node3.prefix(), s)
Пример #4
0
 def test_InteriorNode_infixTest1(self):
     leaf1 = LeafNode(5)
     leaf2 = LeafNode(10)
     node1 = InteriorNode(Token('+'), leaf1, leaf2)
     node2 = InteriorNode(Token('*'), leaf1, node1)
     node3 = InteriorNode(Token('-'), node2, leaf2)
     s = "((5 * (5 + 10)) - 10)"
     self.assertEqual(node3.infix(), s)
Пример #5
0
 def factor(self):
     tree = self.primary()
     token = self.scanner.get()
     if token.getType() == Token.EXPO:
         self.scanner.next()
         tree = InteriorNode(token, tree, self.factor())
     return tree
Пример #6
0
 def term(self):
     tree = self.factor()
     token = self.scanner.get()
     while token.getType() in (Token.MUL, Token.DIV):
         self.scanner.next()
         tree = InteriorNode(token, tree, self.factor())
         token = self.scanner.get()
     return tree
Пример #7
0
 def expression(self):
     tree = self.term()
     token = self.scanner.get()
     while token.getType() in (Token.PLUS, Token.MINUS):
         self.scanner.next()
         tree = InteriorNode(token, tree, self.term())
         token = self.scanner.get()
     return tree
Пример #8
0
 def _term(self):
     tree = self._factor()
     token = self._scanner.get()
     while token.getType() in (Token.MUL, Token.DIV):
         op = str(token)
         self._scanner.next()
         tree = InteriorNode(op, tree, self._factor())
         token = self._scanner.get()
     return tree
Пример #9
0
 def _expression(self):
     tree = self._term()
     token = self._scanner.get()
     while token.getType() in (Token.PLUS, Token.MINUS):
         op = str(token)
         self._scanner.next()
         tree = InteriorNode(op, tree, self._term())
         token = self._scanner.get()
     return tree
Пример #10
0
 def _factor(self):
     tree = self._primary()
     token = self._scanner.get()
     if token.getType() == Token.EXPO:
         op = str(token)
         self._scanner.next()
         tree = InteriorNode(op, tree, self._factor())
         token = self._scanner.get()
     return tree
Пример #11
0
 def expression(self):
     tree = self.term()
     token = self.scanner.get()
     if token is None:
         return tree
     while token.getType() in (Token.PLUS, Token.MINUS):
         op = str(token)
         self.scanner.tonext()
         tree = InteriorNode(op, tree, self.term())
         token = self.scanner.get()
         if token is None:
             break
     return tree
Пример #12
0
 def term(self):
     tree = self.factor()
     token = self.scanner.get()
     if token is None:
         return tree
     while token.getType() in (Token.MUL, Token.DIV):
         op = str(token)
         self.scanner.tonext()
         tree = InteriorNode(op, tree, self.factor())
         token = self.scanner.get()
         if token is None:
             break
     return tree
Пример #13
0
 def test_InteriorNode_postfixTest1(self):
     leaf1 = LeafNode(5)
     leaf2 = LeafNode(10)
     node1 = InteriorNode(Token('+'), leaf1, leaf2)
     node2 = InteriorNode(Token('*'), leaf1, node1)
     node3 = InteriorNode(Token('-'), node2, leaf2)
     s = "5 5 10 + * 10 -"
     print(node3.postfix())
     self.assertEqual(node3.postfix(), s)
Пример #14
0
 def test_InteriorNode_infixTest2(self):
     leaf1 = LeafNode(72)
     leaf2 = LeafNode(14)
     node1 = InteriorNode(Token('+'), leaf1, leaf2)
     node2 = InteriorNode(Token('*'), leaf1, node1)
     node3 = InteriorNode(Token('/'), node2, leaf2)
     s = "((72 * (72 + 14)) / 14)"
     print(node3.infix())
     self.assertEqual(node3.infix(), s)
Пример #15
0
 def test_InteriorNode_valueTest1(self):
     leaf1 = LeafNode(5)
     leaf2 = LeafNode(10)
     node = InteriorNode(Token('+'), leaf1, leaf2)
     self.assertEqual(node.value(), 15)
Пример #16
0
 def test_InteriorNode_valueTest2(self):
     leaf1 = LeafNode(5)
     leaf2 = LeafNode(10)
     node1 = InteriorNode(Token('+'), leaf1, leaf2)
     node2 = InteriorNode(Token('*'), leaf1, node1)
     self.assertEqual(node2.value(), 75)