|
@@ -80,6 +80,14 @@ class RpnExpr(list):
|
80
|
80
|
for sym in self])
|
81
|
81
|
return ' '.join([str(sym) for sym in self])
|
82
|
82
|
|
|
83
|
+ def __eq__(self, b):
|
|
84
|
+ if len(self) != len(b):
|
|
85
|
+ return False
|
|
86
|
+ for i in range(len(self)):
|
|
87
|
+ if self[i] != b[i]:
|
|
88
|
+ return False
|
|
89
|
+ return True
|
|
90
|
+
|
83
|
91
|
@classmethod
|
84
|
92
|
def random(cls, sz):
|
85
|
93
|
return cls([RpnSymbol.random() for _ in range(sz)])
|
|
@@ -158,6 +166,11 @@ class RpnSymbol(object):
|
158
|
166
|
self.__class__.__name__)
|
159
|
167
|
return '<%s %s(%s)>' % (name, optype, self.value)
|
160
|
168
|
|
|
169
|
+ def __eq__(self, b):
|
|
170
|
+ if not isinstance(b, RpnSymbol):
|
|
171
|
+ return False
|
|
172
|
+ return b.optype == self.optype and b.value == self.value
|
|
173
|
+
|
161
|
174
|
@classmethod
|
162
|
175
|
def from_string(cls, val):
|
163
|
176
|
try:
|