@@ -71,7 +71,7 @@ class NoMatch(Exception):
7171 """
7272 def __init__ (
7373 self ,
74- rules : typing .Union ['ParsingExpression' , 'ParserModelDebuggable ' ],
74+ rules : typing .Union ['ParsingExpression' , 'ParserModelDescribable ' ],
7575 position : int ,
7676 parser : 'Parser' ,
7777 ):
@@ -183,7 +183,7 @@ def resolve(
183183 return resolved_node
184184
185185
186- class ParserModelDebuggable (abc .ABC ):
186+ class ParserModelDescribable (abc .ABC ):
187187 """
188188 A basic interface class for all parser model helper classes.
189189
@@ -196,8 +196,16 @@ class ParserModelDebuggable(abc.ABC):
196196 def name (self ):
197197 pass
198198
199+ @property
200+ def desc (self ):
201+ self .name
202+
203+ @property
204+ def id (self ):
205+ return f'{ self .name } : { id (self )} '
206+
199207
200- class ParsingStatement (ParserModelItem ):
208+ class ParsingStatement (ParserModelItem , ParserModelDescribable ):
201209 """
202210 A basic class for all parser model statement classes.
203211
@@ -212,7 +220,7 @@ def parse(self, parser: 'Parser') -> typing.Optional['ParseTreeNode']:
212220 pass
213221
214222
215- class ParsingExpression (ParsingStatement , ParserModelDebuggable ):
223+ class ParsingExpression (ParsingStatement ):
216224 """
217225 An abstract class for all parsing expressions.
218226
@@ -255,6 +263,7 @@ def __init__(self, *elements, **kwargs):
255263 # positions.
256264 self ._result_cache = {} # position -> parse tree at the position
257265
266+ @typing .override
258267 @property
259268 def desc (self ):
260269 return "{}{}" .format (self .name , "-" if self .suppress else "" )
@@ -267,6 +276,7 @@ def name(self):
267276 else :
268277 return self .__class__ .__name__
269278
279+ @typing .override
270280 @property
271281 def id (self ):
272282 if self .root :
@@ -850,6 +860,7 @@ class Match(ParsingExpression):
850860 def __init__ (self , rule_name , root = False , ** kwargs ):
851861 super ().__init__ (rule_name = rule_name , root = root , ** kwargs )
852862
863+ @typing .override
853864 @property
854865 def name (self ):
855866 if self .root :
@@ -1126,8 +1137,9 @@ def parse(self, parser: 'Parser') -> typing.Optional['ParseTreeNode']:
11261137 def __str__ (self ):
11271138 return '@' + self .state_name
11281139
1140+ @typing .override
11291141 @property
1130- def desc (self ):
1142+ def name (self ):
11311143 return "@{}" .format (
11321144 self .state_name ,
11331145 )
@@ -1146,8 +1158,9 @@ def parse(self, parser: 'Parser') -> typing.Optional['ParseTreeNode']:
11461158 def __str__ (self ):
11471159 return '+@' + self .state_name
11481160
1161+ @typing .override
11491162 @property
1150- def desc (self ):
1163+ def name (self ):
11511164 return "+@{}" .format (
11521165 self .state_name ,
11531166 )
@@ -1176,8 +1189,9 @@ def parse(self, parser: 'Parser') -> typing.Optional['ParseTreeNode']:
11761189 def __str__ (self ):
11771190 return '-@' + self .state_name
11781191
1192+ @typing .override
11791193 @property
1180- def desc (self ):
1194+ def name (self ):
11811195 return "-@{}" .format (
11821196 self .state_name ,
11831197 )
@@ -1216,6 +1230,7 @@ class EndOfFile(Match):
12161230 def __init__ (self ):
12171231 super ().__init__ ("EOF" )
12181232
1233+ @typing .override
12191234 @property
12201235 def name (self ):
12211236 return "EOF"
@@ -1268,6 +1283,7 @@ def __init__(self, rule, position, error):
12681283 self .error = error
12691284 self .comments = None
12701285
1286+ @typing .override
12711287 @property
12721288 def name (self ):
12731289 return f"{ self .rule_name } [{ self .position } ]"
@@ -1342,6 +1358,7 @@ def __init__(self, rule, position, value, error=False, suppress=False,
13421358 self .suppress = suppress
13431359 self .extra_info = extra_info
13441360
1361+ @typing .override
13451362 @property
13461363 def desc (self ):
13471364 if self .value :
@@ -1404,6 +1421,7 @@ def value(self):
14041421 """Terminal protocol."""
14051422 return str (self )
14061423
1424+ @typing .override
14071425 @property
14081426 def desc (self ):
14091427 return self .name
0 commit comments