class Node(object):
    def __eq__(self, other):
        return (
            self.__class__ == other.__class__ and
            self.__dict__ == other.__dict__
        )

    def __ne__(self, other):
        return not self == other

class BinaryOperation(Node):
    def __init__(self, operand, left, right):
        assert operand in ("+", "-") # for now
        self.operand = operand
        self.left = left
        self.right = right

class Int32(Node):
    def __init__(self, value):
        assert isinstance(value, int)
        assert -2**32 < value <= 2**32-1
        self.value = value

class Node(object):
    def __eq__(self, other):
        return (
            self.__class__ == other.__class__ and
            self.__dict__ == other.__dict__
        )

    def __ne__(self, other):
        return not self == other

--- 
+++ 
@@ -7,3 +7,16 @@
 
     def __ne__(self, other):
         return not self == other
+
+class BinaryOperation(Node):
+    def __init__(self, operand, left, right):
+        assert operand in ("+", "-") # for now
+        self.operand = operand
+        self.left = left
+        self.right = right
+
+class Int32(Node):
+    def __init__(self, value):
+        assert isinstance(value, int)
+        assert -2**32 < value <= 2**32-1
+        self.value = value
Add the basic AST nodes.
