Example #1
0
 def litorvar(self):
     global tokens
     if not (self.tok in tokens):
         self.expressionStack.push(tree(self.tok, self.lang, None))
         self.tok = self.getNext()
         return True
     else:
         return False
Example #2
0
 def litorvar (self):
     global tokens
     if not (self.tok in tokens):
         self.expressionStack.push(tree(self.tok, self.lang, None))
         self.tok = self.getNext()
         return True
     else:
         return False
Example #3
0
 def simpleExprFinal(self):
     while self.addOperator():
         if self.term():
             r = self.expressionStack.pop()
             operator = self.expressionStack.pop()
             l = self.expressionStack.pop()
             t = tree(operator, self.lang, self.internalError)
             t.operands([l, r])
             self.expressionStack.push(t)
Example #4
0
 def simpleExprFinal (self):
     while self.addOperator():
         if self.term():
             r = self.expressionStack.pop()
             operator = self.expressionStack.pop()
             l = self.expressionStack.pop()
             t = tree(operator, self.lang, self.internalError)
             t.operands([l, r])
             self.expressionStack.push(t)
Example #5
0
 def unarySimpleExpr(self, op):
     if self.term():
         if op == '-':
             l = self.expressionStack.pop()
             t = tree('-', self.lang, self.internalError)
             t.operands([l])
             self.expressionStack.push(t)
         self.simpleExprFinal()
         return True
     else:
         return False
Example #6
0
 def unarySimpleExpr (self, op):
     if self.term():
         if op == '-':
             l = self.expressionStack.pop()
             t = tree('-', self.lang, self.internalError)
             t.operands([l])
             self.expressionStack.push(t)
         self.simpleExprFinal()
         return True
     else:
         return False
Example #7
0
 def expression(self):
     if self.unaryOrTerm():
         while self.addOperator():
             op = self.expressionStack.pop()
             l = self.expressionStack.pop()
             self.term()
             r = self.expressionStack.pop()
             t = tree(op, self.lang, self.internalError)
             t.operands([l, r])
             t.out()
             self.expressionStack.push(t)
         return True
     return False
Example #8
0
 def expression (self):
     if self.unaryOrTerm():
         while self.addOperator():
             op = self.expressionStack.pop()
             l = self.expressionStack.pop()
             self.term()
             r = self.expressionStack.pop()
             t = tree(op, self.lang, self.internalError)
             t.operands([l, r])
             t.out()
             self.expressionStack.push(t)
         return True
     return False
Example #9
0
 def term(self):
     if self.factor():
         while True:
             operator = "*"
             if self.mulOperator():
                 operator = self.expressionStack.pop()
             if self.factor():
                 r = self.expressionStack.pop()
                 l = self.expressionStack.pop()
                 t = tree(operator, self.lang, None)
                 t.operands([l, r])
                 self.expressionStack.push(t)
             else:
                 return True
     else:
         return False
Example #10
0
 def term (self):
     if self.factor():
         while True:
             operator = "*"
             if self.mulOperator():
                 operator = self.expressionStack.pop()
             if self.factor():
                 r = self.expressionStack.pop()
                 l = self.expressionStack.pop()
                 t = tree(operator, self.lang, None)
                 t.operands([l, r])
                 self.expressionStack.push(t)
             else:
                 return True
     else:
         return False
Example #11
0
 def factor(self):
     if self.seenToken('('):
         print "factor -> ( expression )"
         self.expression()
         self.expect(')')
         print "factor True"
         return True
     elif self.litorvar():
         if self.seenToken('^'):
             print "factor ^ "
             l = self.expressionStack.pop()
             self.factor()
             r = self.expressionStack.pop()
             t = tree('^', self.lang, None)
             t.operands([l, r])
             self.expressionStack.push(t)
         else:
             print "not seen ^"
         print "factor True"
         return True
     else:
         print "factor False"
         return False
Example #12
0
 def factor (self):
     if self.seenToken('('):
         # print "factor -> ( expression )"
         self.expression()
         self.expect(')')
         # print "factor True"
         return True
     elif self.litorvar():
         if self.seenToken('^'):
             # print "factor ^ "
             l = self.expressionStack.pop()
             self.factor()
             r = self.expressionStack.pop()
             t = tree('^', self.lang, None)
             t.operands([l, r])
             self.expressionStack.push(t)
         else:
             # print "not seen ^"
             pass
         # print "factor True"
         return True
     else:
         # print "factor False"
         return False