aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/lark/common.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/lark/common.py')
-rw-r--r--.venv/lib/python3.12/site-packages/lark/common.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/lark/common.py b/.venv/lib/python3.12/site-packages/lark/common.py
new file mode 100644
index 00000000..cb408d91
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/lark/common.py
@@ -0,0 +1,59 @@
+from warnings import warn
+from copy import deepcopy
+
+from .utils import Serialize
+from .lexer import TerminalDef
+
+###{standalone
+
+
+class LexerConf(Serialize):
+ __serialize_fields__ = 'terminals', 'ignore', 'g_regex_flags', 'use_bytes', 'lexer_type'
+ __serialize_namespace__ = TerminalDef,
+
+ def __init__(self, terminals, re_module, ignore=(), postlex=None, callbacks=None, g_regex_flags=0, skip_validation=False, use_bytes=False):
+ self.terminals = terminals
+ self.terminals_by_name = {t.name: t for t in self.terminals}
+ assert len(self.terminals) == len(self.terminals_by_name)
+ self.ignore = ignore
+ self.postlex = postlex
+ self.callbacks = callbacks or {}
+ self.g_regex_flags = g_regex_flags
+ self.re_module = re_module
+ self.skip_validation = skip_validation
+ self.use_bytes = use_bytes
+ self.lexer_type = None
+
+ @property
+ def tokens(self):
+ warn("LexerConf.tokens is deprecated. Use LexerConf.terminals instead", DeprecationWarning)
+ return self.terminals
+
+ def _deserialize(self):
+ self.terminals_by_name = {t.name: t for t in self.terminals}
+
+ def __deepcopy__(self, memo=None):
+ return type(self)(
+ deepcopy(self.terminals, memo),
+ self.re_module,
+ deepcopy(self.ignore, memo),
+ deepcopy(self.postlex, memo),
+ deepcopy(self.callbacks, memo),
+ deepcopy(self.g_regex_flags, memo),
+ deepcopy(self.skip_validation, memo),
+ deepcopy(self.use_bytes, memo),
+ )
+
+
+class ParserConf(Serialize):
+ __serialize_fields__ = 'rules', 'start', 'parser_type'
+
+ def __init__(self, rules, callbacks, start):
+ assert isinstance(start, list)
+ self.rules = rules
+ self.callbacks = callbacks
+ self.start = start
+
+ self.parser_type = None
+
+###}