|
| 1 | +import abc |
1 | 2 | from . import Expression
|
2 | 3 |
|
3 | 4 |
|
4 | 5 | class BinaryExpression(Expression):
|
5 |
| - def __init__(self, left_exp, op_exp, right_exp): |
| 6 | + def __init__(self, left_exp, right_exp): |
6 | 7 | super(BinaryExpression, self).__init__()
|
7 | 8 | self.left = left_exp
|
8 |
| - self.op = op_exp |
9 | 9 | self.right = right_exp
|
10 | 10 |
|
| 11 | + @abc.abstractmethod |
11 | 12 | def visit(self, visitor):
|
12 |
| - return visitor.visit_BinaryExpression(self) |
| 13 | + raise NotImplementedError() |
13 | 14 |
|
14 | 15 | @property
|
15 | 16 | def children(self):
|
16 |
| - return [self.left, self.op, self.right] |
| 17 | + return [self.left, self.right] |
17 | 18 |
|
18 | 19 | def __repr__(self):
|
19 |
| - return u"{0}(left={1}, op={2}, right={3})".format( |
| 20 | + return u"{0}(left={1}, right={3})".format( |
20 | 21 | self.__class__.__name__,
|
21 | 22 | self.left.__repr__(),
|
22 |
| - self.op.__repr__(), |
23 | 23 | self.right.__repr__())
|
| 24 | + |
| 25 | + |
| 26 | +class JoinExpression(BinaryExpression): |
| 27 | + def __init__(self, outer_exp, inner_exp, outer_key, inner_key, select_func): |
| 28 | + super(JoinExpression, self).__init__(outer_exp, inner_exp) |
| 29 | + self.inner_key = inner_key |
| 30 | + self.outer_key = outer_key |
| 31 | + self.select_func = select_func |
| 32 | + |
| 33 | + def visit(self, visitor): |
| 34 | + return visitor.visit_JoinExpression(self) |
| 35 | + |
| 36 | + def __repr__(self): |
| 37 | + return u"JoinExpression(outer={0}, inner={1}, outer_key={2}, inner_key={3}, select={4})".format( |
| 38 | + self.left.__repr__(), |
| 39 | + self.right.__repr__(), |
| 40 | + self.outer_key.__repr__(), |
| 41 | + self.inner_key.__repr__(), |
| 42 | + self.select_func.__repr__() |
| 43 | + ) |
0 commit comments