Files
Django_kube/Webcal-python/venv/lib/python3.11/site-packages/tatsu/parsing.py
T

39 lines
1017 B
Python

from __future__ import annotations
import inspect
from .contexts import ( # noqa: F401
ParseContext,
isname,
leftrec,
nomemo,
tatsumasu,
)
from .exceptions import FailedRef
class Parser(ParseContext):
def _find_rule(self, name):
rule = getattr(self, '_' + name + '_', None)
if isinstance(rule, type(self._find_rule)):
return rule
rule = getattr(self, name, None)
if isinstance(rule, type(self._find_rule)):
return rule
self._error(name, exclass=FailedRef)
return None
@classmethod
def rule_list(cls):
methods = inspect.getmembers(cls, predicate=inspect.isroutine)
result = []
for m in methods:
name = m[0]
if len(name) < 3:
continue
if name.startswith('__') or name.endswith('__'):
continue
if name.startswith('_') and name.endswith('_'):
result.append(name[1:-1])
return result