Exemplo n.º 1
0
 def visit_term15(self, node, ch):
     l = ch.pop(0)
     while len(ch):
         op, r = ch.pop(0), ch.pop(0)
         if op == '<<': l = expr.Binary(l, op, r, lambda x, y: x << y)
         elif op == '>>': l = expr.Binary(l, op, r, lambda x, y: x >> y)
     return l
Exemplo n.º 2
0
 def visit_term16(self, node, ch):
     l = ch.pop(0)
     while len(ch):
         op, r = ch.pop(0), ch.pop(0)
         if op == '+': l = expr.Binary(l, op, r, lambda x, y: x + y)
         elif op == '-': l = expr.Binary(l, op, r, lambda x, y: x - y)
     return l
Exemplo n.º 3
0
 def visit_term17(self, node, ch):
     l = ch.pop(0)
     while len(ch):
         op, r = ch.pop(0), ch.pop(0)
         if op == '*': l = expr.Binary(l, op, r, lambda x, y: x * y)
         elif op == '/': l = expr.Binary(l, op, r, lambda x, y: x / y)
         elif op == '%': l = expr.Binary(l, op, r, lambda x, y: x % y)
     return l
Exemplo n.º 4
0
 def visit_term12(self, node, ch):
     l = ch.pop(0)
     while len(ch):
         op, r = ch.pop(0), ch.pop(0)
         if op == '==':
             l = expr.Binary(l, op, r, lambda x, y: gdb.Value(x == y))
         elif op == '!=':
             l = expr.Binary(l, op, r, lambda x, y: gdb.Value(x != y))
         elif op == '==?':
             l = expr.Filter(l, op, r, lambda x, y: gdb.Value(x == y))
         elif op == '!=?':
             l = expr.Filter(l, op, r, lambda x, y: gdb.Value(x != y))
     return l
Exemplo n.º 5
0
 def visit_term7(self, node, ch):
     l = ch.pop(0)
     while len(ch):
         op, r = ch.pop(0), ch.pop(0)
         if op == '||':
             l = expr.Binary(l, op, r, lambda x, y: 1 if x or y else 0)
     return l
Exemplo n.º 6
0
 def visit_term13(self, node, ch):
     l = ch.pop(0)
     while len(ch):
         op, r = ch.pop(0), ch.pop(0)
         if op == '<':
             l = expr.Binary(l, op, r, lambda x, y: gdb.Value(x < y))
         elif op == '>':
             l = expr.Binary(l, op, r, lambda x, y: gdb.Value(x > y))
         elif op == '<=':
             l = expr.Binary(l, op, r, lambda x, y: gdb.Value(x <= y))
         elif op == '>=':
             l = expr.Binary(l, op, r, lambda x, y: gdb.Value(x >= y))
         elif op == '<?':
             l = expr.Filter(l, op, r, lambda x, y: gdb.Value(x < y))
         elif op == '>?':
             l = expr.Filter(l, op, r, lambda x, y: gdb.Value(x > y))
         elif op == '<=?':
             l = expr.Filter(l, op, r, lambda x, y: gdb.Value(x <= y))
         elif op == '>=?':
             l = expr.Filter(l, op, r, lambda x, y: gdb.Value(x >= y))
     return l
Exemplo n.º 7
0
 def visit_term19(self, node, ch):
     l = ch.pop(0)
     while len(ch):
         op, r = ch.pop(0), ch.pop(0)
         if op == '[':
             l, _ = expr.Binary(l, '{0}[{1}]', r,
                                lambda x, y: x[int(y)]), ch.pop(0)
         elif op == '.':
             l = expr.Struct(l, '{0}.{1}', r)
         elif op == '->':
             l = expr.Struct(l, '{0}->{1}', r)
         elif op == '-->':
             l = expr.StructWalk(l, r)
         elif op == '[[':
             l, _ = expr.TakeNth(l, r), ch.pop(0)
         elif op == '@':
             l = expr.Until(l, r)
     return l
Exemplo n.º 8
0
 def visit_term9(self, node, ch):
     l = ch.pop(0)
     while len(ch):
         op, r = ch.pop(0), ch.pop(0)
         if op == '|': l = expr.Binary(l, op, r, lambda x, y: x | y)
     return l