def __repr__(self):
return f"{hex(id(self))}@{self.__class__.__name__}()"
+ def __hash__(self):
+ return id(self)
+
def __eq__(self, other):
if not isinstance(other, self.__class__):
return NotImplemented
return f"{hex(id(self))}@{self.__class__.__name__}({repr(list(self))})"
-class Arguments(Sequence):
- pass
-
-
class Scope(Sequence):
pass
pass
+class Reserve(Literal, choices=("RESERVE", "RESERVE_LENGTH", "RESERVE_ADDR")):
+ pass
+
+
+class Overflow(Literal, choices=("overflow",)):
+ pass
+
+
+class Special(Literal, choices=(
+ "CR", "LR", "CTR", "TAR", "FPSCR", "MSR",
+ "SVSTATE", "SVREMAP", "SRR0", "SRR1",
+ "SVSHAPE0", "SVSHAPE1", "SVSHAPE2", "SVSHAPE3",
+ )):
+ pass
+
+
+class XLEN(Literal, choices=("XLEN",)):
+ pass
+
+
class IntLiteral(Literal):
pass
class Call(Dataclass):
- name: Symbol
+ class Name(Symbol):
+ pass
+
+ class Arguments(Sequence):
+ pass
+
+ name: Name
args: Arguments
pass
-class Assign(Dataclass):
+class AssignExpr(Dataclass):
lvalue: Node
rvalue: Node
-class AssignIEA(Assign):
+class AssignIEAExpr(AssignExpr):
lvalue: Node
rvalue: Node
times: Node
-class Subscript(Dataclass):
+class SubscriptExpr(Dataclass):
index: Node
subject: Node = Node()
-class RangeSubscript(Dataclass):
+class RangeSubscriptExpr(Dataclass):
start: Node
end: Node = Node()
subject: Node = Node()