Exemplo n.º 1
0
 def parse_term(self):
     expr = self.parse_factor()
     while self.tokens.peek in ('*', '/', '%'):
         op = self.tokens.next()
         next_expr = self.parse_factor()
         expr = ast.BinOp(op.line, op.value, expr, next_expr)
     return expr
Exemplo n.º 2
0
 def parse_additive(self):
     expr = self.parse_term()
     while self.tokens.peek in ('+', '-'):
         op = self.tokens.next()
         next_expr = self.parse_term()
         expr = ast.BinOp(op.line, op.value, expr, next_expr)
     return expr
Exemplo n.º 3
0
 def parse_relational(self):
     expr = self.parse_additive()
     while self.tokens.peek in ('<', '>', '<=', '>='):
         op = self.tokens.next()
         next_expr = self.parse_additive()
         expr = ast.BinOp(op.line, op.value, expr, next_expr)
     return expr
Exemplo n.º 4
0
 def parse_equality(self):
     expr = self.parse_relational()
     while self.tokens.peek in ('==', '!='):
         op = self.tokens.next()
         next_expr = self.parse_relational()
         expr = ast.BinOp(op.line, op.value, expr, next_expr)
     return expr
Exemplo n.º 5
0
 def parse_and(self):
     expr = self.parse_not()
     while self.tokens.peek == 'and':
         line = self.tokens.next().line
         next_expr = self.parse_not()
         expr = ast.BinOp(line, 'and', expr, next_expr)
     return expr
Exemplo n.º 6
0
 def parse_expression(self):
     """
     Parses an expression.
     """
     expr = self.parse_and()
     while self.tokens.peek == 'or':
         line = self.tokens.next().line
         next_expr = self.parse_and()
         expr = ast.BinOp(line, 'or', expr, next_expr)
     return expr