class Literal: def __init__(self, value): """Initialisiert Literal.""" if isinstance(value, Literal): self.value = value.value else: self.value = value self.read_count = 0 self.compare_count = 0 def reset_counters(self): """Setzt alle Zähler auf 0 zurück.""" self.read_count = 0 self.compare_count = 0 def get(self): """Liest den Wert aus.""" self.read_count += 1 return self.value def __eq__(self, other): """Vergleicht den Wert mit einem anderen Wert.""" if other is None: return False assert isinstance(other, Literal), "Can only compare with Literal or MemoryCell" self.compare_count += 1 self.read_count += 1 other.read_count += 1 return self.value == other.value def __ne__(self, other): """Vergleicht den Wert der Speicherzelle mit einem anderen Wert.""" if other is None: return True assert isinstance(other, Literal), "Can only compare with Literal or MemoryCell" self.compare_count += 1 self.read_count += 1 other.read_count += 1 return self.value != other.value def __lt__(self, other): """Vergleicht den Wert der Speicherzelle mit einem anderen Wert.""" assert isinstance(other, Literal), "Can only compare with Literal or MemoryCell" self.compare_count += 1 self.read_count += 1 other.read_count += 1 return self.value < other.value def __le__(self, other): """Vergleicht den Wert der Speicherzelle mit einem anderen Wert.""" assert isinstance(other, Literal), "Can only compare with Literal or MemoryCell" self.compare_count += 1 self.read_count += 1 other.read_count += 1 return self.value <= other.value def __gt__(self, other): """Vergleicht den Wert der Speicherzelle mit einem anderen Wert.""" assert isinstance(other, Literal), "Can only compare with Literal or MemoryCell" self.compare_count += 1 self.read_count += 1 other.read_count += 1 return self.value > other.value def __ge__(self, other): """Vergleicht den Wert der Speicherzelle mit einem anderen Wert.""" assert isinstance(other, Literal), "Can only compare with Literal or MemoryCell" self.compare_count += 1 self.read_count += 1 other.read_count += 1 return self.value >= other.value def __str__(self): """Repräsentation des Werts.""" return f"{self.value}" def __repr__(self): """Repräsentation des Werts für Debugging-Zwecke.""" return f"Literal(value={self.value}, reads={self.read_count})" def get_read_count(self): """Gibt zurück, wie oft der Wert gelesen wurde.""" return self.read_count def __int__(self): """Gibt den Wert als Integer zurück.""" self.read_count += 1 return int(self.value) def succ(self): return Literal(self.value+1) def pred(self): return Literal(self.value-1) if __name__ == "__main__": l1 = Literal(5) l2 = Literal(3) print(l1 == l2) print(l1 > l2)