Commit 01435461 authored by Vladimír Štill's avatar Vladimír Štill
Browse files

lib: Allow ordering of elementary types

parent 161a397d
Pipeline #113854 passed with stage
in 1 minute and 22 seconds
from functools import total_ordering
@total_ordering
class Terminal:
def __init__(self, name: str):
self.name = name
def __eq__(self, obj):
def __eq__(self, obj) -> bool:
if isinstance(obj, Terminal):
return obj.name == self.name
return self.name == obj.name
return False
def __lt__(self, obj) -> bool:
if isinstance(obj, Terminal):
return self.name < obj.name
return True
def __hash__(self):
return hash(self.name)
......@@ -16,34 +23,43 @@ class Terminal:
return f"Terminal({self.name})"
@total_ordering
class Nonterminal:
def __init__(self, name: str):
self.name = name
def __eq__(self, obj):
def __eq__(self, obj) -> bool:
if isinstance(obj, Nonterminal):
return obj.name == self.name
return self.name == obj.name
return False
def __lt__(self, obj) -> bool:
if isinstance(obj, Nonterminal):
return self.name < obj.name
return True
def __hash__(self):
return hash(self.name)
def __lt__(self, other) -> bool:
return self.name < other.name
def __repr__(self) -> str:
return f"Nonterminal({self.name})"
@total_ordering
class Character:
def __init__(self, name: str):
self.name = name
def __eq__(self, obj):
def __eq__(self, obj) -> bool:
if isinstance(obj, Character):
return obj.name == self.name
return self.name == obj.name
return False
def __lt__(self, obj) -> bool:
if isinstance(obj, Character):
return self.name < obj.name
return True
def __hash__(self):
return hash(self.name)
......@@ -51,15 +67,21 @@ class Character:
return f"Character({self.name})"
@total_ordering
class State:
def __init__(self, name: str):
self.name = name
def __eq__(self, obj):
def __eq__(self, obj) -> bool:
if isinstance(obj, State):
return obj.name == self.name
return self.name == obj.name
return False
def __lt__(self, obj) -> bool:
if isinstance(obj, State):
return self.name < obj.name
return True
def __hash__(self):
return hash(self.name)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment