jaclang 0.5.7__py3-none-any.whl → 0.5.9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of jaclang might be problematic. Click here for more details.

Files changed (49) hide show
  1. jaclang/cli/cli.py +113 -7
  2. jaclang/cli/cmdreg.py +12 -0
  3. jaclang/compiler/__init__.py +58 -2
  4. jaclang/compiler/absyntree.py +1775 -61
  5. jaclang/compiler/codeloc.py +7 -0
  6. jaclang/compiler/compile.py +1 -1
  7. jaclang/compiler/constant.py +17 -0
  8. jaclang/compiler/parser.py +134 -112
  9. jaclang/compiler/passes/ir_pass.py +18 -0
  10. jaclang/compiler/passes/main/__init__.py +2 -0
  11. jaclang/compiler/passes/main/def_impl_match_pass.py +19 -3
  12. jaclang/compiler/passes/main/def_use_pass.py +1 -1
  13. jaclang/compiler/passes/main/fuse_typeinfo_pass.py +357 -0
  14. jaclang/compiler/passes/main/import_pass.py +7 -3
  15. jaclang/compiler/passes/main/pyast_gen_pass.py +350 -109
  16. jaclang/compiler/passes/main/pyast_load_pass.py +1779 -206
  17. jaclang/compiler/passes/main/registry_pass.py +126 -0
  18. jaclang/compiler/passes/main/schedules.py +4 -1
  19. jaclang/compiler/passes/main/sym_tab_build_pass.py +20 -28
  20. jaclang/compiler/passes/main/tests/test_pyast_build_pass.py +14 -5
  21. jaclang/compiler/passes/main/tests/test_registry_pass.py +39 -0
  22. jaclang/compiler/passes/main/tests/test_sym_tab_build_pass.py +8 -8
  23. jaclang/compiler/passes/main/tests/test_typeinfo_pass.py +7 -0
  24. jaclang/compiler/passes/main/type_check_pass.py +0 -1
  25. jaclang/compiler/passes/tool/jac_formatter_pass.py +8 -17
  26. jaclang/compiler/passes/tool/tests/test_unparse_validate.py +65 -0
  27. jaclang/compiler/passes/utils/mypy_ast_build.py +28 -14
  28. jaclang/compiler/symtable.py +23 -2
  29. jaclang/compiler/tests/test_parser.py +53 -0
  30. jaclang/compiler/workspace.py +52 -26
  31. jaclang/core/aott.py +193 -28
  32. jaclang/core/construct.py +59 -2
  33. jaclang/core/registry.py +115 -0
  34. jaclang/core/utils.py +25 -0
  35. jaclang/plugin/default.py +108 -26
  36. jaclang/plugin/feature.py +22 -4
  37. jaclang/plugin/spec.py +13 -7
  38. jaclang/utils/helpers.py +66 -3
  39. jaclang/utils/lang_tools.py +6 -38
  40. jaclang/utils/test.py +1 -0
  41. jaclang/utils/tests/test_lang_tools.py +11 -14
  42. jaclang/utils/treeprinter.py +10 -2
  43. {jaclang-0.5.7.dist-info → jaclang-0.5.9.dist-info}/METADATA +1 -1
  44. {jaclang-0.5.7.dist-info → jaclang-0.5.9.dist-info}/RECORD +47 -43
  45. {jaclang-0.5.7.dist-info → jaclang-0.5.9.dist-info}/WHEEL +1 -1
  46. jaclang/compiler/__jac_gen__/__init__.py +0 -0
  47. jaclang/compiler/__jac_gen__/jac_parser.py +0 -4069
  48. {jaclang-0.5.7.dist-info → jaclang-0.5.9.dist-info}/entry_points.txt +0 -0
  49. {jaclang-0.5.7.dist-info → jaclang-0.5.9.dist-info}/top_level.txt +0 -0
@@ -1,4069 +0,0 @@
1
- # The file was automatically generated by Lark v1.1.9
2
- __version__ = "1.1.9"
3
-
4
- #
5
- #
6
- # Lark Stand-alone Generator Tool
7
- # ----------------------------------
8
- # Generates a stand-alone LALR(1) parser
9
- #
10
- # Git: https://github.com/erezsh/lark
11
- # Author: Erez Shinan (erezshin@gmail.com)
12
- #
13
- #
14
- # >>> LICENSE
15
- #
16
- # This tool and its generated code use a separate license from Lark,
17
- # and are subject to the terms of the Mozilla Public License, v. 2.0.
18
- # If a copy of the MPL was not distributed with this
19
- # file, You can obtain one at https://mozilla.org/MPL/2.0/.
20
- #
21
- # If you wish to purchase a commercial license for this tool and its
22
- # generated code, you may contact me via email or otherwise.
23
- #
24
- # If MPL2 is incompatible with your free or open-source project,
25
- # contact me and we'll work it out.
26
- #
27
- #
28
-
29
- from copy import deepcopy
30
- from abc import ABC, abstractmethod
31
- from types import ModuleType
32
- from typing import (
33
- TypeVar,
34
- Generic,
35
- Type,
36
- Tuple,
37
- List,
38
- Dict,
39
- Iterator,
40
- Collection,
41
- Callable,
42
- Optional,
43
- FrozenSet,
44
- Any,
45
- Union,
46
- Iterable,
47
- IO,
48
- TYPE_CHECKING,
49
- overload,
50
- Sequence,
51
- Pattern as REPattern,
52
- ClassVar,
53
- Set,
54
- Mapping,
55
- )
56
-
57
-
58
-
59
-
60
- class LarkError(Exception):
61
- pass
62
-
63
-
64
- class ConfigurationError(LarkError, ValueError):
65
- pass
66
-
67
-
68
- def assert_config(value, options: Collection, msg="Got %r, expected one of %s"):
69
- if value not in options:
70
- raise ConfigurationError(msg % (value, options))
71
-
72
-
73
- class GrammarError(LarkError):
74
- pass
75
-
76
-
77
- class ParseError(LarkError):
78
- pass
79
-
80
-
81
- class LexError(LarkError):
82
- pass
83
-
84
-
85
- T = TypeVar("T")
86
-
87
-
88
- class UnexpectedInput(LarkError):
89
- #--
90
-
91
- line: int
92
- column: int
93
- pos_in_stream = None
94
- state: Any
95
- _terminals_by_name = None
96
- interactive_parser: "InteractiveParser"
97
-
98
- def get_context(self, text: str, span: int = 40) -> str:
99
- #--
100
- assert self.pos_in_stream is not None, self
101
- pos = self.pos_in_stream
102
- start = max(pos - span, 0)
103
- end = pos + span
104
- if not isinstance(text, bytes):
105
- before = text[start:pos].rsplit("\n", 1)[-1]
106
- after = text[pos:end].split("\n", 1)[0]
107
- return before + after + "\n" + " " * len(before.expandtabs()) + "^\n"
108
- else:
109
- before = text[start:pos].rsplit(b"\n", 1)[-1]
110
- after = text[pos:end].split(b"\n", 1)[0]
111
- return (
112
- before + after + b"\n" + b" " * len(before.expandtabs()) + b"^\n"
113
- ).decode("ascii", "backslashreplace")
114
-
115
- def match_examples(
116
- self,
117
- parse_fn: "Callable[[str], Tree]",
118
- examples: Union[Mapping[T, Iterable[str]], Iterable[Tuple[T, Iterable[str]]]],
119
- token_type_match_fallback: bool = False,
120
- use_accepts: bool = True,
121
- ) -> Optional[T]:
122
- #--
123
- assert self.state is not None, "Not supported for this exception"
124
-
125
- if isinstance(examples, Mapping):
126
- examples = examples.items()
127
-
128
- candidate = (None, False)
129
- for i, (label, example) in enumerate(examples):
130
- assert not isinstance(example, str), "Expecting a list"
131
-
132
- for j, malformed in enumerate(example):
133
- try:
134
- parse_fn(malformed)
135
- except UnexpectedInput as ut:
136
- if ut.state == self.state:
137
- if (
138
- use_accepts
139
- and isinstance(self, UnexpectedToken)
140
- and isinstance(ut, UnexpectedToken)
141
- and ut.accepts != self.accepts
142
- ):
143
- logger.debug(
144
- "Different accepts with same state[%d]: %s != %s at example [%s][%s]"
145
- % (self.state, self.accepts, ut.accepts, i, j)
146
- )
147
- continue
148
- if isinstance(
149
- self, (UnexpectedToken, UnexpectedEOF)
150
- ) and isinstance(ut, (UnexpectedToken, UnexpectedEOF)):
151
- if ut.token == self.token: ##
152
-
153
- logger.debug("Exact Match at example [%s][%s]" % (i, j))
154
- return label
155
-
156
- if token_type_match_fallback:
157
- ##
158
-
159
- if (ut.token.type == self.token.type) and not candidate[
160
- -1
161
- ]:
162
- logger.debug(
163
- "Token Type Fallback at example [%s][%s]"
164
- % (i, j)
165
- )
166
- candidate = label, True
167
-
168
- if candidate[0] is None:
169
- logger.debug(
170
- "Same State match at example [%s][%s]" % (i, j)
171
- )
172
- candidate = label, False
173
-
174
- return candidate[0]
175
-
176
- def _format_expected(self, expected):
177
- if self._terminals_by_name:
178
- d = self._terminals_by_name
179
- expected = [
180
- d[t_name].user_repr() if t_name in d else t_name for t_name in expected
181
- ]
182
- return "Expected one of: \n\t* %s\n" % "\n\t* ".join(expected)
183
-
184
-
185
- class UnexpectedEOF(ParseError, UnexpectedInput):
186
- #--
187
-
188
- expected: "List[Token]"
189
-
190
- def __init__(self, expected, state=None, terminals_by_name=None):
191
- super(UnexpectedEOF, self).__init__()
192
-
193
- self.expected = expected
194
- self.state = state
195
- from .lexer import Token
196
-
197
- self.token = Token("<EOF>", "") ##
198
-
199
- self.pos_in_stream = -1
200
- self.line = -1
201
- self.column = -1
202
- self._terminals_by_name = terminals_by_name
203
-
204
- def __str__(self):
205
- message = "Unexpected end-of-input. "
206
- message += self._format_expected(self.expected)
207
- return message
208
-
209
-
210
- class UnexpectedCharacters(LexError, UnexpectedInput):
211
- #--
212
-
213
- allowed: Set[str]
214
- considered_tokens: Set[Any]
215
-
216
- def __init__(
217
- self,
218
- seq,
219
- lex_pos,
220
- line,
221
- column,
222
- allowed=None,
223
- considered_tokens=None,
224
- state=None,
225
- token_history=None,
226
- terminals_by_name=None,
227
- considered_rules=None,
228
- ):
229
- super(UnexpectedCharacters, self).__init__()
230
-
231
- ##
232
-
233
- self.line = line
234
- self.column = column
235
- self.pos_in_stream = lex_pos
236
- self.state = state
237
- self._terminals_by_name = terminals_by_name
238
-
239
- self.allowed = allowed
240
- self.considered_tokens = considered_tokens
241
- self.considered_rules = considered_rules
242
- self.token_history = token_history
243
-
244
- if isinstance(seq, bytes):
245
- self.char = seq[lex_pos : lex_pos + 1].decode("ascii", "backslashreplace")
246
- else:
247
- self.char = seq[lex_pos]
248
- self._context = self.get_context(seq)
249
-
250
- def __str__(self):
251
- message = (
252
- "No terminal matches '%s' in the current parser context, at line %d col %d"
253
- % (self.char, self.line, self.column)
254
- )
255
- message += "\n\n" + self._context
256
- if self.allowed:
257
- message += self._format_expected(self.allowed)
258
- if self.token_history:
259
- message += "\nPrevious tokens: %s\n" % ", ".join(
260
- repr(t) for t in self.token_history
261
- )
262
- return message
263
-
264
-
265
- class UnexpectedToken(ParseError, UnexpectedInput):
266
- #--
267
-
268
- expected: Set[str]
269
- considered_rules: Set[str]
270
-
271
- def __init__(
272
- self,
273
- token,
274
- expected,
275
- considered_rules=None,
276
- state=None,
277
- interactive_parser=None,
278
- terminals_by_name=None,
279
- token_history=None,
280
- ):
281
- super(UnexpectedToken, self).__init__()
282
-
283
- ##
284
-
285
- self.line = getattr(token, "line", "?")
286
- self.column = getattr(token, "column", "?")
287
- self.pos_in_stream = getattr(token, "start_pos", None)
288
- self.state = state
289
-
290
- self.token = token
291
- self.expected = expected ##
292
-
293
- self._accepts = NO_VALUE
294
- self.considered_rules = considered_rules
295
- self.interactive_parser = interactive_parser
296
- self._terminals_by_name = terminals_by_name
297
- self.token_history = token_history
298
-
299
- @property
300
- def accepts(self) -> Set[str]:
301
- if self._accepts is NO_VALUE:
302
- self._accepts = (
303
- self.interactive_parser and self.interactive_parser.accepts()
304
- )
305
- return self._accepts
306
-
307
- def __str__(self):
308
- message = "Unexpected token %r at line %s, column %s.\n%s" % (
309
- self.token,
310
- self.line,
311
- self.column,
312
- self._format_expected(self.accepts or self.expected),
313
- )
314
- if self.token_history:
315
- message += "Previous tokens: %r\n" % self.token_history
316
-
317
- return message
318
-
319
-
320
- class VisitError(LarkError):
321
- #--
322
-
323
- obj: "Union[Tree, Token]"
324
- orig_exc: Exception
325
-
326
- def __init__(self, rule, obj, orig_exc):
327
- message = 'Error trying to process rule "%s":\n\n%s' % (rule, orig_exc)
328
- super(VisitError, self).__init__(message)
329
-
330
- self.rule = rule
331
- self.obj = obj
332
- self.orig_exc = orig_exc
333
-
334
-
335
- class MissingVariableError(LarkError):
336
- pass
337
-
338
-
339
-
340
- import sys, re
341
- import logging
342
-
343
- logger: logging.Logger = logging.getLogger("lark")
344
- logger.addHandler(logging.StreamHandler())
345
- ##
346
-
347
- ##
348
-
349
- logger.setLevel(logging.CRITICAL)
350
-
351
-
352
- NO_VALUE = object()
353
-
354
- T = TypeVar("T")
355
-
356
-
357
- def classify(
358
- seq: Iterable, key: Optional[Callable] = None, value: Optional[Callable] = None
359
- ) -> Dict:
360
- d: Dict[Any, Any] = {}
361
- for item in seq:
362
- k = key(item) if (key is not None) else item
363
- v = value(item) if (value is not None) else item
364
- try:
365
- d[k].append(v)
366
- except KeyError:
367
- d[k] = [v]
368
- return d
369
-
370
-
371
- def _deserialize(data: Any, namespace: Dict[str, Any], memo: Dict) -> Any:
372
- if isinstance(data, dict):
373
- if "__type__" in data: ##
374
-
375
- class_ = namespace[data["__type__"]]
376
- return class_.deserialize(data, memo)
377
- elif "@" in data:
378
- return memo[data["@"]]
379
- return {
380
- key: _deserialize(value, namespace, memo) for key, value in data.items()
381
- }
382
- elif isinstance(data, list):
383
- return [_deserialize(value, namespace, memo) for value in data]
384
- return data
385
-
386
-
387
- _T = TypeVar("_T", bound="Serialize")
388
-
389
-
390
- class Serialize:
391
- #--
392
-
393
- def memo_serialize(self, types_to_memoize: List) -> Any:
394
- memo = SerializeMemoizer(types_to_memoize)
395
- return self.serialize(memo), memo.serialize()
396
-
397
- def serialize(self, memo=None) -> Dict[str, Any]:
398
- if memo and memo.in_types(self):
399
- return {"@": memo.memoized.get(self)}
400
-
401
- fields = getattr(self, "__serialize_fields__")
402
- res = {f: _serialize(getattr(self, f), memo) for f in fields}
403
- res["__type__"] = type(self).__name__
404
- if hasattr(self, "_serialize"):
405
- self._serialize(res, memo) ##
406
-
407
- return res
408
-
409
- @classmethod
410
- def deserialize(cls: Type[_T], data: Dict[str, Any], memo: Dict[int, Any]) -> _T:
411
- namespace = getattr(cls, "__serialize_namespace__", [])
412
- namespace = {c.__name__: c for c in namespace}
413
-
414
- fields = getattr(cls, "__serialize_fields__")
415
-
416
- if "@" in data:
417
- return memo[data["@"]]
418
-
419
- inst = cls.__new__(cls)
420
- for f in fields:
421
- try:
422
- setattr(inst, f, _deserialize(data[f], namespace, memo))
423
- except KeyError as e:
424
- raise KeyError("Cannot find key for class", cls, e)
425
-
426
- if hasattr(inst, "_deserialize"):
427
- inst._deserialize() ##
428
-
429
-
430
- return inst
431
-
432
-
433
- class SerializeMemoizer(Serialize):
434
- #--
435
-
436
- __serialize_fields__ = ("memoized",)
437
-
438
- def __init__(self, types_to_memoize: List) -> None:
439
- self.types_to_memoize = tuple(types_to_memoize)
440
- self.memoized = Enumerator()
441
-
442
- def in_types(self, value: Serialize) -> bool:
443
- return isinstance(value, self.types_to_memoize)
444
-
445
- def serialize(self) -> Dict[int, Any]: ##
446
-
447
- return _serialize(self.memoized.reversed(), None)
448
-
449
- @classmethod
450
- def deserialize(cls, data: Dict[int, Any], namespace: Dict[str, Any], memo: Dict[Any, Any]) -> Dict[int, Any]: ##
451
-
452
- return _deserialize(data, namespace, memo)
453
-
454
-
455
- try:
456
- import regex
457
-
458
- _has_regex = True
459
- except ImportError:
460
- _has_regex = False
461
-
462
- if sys.version_info >= (3, 11):
463
- import re._parser as sre_parse
464
- import re._constants as sre_constants
465
- else:
466
- import sre_parse
467
- import sre_constants
468
-
469
- categ_pattern = re.compile(r"\\p{[A-Za-z_]+}")
470
-
471
-
472
- def get_regexp_width(expr: str) -> Union[Tuple[int, int], List[int]]:
473
- if _has_regex:
474
- ##
475
-
476
- ##
477
-
478
- ##
479
-
480
- regexp_final = re.sub(categ_pattern, "A", expr)
481
- else:
482
- if re.search(categ_pattern, expr):
483
- raise ImportError(
484
- "`regex` module must be installed in order to use Unicode categories.",
485
- expr,
486
- )
487
- regexp_final = expr
488
- try:
489
- ##
490
-
491
- return [int(x) for x in sre_parse.parse(regexp_final).getwidth()] ##
492
-
493
- except sre_constants.error:
494
- if not _has_regex:
495
- raise ValueError(expr)
496
- else:
497
- ##
498
-
499
- ##
500
-
501
- c = regex.compile(regexp_final)
502
- ##
503
-
504
- ##
505
-
506
- MAXWIDTH = getattr(sre_parse, "MAXWIDTH", sre_constants.MAXREPEAT)
507
- if c.match("") is None:
508
- ##
509
-
510
- return 1, int(MAXWIDTH)
511
- else:
512
- return 0, int(MAXWIDTH)
513
-
514
-
515
-
516
- from collections import OrderedDict
517
-
518
-
519
- class Meta:
520
-
521
- empty: bool
522
- line: int
523
- column: int
524
- start_pos: int
525
- end_line: int
526
- end_column: int
527
- end_pos: int
528
- orig_expansion: "List[TerminalDef]"
529
- match_tree: bool
530
-
531
- def __init__(self):
532
- self.empty = True
533
-
534
-
535
- _Leaf_T = TypeVar("_Leaf_T")
536
- Branch = Union[_Leaf_T, "Tree[_Leaf_T]"]
537
-
538
-
539
- class Tree(Generic[_Leaf_T]):
540
- #--
541
-
542
- data: str
543
- children: "List[Branch[_Leaf_T]]"
544
-
545
- def __init__(
546
- self, data: str, children: "List[Branch[_Leaf_T]]", meta: Optional[Meta] = None
547
- ) -> None:
548
- self.data = data
549
- self.children = children
550
- self._meta = meta
551
-
552
- @property
553
- def meta(self) -> Meta:
554
- if self._meta is None:
555
- self._meta = Meta()
556
- return self._meta
557
-
558
- def __repr__(self):
559
- return "Tree(%r, %r)" % (self.data, self.children)
560
-
561
- def _pretty_label(self):
562
- return self.data
563
-
564
- def _pretty(self, level, indent_str):
565
- yield f"{indent_str*level}{self._pretty_label()}"
566
- if len(self.children) == 1 and not isinstance(self.children[0], Tree):
567
- yield f"\t{self.children[0]}\n"
568
- else:
569
- yield "\n"
570
- for n in self.children:
571
- if isinstance(n, Tree):
572
- yield from n._pretty(level + 1, indent_str)
573
- else:
574
- yield f"{indent_str*(level+1)}{n}\n"
575
-
576
- def pretty(self, indent_str: str = " ") -> str:
577
- #--
578
- return "".join(self._pretty(0, indent_str))
579
-
580
- def __rich__(self, parent: Optional["rich.tree.Tree"] = None) -> "rich.tree.Tree":
581
- #--
582
- return self._rich(parent)
583
-
584
- def _rich(self, parent):
585
- if parent:
586
- tree = parent.add(f"[bold]{self.data}[/bold]")
587
- else:
588
- import rich.tree
589
-
590
- tree = rich.tree.Tree(self.data)
591
-
592
- for c in self.children:
593
- if isinstance(c, Tree):
594
- c._rich(tree)
595
- else:
596
- tree.add(f"[green]{c}[/green]")
597
-
598
- return tree
599
-
600
- def __eq__(self, other):
601
- try:
602
- return self.data == other.data and self.children == other.children
603
- except AttributeError:
604
- return False
605
-
606
- def __ne__(self, other):
607
- return not (self == other)
608
-
609
- def __hash__(self) -> int:
610
- return hash((self.data, tuple(self.children)))
611
-
612
- def iter_subtrees(self) -> "Iterator[Tree[_Leaf_T]]":
613
- #--
614
- queue = [self]
615
- subtrees = OrderedDict()
616
- for subtree in queue:
617
- subtrees[id(subtree)] = subtree
618
- ##
619
-
620
- queue += [
621
- c
622
- for c in reversed(subtree.children) ##
623
-
624
- if isinstance(c, Tree) and id(c) not in subtrees
625
- ]
626
-
627
- del queue
628
- return reversed(list(subtrees.values()))
629
-
630
- def iter_subtrees_topdown(self):
631
- #--
632
- stack = [self]
633
- stack_append = stack.append
634
- stack_pop = stack.pop
635
- while stack:
636
- node = stack_pop()
637
- if not isinstance(node, Tree):
638
- continue
639
- yield node
640
- for child in reversed(node.children):
641
- stack_append(child)
642
-
643
- def find_pred(
644
- self, pred: "Callable[[Tree[_Leaf_T]], bool]"
645
- ) -> "Iterator[Tree[_Leaf_T]]":
646
- #--
647
- return filter(pred, self.iter_subtrees())
648
-
649
- def find_data(self, data: str) -> "Iterator[Tree[_Leaf_T]]":
650
- #--
651
- return self.find_pred(lambda t: t.data == data)
652
-
653
-
654
- from functools import wraps, update_wrapper
655
- from inspect import getmembers, getmro
656
-
657
- _Return_T = TypeVar("_Return_T")
658
- _Return_V = TypeVar("_Return_V")
659
- _Leaf_T = TypeVar("_Leaf_T")
660
- _Leaf_U = TypeVar("_Leaf_U")
661
- _R = TypeVar("_R")
662
- _FUNC = Callable[..., _Return_T]
663
- _DECORATED = Union[_FUNC, type]
664
-
665
-
666
- class _DiscardType:
667
- #--
668
-
669
- def __repr__(self):
670
- return "lark.visitors.Discard"
671
-
672
-
673
- Discard = _DiscardType()
674
-
675
- ##
676
-
677
-
678
-
679
- class _Decoratable:
680
- #--
681
-
682
- @classmethod
683
- def _apply_v_args(cls, visit_wrapper):
684
- mro = getmro(cls)
685
- assert mro[0] is cls
686
- libmembers = {name for _cls in mro[1:] for name, _ in getmembers(_cls)}
687
- for name, value in getmembers(cls):
688
-
689
- ##
690
-
691
- if name.startswith("_") or (
692
- name in libmembers and name not in cls.__dict__
693
- ):
694
- continue
695
- if not callable(value):
696
- continue
697
-
698
- ##
699
-
700
- if isinstance(cls.__dict__[name], _VArgsWrapper):
701
- continue
702
-
703
- setattr(cls, name, _VArgsWrapper(cls.__dict__[name], visit_wrapper))
704
- return cls
705
-
706
- def __class_getitem__(cls, _):
707
- return cls
708
-
709
-
710
- class Transformer(_Decoratable, ABC, Generic[_Leaf_T, _Return_T]):
711
- #--
712
-
713
- __visit_tokens__ = True ##
714
-
715
-
716
- def __init__(self, visit_tokens: bool = True) -> None:
717
- self.__visit_tokens__ = visit_tokens
718
-
719
- def _call_userfunc(self, tree, new_children=None):
720
- ##
721
-
722
- children = new_children if new_children is not None else tree.children
723
- try:
724
- f = getattr(self, tree.data)
725
- except AttributeError:
726
- return self.__default__(tree.data, children, tree.meta)
727
- else:
728
- try:
729
- wrapper = getattr(f, "visit_wrapper", None)
730
- if wrapper is not None:
731
- return f.visit_wrapper(f, tree.data, children, tree.meta)
732
- else:
733
- return f(children)
734
- except GrammarError:
735
- raise
736
- except Exception as e:
737
- raise VisitError(tree.data, tree, e)
738
-
739
- def _call_userfunc_token(self, token):
740
- try:
741
- f = getattr(self, token.type)
742
- except AttributeError:
743
- return self.__default_token__(token)
744
- else:
745
- try:
746
- return f(token)
747
- except GrammarError:
748
- raise
749
- except Exception as e:
750
- raise VisitError(token.type, token, e)
751
-
752
- def _transform_children(self, children):
753
- for c in children:
754
- if isinstance(c, Tree):
755
- res = self._transform_tree(c)
756
- elif self.__visit_tokens__ and isinstance(c, Token):
757
- res = self._call_userfunc_token(c)
758
- else:
759
- res = c
760
-
761
- if res is not Discard:
762
- yield res
763
-
764
- def _transform_tree(self, tree):
765
- children = list(self._transform_children(tree.children))
766
- return self._call_userfunc(tree, children)
767
-
768
- def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
769
- #--
770
- return self._transform_tree(tree)
771
-
772
- def __mul__(
773
- self: "Transformer[_Leaf_T, Tree[_Leaf_U]]",
774
- other: "Union[Transformer[_Leaf_U, _Return_V], TransformerChain[_Leaf_U, _Return_V,]]",
775
- ) -> "TransformerChain[_Leaf_T, _Return_V]":
776
- #--
777
- return TransformerChain(self, other)
778
-
779
- def __default__(self, data, children, meta):
780
- #--
781
- return Tree(data, children, meta)
782
-
783
- def __default_token__(self, token):
784
- #--
785
- return token
786
-
787
-
788
- def merge_transformers(base_transformer=None, **transformers_to_merge):
789
- #--
790
- if base_transformer is None:
791
- base_transformer = Transformer()
792
- for prefix, transformer in transformers_to_merge.items():
793
- for method_name in dir(transformer):
794
- method = getattr(transformer, method_name)
795
- if not callable(method):
796
- continue
797
- if method_name.startswith("_") or method_name == "transform":
798
- continue
799
- prefixed_method = prefix + "__" + method_name
800
- if hasattr(base_transformer, prefixed_method):
801
- raise AttributeError(
802
- "Cannot merge: method '%s' appears more than once" % prefixed_method
803
- )
804
-
805
- setattr(base_transformer, prefixed_method, method)
806
-
807
- return base_transformer
808
-
809
-
810
- class InlineTransformer(Transformer): ##
811
-
812
- def _call_userfunc(self, tree, new_children=None):
813
- ##
814
-
815
- children = new_children if new_children is not None else tree.children
816
- try:
817
- f = getattr(self, tree.data)
818
- except AttributeError:
819
- return self.__default__(tree.data, children, tree.meta)
820
- else:
821
- return f(*children)
822
-
823
-
824
- class TransformerChain(Generic[_Leaf_T, _Return_T]):
825
-
826
- transformers: "Tuple[Union[Transformer, TransformerChain], ...]"
827
-
828
- def __init__(self, *transformers: "Union[Transformer, TransformerChain]") -> None:
829
- self.transformers = transformers
830
-
831
- def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
832
- for t in self.transformers:
833
- tree = t.transform(tree)
834
- return cast(_Return_T, tree)
835
-
836
- def __mul__(
837
- self: "TransformerChain[_Leaf_T, Tree[_Leaf_U]]",
838
- other: "Union[Transformer[_Leaf_U, _Return_V], TransformerChain[_Leaf_U, _Return_V]]",
839
- ) -> "TransformerChain[_Leaf_T, _Return_V]":
840
- return TransformerChain(*self.transformers + (other,))
841
-
842
-
843
- class Transformer_InPlace(Transformer[_Leaf_T, _Return_T]):
844
- #--
845
-
846
- def _transform_tree(self, tree): ##
847
-
848
- return self._call_userfunc(tree)
849
-
850
- def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
851
- for subtree in tree.iter_subtrees():
852
- subtree.children = list(self._transform_children(subtree.children))
853
-
854
- return self._transform_tree(tree)
855
-
856
-
857
- class Transformer_NonRecursive(Transformer[_Leaf_T, _Return_T]):
858
- #--
859
-
860
- def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
861
- ##
862
-
863
- rev_postfix = []
864
- q: List[Branch[_Leaf_T]] = [tree]
865
- while q:
866
- t = q.pop()
867
- rev_postfix.append(t)
868
- if isinstance(t, Tree):
869
- q += t.children
870
-
871
- ##
872
-
873
- stack: List = []
874
- for x in reversed(rev_postfix):
875
- if isinstance(x, Tree):
876
- size = len(x.children)
877
- if size:
878
- args = stack[-size:]
879
- del stack[-size:]
880
- else:
881
- args = []
882
-
883
- res = self._call_userfunc(x, args)
884
- if res is not Discard:
885
- stack.append(res)
886
-
887
- elif self.__visit_tokens__ and isinstance(x, Token):
888
- res = self._call_userfunc_token(x)
889
- if res is not Discard:
890
- stack.append(res)
891
- else:
892
- stack.append(x)
893
-
894
- (result,) = stack ##
895
-
896
- ##
897
-
898
- ##
899
-
900
- ##
901
-
902
- return cast(_Return_T, result)
903
-
904
-
905
- class Transformer_InPlaceRecursive(Transformer):
906
- #--
907
-
908
- def _transform_tree(self, tree):
909
- tree.children = list(self._transform_children(tree.children))
910
- return self._call_userfunc(tree)
911
-
912
-
913
- ##
914
-
915
-
916
-
917
- class VisitorBase:
918
- def _call_userfunc(self, tree):
919
- return getattr(self, tree.data, self.__default__)(tree)
920
-
921
- def __default__(self, tree):
922
- #--
923
- return tree
924
-
925
- def __class_getitem__(cls, _):
926
- return cls
927
-
928
-
929
- class Visitor(VisitorBase, ABC, Generic[_Leaf_T]):
930
- #--
931
-
932
- def visit(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
933
- #--
934
- for subtree in tree.iter_subtrees():
935
- self._call_userfunc(subtree)
936
- return tree
937
-
938
- def visit_topdown(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
939
- #--
940
- for subtree in tree.iter_subtrees_topdown():
941
- self._call_userfunc(subtree)
942
- return tree
943
-
944
-
945
- class Visitor_Recursive(VisitorBase, Generic[_Leaf_T]):
946
- #--
947
-
948
- def visit(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
949
- #--
950
- for child in tree.children:
951
- if isinstance(child, Tree):
952
- self.visit(child)
953
-
954
- self._call_userfunc(tree)
955
- return tree
956
-
957
- def visit_topdown(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
958
- #--
959
- self._call_userfunc(tree)
960
-
961
- for child in tree.children:
962
- if isinstance(child, Tree):
963
- self.visit_topdown(child)
964
-
965
- return tree
966
-
967
-
968
- class Interpreter(_Decoratable, ABC, Generic[_Leaf_T, _Return_T]):
969
- #--
970
-
971
- def visit(self, tree: Tree[_Leaf_T]) -> _Return_T:
972
- ##
973
-
974
- ##
975
-
976
- ##
977
-
978
- return self._visit_tree(tree)
979
-
980
- def _visit_tree(self, tree: Tree[_Leaf_T]):
981
- f = getattr(self, tree.data)
982
- wrapper = getattr(f, "visit_wrapper", None)
983
- if wrapper is not None:
984
- return f.visit_wrapper(f, tree.data, tree.children, tree.meta)
985
- else:
986
- return f(tree)
987
-
988
- def visit_children(self, tree: Tree[_Leaf_T]) -> List:
989
- return [
990
- self._visit_tree(child) if isinstance(child, Tree) else child
991
- for child in tree.children
992
- ]
993
-
994
- def __getattr__(self, name):
995
- return self.__default__
996
-
997
- def __default__(self, tree):
998
- return self.visit_children(tree)
999
-
1000
-
1001
- _InterMethod = Callable[[Type[Interpreter], _Return_T], _R]
1002
-
1003
-
1004
- def visit_children_decor(func: _InterMethod) -> _InterMethod:
1005
- #--
1006
-
1007
- @wraps(func)
1008
- def inner(cls, tree):
1009
- values = cls.visit_children(tree)
1010
- return func(cls, values)
1011
-
1012
- return inner
1013
-
1014
-
1015
- ##
1016
-
1017
-
1018
-
1019
- def _apply_v_args(obj, visit_wrapper):
1020
- try:
1021
- _apply = obj._apply_v_args
1022
- except AttributeError:
1023
- return _VArgsWrapper(obj, visit_wrapper)
1024
- else:
1025
- return _apply(visit_wrapper)
1026
-
1027
-
1028
- class _VArgsWrapper:
1029
- #--
1030
-
1031
- base_func: Callable
1032
-
1033
- def __init__(
1034
- self, func: Callable, visit_wrapper: Callable[[Callable, str, list, Any], Any]
1035
- ):
1036
- if isinstance(func, _VArgsWrapper):
1037
- func = func.base_func
1038
- ##
1039
-
1040
- self.base_func = func ##
1041
-
1042
- self.visit_wrapper = visit_wrapper
1043
- update_wrapper(self, func)
1044
-
1045
- def __call__(self, *args, **kwargs):
1046
- return self.base_func(*args, **kwargs)
1047
-
1048
- def __get__(self, instance, owner=None):
1049
- try:
1050
- ##
1051
-
1052
- ##
1053
-
1054
- g = type(self.base_func).__get__
1055
- except AttributeError:
1056
- return self
1057
- else:
1058
- return _VArgsWrapper(g(self.base_func, instance, owner), self.visit_wrapper)
1059
-
1060
- def __set_name__(self, owner, name):
1061
- try:
1062
- f = type(self.base_func).__set_name__
1063
- except AttributeError:
1064
- return
1065
- else:
1066
- f(self.base_func, owner, name)
1067
-
1068
-
1069
- def _vargs_inline(f, _data, children, _meta):
1070
- return f(*children)
1071
-
1072
-
1073
- def _vargs_meta_inline(f, _data, children, meta):
1074
- return f(meta, *children)
1075
-
1076
-
1077
- def _vargs_meta(f, _data, children, meta):
1078
- return f(meta, children)
1079
-
1080
-
1081
- def _vargs_tree(f, data, children, meta):
1082
- return f(Tree(data, children, meta))
1083
-
1084
-
1085
- def v_args(
1086
- inline: bool = False,
1087
- meta: bool = False,
1088
- tree: bool = False,
1089
- wrapper: Optional[Callable] = None,
1090
- ) -> Callable[[_DECORATED], _DECORATED]:
1091
- #--
1092
- if tree and (meta or inline):
1093
- raise ValueError(
1094
- "Visitor functions cannot combine 'tree' with 'meta' or 'inline'."
1095
- )
1096
-
1097
- func = None
1098
- if meta:
1099
- if inline:
1100
- func = _vargs_meta_inline
1101
- else:
1102
- func = _vargs_meta
1103
- elif inline:
1104
- func = _vargs_inline
1105
- elif tree:
1106
- func = _vargs_tree
1107
-
1108
- if wrapper is not None:
1109
- if func is not None:
1110
- raise ValueError(
1111
- "Cannot use 'wrapper' along with 'tree', 'meta' or 'inline'."
1112
- )
1113
- func = wrapper
1114
-
1115
- def _visitor_args_dec(obj):
1116
- return _apply_v_args(obj, func)
1117
-
1118
- return _visitor_args_dec
1119
-
1120
-
1121
-
1122
- TOKEN_DEFAULT_PRIORITY = 0
1123
-
1124
-
1125
- class Symbol(Serialize):
1126
- __slots__ = ("name",)
1127
-
1128
- name: str
1129
- is_term: ClassVar[bool] = NotImplemented
1130
-
1131
- def __init__(self, name: str) -> None:
1132
- self.name = name
1133
-
1134
- def __eq__(self, other):
1135
- assert isinstance(other, Symbol), other
1136
- return self.is_term == other.is_term and self.name == other.name
1137
-
1138
- def __ne__(self, other):
1139
- return not (self == other)
1140
-
1141
- def __hash__(self):
1142
- return hash(self.name)
1143
-
1144
- def __repr__(self):
1145
- return "%s(%r)" % (type(self).__name__, self.name)
1146
-
1147
- fullrepr = property(__repr__)
1148
-
1149
- def renamed(self, f):
1150
- return type(self)(f(self.name))
1151
-
1152
-
1153
- class Terminal(Symbol):
1154
- __serialize_fields__ = "name", "filter_out"
1155
-
1156
- is_term: ClassVar[bool] = True
1157
-
1158
- def __init__(self, name, filter_out=False):
1159
- self.name = name
1160
- self.filter_out = filter_out
1161
-
1162
- @property
1163
- def fullrepr(self):
1164
- return "%s(%r, %r)" % (type(self).__name__, self.name, self.filter_out)
1165
-
1166
- def renamed(self, f):
1167
- return type(self)(f(self.name), self.filter_out)
1168
-
1169
-
1170
- class NonTerminal(Symbol):
1171
- __serialize_fields__ = ("name",)
1172
-
1173
- is_term: ClassVar[bool] = False
1174
-
1175
-
1176
- class RuleOptions(Serialize):
1177
- __serialize_fields__ = (
1178
- "keep_all_tokens",
1179
- "expand1",
1180
- "priority",
1181
- "template_source",
1182
- "empty_indices",
1183
- )
1184
-
1185
- keep_all_tokens: bool
1186
- expand1: bool
1187
- priority: Optional[int]
1188
- template_source: Optional[str]
1189
- empty_indices: Tuple[bool, ...]
1190
-
1191
- def __init__(
1192
- self,
1193
- keep_all_tokens: bool = False,
1194
- expand1: bool = False,
1195
- priority: Optional[int] = None,
1196
- template_source: Optional[str] = None,
1197
- empty_indices: Tuple[bool, ...] = (),
1198
- ) -> None:
1199
- self.keep_all_tokens = keep_all_tokens
1200
- self.expand1 = expand1
1201
- self.priority = priority
1202
- self.template_source = template_source
1203
- self.empty_indices = empty_indices
1204
-
1205
- def __repr__(self):
1206
- return "RuleOptions(%r, %r, %r, %r)" % (
1207
- self.keep_all_tokens,
1208
- self.expand1,
1209
- self.priority,
1210
- self.template_source,
1211
- )
1212
-
1213
-
1214
- class Rule(Serialize):
1215
- #--
1216
-
1217
- __slots__ = ("origin", "expansion", "alias", "options", "order", "_hash")
1218
-
1219
- __serialize_fields__ = "origin", "expansion", "order", "alias", "options"
1220
- __serialize_namespace__ = Terminal, NonTerminal, RuleOptions
1221
-
1222
- origin: NonTerminal
1223
- expansion: Sequence[Symbol]
1224
- order: int
1225
- alias: Optional[str]
1226
- options: RuleOptions
1227
- _hash: int
1228
-
1229
- def __init__(
1230
- self,
1231
- origin: NonTerminal,
1232
- expansion: Sequence[Symbol],
1233
- order: int = 0,
1234
- alias: Optional[str] = None,
1235
- options: Optional[RuleOptions] = None,
1236
- ):
1237
- self.origin = origin
1238
- self.expansion = expansion
1239
- self.alias = alias
1240
- self.order = order
1241
- self.options = options or RuleOptions()
1242
- self._hash = hash((self.origin, tuple(self.expansion)))
1243
-
1244
- def _deserialize(self):
1245
- self._hash = hash((self.origin, tuple(self.expansion)))
1246
-
1247
- def __str__(self):
1248
- return "<%s : %s>" % (
1249
- self.origin.name,
1250
- " ".join(x.name for x in self.expansion),
1251
- )
1252
-
1253
- def __repr__(self):
1254
- return "Rule(%r, %r, %r, %r)" % (
1255
- self.origin,
1256
- self.expansion,
1257
- self.alias,
1258
- self.options,
1259
- )
1260
-
1261
- def __hash__(self):
1262
- return self._hash
1263
-
1264
- def __eq__(self, other):
1265
- if not isinstance(other, Rule):
1266
- return False
1267
- return self.origin == other.origin and self.expansion == other.expansion
1268
-
1269
-
1270
-
1271
- from copy import copy
1272
-
1273
- try: ##
1274
-
1275
- has_interegular = bool(interegular)
1276
- except NameError:
1277
- has_interegular = False
1278
-
1279
-
1280
- class Pattern(Serialize, ABC):
1281
- #--
1282
-
1283
- value: str
1284
- flags: Collection[str]
1285
- raw: Optional[str]
1286
- type: ClassVar[str]
1287
-
1288
- def __init__(
1289
- self, value: str, flags: Collection[str] = (), raw: Optional[str] = None
1290
- ) -> None:
1291
- self.value = value
1292
- self.flags = frozenset(flags)
1293
- self.raw = raw
1294
-
1295
- def __repr__(self):
1296
- return repr(self.to_regexp())
1297
-
1298
- ##
1299
-
1300
- def __hash__(self):
1301
- return hash((type(self), self.value, self.flags))
1302
-
1303
- def __eq__(self, other):
1304
- return (
1305
- type(self) == type(other)
1306
- and self.value == other.value
1307
- and self.flags == other.flags
1308
- )
1309
-
1310
- @abstractmethod
1311
- def to_regexp(self) -> str:
1312
- raise NotImplementedError()
1313
-
1314
- @property
1315
- @abstractmethod
1316
- def min_width(self) -> int:
1317
- raise NotImplementedError()
1318
-
1319
- @property
1320
- @abstractmethod
1321
- def max_width(self) -> int:
1322
- raise NotImplementedError()
1323
-
1324
- def _get_flags(self, value):
1325
- for f in self.flags:
1326
- value = "(?%s:%s)" % (f, value)
1327
- return value
1328
-
1329
-
1330
- class PatternStr(Pattern):
1331
- __serialize_fields__ = "value", "flags", "raw"
1332
-
1333
- type: ClassVar[str] = "str"
1334
-
1335
- def to_regexp(self) -> str:
1336
- return self._get_flags(re.escape(self.value))
1337
-
1338
- @property
1339
- def min_width(self) -> int:
1340
- return len(self.value)
1341
-
1342
- @property
1343
- def max_width(self) -> int:
1344
- return len(self.value)
1345
-
1346
-
1347
- class PatternRE(Pattern):
1348
- __serialize_fields__ = "value", "flags", "raw", "_width"
1349
-
1350
- type: ClassVar[str] = "re"
1351
-
1352
- def to_regexp(self) -> str:
1353
- return self._get_flags(self.value)
1354
-
1355
- _width = None
1356
-
1357
- def _get_width(self):
1358
- if self._width is None:
1359
- self._width = get_regexp_width(self.to_regexp())
1360
- return self._width
1361
-
1362
- @property
1363
- def min_width(self) -> int:
1364
- return self._get_width()[0]
1365
-
1366
- @property
1367
- def max_width(self) -> int:
1368
- return self._get_width()[1]
1369
-
1370
-
1371
- class TerminalDef(Serialize):
1372
- #--
1373
- __serialize_fields__ = "name", "pattern", "priority"
1374
- __serialize_namespace__ = PatternStr, PatternRE
1375
-
1376
- name: str
1377
- pattern: Pattern
1378
- priority: int
1379
-
1380
- def __init__(
1381
- self, name: str, pattern: Pattern, priority: int = TOKEN_DEFAULT_PRIORITY
1382
- ) -> None:
1383
- assert isinstance(pattern, Pattern), pattern
1384
- self.name = name
1385
- self.pattern = pattern
1386
- self.priority = priority
1387
-
1388
- def __repr__(self):
1389
- return "%s(%r, %r)" % (type(self).__name__, self.name, self.pattern)
1390
-
1391
- def user_repr(self) -> str:
1392
- if self.name.startswith("__"): ##
1393
-
1394
- return self.pattern.raw or self.name
1395
- else:
1396
- return self.name
1397
-
1398
-
1399
- _T = TypeVar("_T", bound="Token")
1400
-
1401
-
1402
- class Token(str):
1403
- #--
1404
-
1405
- __slots__ = (
1406
- "type",
1407
- "start_pos",
1408
- "value",
1409
- "line",
1410
- "column",
1411
- "end_line",
1412
- "end_column",
1413
- "end_pos",
1414
- )
1415
-
1416
- __match_args__ = ("type", "value")
1417
-
1418
- type: str
1419
- start_pos: Optional[int]
1420
- value: Any
1421
- line: Optional[int]
1422
- column: Optional[int]
1423
- end_line: Optional[int]
1424
- end_column: Optional[int]
1425
- end_pos: Optional[int]
1426
-
1427
- @overload
1428
- def __new__(
1429
- cls,
1430
- type: str,
1431
- value: Any,
1432
- start_pos: Optional[int] = None,
1433
- line: Optional[int] = None,
1434
- column: Optional[int] = None,
1435
- end_line: Optional[int] = None,
1436
- end_column: Optional[int] = None,
1437
- end_pos: Optional[int] = None,
1438
- ) -> "Token": ...
1439
-
1440
- @overload
1441
- def __new__(
1442
- cls,
1443
- type_: str,
1444
- value: Any,
1445
- start_pos: Optional[int] = None,
1446
- line: Optional[int] = None,
1447
- column: Optional[int] = None,
1448
- end_line: Optional[int] = None,
1449
- end_column: Optional[int] = None,
1450
- end_pos: Optional[int] = None,
1451
- ) -> "Token": ...
1452
-
1453
- def __new__(cls, *args, **kwargs):
1454
- if "type_" in kwargs:
1455
- warnings.warn(
1456
- "`type_` is deprecated use `type` instead", DeprecationWarning
1457
- )
1458
-
1459
- if "type" in kwargs:
1460
- raise TypeError(
1461
- "Error: using both 'type' and the deprecated 'type_' as arguments."
1462
- )
1463
- kwargs["type"] = kwargs.pop("type_")
1464
-
1465
- return cls._future_new(*args, **kwargs)
1466
-
1467
- @classmethod
1468
- def _future_new(
1469
- cls,
1470
- type,
1471
- value,
1472
- start_pos=None,
1473
- line=None,
1474
- column=None,
1475
- end_line=None,
1476
- end_column=None,
1477
- end_pos=None,
1478
- ):
1479
- inst = super(Token, cls).__new__(cls, value)
1480
-
1481
- inst.type = type
1482
- inst.start_pos = start_pos
1483
- inst.value = value
1484
- inst.line = line
1485
- inst.column = column
1486
- inst.end_line = end_line
1487
- inst.end_column = end_column
1488
- inst.end_pos = end_pos
1489
- return inst
1490
-
1491
- @overload
1492
- def update(
1493
- self, type: Optional[str] = None, value: Optional[Any] = None
1494
- ) -> "Token": ...
1495
-
1496
- @overload
1497
- def update(
1498
- self, type_: Optional[str] = None, value: Optional[Any] = None
1499
- ) -> "Token": ...
1500
-
1501
- def update(self, *args, **kwargs):
1502
- if "type_" in kwargs:
1503
- warnings.warn(
1504
- "`type_` is deprecated use `type` instead", DeprecationWarning
1505
- )
1506
-
1507
- if "type" in kwargs:
1508
- raise TypeError(
1509
- "Error: using both 'type' and the deprecated 'type_' as arguments."
1510
- )
1511
- kwargs["type"] = kwargs.pop("type_")
1512
-
1513
- return self._future_update(*args, **kwargs)
1514
-
1515
- def _future_update(
1516
- self, type: Optional[str] = None, value: Optional[Any] = None
1517
- ) -> "Token":
1518
- return Token.new_borrow_pos(
1519
- type if type is not None else self.type,
1520
- value if value is not None else self.value,
1521
- self,
1522
- )
1523
-
1524
- @classmethod
1525
- def new_borrow_pos(cls: Type[_T], type_: str, value: Any, borrow_t: "Token") -> _T:
1526
- return cls(
1527
- type_,
1528
- value,
1529
- borrow_t.start_pos,
1530
- borrow_t.line,
1531
- borrow_t.column,
1532
- borrow_t.end_line,
1533
- borrow_t.end_column,
1534
- borrow_t.end_pos,
1535
- )
1536
-
1537
- def __reduce__(self):
1538
- return (
1539
- self.__class__,
1540
- (self.type, self.value, self.start_pos, self.line, self.column),
1541
- )
1542
-
1543
- def __repr__(self):
1544
- return "Token(%r, %r)" % (self.type, self.value)
1545
-
1546
- def __deepcopy__(self, memo):
1547
- return Token(self.type, self.value, self.start_pos, self.line, self.column)
1548
-
1549
- def __eq__(self, other):
1550
- if isinstance(other, Token) and self.type != other.type:
1551
- return False
1552
-
1553
- return str.__eq__(self, other)
1554
-
1555
- __hash__ = str.__hash__
1556
-
1557
-
1558
- class LineCounter:
1559
- #--
1560
-
1561
- __slots__ = "char_pos", "line", "column", "line_start_pos", "newline_char"
1562
-
1563
- def __init__(self, newline_char):
1564
- self.newline_char = newline_char
1565
- self.char_pos = 0
1566
- self.line = 1
1567
- self.column = 1
1568
- self.line_start_pos = 0
1569
-
1570
- def __eq__(self, other):
1571
- if not isinstance(other, LineCounter):
1572
- return NotImplemented
1573
-
1574
- return (
1575
- self.char_pos == other.char_pos and self.newline_char == other.newline_char
1576
- )
1577
-
1578
- def feed(self, token: Token, test_newline=True):
1579
- #--
1580
- if test_newline:
1581
- newlines = token.count(self.newline_char)
1582
- if newlines:
1583
- self.line += newlines
1584
- self.line_start_pos = (
1585
- self.char_pos + token.rindex(self.newline_char) + 1
1586
- )
1587
-
1588
- self.char_pos += len(token)
1589
- self.column = self.char_pos - self.line_start_pos + 1
1590
-
1591
-
1592
- class UnlessCallback:
1593
- def __init__(self, scanner):
1594
- self.scanner = scanner
1595
-
1596
- def __call__(self, t):
1597
- res = self.scanner.match(t.value, 0)
1598
- if res:
1599
- _value, t.type = res
1600
- return t
1601
-
1602
-
1603
- class CallChain:
1604
- def __init__(self, callback1, callback2, cond):
1605
- self.callback1 = callback1
1606
- self.callback2 = callback2
1607
- self.cond = cond
1608
-
1609
- def __call__(self, t):
1610
- t2 = self.callback1(t)
1611
- return self.callback2(t) if self.cond(t2) else t2
1612
-
1613
-
1614
- def _get_match(re_, regexp, s, flags):
1615
- m = re_.match(regexp, s, flags)
1616
- if m:
1617
- return m.group(0)
1618
-
1619
-
1620
- def _create_unless(terminals, g_regex_flags, re_, use_bytes):
1621
- tokens_by_type = classify(terminals, lambda t: type(t.pattern))
1622
- assert len(tokens_by_type) <= 2, tokens_by_type.keys()
1623
- embedded_strs = set()
1624
- callback = {}
1625
- for retok in tokens_by_type.get(PatternRE, []):
1626
- unless = []
1627
- for strtok in tokens_by_type.get(PatternStr, []):
1628
- if strtok.priority != retok.priority:
1629
- continue
1630
- s = strtok.pattern.value
1631
- if s == _get_match(re_, retok.pattern.to_regexp(), s, g_regex_flags):
1632
- unless.append(strtok)
1633
- if strtok.pattern.flags <= retok.pattern.flags:
1634
- embedded_strs.add(strtok)
1635
- if unless:
1636
- callback[retok.name] = UnlessCallback(
1637
- Scanner(
1638
- unless, g_regex_flags, re_, match_whole=True, use_bytes=use_bytes
1639
- )
1640
- )
1641
-
1642
- new_terminals = [t for t in terminals if t not in embedded_strs]
1643
- return new_terminals, callback
1644
-
1645
-
1646
- class Scanner:
1647
- def __init__(self, terminals, g_regex_flags, re_, use_bytes, match_whole=False):
1648
- self.terminals = terminals
1649
- self.g_regex_flags = g_regex_flags
1650
- self.re_ = re_
1651
- self.use_bytes = use_bytes
1652
- self.match_whole = match_whole
1653
-
1654
- self.allowed_types = {t.name for t in self.terminals}
1655
-
1656
- self._mres = self._build_mres(terminals, len(terminals))
1657
-
1658
- def _build_mres(self, terminals, max_size):
1659
- ##
1660
-
1661
- ##
1662
-
1663
- ##
1664
-
1665
- postfix = "$" if self.match_whole else ""
1666
- mres = []
1667
- while terminals:
1668
- pattern = "|".join(
1669
- "(?P<%s>%s)" % (t.name, t.pattern.to_regexp() + postfix)
1670
- for t in terminals[:max_size]
1671
- )
1672
- if self.use_bytes:
1673
- pattern = pattern.encode("latin-1")
1674
- try:
1675
- mre = self.re_.compile(pattern, self.g_regex_flags)
1676
- except AssertionError: ##
1677
-
1678
- return self._build_mres(terminals, max_size // 2)
1679
-
1680
- mres.append(mre)
1681
- terminals = terminals[max_size:]
1682
- return mres
1683
-
1684
- def match(self, text, pos):
1685
- for mre in self._mres:
1686
- m = mre.match(text, pos)
1687
- if m:
1688
- return m.group(0), m.lastgroup
1689
-
1690
-
1691
- def _regexp_has_newline(r: str):
1692
- #--
1693
- return (
1694
- "\n" in r or "\\n" in r or "\\s" in r or "[^" in r or ("(?s" in r and "." in r)
1695
- )
1696
-
1697
-
1698
- class LexerState:
1699
- #--
1700
-
1701
- __slots__ = "text", "line_ctr", "last_token"
1702
-
1703
- text: str
1704
- line_ctr: LineCounter
1705
- last_token: Optional[Token]
1706
-
1707
- def __init__(
1708
- self,
1709
- text: str,
1710
- line_ctr: Optional[LineCounter] = None,
1711
- last_token: Optional[Token] = None,
1712
- ):
1713
- self.text = text
1714
- self.line_ctr = line_ctr or LineCounter(
1715
- b"\n" if isinstance(text, bytes) else "\n"
1716
- )
1717
- self.last_token = last_token
1718
-
1719
- def __eq__(self, other):
1720
- if not isinstance(other, LexerState):
1721
- return NotImplemented
1722
-
1723
- return (
1724
- self.text is other.text
1725
- and self.line_ctr == other.line_ctr
1726
- and self.last_token == other.last_token
1727
- )
1728
-
1729
- def __copy__(self):
1730
- return type(self)(self.text, copy(self.line_ctr), self.last_token)
1731
-
1732
-
1733
- class LexerThread:
1734
- #--
1735
-
1736
- def __init__(self, lexer: "Lexer", lexer_state: LexerState):
1737
- self.lexer = lexer
1738
- self.state = lexer_state
1739
-
1740
- @classmethod
1741
- def from_text(cls, lexer: "Lexer", text: str) -> "LexerThread":
1742
- return cls(lexer, LexerState(text))
1743
-
1744
- def lex(self, parser_state):
1745
- return self.lexer.lex(self.state, parser_state)
1746
-
1747
- def __copy__(self):
1748
- return type(self)(self.lexer, copy(self.state))
1749
-
1750
- _Token = Token
1751
-
1752
-
1753
- _Callback = Callable[[Token], Token]
1754
-
1755
-
1756
- class Lexer(ABC):
1757
- #--
1758
-
1759
- @abstractmethod
1760
- def lex(self, lexer_state: LexerState, parser_state: Any) -> Iterator[Token]:
1761
- return NotImplemented
1762
-
1763
- def make_lexer_state(self, text):
1764
- #--
1765
- return LexerState(text)
1766
-
1767
-
1768
- def _check_regex_collisions(
1769
- terminal_to_regexp: Dict[TerminalDef, str],
1770
- comparator,
1771
- strict_mode,
1772
- max_collisions_to_show=8,
1773
- ):
1774
- if not comparator:
1775
- comparator = interegular.Comparator.from_regexes(terminal_to_regexp)
1776
-
1777
- ##
1778
-
1779
- ##
1780
-
1781
- max_time = 2 if strict_mode else 0.2
1782
-
1783
- ##
1784
-
1785
- if comparator.count_marked_pairs() >= max_collisions_to_show:
1786
- return
1787
- for group in classify(terminal_to_regexp, lambda t: t.priority).values():
1788
- for a, b in comparator.check(group, skip_marked=True):
1789
- assert a.priority == b.priority
1790
- ##
1791
-
1792
- comparator.mark(a, b)
1793
-
1794
- ##
1795
-
1796
- message = f"Collision between Terminals {a.name} and {b.name}. "
1797
- try:
1798
- example = comparator.get_example_overlap(
1799
- a, b, max_time
1800
- ).format_multiline()
1801
- except ValueError:
1802
- ##
1803
-
1804
- example = "No example could be found fast enough. However, the collision does still exists"
1805
- if strict_mode:
1806
- raise LexError(f"{message}\n{example}")
1807
- logger.warning(
1808
- "%s The lexer will choose between them arbitrarily.\n%s",
1809
- message,
1810
- example,
1811
- )
1812
- if comparator.count_marked_pairs() >= max_collisions_to_show:
1813
- logger.warning("Found 8 regex collisions, will not check for more.")
1814
- return
1815
-
1816
-
1817
- class AbstractBasicLexer(Lexer):
1818
- terminals_by_name: Dict[str, TerminalDef]
1819
-
1820
- @abstractmethod
1821
- def __init__(self, conf: "LexerConf", comparator=None) -> None: ...
1822
-
1823
- @abstractmethod
1824
- def next_token(self, lex_state: LexerState, parser_state: Any = None) -> Token: ...
1825
-
1826
- def lex(self, state: LexerState, parser_state: Any) -> Iterator[Token]:
1827
- with suppress(EOFError):
1828
- while True:
1829
- yield self.next_token(state, parser_state)
1830
-
1831
-
1832
- class BasicLexer(AbstractBasicLexer):
1833
- terminals: Collection[TerminalDef]
1834
- ignore_types: FrozenSet[str]
1835
- newline_types: FrozenSet[str]
1836
- user_callbacks: Dict[str, _Callback]
1837
- callback: Dict[str, _Callback]
1838
- re: ModuleType
1839
-
1840
- def __init__(self, conf: "LexerConf", comparator=None) -> None:
1841
- terminals = list(conf.terminals)
1842
- assert all(isinstance(t, TerminalDef) for t in terminals), terminals
1843
-
1844
- self.re = conf.re_module
1845
-
1846
- if not conf.skip_validation:
1847
- ##
1848
-
1849
- terminal_to_regexp = {}
1850
- for t in terminals:
1851
- regexp = t.pattern.to_regexp()
1852
- try:
1853
- self.re.compile(regexp, conf.g_regex_flags)
1854
- except self.re.error:
1855
- raise LexError("Cannot compile token %s: %s" % (t.name, t.pattern))
1856
-
1857
- if t.pattern.min_width == 0:
1858
- raise LexError(
1859
- "Lexer does not allow zero-width terminals. (%s: %s)"
1860
- % (t.name, t.pattern)
1861
- )
1862
- if t.pattern.type == "re":
1863
- terminal_to_regexp[t] = regexp
1864
-
1865
- if not (set(conf.ignore) <= {t.name for t in terminals}):
1866
- raise LexError(
1867
- "Ignore terminals are not defined: %s"
1868
- % (set(conf.ignore) - {t.name for t in terminals})
1869
- )
1870
-
1871
- if has_interegular:
1872
- _check_regex_collisions(terminal_to_regexp, comparator, conf.strict)
1873
- elif conf.strict:
1874
- raise LexError(
1875
- "interegular must be installed for strict mode. Use `pip install 'lark[interegular]'`."
1876
- )
1877
-
1878
- ##
1879
-
1880
- self.newline_types = frozenset(
1881
- t.name for t in terminals if _regexp_has_newline(t.pattern.to_regexp())
1882
- )
1883
- self.ignore_types = frozenset(conf.ignore)
1884
-
1885
- terminals.sort(
1886
- key=lambda x: (
1887
- -x.priority,
1888
- -x.pattern.max_width,
1889
- -len(x.pattern.value),
1890
- x.name,
1891
- )
1892
- )
1893
- self.terminals = terminals
1894
- self.user_callbacks = conf.callbacks
1895
- self.g_regex_flags = conf.g_regex_flags
1896
- self.use_bytes = conf.use_bytes
1897
- self.terminals_by_name = conf.terminals_by_name
1898
-
1899
- self._scanner = None
1900
-
1901
- def _build_scanner(self):
1902
- terminals, self.callback = _create_unless(
1903
- self.terminals, self.g_regex_flags, self.re, self.use_bytes
1904
- )
1905
- assert all(self.callback.values())
1906
-
1907
- for type_, f in self.user_callbacks.items():
1908
- if type_ in self.callback:
1909
- ##
1910
-
1911
- self.callback[type_] = CallChain(
1912
- self.callback[type_], f, lambda t: t.type == type_
1913
- )
1914
- else:
1915
- self.callback[type_] = f
1916
-
1917
- self._scanner = Scanner(terminals, self.g_regex_flags, self.re, self.use_bytes)
1918
-
1919
- @property
1920
- def scanner(self):
1921
- if self._scanner is None:
1922
- self._build_scanner()
1923
- return self._scanner
1924
-
1925
- def match(self, text, pos):
1926
- return self.scanner.match(text, pos)
1927
-
1928
- def next_token(self, lex_state: LexerState, parser_state: Any = None) -> Token:
1929
- line_ctr = lex_state.line_ctr
1930
- while line_ctr.char_pos < len(lex_state.text):
1931
- res = self.match(lex_state.text, line_ctr.char_pos)
1932
- if not res:
1933
- allowed = self.scanner.allowed_types - self.ignore_types
1934
- if not allowed:
1935
- allowed = {"<END-OF-FILE>"}
1936
- raise UnexpectedCharacters(
1937
- lex_state.text,
1938
- line_ctr.char_pos,
1939
- line_ctr.line,
1940
- line_ctr.column,
1941
- allowed=allowed,
1942
- token_history=lex_state.last_token and [lex_state.last_token],
1943
- state=parser_state,
1944
- terminals_by_name=self.terminals_by_name,
1945
- )
1946
-
1947
- value, type_ = res
1948
-
1949
- ignored = type_ in self.ignore_types
1950
- t = None
1951
- if not ignored or type_ in self.callback:
1952
- t = Token(
1953
- type_, value, line_ctr.char_pos, line_ctr.line, line_ctr.column
1954
- )
1955
- line_ctr.feed(value, type_ in self.newline_types)
1956
- if t is not None:
1957
- t.end_line = line_ctr.line
1958
- t.end_column = line_ctr.column
1959
- t.end_pos = line_ctr.char_pos
1960
- if t.type in self.callback:
1961
- t = self.callback[t.type](t)
1962
- if not ignored:
1963
- if not isinstance(t, Token):
1964
- raise LexError(
1965
- "Callbacks must return a token (returned %r)" % t
1966
- )
1967
- lex_state.last_token = t
1968
- return t
1969
-
1970
- ##
1971
-
1972
- raise EOFError(self)
1973
-
1974
-
1975
- class ContextualLexer(Lexer):
1976
- lexers: Dict[int, AbstractBasicLexer]
1977
- root_lexer: AbstractBasicLexer
1978
-
1979
- BasicLexer: Type[AbstractBasicLexer] = BasicLexer
1980
-
1981
- def __init__(
1982
- self,
1983
- conf: "LexerConf",
1984
- states: Dict[int, Collection[str]],
1985
- always_accept: Collection[str] = (),
1986
- ) -> None:
1987
- terminals = list(conf.terminals)
1988
- terminals_by_name = conf.terminals_by_name
1989
-
1990
- trad_conf = copy(conf)
1991
- trad_conf.terminals = terminals
1992
-
1993
- if has_interegular and not conf.skip_validation:
1994
- comparator = interegular.Comparator.from_regexes(
1995
- {t: t.pattern.to_regexp() for t in terminals}
1996
- )
1997
- else:
1998
- comparator = None
1999
- lexer_by_tokens: Dict[FrozenSet[str], AbstractBasicLexer] = {}
2000
- self.lexers = {}
2001
- for state, accepts in states.items():
2002
- key = frozenset(accepts)
2003
- try:
2004
- lexer = lexer_by_tokens[key]
2005
- except KeyError:
2006
- accepts = set(accepts) | set(conf.ignore) | set(always_accept)
2007
- lexer_conf = copy(trad_conf)
2008
- lexer_conf.terminals = [
2009
- terminals_by_name[n] for n in accepts if n in terminals_by_name
2010
- ]
2011
- lexer = self.BasicLexer(lexer_conf, comparator)
2012
- lexer_by_tokens[key] = lexer
2013
-
2014
- self.lexers[state] = lexer
2015
-
2016
- assert trad_conf.terminals is terminals
2017
- trad_conf.skip_validation = True ##
2018
-
2019
- self.root_lexer = self.BasicLexer(trad_conf, comparator)
2020
-
2021
- def lex(
2022
- self, lexer_state: LexerState, parser_state: "ParserState"
2023
- ) -> Iterator[Token]:
2024
- try:
2025
- while True:
2026
- lexer = self.lexers[parser_state.position]
2027
- yield lexer.next_token(lexer_state, parser_state)
2028
- except EOFError:
2029
- pass
2030
- except UnexpectedCharacters as e:
2031
- ##
2032
-
2033
- ##
2034
-
2035
- try:
2036
- last_token = (
2037
- lexer_state.last_token
2038
- ) ##
2039
-
2040
- token = self.root_lexer.next_token(lexer_state, parser_state)
2041
- raise UnexpectedToken(
2042
- token,
2043
- e.allowed,
2044
- state=parser_state,
2045
- token_history=[last_token],
2046
- terminals_by_name=self.root_lexer.terminals_by_name,
2047
- )
2048
- except UnexpectedCharacters:
2049
- raise e ##
2050
-
2051
-
2052
-
2053
-
2054
-
2055
- _ParserArgType: "TypeAlias" = 'Literal["earley", "lalr", "cyk", "auto"]'
2056
- _LexerArgType: "TypeAlias" = (
2057
- 'Union[Literal["auto", "basic", "contextual", "dynamic", "dynamic_complete"], Type[Lexer]]'
2058
- )
2059
- _LexerCallback = Callable[[Token], Token]
2060
- ParserCallbacks = Dict[str, Callable]
2061
-
2062
-
2063
- class LexerConf(Serialize):
2064
- __serialize_fields__ = (
2065
- "terminals",
2066
- "ignore",
2067
- "g_regex_flags",
2068
- "use_bytes",
2069
- "lexer_type",
2070
- )
2071
- __serialize_namespace__ = (TerminalDef,)
2072
-
2073
- terminals: Collection[TerminalDef]
2074
- re_module: ModuleType
2075
- ignore: Collection[str]
2076
- postlex: "Optional[PostLex]"
2077
- callbacks: Dict[str, _LexerCallback]
2078
- g_regex_flags: int
2079
- skip_validation: bool
2080
- use_bytes: bool
2081
- lexer_type: Optional[_LexerArgType]
2082
- strict: bool
2083
-
2084
- def __init__(
2085
- self,
2086
- terminals: Collection[TerminalDef],
2087
- re_module: ModuleType,
2088
- ignore: Collection[str] = (),
2089
- postlex: "Optional[PostLex]" = None,
2090
- callbacks: Optional[Dict[str, _LexerCallback]] = None,
2091
- g_regex_flags: int = 0,
2092
- skip_validation: bool = False,
2093
- use_bytes: bool = False,
2094
- strict: bool = False,
2095
- ):
2096
- self.terminals = terminals
2097
- self.terminals_by_name = {t.name: t for t in self.terminals}
2098
- assert len(self.terminals) == len(self.terminals_by_name)
2099
- self.ignore = ignore
2100
- self.postlex = postlex
2101
- self.callbacks = callbacks or {}
2102
- self.g_regex_flags = g_regex_flags
2103
- self.re_module = re_module
2104
- self.skip_validation = skip_validation
2105
- self.use_bytes = use_bytes
2106
- self.strict = strict
2107
- self.lexer_type = None
2108
-
2109
- def _deserialize(self):
2110
- self.terminals_by_name = {t.name: t for t in self.terminals}
2111
-
2112
- def __deepcopy__(self, memo=None):
2113
- return type(self)(
2114
- deepcopy(self.terminals, memo),
2115
- self.re_module,
2116
- deepcopy(self.ignore, memo),
2117
- deepcopy(self.postlex, memo),
2118
- deepcopy(self.callbacks, memo),
2119
- deepcopy(self.g_regex_flags, memo),
2120
- deepcopy(self.skip_validation, memo),
2121
- deepcopy(self.use_bytes, memo),
2122
- )
2123
-
2124
-
2125
- class ParserConf(Serialize):
2126
- __serialize_fields__ = "rules", "start", "parser_type"
2127
-
2128
- rules: List["Rule"]
2129
- callbacks: ParserCallbacks
2130
- start: List[str]
2131
- parser_type: _ParserArgType
2132
-
2133
- def __init__(
2134
- self, rules: List["Rule"], callbacks: ParserCallbacks, start: List[str]
2135
- ):
2136
- assert isinstance(start, list)
2137
- self.rules = rules
2138
- self.callbacks = callbacks
2139
- self.start = start
2140
-
2141
-
2142
-
2143
- from functools import partial, wraps
2144
- from itertools import product
2145
-
2146
-
2147
- class ExpandSingleChild:
2148
- def __init__(self, node_builder):
2149
- self.node_builder = node_builder
2150
-
2151
- def __call__(self, children):
2152
- if len(children) == 1:
2153
- return children[0]
2154
- else:
2155
- return self.node_builder(children)
2156
-
2157
-
2158
- class PropagatePositions:
2159
- def __init__(self, node_builder, node_filter=None):
2160
- self.node_builder = node_builder
2161
- self.node_filter = node_filter
2162
-
2163
- def __call__(self, children):
2164
- res = self.node_builder(children)
2165
-
2166
- if isinstance(res, Tree):
2167
- ##
2168
-
2169
- ##
2170
-
2171
- ##
2172
-
2173
- ##
2174
-
2175
-
2176
- res_meta = res.meta
2177
-
2178
- first_meta = self._pp_get_meta(children)
2179
- if first_meta is not None:
2180
- if not hasattr(res_meta, "line"):
2181
- ##
2182
-
2183
- res_meta.line = getattr(
2184
- first_meta, "container_line", first_meta.line
2185
- )
2186
- res_meta.column = getattr(
2187
- first_meta, "container_column", first_meta.column
2188
- )
2189
- res_meta.start_pos = getattr(
2190
- first_meta, "container_start_pos", first_meta.start_pos
2191
- )
2192
- res_meta.empty = False
2193
-
2194
- res_meta.container_line = getattr(
2195
- first_meta, "container_line", first_meta.line
2196
- )
2197
- res_meta.container_column = getattr(
2198
- first_meta, "container_column", first_meta.column
2199
- )
2200
- res_meta.container_start_pos = getattr(
2201
- first_meta, "container_start_pos", first_meta.start_pos
2202
- )
2203
-
2204
- last_meta = self._pp_get_meta(reversed(children))
2205
- if last_meta is not None:
2206
- if not hasattr(res_meta, "end_line"):
2207
- res_meta.end_line = getattr(
2208
- last_meta, "container_end_line", last_meta.end_line
2209
- )
2210
- res_meta.end_column = getattr(
2211
- last_meta, "container_end_column", last_meta.end_column
2212
- )
2213
- res_meta.end_pos = getattr(
2214
- last_meta, "container_end_pos", last_meta.end_pos
2215
- )
2216
- res_meta.empty = False
2217
-
2218
- res_meta.container_end_line = getattr(
2219
- last_meta, "container_end_line", last_meta.end_line
2220
- )
2221
- res_meta.container_end_column = getattr(
2222
- last_meta, "container_end_column", last_meta.end_column
2223
- )
2224
- res_meta.container_end_pos = getattr(
2225
- last_meta, "container_end_pos", last_meta.end_pos
2226
- )
2227
-
2228
- return res
2229
-
2230
- def _pp_get_meta(self, children):
2231
- for c in children:
2232
- if self.node_filter is not None and not self.node_filter(c):
2233
- continue
2234
- if isinstance(c, Tree):
2235
- if not c.meta.empty:
2236
- return c.meta
2237
- elif isinstance(c, Token):
2238
- return c
2239
- elif hasattr(c, "__lark_meta__"):
2240
- return c.__lark_meta__()
2241
-
2242
-
2243
- def make_propagate_positions(option):
2244
- if callable(option):
2245
- return partial(PropagatePositions, node_filter=option)
2246
- elif option is True:
2247
- return PropagatePositions
2248
- elif option is False:
2249
- return None
2250
-
2251
- raise ConfigurationError("Invalid option for propagate_positions: %r" % option)
2252
-
2253
-
2254
- class ChildFilter:
2255
- def __init__(self, to_include, append_none, node_builder):
2256
- self.node_builder = node_builder
2257
- self.to_include = to_include
2258
- self.append_none = append_none
2259
-
2260
- def __call__(self, children):
2261
- filtered = []
2262
-
2263
- for i, to_expand, add_none in self.to_include:
2264
- if add_none:
2265
- filtered += [None] * add_none
2266
- if to_expand:
2267
- filtered += children[i].children
2268
- else:
2269
- filtered.append(children[i])
2270
-
2271
- if self.append_none:
2272
- filtered += [None] * self.append_none
2273
-
2274
- return self.node_builder(filtered)
2275
-
2276
-
2277
- class ChildFilterLALR(ChildFilter):
2278
- #--
2279
-
2280
- def __call__(self, children):
2281
- filtered = []
2282
- for i, to_expand, add_none in self.to_include:
2283
- if add_none:
2284
- filtered += [None] * add_none
2285
- if to_expand:
2286
- if filtered:
2287
- filtered += children[i].children
2288
- else: ##
2289
-
2290
- filtered = children[i].children
2291
- else:
2292
- filtered.append(children[i])
2293
-
2294
- if self.append_none:
2295
- filtered += [None] * self.append_none
2296
-
2297
- return self.node_builder(filtered)
2298
-
2299
-
2300
- class ChildFilterLALR_NoPlaceholders(ChildFilter):
2301
- #--
2302
-
2303
- def __init__(self, to_include, node_builder):
2304
- self.node_builder = node_builder
2305
- self.to_include = to_include
2306
-
2307
- def __call__(self, children):
2308
- filtered = []
2309
- for i, to_expand in self.to_include:
2310
- if to_expand:
2311
- if filtered:
2312
- filtered += children[i].children
2313
- else: ##
2314
-
2315
- filtered = children[i].children
2316
- else:
2317
- filtered.append(children[i])
2318
- return self.node_builder(filtered)
2319
-
2320
-
2321
- def _should_expand(sym):
2322
- return not sym.is_term and sym.name.startswith("_")
2323
-
2324
-
2325
- def maybe_create_child_filter(
2326
- expansion, keep_all_tokens, ambiguous, _empty_indices: List[bool]
2327
- ):
2328
- ##
2329
-
2330
- if _empty_indices:
2331
- assert _empty_indices.count(False) == len(expansion)
2332
- s = "".join(str(int(b)) for b in _empty_indices)
2333
- empty_indices = [len(ones) for ones in s.split("0")]
2334
- assert len(empty_indices) == len(expansion) + 1, (empty_indices, len(expansion))
2335
- else:
2336
- empty_indices = [0] * (len(expansion) + 1)
2337
-
2338
- to_include = []
2339
- nones_to_add = 0
2340
- for i, sym in enumerate(expansion):
2341
- nones_to_add += empty_indices[i]
2342
- if keep_all_tokens or not (sym.is_term and sym.filter_out):
2343
- to_include.append((i, _should_expand(sym), nones_to_add))
2344
- nones_to_add = 0
2345
-
2346
- nones_to_add += empty_indices[len(expansion)]
2347
-
2348
- if (
2349
- _empty_indices
2350
- or len(to_include) < len(expansion)
2351
- or any(to_expand for i, to_expand, _ in to_include)
2352
- ):
2353
- if _empty_indices or ambiguous:
2354
- return partial(
2355
- ChildFilter if ambiguous else ChildFilterLALR, to_include, nones_to_add
2356
- )
2357
- else:
2358
- ##
2359
-
2360
- return partial(
2361
- ChildFilterLALR_NoPlaceholders, [(i, x) for i, x, _ in to_include]
2362
- )
2363
-
2364
-
2365
- class AmbiguousExpander:
2366
- #--
2367
-
2368
- def __init__(self, to_expand, tree_class, node_builder):
2369
- self.node_builder = node_builder
2370
- self.tree_class = tree_class
2371
- self.to_expand = to_expand
2372
-
2373
- def __call__(self, children):
2374
- def _is_ambig_tree(t):
2375
- return hasattr(t, "data") and t.data == "_ambig"
2376
-
2377
- ##
2378
-
2379
- ##
2380
-
2381
- ##
2382
-
2383
- ##
2384
-
2385
- ambiguous = []
2386
- for i, child in enumerate(children):
2387
- if _is_ambig_tree(child):
2388
- if i in self.to_expand:
2389
- ambiguous.append(i)
2390
-
2391
- child.expand_kids_by_data("_ambig")
2392
-
2393
- if not ambiguous:
2394
- return self.node_builder(children)
2395
-
2396
- expand = [
2397
- child.children if i in ambiguous else (child,)
2398
- for i, child in enumerate(children)
2399
- ]
2400
- return self.tree_class(
2401
- "_ambig", [self.node_builder(list(f)) for f in product(*expand)]
2402
- )
2403
-
2404
-
2405
- def maybe_create_ambiguous_expander(tree_class, expansion, keep_all_tokens):
2406
- to_expand = [
2407
- i
2408
- for i, sym in enumerate(expansion)
2409
- if keep_all_tokens
2410
- or ((not (sym.is_term and sym.filter_out)) and _should_expand(sym))
2411
- ]
2412
- if to_expand:
2413
- return partial(AmbiguousExpander, to_expand, tree_class)
2414
-
2415
-
2416
- class AmbiguousIntermediateExpander:
2417
- #--
2418
-
2419
- def __init__(self, tree_class, node_builder):
2420
- self.node_builder = node_builder
2421
- self.tree_class = tree_class
2422
-
2423
- def __call__(self, children):
2424
- def _is_iambig_tree(child):
2425
- return hasattr(child, "data") and child.data == "_iambig"
2426
-
2427
- def _collapse_iambig(children):
2428
- #--
2429
-
2430
- ##
2431
-
2432
- ##
2433
-
2434
- if children and _is_iambig_tree(children[0]):
2435
- iambig_node = children[0]
2436
- result = []
2437
- for grandchild in iambig_node.children:
2438
- collapsed = _collapse_iambig(grandchild.children)
2439
- if collapsed:
2440
- for child in collapsed:
2441
- child.children += children[1:]
2442
- result += collapsed
2443
- else:
2444
- new_tree = self.tree_class(
2445
- "_inter", grandchild.children + children[1:]
2446
- )
2447
- result.append(new_tree)
2448
- return result
2449
-
2450
- collapsed = _collapse_iambig(children)
2451
- if collapsed:
2452
- processed_nodes = [self.node_builder(c.children) for c in collapsed]
2453
- return self.tree_class("_ambig", processed_nodes)
2454
-
2455
- return self.node_builder(children)
2456
-
2457
-
2458
- def inplace_transformer(func):
2459
- @wraps(func)
2460
- def f(children):
2461
- ##
2462
-
2463
- tree = Tree(func.__name__, children)
2464
- return func(tree)
2465
-
2466
- return f
2467
-
2468
-
2469
- def apply_visit_wrapper(func, name, wrapper):
2470
- if wrapper is _vargs_meta or wrapper is _vargs_meta_inline:
2471
- raise NotImplementedError("Meta args not supported for internal transformer")
2472
-
2473
- @wraps(func)
2474
- def f(children):
2475
- return wrapper(func, name, children, None)
2476
-
2477
- return f
2478
-
2479
-
2480
- class ParseTreeBuilder:
2481
- def __init__(
2482
- self,
2483
- rules,
2484
- tree_class,
2485
- propagate_positions=False,
2486
- ambiguous=False,
2487
- maybe_placeholders=False,
2488
- ):
2489
- self.tree_class = tree_class
2490
- self.propagate_positions = propagate_positions
2491
- self.ambiguous = ambiguous
2492
- self.maybe_placeholders = maybe_placeholders
2493
-
2494
- self.rule_builders = list(self._init_builders(rules))
2495
-
2496
- def _init_builders(self, rules):
2497
- propagate_positions = make_propagate_positions(self.propagate_positions)
2498
-
2499
- for rule in rules:
2500
- options = rule.options
2501
- keep_all_tokens = options.keep_all_tokens
2502
- expand_single_child = options.expand1
2503
-
2504
- wrapper_chain = list(
2505
- filter(
2506
- None,
2507
- [
2508
- (expand_single_child and not rule.alias) and ExpandSingleChild,
2509
- maybe_create_child_filter(
2510
- rule.expansion,
2511
- keep_all_tokens,
2512
- self.ambiguous,
2513
- options.empty_indices if self.maybe_placeholders else None,
2514
- ),
2515
- propagate_positions,
2516
- self.ambiguous
2517
- and maybe_create_ambiguous_expander(
2518
- self.tree_class, rule.expansion, keep_all_tokens
2519
- ),
2520
- self.ambiguous
2521
- and partial(AmbiguousIntermediateExpander, self.tree_class),
2522
- ],
2523
- )
2524
- )
2525
-
2526
- yield rule, wrapper_chain
2527
-
2528
- def create_callback(self, transformer=None):
2529
- callbacks = {}
2530
-
2531
- default_handler = getattr(transformer, "__default__", None)
2532
- if default_handler:
2533
-
2534
- def default_callback(data, children):
2535
- return default_handler(data, children, None)
2536
-
2537
- else:
2538
- default_callback = self.tree_class
2539
-
2540
- for rule, wrapper_chain in self.rule_builders:
2541
-
2542
- user_callback_name = (
2543
- rule.alias or rule.options.template_source or rule.origin.name
2544
- )
2545
- try:
2546
- f = getattr(transformer, user_callback_name)
2547
- wrapper = getattr(f, "visit_wrapper", None)
2548
- if wrapper is not None:
2549
- f = apply_visit_wrapper(f, user_callback_name, wrapper)
2550
- elif isinstance(transformer, Transformer_InPlace):
2551
- f = inplace_transformer(f)
2552
- except AttributeError:
2553
- f = partial(default_callback, user_callback_name)
2554
-
2555
- for w in wrapper_chain:
2556
- f = w(f)
2557
-
2558
- if rule in callbacks:
2559
- raise GrammarError("Rule '%s' already exists" % (rule,))
2560
-
2561
- callbacks[rule] = f
2562
-
2563
- return callbacks
2564
-
2565
-
2566
-
2567
-
2568
-
2569
- class Action:
2570
- def __init__(self, name):
2571
- self.name = name
2572
-
2573
- def __str__(self):
2574
- return self.name
2575
-
2576
- def __repr__(self):
2577
- return str(self)
2578
-
2579
-
2580
- Shift = Action("Shift")
2581
- Reduce = Action("Reduce")
2582
-
2583
- StateT = TypeVar("StateT")
2584
-
2585
-
2586
- class ParseTableBase(Generic[StateT]):
2587
- states: Dict[StateT, Dict[str, Tuple]]
2588
- start_states: Dict[str, StateT]
2589
- end_states: Dict[str, StateT]
2590
-
2591
- def __init__(self, states, start_states, end_states):
2592
- self.states = states
2593
- self.start_states = start_states
2594
- self.end_states = end_states
2595
-
2596
- def serialize(self, memo):
2597
- tokens = Enumerator()
2598
-
2599
- states = {
2600
- state: {
2601
- tokens.get(token): (
2602
- (1, arg.serialize(memo)) if action is Reduce else (0, arg)
2603
- )
2604
- for token, (action, arg) in actions.items()
2605
- }
2606
- for state, actions in self.states.items()
2607
- }
2608
-
2609
- return {
2610
- "tokens": tokens.reversed(),
2611
- "states": states,
2612
- "start_states": self.start_states,
2613
- "end_states": self.end_states,
2614
- }
2615
-
2616
- @classmethod
2617
- def deserialize(cls, data, memo):
2618
- tokens = data["tokens"]
2619
- states = {
2620
- state: {
2621
- tokens[token]: (
2622
- (Reduce, Rule.deserialize(arg, memo))
2623
- if action == 1
2624
- else (Shift, arg)
2625
- )
2626
- for token, (action, arg) in actions.items()
2627
- }
2628
- for state, actions in data["states"].items()
2629
- }
2630
- return cls(states, data["start_states"], data["end_states"])
2631
-
2632
-
2633
- class ParseTable(ParseTableBase["State"]):
2634
- #--
2635
-
2636
- pass
2637
-
2638
-
2639
- class IntParseTable(ParseTableBase[int]):
2640
- #--
2641
-
2642
- @classmethod
2643
- def from_ParseTable(cls, parse_table: ParseTable):
2644
- enum = list(parse_table.states)
2645
- state_to_idx: Dict["State", int] = {s: i for i, s in enumerate(enum)}
2646
- int_states = {}
2647
-
2648
- for s, la in parse_table.states.items():
2649
- la = {
2650
- k: (v[0], state_to_idx[v[1]]) if v[0] is Shift else v
2651
- for k, v in la.items()
2652
- }
2653
- int_states[state_to_idx[s]] = la
2654
-
2655
- start_states = {
2656
- start: state_to_idx[s] for start, s in parse_table.start_states.items()
2657
- }
2658
- end_states = {
2659
- start: state_to_idx[s] for start, s in parse_table.end_states.items()
2660
- }
2661
- return cls(int_states, start_states, end_states)
2662
-
2663
-
2664
-
2665
-
2666
-
2667
- class ParseConf(Generic[StateT]):
2668
- __slots__ = (
2669
- "parse_table",
2670
- "callbacks",
2671
- "start",
2672
- "start_state",
2673
- "end_state",
2674
- "states",
2675
- )
2676
-
2677
- parse_table: ParseTableBase[StateT]
2678
- callbacks: ParserCallbacks
2679
- start: str
2680
-
2681
- start_state: StateT
2682
- end_state: StateT
2683
- states: Dict[StateT, Dict[str, tuple]]
2684
-
2685
- def __init__(
2686
- self,
2687
- parse_table: ParseTableBase[StateT],
2688
- callbacks: ParserCallbacks,
2689
- start: str,
2690
- ):
2691
- self.parse_table = parse_table
2692
-
2693
- self.start_state = self.parse_table.start_states[start]
2694
- self.end_state = self.parse_table.end_states[start]
2695
- self.states = self.parse_table.states
2696
-
2697
- self.callbacks = callbacks
2698
- self.start = start
2699
-
2700
-
2701
- class ParserState(Generic[StateT]):
2702
- __slots__ = "parse_conf", "lexer", "state_stack", "value_stack"
2703
-
2704
- parse_conf: ParseConf[StateT]
2705
- lexer: LexerThread
2706
- state_stack: List[StateT]
2707
- value_stack: list
2708
-
2709
- def __init__(
2710
- self,
2711
- parse_conf: ParseConf[StateT],
2712
- lexer: LexerThread,
2713
- state_stack=None,
2714
- value_stack=None,
2715
- ):
2716
- self.parse_conf = parse_conf
2717
- self.lexer = lexer
2718
- self.state_stack = state_stack or [self.parse_conf.start_state]
2719
- self.value_stack = value_stack or []
2720
-
2721
- @property
2722
- def position(self) -> StateT:
2723
- return self.state_stack[-1]
2724
-
2725
- ##
2726
-
2727
- def __eq__(self, other) -> bool:
2728
- if not isinstance(other, ParserState):
2729
- return NotImplemented
2730
- return (
2731
- len(self.state_stack) == len(other.state_stack)
2732
- and self.position == other.position
2733
- )
2734
-
2735
- def __copy__(self):
2736
- return type(self)(
2737
- self.parse_conf,
2738
- self.lexer, ##
2739
-
2740
- copy(self.state_stack),
2741
- deepcopy(self.value_stack),
2742
- )
2743
-
2744
- def copy(self) -> "ParserState[StateT]":
2745
- return copy(self)
2746
-
2747
- def feed_token(self, token: Token, is_end=False) -> Any:
2748
- state_stack = self.state_stack
2749
- value_stack = self.value_stack
2750
- states = self.parse_conf.states
2751
- end_state = self.parse_conf.end_state
2752
- callbacks = self.parse_conf.callbacks
2753
-
2754
- while True:
2755
- state = state_stack[-1]
2756
- try:
2757
- action, arg = states[state][token.type]
2758
- except KeyError:
2759
- expected = {s for s in states[state].keys() if s.isupper()}
2760
- raise UnexpectedToken(
2761
- token, expected, state=self, interactive_parser=None
2762
- )
2763
-
2764
- assert arg != end_state
2765
-
2766
- if action is Shift:
2767
- ##
2768
-
2769
- assert not is_end
2770
- state_stack.append(arg)
2771
- value_stack.append(
2772
- token
2773
- if token.type not in callbacks
2774
- else callbacks[token.type](token)
2775
- )
2776
- return
2777
- else:
2778
- ##
2779
-
2780
- rule = arg
2781
- size = len(rule.expansion)
2782
- if size:
2783
- s = value_stack[-size:]
2784
- del state_stack[-size:]
2785
- del value_stack[-size:]
2786
- else:
2787
- s = []
2788
-
2789
- value = callbacks[rule](s) if callbacks else s
2790
-
2791
- _action, new_state = states[state_stack[-1]][rule.origin.name]
2792
- assert _action is Shift
2793
- state_stack.append(new_state)
2794
- value_stack.append(value)
2795
-
2796
- if is_end and state_stack[-1] == end_state:
2797
- return value_stack[-1]
2798
-
2799
-
2800
-
2801
-
2802
-
2803
- class LALR_Parser(Serialize):
2804
- def __init__(
2805
- self, parser_conf: ParserConf, debug: bool = False, strict: bool = False
2806
- ):
2807
- analysis = LALR_Analyzer(parser_conf, debug=debug, strict=strict)
2808
- analysis.compute_lalr()
2809
- callbacks = parser_conf.callbacks
2810
-
2811
- self._parse_table = analysis.parse_table
2812
- self.parser_conf = parser_conf
2813
- self.parser = _Parser(analysis.parse_table, callbacks, debug)
2814
-
2815
- @classmethod
2816
- def deserialize(cls, data, memo, callbacks, debug=False):
2817
- inst = cls.__new__(cls)
2818
- inst._parse_table = IntParseTable.deserialize(data, memo)
2819
- inst.parser = _Parser(inst._parse_table, callbacks, debug)
2820
- return inst
2821
-
2822
- def serialize(self, memo: Any = None) -> Dict[str, Any]:
2823
- return self._parse_table.serialize(memo)
2824
-
2825
- def parse_interactive(self, lexer: LexerThread, start: str):
2826
- return self.parser.parse(lexer, start, start_interactive=True)
2827
-
2828
- def parse(self, lexer, start, on_error=None):
2829
- try:
2830
- return self.parser.parse(lexer, start)
2831
- except UnexpectedInput as e:
2832
- if on_error is None:
2833
- raise
2834
-
2835
- while True:
2836
- if isinstance(e, UnexpectedCharacters):
2837
- s = e.interactive_parser.lexer_thread.state
2838
- p = s.line_ctr.char_pos
2839
-
2840
- if not on_error(e):
2841
- raise e
2842
-
2843
- if isinstance(e, UnexpectedCharacters):
2844
- ##
2845
-
2846
- if p == s.line_ctr.char_pos:
2847
- s.line_ctr.feed(s.text[p : p + 1])
2848
-
2849
- try:
2850
- return e.interactive_parser.resume_parse()
2851
- except UnexpectedToken as e2:
2852
- if (
2853
- isinstance(e, UnexpectedToken)
2854
- and e.token.type == e2.token.type == "$END"
2855
- and e.interactive_parser == e2.interactive_parser
2856
- ):
2857
- ##
2858
-
2859
- raise e2
2860
- e = e2
2861
- except UnexpectedCharacters as e2:
2862
- e = e2
2863
-
2864
-
2865
- class _Parser:
2866
- parse_table: ParseTableBase
2867
- callbacks: ParserCallbacks
2868
- debug: bool
2869
-
2870
- def __init__(
2871
- self,
2872
- parse_table: ParseTableBase,
2873
- callbacks: ParserCallbacks,
2874
- debug: bool = False,
2875
- ):
2876
- self.parse_table = parse_table
2877
- self.callbacks = callbacks
2878
- self.debug = debug
2879
-
2880
- def parse(
2881
- self,
2882
- lexer: LexerThread,
2883
- start: str,
2884
- value_stack=None,
2885
- state_stack=None,
2886
- start_interactive=False,
2887
- ):
2888
- parse_conf = ParseConf(self.parse_table, self.callbacks, start)
2889
- parser_state = ParserState(parse_conf, lexer, state_stack, value_stack)
2890
- if start_interactive:
2891
- return InteractiveParser(self, parser_state, parser_state.lexer)
2892
- return self.parse_from_state(parser_state)
2893
-
2894
- def parse_from_state(self, state: ParserState, last_token: Optional[Token] = None):
2895
- #--
2896
- try:
2897
- token = last_token
2898
- for token in state.lexer.lex(state):
2899
- assert token is not None
2900
- state.feed_token(token)
2901
-
2902
- end_token = (
2903
- Token.new_borrow_pos("$END", "", token)
2904
- if token
2905
- else Token("$END", "", 0, 1, 1)
2906
- )
2907
- return state.feed_token(end_token, True)
2908
- except UnexpectedInput as e:
2909
- try:
2910
- e.interactive_parser = InteractiveParser(self, state, state.lexer)
2911
- except NameError:
2912
- pass
2913
- raise e
2914
- except Exception as e:
2915
- if self.debug:
2916
- print("")
2917
- print("STATE STACK DUMP")
2918
- print("----------------")
2919
- for i, s in enumerate(state.state_stack):
2920
- print("%d)" % i, s)
2921
- print("")
2922
-
2923
- raise
2924
-
2925
-
2926
-
2927
-
2928
-
2929
- class InteractiveParser:
2930
- #--
2931
-
2932
- def __init__(self, parser, parser_state, lexer_thread: LexerThread):
2933
- self.parser = parser
2934
- self.parser_state = parser_state
2935
- self.lexer_thread = lexer_thread
2936
- self.result = None
2937
-
2938
- @property
2939
- def lexer_state(self) -> LexerThread:
2940
- warnings.warn(
2941
- "lexer_state will be removed in subsequent releases. Use lexer_thread instead.",
2942
- DeprecationWarning,
2943
- )
2944
- return self.lexer_thread
2945
-
2946
- def feed_token(self, token: Token):
2947
- #--
2948
- return self.parser_state.feed_token(token, token.type == "$END")
2949
-
2950
- def iter_parse(self) -> Iterator[Token]:
2951
- #--
2952
- for token in self.lexer_thread.lex(self.parser_state):
2953
- yield token
2954
- self.result = self.feed_token(token)
2955
-
2956
- def exhaust_lexer(self) -> List[Token]:
2957
- #--
2958
- return list(self.iter_parse())
2959
-
2960
- def feed_eof(self, last_token=None):
2961
- #--
2962
- eof = (
2963
- Token.new_borrow_pos("$END", "", last_token)
2964
- if last_token is not None
2965
- else self.lexer_thread._Token("$END", "", 0, 1, 1)
2966
- )
2967
- return self.feed_token(eof)
2968
-
2969
- def __copy__(self):
2970
- #--
2971
- return type(self)(
2972
- self.parser,
2973
- copy(self.parser_state),
2974
- copy(self.lexer_thread),
2975
- )
2976
-
2977
- def copy(self):
2978
- return copy(self)
2979
-
2980
- def __eq__(self, other):
2981
- if not isinstance(other, InteractiveParser):
2982
- return False
2983
-
2984
- return (
2985
- self.parser_state == other.parser_state
2986
- and self.lexer_thread == other.lexer_thread
2987
- )
2988
-
2989
- def as_immutable(self):
2990
- #--
2991
- p = copy(self)
2992
- return ImmutableInteractiveParser(p.parser, p.parser_state, p.lexer_thread)
2993
-
2994
- def pretty(self):
2995
- #--
2996
- out = ["Parser choices:"]
2997
- for k, v in self.choices().items():
2998
- out.append("\t- %s -> %r" % (k, v))
2999
- out.append("stack size: %s" % len(self.parser_state.state_stack))
3000
- return "\n".join(out)
3001
-
3002
- def choices(self):
3003
- #--
3004
- return self.parser_state.parse_conf.parse_table.states[
3005
- self.parser_state.position
3006
- ]
3007
-
3008
- def accepts(self):
3009
- #--
3010
- accepts = set()
3011
- conf_no_callbacks = copy(self.parser_state.parse_conf)
3012
- ##
3013
-
3014
- ##
3015
-
3016
- conf_no_callbacks.callbacks = {}
3017
- for t in self.choices():
3018
- if t.isupper(): ##
3019
-
3020
- new_cursor = copy(self)
3021
- new_cursor.parser_state.parse_conf = conf_no_callbacks
3022
- try:
3023
- new_cursor.feed_token(self.lexer_thread._Token(t, ""))
3024
- except UnexpectedToken:
3025
- pass
3026
- else:
3027
- accepts.add(t)
3028
- return accepts
3029
-
3030
- def resume_parse(self):
3031
- #--
3032
- return self.parser.parse_from_state(
3033
- self.parser_state, last_token=self.lexer_thread.state.last_token
3034
- )
3035
-
3036
-
3037
- class ImmutableInteractiveParser(InteractiveParser):
3038
- #--
3039
-
3040
- result = None
3041
-
3042
- def __hash__(self):
3043
- return hash((self.parser_state, self.lexer_thread))
3044
-
3045
- def feed_token(self, token):
3046
- c = copy(self)
3047
- c.result = InteractiveParser.feed_token(c, token)
3048
- return c
3049
-
3050
- def exhaust_lexer(self):
3051
- #--
3052
- cursor = self.as_mutable()
3053
- cursor.exhaust_lexer()
3054
- return cursor.as_immutable()
3055
-
3056
- def as_mutable(self):
3057
- #--
3058
- p = copy(self)
3059
- return InteractiveParser(p.parser, p.parser_state, p.lexer_thread)
3060
-
3061
-
3062
-
3063
-
3064
-
3065
- def _wrap_lexer(lexer_class):
3066
- future_interface = getattr(lexer_class, "__future_interface__", False)
3067
- if future_interface:
3068
- return lexer_class
3069
- else:
3070
-
3071
- class CustomLexerWrapper(Lexer):
3072
- def __init__(self, lexer_conf):
3073
- self.lexer = lexer_class(lexer_conf)
3074
-
3075
- def lex(self, lexer_state, parser_state):
3076
- return self.lexer.lex(lexer_state.text)
3077
-
3078
- return CustomLexerWrapper
3079
-
3080
-
3081
- def _deserialize_parsing_frontend(data, memo, lexer_conf, callbacks, options):
3082
- parser_conf = ParserConf.deserialize(data["parser_conf"], memo)
3083
- cls = (options and options._plugins.get("LALR_Parser")) or LALR_Parser
3084
- parser = cls.deserialize(data["parser"], memo, callbacks, options.debug)
3085
- parser_conf.callbacks = callbacks
3086
- return ParsingFrontend(lexer_conf, parser_conf, options, parser=parser)
3087
-
3088
-
3089
- _parser_creators: "Dict[str, Callable[[LexerConf, Any, Any], Any]]" = {}
3090
-
3091
-
3092
- class ParsingFrontend(Serialize):
3093
- __serialize_fields__ = "lexer_conf", "parser_conf", "parser"
3094
-
3095
- lexer_conf: LexerConf
3096
- parser_conf: ParserConf
3097
- options: Any
3098
-
3099
- def __init__(
3100
- self, lexer_conf: LexerConf, parser_conf: ParserConf, options, parser=None
3101
- ):
3102
- self.parser_conf = parser_conf
3103
- self.lexer_conf = lexer_conf
3104
- self.options = options
3105
-
3106
- ##
3107
-
3108
- if parser: ##
3109
-
3110
- self.parser = parser
3111
- else:
3112
- create_parser = _parser_creators.get(parser_conf.parser_type)
3113
- assert (
3114
- create_parser is not None
3115
- ), "{} is not supported in standalone mode".format(parser_conf.parser_type)
3116
- self.parser = create_parser(lexer_conf, parser_conf, options)
3117
-
3118
- ##
3119
-
3120
- lexer_type = lexer_conf.lexer_type
3121
- self.skip_lexer = False
3122
- if lexer_type in ("dynamic", "dynamic_complete"):
3123
- assert lexer_conf.postlex is None
3124
- self.skip_lexer = True
3125
- return
3126
-
3127
- if isinstance(lexer_type, type):
3128
- assert issubclass(lexer_type, Lexer)
3129
- self.lexer = _wrap_lexer(lexer_type)(lexer_conf)
3130
- elif isinstance(lexer_type, str):
3131
- create_lexer = {
3132
- "basic": create_basic_lexer,
3133
- "contextual": create_contextual_lexer,
3134
- }[lexer_type]
3135
- self.lexer = create_lexer(
3136
- lexer_conf, self.parser, lexer_conf.postlex, options
3137
- )
3138
- else:
3139
- raise TypeError("Bad value for lexer_type: {lexer_type}")
3140
-
3141
- if lexer_conf.postlex:
3142
- self.lexer = PostLexConnector(self.lexer, lexer_conf.postlex)
3143
-
3144
- def _verify_start(self, start=None):
3145
- if start is None:
3146
- start_decls = self.parser_conf.start
3147
- if len(start_decls) > 1:
3148
- raise ConfigurationError(
3149
- "Lark initialized with more than 1 possible start rule. Must specify which start rule to parse",
3150
- start_decls,
3151
- )
3152
- (start,) = start_decls
3153
- elif start not in self.parser_conf.start:
3154
- raise ConfigurationError(
3155
- "Unknown start rule %s. Must be one of %r"
3156
- % (start, self.parser_conf.start)
3157
- )
3158
- return start
3159
-
3160
- def _make_lexer_thread(self, text: str) -> Union[str, LexerThread]:
3161
- cls = (self.options and self.options._plugins.get("LexerThread")) or LexerThread
3162
- return text if self.skip_lexer else cls.from_text(self.lexer, text)
3163
-
3164
- def parse(self, text: str, start=None, on_error=None):
3165
- chosen_start = self._verify_start(start)
3166
- kw = {} if on_error is None else {"on_error": on_error}
3167
- stream = self._make_lexer_thread(text)
3168
- return self.parser.parse(stream, chosen_start, **kw)
3169
-
3170
- def parse_interactive(self, text: Optional[str] = None, start=None):
3171
- ##
3172
-
3173
- ##
3174
-
3175
- chosen_start = self._verify_start(start)
3176
- if self.parser_conf.parser_type != "lalr":
3177
- raise ConfigurationError(
3178
- "parse_interactive() currently only works with parser='lalr' "
3179
- )
3180
- stream = self._make_lexer_thread(text) ##
3181
-
3182
- return self.parser.parse_interactive(stream, chosen_start)
3183
-
3184
-
3185
- def _validate_frontend_args(parser, lexer) -> None:
3186
- assert_config(parser, ("lalr", "earley", "cyk"))
3187
- if not isinstance(lexer, type): ##
3188
-
3189
- expected = {
3190
- "lalr": ("basic", "contextual"),
3191
- "earley": ("basic", "dynamic", "dynamic_complete"),
3192
- "cyk": ("basic",),
3193
- }[parser]
3194
- assert_config(
3195
- lexer,
3196
- expected,
3197
- "Parser %r does not support lexer %%r, expected one of %%s" % parser,
3198
- )
3199
-
3200
-
3201
- def _get_lexer_callbacks(transformer, terminals):
3202
- result = {}
3203
- for terminal in terminals:
3204
- callback = getattr(transformer, terminal.name, None)
3205
- if callback is not None:
3206
- result[terminal.name] = callback
3207
- return result
3208
-
3209
-
3210
- class PostLexConnector:
3211
- def __init__(self, lexer, postlexer):
3212
- self.lexer = lexer
3213
- self.postlexer = postlexer
3214
-
3215
- def lex(self, lexer_state, parser_state):
3216
- i = self.lexer.lex(lexer_state, parser_state)
3217
- return self.postlexer.process(i)
3218
-
3219
-
3220
- def create_basic_lexer(lexer_conf, parser, postlex, options) -> BasicLexer:
3221
- cls = (options and options._plugins.get("BasicLexer")) or BasicLexer
3222
- return cls(lexer_conf)
3223
-
3224
-
3225
- def create_contextual_lexer(
3226
- lexer_conf: LexerConf, parser, postlex, options
3227
- ) -> ContextualLexer:
3228
- cls = (options and options._plugins.get("ContextualLexer")) or ContextualLexer
3229
- parse_table: ParseTableBase[int] = parser._parse_table
3230
- states: Dict[int, Collection[str]] = {
3231
- idx: list(t.keys()) for idx, t in parse_table.states.items()
3232
- }
3233
- always_accept: Collection[str] = postlex.always_accept if postlex else ()
3234
- return cls(lexer_conf, states, always_accept=always_accept)
3235
-
3236
-
3237
- def create_lalr_parser(
3238
- lexer_conf: LexerConf, parser_conf: ParserConf, options=None
3239
- ) -> LALR_Parser:
3240
- debug = options.debug if options else False
3241
- strict = options.strict if options else False
3242
- cls = (options and options._plugins.get("LALR_Parser")) or LALR_Parser
3243
- return cls(parser_conf, debug=debug, strict=strict)
3244
-
3245
-
3246
- _parser_creators["lalr"] = create_lalr_parser
3247
-
3248
-
3249
-
3250
-
3251
- class PostLex(ABC):
3252
- @abstractmethod
3253
- def process(self, stream: Iterator[Token]) -> Iterator[Token]:
3254
- return stream
3255
-
3256
- always_accept: Iterable[str] = ()
3257
-
3258
-
3259
- class LarkOptions(Serialize):
3260
- #--
3261
-
3262
- start: List[str]
3263
- debug: bool
3264
- strict: bool
3265
- transformer: "Optional[Transformer]"
3266
- propagate_positions: Union[bool, str]
3267
- maybe_placeholders: bool
3268
- cache: Union[bool, str]
3269
- regex: bool
3270
- g_regex_flags: int
3271
- keep_all_tokens: bool
3272
- tree_class: Optional[Callable[[str, List], Any]]
3273
- parser: _ParserArgType
3274
- lexer: _LexerArgType
3275
- ambiguity: 'Literal["auto", "resolve", "explicit", "forest"]'
3276
- postlex: Optional[PostLex]
3277
- priority: 'Optional[Literal["auto", "normal", "invert"]]'
3278
- lexer_callbacks: Dict[str, Callable[[Token], Token]]
3279
- use_bytes: bool
3280
- ordered_sets: bool
3281
- edit_terminals: Optional[Callable[[TerminalDef], TerminalDef]]
3282
- import_paths: "List[Union[str, Callable[[Union[None, str, PackageResource], str], Tuple[str, str]]]]"
3283
- source_path: Optional[str]
3284
-
3285
- OPTIONS_DOC = r"""
3286
- **=== General Options ===**
3287
-
3288
- start
3289
- The start symbol. Either a string, or a list of strings for multiple possible starts (Default: "start")
3290
- debug
3291
- Display debug information and extra warnings. Use only when debugging (Default: ``False``)
3292
- When used with Earley, it generates a forest graph as "sppf.png", if 'dot' is installed.
3293
- strict
3294
- Throw an exception on any potential ambiguity, including shift/reduce conflicts, and regex collisions.
3295
- transformer
3296
- Applies the transformer to every parse tree (equivalent to applying it after the parse, but faster)
3297
- propagate_positions
3298
- Propagates positional attributes into the 'meta' attribute of all tree branches.
3299
- Sets attributes: (line, column, end_line, end_column, start_pos, end_pos,
3300
- container_line, container_column, container_end_line, container_end_column)
3301
- Accepts ``False``, ``True``, or a callable, which will filter which nodes to ignore when propagating.
3302
- maybe_placeholders
3303
- When ``True``, the ``[]`` operator returns ``None`` when not matched.
3304
- When ``False``, ``[]`` behaves like the ``?`` operator, and returns no value at all.
3305
- (default= ``True``)
3306
- cache
3307
- Cache the results of the Lark grammar analysis, for x2 to x3 faster loading. LALR only for now.
3308
-
3309
- - When ``False``, does nothing (default)
3310
- - When ``True``, caches to a temporary file in the local directory
3311
- - When given a string, caches to the path pointed by the string
3312
- regex
3313
- When True, uses the ``regex`` module instead of the stdlib ``re``.
3314
- g_regex_flags
3315
- Flags that are applied to all terminals (both regex and strings)
3316
- keep_all_tokens
3317
- Prevent the tree builder from automagically removing "punctuation" tokens (Default: ``False``)
3318
- tree_class
3319
- Lark will produce trees comprised of instances of this class instead of the default ``lark.Tree``.
3320
-
3321
- **=== Algorithm Options ===**
3322
-
3323
- parser
3324
- Decides which parser engine to use. Accepts "earley" or "lalr". (Default: "earley").
3325
- (there is also a "cyk" option for legacy)
3326
- lexer
3327
- Decides whether or not to use a lexer stage
3328
-
3329
- - "auto" (default): Choose for me based on the parser
3330
- - "basic": Use a basic lexer
3331
- - "contextual": Stronger lexer (only works with parser="lalr")
3332
- - "dynamic": Flexible and powerful (only with parser="earley")
3333
- - "dynamic_complete": Same as dynamic, but tries *every* variation of tokenizing possible.
3334
- ambiguity
3335
- Decides how to handle ambiguity in the parse. Only relevant if parser="earley"
3336
-
3337
- - "resolve": The parser will automatically choose the simplest derivation
3338
- (it chooses consistently: greedy for tokens, non-greedy for rules)
3339
- - "explicit": The parser will return all derivations wrapped in "_ambig" tree nodes (i.e. a forest).
3340
- - "forest": The parser will return the root of the shared packed parse forest.
3341
-
3342
- **=== Misc. / Domain Specific Options ===**
3343
-
3344
- postlex
3345
- Lexer post-processing (Default: ``None``) Only works with the basic and contextual lexers.
3346
- priority
3347
- How priorities should be evaluated - "auto", ``None``, "normal", "invert" (Default: "auto")
3348
- lexer_callbacks
3349
- Dictionary of callbacks for the lexer. May alter tokens during lexing. Use with caution.
3350
- use_bytes
3351
- Accept an input of type ``bytes`` instead of ``str``.
3352
- ordered_sets
3353
- Should Earley use ordered-sets to achieve stable output (~10% slower than regular sets. Default: True)
3354
- edit_terminals
3355
- A callback for editing the terminals before parse.
3356
- import_paths
3357
- A List of either paths or loader functions to specify from where grammars are imported
3358
- source_path
3359
- Override the source of from where the grammar was loaded. Useful for relative imports and unconventional grammar loading
3360
- **=== End of Options ===**
3361
- """
3362
- if __doc__:
3363
- __doc__ += OPTIONS_DOC
3364
-
3365
- ##
3366
-
3367
- ##
3368
-
3369
- ##
3370
-
3371
- ##
3372
-
3373
- ##
3374
-
3375
- ##
3376
-
3377
- _defaults: Dict[str, Any] = {
3378
- "debug": False,
3379
- "strict": False,
3380
- "keep_all_tokens": False,
3381
- "tree_class": None,
3382
- "cache": False,
3383
- "postlex": None,
3384
- "parser": "earley",
3385
- "lexer": "auto",
3386
- "transformer": None,
3387
- "start": "start",
3388
- "priority": "auto",
3389
- "ambiguity": "auto",
3390
- "regex": False,
3391
- "propagate_positions": False,
3392
- "lexer_callbacks": {},
3393
- "maybe_placeholders": True,
3394
- "edit_terminals": None,
3395
- "g_regex_flags": 0,
3396
- "use_bytes": False,
3397
- "ordered_sets": True,
3398
- "import_paths": [],
3399
- "source_path": None,
3400
- "_plugins": {},
3401
- }
3402
-
3403
- def __init__(self, options_dict: Dict[str, Any]) -> None:
3404
- o = dict(options_dict)
3405
-
3406
- options = {}
3407
- for name, default in self._defaults.items():
3408
- if name in o:
3409
- value = o.pop(name)
3410
- if isinstance(default, bool) and name not in (
3411
- "cache",
3412
- "use_bytes",
3413
- "propagate_positions",
3414
- ):
3415
- value = bool(value)
3416
- else:
3417
- value = default
3418
-
3419
- options[name] = value
3420
-
3421
- if isinstance(options["start"], str):
3422
- options["start"] = [options["start"]]
3423
-
3424
- self.__dict__["options"] = options
3425
-
3426
- assert_config(self.parser, ("earley", "lalr", "cyk", None))
3427
-
3428
- if self.parser == "earley" and self.transformer:
3429
- raise ConfigurationError(
3430
- "Cannot specify an embedded transformer when using the Earley algorithm. "
3431
- "Please use your transformer on the resulting parse tree, or use a different algorithm (i.e. LALR)"
3432
- )
3433
-
3434
- if o:
3435
- raise ConfigurationError("Unknown options: %s" % o.keys())
3436
-
3437
- def __getattr__(self, name: str) -> Any:
3438
- try:
3439
- return self.__dict__["options"][name]
3440
- except KeyError as e:
3441
- raise AttributeError(e)
3442
-
3443
- def __setattr__(self, name: str, value: str) -> None:
3444
- assert_config(
3445
- name, self.options.keys(), "%r isn't a valid option. Expected one of: %s"
3446
- )
3447
- self.options[name] = value
3448
-
3449
- def serialize(self, memo=None) -> Dict[str, Any]:
3450
- return self.options
3451
-
3452
- @classmethod
3453
- def deserialize(
3454
- cls, data: Dict[str, Any], memo: Dict[int, Union[TerminalDef, Rule]]
3455
- ) -> "LarkOptions":
3456
- return cls(data)
3457
-
3458
-
3459
- ##
3460
-
3461
- ##
3462
-
3463
- _LOAD_ALLOWED_OPTIONS = {
3464
- "postlex",
3465
- "transformer",
3466
- "lexer_callbacks",
3467
- "use_bytes",
3468
- "debug",
3469
- "g_regex_flags",
3470
- "regex",
3471
- "propagate_positions",
3472
- "tree_class",
3473
- "_plugins",
3474
- }
3475
-
3476
- _VALID_PRIORITY_OPTIONS = ("auto", "normal", "invert", None)
3477
- _VALID_AMBIGUITY_OPTIONS = ("auto", "resolve", "explicit", "forest")
3478
-
3479
-
3480
- _T = TypeVar("_T", bound="Lark")
3481
-
3482
-
3483
- class Lark(Serialize):
3484
- #--
3485
-
3486
- source_path: str
3487
- source_grammar: str
3488
- grammar: "Grammar"
3489
- options: LarkOptions
3490
- lexer: Lexer
3491
- parser: "ParsingFrontend"
3492
- terminals: Collection[TerminalDef]
3493
-
3494
- def __init__(self, grammar: "Union[Grammar, str, IO[str]]", **options) -> None:
3495
- self.options = LarkOptions(options)
3496
- re_module: types.ModuleType
3497
-
3498
- ##
3499
-
3500
- use_regex = self.options.regex
3501
- if use_regex:
3502
- if _has_regex:
3503
- re_module = regex
3504
- else:
3505
- raise ImportError(
3506
- "`regex` module must be installed if calling `Lark(regex=True)`."
3507
- )
3508
- else:
3509
- re_module = re
3510
-
3511
- ##
3512
-
3513
- if self.options.source_path is None:
3514
- try:
3515
- self.source_path = grammar.name ##
3516
-
3517
- except AttributeError:
3518
- self.source_path = "<string>"
3519
- else:
3520
- self.source_path = self.options.source_path
3521
-
3522
- ##
3523
-
3524
- try:
3525
- read = grammar.read ##
3526
-
3527
- except AttributeError:
3528
- pass
3529
- else:
3530
- grammar = read()
3531
-
3532
- cache_fn = None
3533
- cache_sha256 = None
3534
- if isinstance(grammar, str):
3535
- self.source_grammar = grammar
3536
- if self.options.use_bytes:
3537
- if not isascii(grammar):
3538
- raise ConfigurationError(
3539
- "Grammar must be ascii only, when use_bytes=True"
3540
- )
3541
-
3542
- if self.options.cache:
3543
- if self.options.parser != "lalr":
3544
- raise ConfigurationError(
3545
- "cache only works with parser='lalr' for now"
3546
- )
3547
-
3548
- unhashable = (
3549
- "transformer",
3550
- "postlex",
3551
- "lexer_callbacks",
3552
- "edit_terminals",
3553
- "_plugins",
3554
- )
3555
- options_str = "".join(
3556
- k + str(v) for k, v in options.items() if k not in unhashable
3557
- )
3558
- from . import __version__
3559
-
3560
- s = grammar + options_str + __version__ + str(sys.version_info[:2])
3561
- cache_sha256 = sha256_digest(s)
3562
-
3563
- if isinstance(self.options.cache, str):
3564
- cache_fn = self.options.cache
3565
- else:
3566
- if self.options.cache is not True:
3567
- raise ConfigurationError("cache argument must be bool or str")
3568
-
3569
- try:
3570
- username = getpass.getuser()
3571
- except Exception:
3572
- ##
3573
-
3574
- ##
3575
-
3576
- ##
3577
-
3578
- username = "unknown"
3579
-
3580
- cache_fn = (
3581
- tempfile.gettempdir()
3582
- + "/.lark_cache_%s_%s_%s_%s.tmp"
3583
- % (username, cache_sha256, *sys.version_info[:2])
3584
- )
3585
-
3586
- old_options = self.options
3587
- try:
3588
- with FS.open(cache_fn, "rb") as f:
3589
- logger.debug("Loading grammar from cache: %s", cache_fn)
3590
- ##
3591
-
3592
- for name in set(options) - _LOAD_ALLOWED_OPTIONS:
3593
- del options[name]
3594
- file_sha256 = f.readline().rstrip(b"\n")
3595
- cached_used_files = pickle.load(f)
3596
- if file_sha256 == cache_sha256.encode(
3597
- "utf8"
3598
- ) and verify_used_files(cached_used_files):
3599
- cached_parser_data = pickle.load(f)
3600
- self._load(cached_parser_data, **options)
3601
- return
3602
- except FileNotFoundError:
3603
- ##
3604
-
3605
- pass
3606
- except (
3607
- Exception
3608
- ): ##
3609
-
3610
- logger.exception(
3611
- "Failed to load Lark from cache: %r. We will try to carry on.",
3612
- cache_fn,
3613
- )
3614
-
3615
- ##
3616
-
3617
- ##
3618
-
3619
- self.options = old_options
3620
-
3621
- ##
3622
-
3623
- self.grammar, used_files = load_grammar(
3624
- grammar,
3625
- self.source_path,
3626
- self.options.import_paths,
3627
- self.options.keep_all_tokens,
3628
- )
3629
- else:
3630
- assert isinstance(grammar, Grammar)
3631
- self.grammar = grammar
3632
-
3633
- if self.options.lexer == "auto":
3634
- if self.options.parser == "lalr":
3635
- self.options.lexer = "contextual"
3636
- elif self.options.parser == "earley":
3637
- if self.options.postlex is not None:
3638
- logger.info(
3639
- "postlex can't be used with the dynamic lexer, so we use 'basic' instead. "
3640
- "Consider using lalr with contextual instead of earley"
3641
- )
3642
- self.options.lexer = "basic"
3643
- else:
3644
- self.options.lexer = "dynamic"
3645
- elif self.options.parser == "cyk":
3646
- self.options.lexer = "basic"
3647
- else:
3648
- assert False, self.options.parser
3649
- lexer = self.options.lexer
3650
- if isinstance(lexer, type):
3651
- assert issubclass(
3652
- lexer, Lexer
3653
- ) ##
3654
-
3655
- else:
3656
- assert_config(lexer, ("basic", "contextual", "dynamic", "dynamic_complete"))
3657
- if self.options.postlex is not None and "dynamic" in lexer:
3658
- raise ConfigurationError(
3659
- "Can't use postlex with a dynamic lexer. Use basic or contextual instead"
3660
- )
3661
-
3662
- if self.options.ambiguity == "auto":
3663
- if self.options.parser == "earley":
3664
- self.options.ambiguity = "resolve"
3665
- else:
3666
- assert_config(
3667
- self.options.parser,
3668
- ("earley", "cyk"),
3669
- "%r doesn't support disambiguation. Use one of these parsers instead: %s",
3670
- )
3671
-
3672
- if self.options.priority == "auto":
3673
- self.options.priority = "normal"
3674
-
3675
- if self.options.priority not in _VALID_PRIORITY_OPTIONS:
3676
- raise ConfigurationError(
3677
- "invalid priority option: %r. Must be one of %r"
3678
- % (self.options.priority, _VALID_PRIORITY_OPTIONS)
3679
- )
3680
- if self.options.ambiguity not in _VALID_AMBIGUITY_OPTIONS:
3681
- raise ConfigurationError(
3682
- "invalid ambiguity option: %r. Must be one of %r"
3683
- % (self.options.ambiguity, _VALID_AMBIGUITY_OPTIONS)
3684
- )
3685
-
3686
- if self.options.parser is None:
3687
- terminals_to_keep = "*"
3688
- elif self.options.postlex is not None:
3689
- terminals_to_keep = set(self.options.postlex.always_accept)
3690
- else:
3691
- terminals_to_keep = set()
3692
-
3693
- ##
3694
-
3695
- self.terminals, self.rules, self.ignore_tokens = self.grammar.compile(
3696
- self.options.start, terminals_to_keep
3697
- )
3698
-
3699
- if self.options.edit_terminals:
3700
- for t in self.terminals:
3701
- self.options.edit_terminals(t)
3702
-
3703
- self._terminals_dict = {t.name: t for t in self.terminals}
3704
-
3705
- ##
3706
-
3707
- if self.options.priority == "invert":
3708
- for rule in self.rules:
3709
- if rule.options.priority is not None:
3710
- rule.options.priority = -rule.options.priority
3711
- for term in self.terminals:
3712
- term.priority = -term.priority
3713
- ##
3714
-
3715
- ##
3716
-
3717
- ##
3718
-
3719
- elif self.options.priority is None:
3720
- for rule in self.rules:
3721
- if rule.options.priority is not None:
3722
- rule.options.priority = None
3723
- for term in self.terminals:
3724
- term.priority = 0
3725
-
3726
- ##
3727
-
3728
- self.lexer_conf = LexerConf(
3729
- self.terminals,
3730
- re_module,
3731
- self.ignore_tokens,
3732
- self.options.postlex,
3733
- self.options.lexer_callbacks,
3734
- self.options.g_regex_flags,
3735
- use_bytes=self.options.use_bytes,
3736
- strict=self.options.strict,
3737
- )
3738
-
3739
- if self.options.parser:
3740
- self.parser = self._build_parser()
3741
- elif lexer:
3742
- self.lexer = self._build_lexer()
3743
-
3744
- if cache_fn:
3745
- logger.debug("Saving grammar to cache: %s", cache_fn)
3746
- try:
3747
- with FS.open(cache_fn, "wb") as f:
3748
- assert cache_sha256 is not None
3749
- f.write(cache_sha256.encode("utf8") + b"\n")
3750
- pickle.dump(used_files, f)
3751
- self.save(f, _LOAD_ALLOWED_OPTIONS)
3752
- except IOError as e:
3753
- logger.exception("Failed to save Lark to cache: %r.", cache_fn, e)
3754
-
3755
- if __doc__:
3756
- __doc__ += "\n\n" + LarkOptions.OPTIONS_DOC
3757
-
3758
- __serialize_fields__ = "parser", "rules", "options"
3759
-
3760
- def _build_lexer(self, dont_ignore: bool = False) -> BasicLexer:
3761
- lexer_conf = self.lexer_conf
3762
- if dont_ignore:
3763
- from copy import copy
3764
-
3765
- lexer_conf = copy(lexer_conf)
3766
- lexer_conf.ignore = ()
3767
- return BasicLexer(lexer_conf)
3768
-
3769
- def _prepare_callbacks(self) -> None:
3770
- self._callbacks = {}
3771
- ##
3772
-
3773
- if self.options.ambiguity != "forest":
3774
- self._parse_tree_builder = ParseTreeBuilder(
3775
- self.rules,
3776
- self.options.tree_class or Tree,
3777
- self.options.propagate_positions,
3778
- self.options.parser != "lalr" and self.options.ambiguity == "explicit",
3779
- self.options.maybe_placeholders,
3780
- )
3781
- self._callbacks = self._parse_tree_builder.create_callback(
3782
- self.options.transformer
3783
- )
3784
- self._callbacks.update(
3785
- _get_lexer_callbacks(self.options.transformer, self.terminals)
3786
- )
3787
-
3788
- def _build_parser(self) -> "ParsingFrontend":
3789
- self._prepare_callbacks()
3790
- _validate_frontend_args(self.options.parser, self.options.lexer)
3791
- parser_conf = ParserConf(self.rules, self._callbacks, self.options.start)
3792
- return _construct_parsing_frontend(
3793
- self.options.parser,
3794
- self.options.lexer,
3795
- self.lexer_conf,
3796
- parser_conf,
3797
- options=self.options,
3798
- )
3799
-
3800
- def save(self, f, exclude_options: Collection[str] = ()) -> None:
3801
- #--
3802
- if self.options.parser != "lalr":
3803
- raise NotImplementedError(
3804
- "Lark.save() is only implemented for the LALR(1) parser."
3805
- )
3806
- data, m = self.memo_serialize([TerminalDef, Rule])
3807
- if exclude_options:
3808
- data["options"] = {
3809
- n: v for n, v in data["options"].items() if n not in exclude_options
3810
- }
3811
- pickle.dump({"data": data, "memo": m}, f, protocol=pickle.HIGHEST_PROTOCOL)
3812
-
3813
- @classmethod
3814
- def load(cls: Type[_T], f) -> _T:
3815
- #--
3816
- inst = cls.__new__(cls)
3817
- return inst._load(f)
3818
-
3819
- def _deserialize_lexer_conf(
3820
- self,
3821
- data: Dict[str, Any],
3822
- memo: Dict[int, Union[TerminalDef, Rule]],
3823
- options: LarkOptions,
3824
- ) -> LexerConf:
3825
- lexer_conf = LexerConf.deserialize(data["lexer_conf"], memo)
3826
- lexer_conf.callbacks = options.lexer_callbacks or {}
3827
- lexer_conf.re_module = regex if options.regex else re
3828
- lexer_conf.use_bytes = options.use_bytes
3829
- lexer_conf.g_regex_flags = options.g_regex_flags
3830
- lexer_conf.skip_validation = True
3831
- lexer_conf.postlex = options.postlex
3832
- return lexer_conf
3833
-
3834
- def _load(self: _T, f: Any, **kwargs) -> _T:
3835
- if isinstance(f, dict):
3836
- d = f
3837
- else:
3838
- d = pickle.load(f)
3839
- memo_json = d["memo"]
3840
- data = d["data"]
3841
-
3842
- assert memo_json
3843
- memo = SerializeMemoizer.deserialize(
3844
- memo_json, {"Rule": Rule, "TerminalDef": TerminalDef}, {}
3845
- )
3846
- options = dict(data["options"])
3847
- if (set(kwargs) - _LOAD_ALLOWED_OPTIONS) & set(LarkOptions._defaults):
3848
- raise ConfigurationError(
3849
- "Some options are not allowed when loading a Parser: {}".format(
3850
- set(kwargs) - _LOAD_ALLOWED_OPTIONS
3851
- )
3852
- )
3853
- options.update(kwargs)
3854
- self.options = LarkOptions.deserialize(options, memo)
3855
- self.rules = [Rule.deserialize(r, memo) for r in data["rules"]]
3856
- self.source_path = "<deserialized>"
3857
- _validate_frontend_args(self.options.parser, self.options.lexer)
3858
- self.lexer_conf = self._deserialize_lexer_conf(
3859
- data["parser"], memo, self.options
3860
- )
3861
- self.terminals = self.lexer_conf.terminals
3862
- self._prepare_callbacks()
3863
- self._terminals_dict = {t.name: t for t in self.terminals}
3864
- self.parser = _deserialize_parsing_frontend(
3865
- data["parser"],
3866
- memo,
3867
- self.lexer_conf,
3868
- self._callbacks,
3869
- self.options, ##
3870
-
3871
- )
3872
- return self
3873
-
3874
- @classmethod
3875
- def _load_from_dict(cls, data, memo, **kwargs):
3876
- inst = cls.__new__(cls)
3877
- return inst._load({"data": data, "memo": memo}, **kwargs)
3878
-
3879
- @classmethod
3880
- def open(
3881
- cls: Type[_T], grammar_filename: str, rel_to: Optional[str] = None, **options
3882
- ) -> _T:
3883
- #--
3884
- if rel_to:
3885
- basepath = os.path.dirname(rel_to)
3886
- grammar_filename = os.path.join(basepath, grammar_filename)
3887
- with open(grammar_filename, encoding="utf8") as f:
3888
- return cls(f, **options)
3889
-
3890
- @classmethod
3891
- def open_from_package(
3892
- cls: Type[_T],
3893
- package: str,
3894
- grammar_path: str,
3895
- search_paths: "Sequence[str]" = [""],
3896
- **options
3897
- ) -> _T:
3898
- #--
3899
- package_loader = FromPackageLoader(package, search_paths)
3900
- full_path, text = package_loader(None, grammar_path)
3901
- options.setdefault("source_path", full_path)
3902
- options.setdefault("import_paths", [])
3903
- options["import_paths"].append(package_loader)
3904
- return cls(text, **options)
3905
-
3906
- def __repr__(self):
3907
- return "Lark(open(%r), parser=%r, lexer=%r, ...)" % (
3908
- self.source_path,
3909
- self.options.parser,
3910
- self.options.lexer,
3911
- )
3912
-
3913
- def lex(self, text: str, dont_ignore: bool = False) -> Iterator[Token]:
3914
- #--
3915
- lexer: Lexer
3916
- if not hasattr(self, "lexer") or dont_ignore:
3917
- lexer = self._build_lexer(dont_ignore)
3918
- else:
3919
- lexer = self.lexer
3920
- lexer_thread = LexerThread.from_text(lexer, text)
3921
- stream = lexer_thread.lex(None)
3922
- if self.options.postlex:
3923
- return self.options.postlex.process(stream)
3924
- return stream
3925
-
3926
- def get_terminal(self, name: str) -> TerminalDef:
3927
- #--
3928
- return self._terminals_dict[name]
3929
-
3930
- def parse_interactive(
3931
- self, text: Optional[str] = None, start: Optional[str] = None
3932
- ) -> "InteractiveParser":
3933
- #--
3934
- return self.parser.parse_interactive(text, start=start)
3935
-
3936
- def parse(
3937
- self,
3938
- text: str,
3939
- start: Optional[str] = None,
3940
- on_error: "Optional[Callable[[UnexpectedInput], bool]]" = None,
3941
- ) -> "ParseTree":
3942
- #--
3943
- return self.parser.parse(text, start=start, on_error=on_error)
3944
-
3945
-
3946
-
3947
-
3948
-
3949
- class DedentError(LarkError):
3950
- pass
3951
-
3952
-
3953
- class Indenter(PostLex, ABC):
3954
- paren_level: int
3955
- indent_level: List[int]
3956
-
3957
- def __init__(self) -> None:
3958
- self.paren_level = 0
3959
- self.indent_level = [0]
3960
- assert self.tab_len > 0
3961
-
3962
- def handle_NL(self, token: Token) -> Iterator[Token]:
3963
- if self.paren_level > 0:
3964
- return
3965
-
3966
- yield token
3967
-
3968
- indent_str = token.rsplit("\n", 1)[1] ##
3969
-
3970
- indent = indent_str.count(" ") + indent_str.count("\t") * self.tab_len
3971
-
3972
- if indent > self.indent_level[-1]:
3973
- self.indent_level.append(indent)
3974
- yield Token.new_borrow_pos(self.INDENT_type, indent_str, token)
3975
- else:
3976
- while indent < self.indent_level[-1]:
3977
- self.indent_level.pop()
3978
- yield Token.new_borrow_pos(self.DEDENT_type, indent_str, token)
3979
-
3980
- if indent != self.indent_level[-1]:
3981
- raise DedentError(
3982
- "Unexpected dedent to column %s. Expected dedent to %s"
3983
- % (indent, self.indent_level[-1])
3984
- )
3985
-
3986
- def _process(self, stream):
3987
- for token in stream:
3988
- if token.type == self.NL_type:
3989
- yield from self.handle_NL(token)
3990
- else:
3991
- yield token
3992
-
3993
- if token.type in self.OPEN_PAREN_types:
3994
- self.paren_level += 1
3995
- elif token.type in self.CLOSE_PAREN_types:
3996
- self.paren_level -= 1
3997
- assert self.paren_level >= 0
3998
-
3999
- while len(self.indent_level) > 1:
4000
- self.indent_level.pop()
4001
- yield Token(self.DEDENT_type, "")
4002
-
4003
- assert self.indent_level == [0], self.indent_level
4004
-
4005
- def process(self, stream):
4006
- self.paren_level = 0
4007
- self.indent_level = [0]
4008
- return self._process(stream)
4009
-
4010
- ##
4011
-
4012
- @property
4013
- def always_accept(self):
4014
- return (self.NL_type,)
4015
-
4016
- @property
4017
- @abstractmethod
4018
- def NL_type(self) -> str:
4019
- raise NotImplementedError()
4020
-
4021
- @property
4022
- @abstractmethod
4023
- def OPEN_PAREN_types(self) -> List[str]:
4024
- raise NotImplementedError()
4025
-
4026
- @property
4027
- @abstractmethod
4028
- def CLOSE_PAREN_types(self) -> List[str]:
4029
- raise NotImplementedError()
4030
-
4031
- @property
4032
- @abstractmethod
4033
- def INDENT_type(self) -> str:
4034
- raise NotImplementedError()
4035
-
4036
- @property
4037
- @abstractmethod
4038
- def DEDENT_type(self) -> str:
4039
- raise NotImplementedError()
4040
-
4041
- @property
4042
- @abstractmethod
4043
- def tab_len(self) -> int:
4044
- raise NotImplementedError()
4045
-
4046
-
4047
- class PythonIndenter(Indenter):
4048
- NL_type = "_NEWLINE"
4049
- OPEN_PAREN_types = ["LPAR", "LSQB", "LBRACE"]
4050
- CLOSE_PAREN_types = ["RPAR", "RSQB", "RBRACE"]
4051
- INDENT_type = "_INDENT"
4052
- DEDENT_type = "_DEDENT"
4053
- tab_len = 8
4054
-
4055
-
4056
-
4057
- import pickle, zlib, base64
4058
- DATA = (
4059
- b'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kaLCSFFhpKgwUlQYKSqMFBVGigojRYWRosJIUWGkqDBSVBgpKowUFUaKCiNFhZGiwkhRYaSoMFJUGCkqjBQVRooKI8XolWL0SjF6pahFUoxlKSqTFCNbipEtxciWYmRLUdGkGOdSjHMpxrkU41yKcS5FXZSiLkpRF6UYEVNUSSmqpBRVUooqKcVImqJKSlElpRhlU9RMKcbcFGNuijE3xZibotZKMQKnGIFT1GEp6rAUdViKcS7FyJ1i5E4xcqeo31LUbylG9RSjeopRPUWll2KMT1H3paj7UozVKeq+FLVBiiowRRWYom5IUTekqBBTVIgpaooUNUWKmqKig+h9dAh9EKqz7T+FI383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I383I393ZeT/z1GbjQ7g/0F0jrt36MWfV5cr9yD2Ri+iw/r7otPfvxwdDH87+lD0NNkzoxcXDr14J3rx4NCLR6IXFw29+KPos0+LPntSfOjVr0SvqqOLD9HvuRsfj/6jR8KO0ktH6aWj9NJReukovXSUXjpKLx2ll47SS0fppaP00lF66Si9dJReOkovHaWXjtJLR+mlo/TSUXrpKL10lF46Si8dpZeO0ktH6aWj9NJReukovXSUXjpKLx2ll47SS0fppaP00lF66Si9dJReOkovHaWXjtJLR+mlo/TSUXrpKL10lF46Si8dpZeO0lvpKP+la3n7WVFbvjgezfKOnuiX7gW/Q6/9YHX5x//yvZE7I8f/br3/GlbiBSrxApV4gUq8QCVeoBIvUIkXqMQLVOIFKvEClXiBSrxAJV6gEi9QiReoxAtU4gUq8QKVeIFKvEAlXqASL1CJF6jEC1TiBSrxApV4gUq8QH1doKIuUBkXqGkL1LQFatoCVWyBKrZAFVugii1QlRSoYgtUsQXq1gL1Z4Eas0CNWaDGLFArFqgVC1SABWq+AjVfgXqpQM1XoMorUOUVqOQKVHIFKrICs6UCs6UCs6UC86MCM6ICM6ICM6ICM6ICc6ACc6ACc6ACc6ACc6ACM5sCM5QCs5AC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DnVAnVApdAO6Cd2Cbku5E5lU7uKelYyRP4OGQk9Cw6By6CnoaagYGg6NgHRQBVQJjYQc0DPQs1AVNAoaDY2BxkJ50DhoPDQBeg5SoGqoBpoITYImQ89DU6CpUC00DeoNOaFBUB00HZoB1UMN0EzICDVCpZALmgXNhuZAc6F86AVoHvQiNB9aALmhhVATtAiyQYuhQsgD5UAl0EtQM/QypIeWQGWQGWqBlkLLoFegVmgwtBzqB70KeaEV0EpoFbQaWgNlQW3QWqgdWgd1QK9BBZAPel3K7RiGurUK90uqwv2SqnC3nyrcX6sK94qqwr2UqnAvpSrc76oK9/Oqwv2uqnCfpSrcA60Kdwyrwp2jqnD/sCrcZ6kK9/Oqwn2PqnDXpSrc3asK99eqwh2ZqnAHtircga0Kd7iqwr2pqnB3tpQ2QJug7ZAf2gNVQPugN6BR0H7oJnQQOgQdgU5A1dBp6AxUC52HLkCXoIHQbegKVA81QNeg69AtaD00G5oDbYQ2Q1ugrdA2aAG0A9oJ7YJ2Q3uhA9Bh6Ch0DDoOvQmdhE5Bb0FnoXNQKzQY8kIXoTboKtQOdUCd0A3oMuSD3pZyO55CGLWg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/beg/bek2v+nEQDvoI68gzryDurIO6gj76COvIM68g7qyDuoI++gjryDOvIO6sg7qCPvoI68gzryDurIO6gj76COvIM68g7qyDuoI++gjryDOvIO6sg7qCPvoI68gzryDurIO6l8NDx9Q+LZ2hgjS5twjNeJl2sNFmhq0NbWoK2twcJADZYCatBg1GBhoAYtbw0athq0vDVYEKpBM1eDJaAatMM1aPRq0NrVoLWrQWtXg4WkGjRz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'
4060
- )
4061
- DATA = pickle.loads(zlib.decompress(base64.b64decode(DATA)))
4062
- MEMO = (
4063
- b'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'
4064
- )
4065
- MEMO = pickle.loads(zlib.decompress(base64.b64decode(MEMO)))
4066
- Shift = 0
4067
- Reduce = 1
4068
- def Lark_StandAlone(**kwargs):
4069
- return Lark._load_from_dict(DATA, MEMO, **kwargs)