diff --git a/lark/parse_tree_builder.py b/lark/parse_tree_builder.py
index 5a7c5d7..8b81d29 100644
--- a/lark/parse_tree_builder.py
+++ b/lark/parse_tree_builder.py
@@ -195,6 +195,86 @@ def maybe_create_ambiguous_expander(tree_class, expansion, keep_all_tokens):
     if to_expand:
         return partial(AmbiguousExpander, to_expand, tree_class)
 
+class AmbiguousIntermediateExpander:
+    """
+    Propagate ambiguous intermediate nodes and their derivations up to the
+    current rule.
+
+    In general, converts
+
+    rule
+      _iambig
+        _inter
+          someChildren1
+          ...
+        _inter
+          someChildren2
+          ...
+      someChildren3
+      ...
+
+    to
+
+    _ambig
+      rule
+        someChildren1
+        ...
+        someChildren3
+        ...
+      rule
+        someChildren2
+        ...
+        someChildren3
+        ...
+      rule
+        childrenFromNestedIambigs
+        ...
+        someChildren3
+        ...
+      ...
+
+    propagating up any nested '_iambig' nodes along the way.
+    """
+
+    def __init__(self, tree_class, node_builder):
+        self.node_builder = node_builder
+        self.tree_class = tree_class
+
+    def __call__(self, children):
+        def _is_iambig_tree(child):
+            return hasattr(child, 'data') and child.data == '_iambig'
+
+        def _collapse_iambig(children):
+            """
+            Recursively flatten the derivations of the parent of an '_iambig'
+            node. Returns a list of '_inter' nodes guaranteed not
+            to contain any nested '_iambig' nodes, or None if children does
+            not contain an '_iambig' node.
+            """
+
+            # Due to the structure of the SPPF,
+            # an '_iambig' node can only appear as the first child
+            if children and _is_iambig_tree(children[0]):
+                iambig_node = children[0]
+                result = []
+                for grandchild in iambig_node.children:
+                    collapsed = _collapse_iambig(grandchild.children)
+                    if collapsed:
+                        for child in collapsed:
+                            child.children += children[1:]
+                        result += collapsed
+                    else:
+                        new_tree = self.tree_class('_inter', grandchild.children + children[1:])
+                        result.append(new_tree)
+                return result
+
+        collapsed = _collapse_iambig(children)
+        if collapsed:
+            processed_nodes = [self.node_builder(c.children) for c in collapsed]
+            return self.tree_class('_ambig', processed_nodes)
+
+        return self.node_builder(children)
+
 def ptb_inline_args(func):
     @wraps(func)
     def f(children):
@@ -239,6 +319,7 @@ class ParseTreeBuilder:
                 maybe_create_child_filter(rule.expansion, keep_all_tokens, self.ambiguous, options.empty_indices if self.maybe_placeholders else None),
                 self.propagate_positions and PropagatePositions,
                 self.ambiguous and maybe_create_ambiguous_expander(self.tree_class, rule.expansion, keep_all_tokens),
+                self.ambiguous and partial(AmbiguousIntermediateExpander, self.tree_class)
             ]))
 
             yield rule, wrapper_chain
diff --git a/lark/parsers/earley.py b/lark/parsers/earley.py
index 098639d..bcb568f 100644
--- a/lark/parsers/earley.py
+++ b/lark/parsers/earley.py
@@ -18,7 +18,7 @@ from ..utils import logger
 from .grammar_analysis import GrammarAnalyzer
 from ..grammar import NonTerminal
 from .earley_common import Item, TransitiveItem
-from .earley_forest import ForestToTreeVisitor, ForestSumVisitor, SymbolNode, ForestToAmbiguousTreeVisitor
+from .earley_forest import ForestToTreeVisitor, ForestSumVisitor, SymbolNode, CompleteForestToAmbiguousTreeVisitor
 
 class Parser:
     def __init__(self, parser_conf, term_matcher, resolve_ambiguity=True, debug=False):
@@ -313,7 +313,7 @@ class Parser:
             assert False, 'Earley should not generate multiple start symbol items!'
 
         # Perform our SPPF -> AST conversion using the right ForestVisitor.
-        forest_tree_visitor_cls = ForestToTreeVisitor if self.resolve_ambiguity else ForestToAmbiguousTreeVisitor
+        forest_tree_visitor_cls = ForestToTreeVisitor if self.resolve_ambiguity else CompleteForestToAmbiguousTreeVisitor
         forest_tree_visitor = forest_tree_visitor_cls(self.callbacks, self.forest_sum_visitor and self.forest_sum_visitor())
 
         return forest_tree_visitor.visit(solutions[0])
diff --git a/lark/parsers/earley_forest.py b/lark/parsers/earley_forest.py
index 4ed75d9..b39d02e 100644
--- a/lark/parsers/earley_forest.py
+++ b/lark/parsers/earley_forest.py
@@ -363,6 +363,75 @@ class ForestToAmbiguousTreeVisitor(ForestToTreeVisitor):
             else:
                 self.result = result
 
+class CompleteForestToAmbiguousTreeVisitor(ForestToTreeVisitor):
+    """
+    An augmented version of ForestToAmbiguousTreeVisitor that is designed to
+    handle ambiguous intermediate nodes as well as ambiguous symbol nodes.
+
+    On the way down:
+
+    - When an ambiguous intermediate node is encountered, an '_iambig' node
+      is inserted into the tree.
+    - Each possible derivation of an ambiguous intermediate node is represented
+      by an '_inter' node added as a child of the corresponding '_iambig' node.
+
+    On the way up, these nodes are propagated up the tree and collapsed
+    into a single '_ambig' node for the nearest symbol node ancestor.
+    This is achieved by the AmbiguousIntermediateExpander contained in
+    the callbacks.
+    """
+
+    def _collapse_ambig(self, children):
+        new_children = []
+        for child in children:
+            if child.data == '_ambig':
+                new_children += child.children
+            else:
+                new_children.append(child)
+        return new_children
+
+    def visit_token_node(self, node):
+        self.output_stack[-1].children.append(node)
+
+    def visit_symbol_node_in(self, node):
+        if node.is_ambiguous:
+            if self.forest_sum_visitor and isinf(node.priority):
+                self.forest_sum_visitor.visit(node)
+            if node.is_intermediate:
+                self.output_stack.append(Tree('_iambig', []))
+            else:
+                self.output_stack.append(Tree('_ambig', []))
+        return iter(node.children)
+
+    def visit_symbol_node_out(self, node):
+        if node.is_ambiguous:
+            result = self.output_stack.pop()
+            if not node.is_intermediate:
+                result = Tree('_ambig', self._collapse_ambig(result.children))
+            if self.output_stack:
+                self.output_stack[-1].children.append(result)
+            else:
+                self.result = result
+
+    def visit_packed_node_in(self, node):
+        if not node.parent.is_intermediate:
+            self.output_stack.append(Tree('drv', []))
+        elif node.parent.is_ambiguous:
+            self.output_stack.append(Tree('_inter', []))
+        return iter([node.left, node.right])
+
+    def visit_packed_node_out(self, node):
+        if not node.parent.is_intermediate:
+            result = self.callbacks[node.rule](self.output_stack.pop().children)
+        elif node.parent.is_ambiguous:
+            result = self.output_stack.pop()
+        else:
+            return
+        if self.output_stack:
+            self.output_stack[-1].children.append(result)
+        else:
+            self.result = result
+
 class ForestToPyDotVisitor(ForestVisitor):
     """
     A Forest visitor which writes the SPPF to a PNG.

Ambiguity error for simple grammar
Hi,

I recently stumbled upon an error, where ``lark`` is missing some ambiguous solutions. I tried to create a minimal example to make the problem easier to understand. The code is the following:

#### Code

```python
import lark

simple_string = 'aaab'
simple_grammar = '''
    s: as? as? b
    as: a a?

    ?a: /a/
    ?b: /b/
    '''
simple_parser = lark.Lark(simple_grammar, start='s', ambiguity='explicit')
print(simple_parser.parse(simple_string).pretty())
```

There is an ambiguity in the first rule for matching **aaab**. Either the first non-terminal ``as`` is resolved to the terminals **aa** or the second non-terminal ``as`` is, leaving the other one to be resolved to a single **a** and resulting in two solutions for this string-grammar combination. However, the output of ``lark`` is the following indicating that there is no ambiguity:

#### Output

```
s
  as
    a
  as
    a
    a
  b
```

Whereas the expected output is the following:

#### Expected Output

```
_ambig
  s
    as
      a
    as
      a
      a
    b
  s
    as
      a
      a
    as
      a
    b
```

I verified the ambiguity of this simple example using a different parser. Finally, if I change the ``b`` in the first rule from a non-terminal to the corresponding terminal, I get the right output.
diff --git a/tests/test_parser.py b/tests/test_parser.py
index 2f6a15e..83336c5 100644
--- a/tests/test_parser.py
+++ b/tests/test_parser.py
@@ -460,6 +460,221 @@ def _make_full_earley_test(LEXER):
                 ])
             self.assertEqual(res, expected)
 
+        def test_ambiguous_intermediate_node(self):
+            grammar = """
+            start: ab bc d?
+            !ab: "A" "B"?
+            !bc: "B"? "C"
+            !d: "D"
+            """
+
+            l = Lark(grammar, parser='earley', ambiguity='explicit', lexer=LEXER)
+            ambig_tree = l.parse("ABCD")
+            expected = {
+                Tree('start', [Tree('ab', ['A']), Tree('bc', ['B', 'C']), Tree('d', ['D'])]),
+                Tree('start', [Tree('ab', ['A', 'B']), Tree('bc', ['C']), Tree('d', ['D'])])
+            }
+            self.assertEqual(ambig_tree.data, '_ambig')
+            self.assertEqual(set(ambig_tree.children), expected)
+
+        def test_ambiguous_symbol_and_intermediate_nodes(self):
+            grammar = """
+            start: ab bc cd
+            !ab: "A" "B"?
+            !bc: "B"? "C"?
+            !cd: "C"? "D"
+            """
+
+            l = Lark(grammar, parser='earley', ambiguity='explicit', lexer=LEXER)
+            ambig_tree = l.parse("ABCD")
+            expected = {
+                Tree('start', [
+                    Tree('ab', ['A', 'B']),
+                    Tree('bc', ['C']),
+                    Tree('cd', ['D'])
+                ]),
+                Tree('start', [
+                    Tree('ab', ['A', 'B']),
+                    Tree('bc', []),
+                    Tree('cd', ['C', 'D'])
+                ]),
+                Tree('start', [
+                    Tree('ab', ['A']),
+                    Tree('bc', ['B', 'C']),
+                    Tree('cd', ['D'])
+                ]),
+                Tree('start', [
+                    Tree('ab', ['A']),
+                    Tree('bc', ['B']),
+                    Tree('cd', ['C', 'D'])
+                ]),
+            }
+            self.assertEqual(ambig_tree.data, '_ambig')
+            self.assertEqual(set(ambig_tree.children), expected)
+
+        def test_nested_ambiguous_intermediate_nodes(self):
+            grammar = """
+            start: ab bc cd e?
+            !ab: "A" "B"?
+            !bc: "B"? "C"?
+            !cd: "C"? "D"
+            !e: "E"
+            """
+
+            l = Lark(grammar, parser='earley', ambiguity='explicit', lexer=LEXER)
+            ambig_tree = l.parse("ABCDE")
+            expected = {
+                Tree('start', [
+                    Tree('ab', ['A', 'B']),
+                    Tree('bc', ['C']),
+                    Tree('cd', ['D']),
+                    Tree('e', ['E'])
+                ]),
+                Tree('start', [
+                    Tree('ab', ['A']),
+                    Tree('bc', ['B', 'C']),
+                    Tree('cd', ['D']),
+                    Tree('e', ['E'])
+                ]),
+                Tree('start', [
+                    Tree('ab', ['A']),
+                    Tree('bc', ['B']),
+                    Tree('cd', ['C', 'D']),
+                    Tree('e', ['E'])
+                ]),
+                Tree('start', [
+                    Tree('ab', ['A', 'B']),
+                    Tree('bc', []),
+                    Tree('cd', ['C', 'D']),
+                    Tree('e', ['E'])
+                ]),
+            }
+            self.assertEqual(ambig_tree.data, '_ambig')
+            self.assertEqual(set(ambig_tree.children), expected)
+
+        def test_nested_ambiguous_intermediate_nodes2(self):
+            grammar = """
+            start: ab bc cd de f
+            !ab: "A" "B"?
+            !bc: "B"? "C"?
+            !cd: "C"? "D"?
+            !de: "D"? "E"
+            !f: "F"
+            """
+
+            l = Lark(grammar, parser='earley', ambiguity='explicit', lexer=LEXER)
+            ambig_tree = l.parse("ABCDEF")
+            expected = {
+                Tree('start', [
+                    Tree('ab', ['A', 'B']),
+                    Tree('bc', ['C']),
+                    Tree('cd', ['D']),
+                    Tree('de', ['E']),
+                    Tree('f', ['F']),
+                ]),
+                Tree('start', [
+                    Tree('ab', ['A']),
+                    Tree('bc', ['B', 'C']),
+                    Tree('cd', ['D']),
+                    Tree('de', ['E']),
+                    Tree('f', ['F']),
+                ]),
+                Tree('start', [
+                    Tree('ab', ['A']),
+                    Tree('bc', ['B']),
+                    Tree('cd', ['C', 'D']),
+                    Tree('de', ['E']),
+                    Tree('f', ['F']),
+                ]),
+                Tree('start', [
+                    Tree('ab', ['A']),
+                    Tree('bc', ['B']),
+                    Tree('cd', ['C']),
+                    Tree('de', ['D', 'E']),
+                    Tree('f', ['F']),
+                ]),
+                Tree('start', [
+                    Tree('ab', ['A', "B"]),
+                    Tree('bc', []),
+                    Tree('cd', ['C']),
+                    Tree('de', ['D', 'E']),
+                    Tree('f', ['F']),
+                ]),
+                Tree('start', [
+                    Tree('ab', ['A']),
+                    Tree('bc', ['B', 'C']),
+                    Tree('cd', []),
+                    Tree('de', ['D', 'E']),
+                    Tree('f', ['F']),
+                ]),
+                Tree('start', [
+                    Tree('ab', ['A', 'B']),
+                    Tree('bc', []),
+                    Tree('cd', ['C', 'D']),
+                    Tree('de', ['E']),
+                    Tree('f', ['F']),
+                ]),
+                Tree('start', [
+                    Tree('ab', ['A', 'B']),
+                    Tree('bc', ['C']),
+                    Tree('cd', []),
+                    Tree('de', ['D', 'E']),
+                    Tree('f', ['F']),
+                ]),
+            }
+            self.assertEqual(ambig_tree.data, '_ambig')
+            self.assertEqual(set(ambig_tree.children), expected)
+
+        def test_ambiguous_intermediate_node_unnamed_token(self):
+            grammar = """
+            start: ab bc "D"
+            !ab: "A" "B"?
+            !bc: "B"? "C"
+            """
+
+            l = Lark(grammar, parser='earley', ambiguity='explicit', lexer=LEXER)
+            ambig_tree = l.parse("ABCD")
+            expected = {
+                Tree('start', [Tree('ab', ['A']), Tree('bc', ['B', 'C'])]),
+                Tree('start', [Tree('ab', ['A', 'B']), Tree('bc', ['C'])])
+            }
+            self.assertEqual(ambig_tree.data, '_ambig')
+            self.assertEqual(set(ambig_tree.children), expected)
+
+        def test_ambiguous_intermediate_node_inlined_rule(self):
+            grammar = """
+            start: ab _bc d?
+            !ab: "A" "B"?
+            _bc: "B"? "C"
+            !d: "D"
+            """
+
+            l = Lark(grammar, parser='earley', ambiguity='explicit', lexer=LEXER)
+            ambig_tree = l.parse("ABCD")
+            expected = {
+                Tree('start', [Tree('ab', ['A']), Tree('d', ['D'])]),
+                Tree('start', [Tree('ab', ['A', 'B']), Tree('d', ['D'])])
+            }
+            self.assertEqual(ambig_tree.data, '_ambig')
+            self.assertEqual(set(ambig_tree.children), expected)
+
+        def test_ambiguous_intermediate_node_conditionally_inlined_rule(self):
+            grammar = """
+            start: ab bc d?
+            !ab: "A" "B"?
+            !?bc: "B"? "C"
+            !d: "D"
+            """
+
+            l = Lark(grammar, parser='earley', ambiguity='explicit', lexer=LEXER)
+            ambig_tree = l.parse("ABCD")
+            expected = {
+                Tree('start', [Tree('ab', ['A']), Tree('bc', ['B', 'C']), Tree('d', ['D'])]),
+                Tree('start', [Tree('ab', ['A', 'B']), 'C', Tree('d', ['D'])])
+            }
+            self.assertEqual(ambig_tree.data, '_ambig')
+            self.assertEqual(set(ambig_tree.children), expected)
+
         def test_fruitflies_ambig(self):
             grammar = """
                 start: noun verb noun        -> simple

pip install -e .[dev]
parse_log_pytest
pytest
Js2Py==0.68 regex pytest
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs @ file:///opt/conda/conda-bld/attrs_1642510447205/work
backports.zoneinfo==0.2.1
certifi==2021.5.30
importlib-metadata @ file:///tmp/build/80754af9/importlib-metadata_1631916693255/work
importlib-resources==5.4.0
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
Js2Py==0.68
-e git+https://github.com/lark-parser/lark.git@c4423910ff725819c6a1f992791e99b1b8a0ca8d#egg=lark_parser
more-itertools @ file:///tmp/build/80754af9/more-itertools_1637733554872/work
packaging @ file:///tmp/build/80754af9/packaging_1637314298585/work
pluggy @ file:///tmp/build/80754af9/pluggy_1615976315926/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pyjsparser==2.7.1
pyparsing @ file:///tmp/build/80754af9/pyparsing_1635766073266/work
pytest==6.2.4
pytz-deprecation-shim==0.1.0.post0
regex==2023.8.8
six==1.17.0
toml @ file:///tmp/build/80754af9/toml_1616166611790/work
typing_extensions @ file:///opt/conda/conda-bld/typing_extensions_1647553014482/work
tzdata==2025.2
tzlocal==4.2
zipp @ file:///tmp/build/80754af9/zipp_1633618647012/work

name: lark
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - attrs=21.4.0=pyhd3eb1b0_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - importlib-metadata=4.8.1=py36h06a4308_0
  - importlib_metadata=4.8.1=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - more-itertools=8.12.0=pyhd3eb1b0_0
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=21.3=pyhd3eb1b0_0
  - pip=21.2.2=py36h06a4308_0
  - pluggy=0.13.1=py36h06a4308_0
  - py=1.11.0=pyhd3eb1b0_0
  - pyparsing=3.0.4=pyhd3eb1b0_0
  - pytest=6.2.4=py36h06a4308_2
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - toml=0.10.2=pyhd3eb1b0_0
  - typing_extensions=4.1.1=pyh06a4308_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.6.0=pyhd3eb1b0_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - backports-zoneinfo==0.2.1
      - importlib-resources==5.4.0
      - js2py==0.68
      - pyjsparser==2.7.1
      - pytz-deprecation-shim==0.1.0.post0
      - regex==2023.8.8
      - six==1.17.0
      - tzdata==2025.2
      - tzlocal==4.2
prefix: /opt/conda/envs/lark

tests/test_parser.py::TestFullEarleyDynamic::test_ambiguous_intermediate_node tests/test_parser.py::TestFullEarleyDynamic::test_ambiguous_intermediate_node_conditionally_inlined_rule tests/test_parser.py::TestFullEarleyDynamic::test_ambiguous_intermediate_node_inlined_rule tests/test_parser.py::TestFullEarleyDynamic::test_ambiguous_intermediate_node_unnamed_token tests/test_parser.py::TestFullEarleyDynamic::test_ambiguous_symbol_and_intermediate_nodes tests/test_parser.py::TestFullEarleyDynamic::test_nested_ambiguous_intermediate_nodes tests/test_parser.py::TestFullEarleyDynamic::test_nested_ambiguous_intermediate_nodes2 tests/test_parser.py::TestFullEarleyDynamic_complete::test_ambiguous_intermediate_node tests/test_parser.py::TestFullEarleyDynamic_complete::test_ambiguous_intermediate_node_conditionally_inlined_rule tests/test_parser.py::TestFullEarleyDynamic_complete::test_ambiguous_intermediate_node_inlined_rule tests/test_parser.py::TestFullEarleyDynamic_complete::test_ambiguous_intermediate_node_unnamed_token tests/test_parser.py::TestFullEarleyDynamic_complete::test_ambiguous_symbol_and_intermediate_nodes tests/test_parser.py::TestFullEarleyDynamic_complete::test_nested_ambiguous_intermediate_nodes tests/test_parser.py::TestFullEarleyDynamic_complete::test_nested_ambiguous_intermediate_nodes2
tests/test_parser.py::TestEarleyStandard::test_alias tests/test_parser.py::TestEarleyStandard::test_alias_in_terminal tests/test_parser.py::TestEarleyStandard::test_backslash tests/test_parser.py::TestEarleyStandard::test_backslash2 tests/test_parser.py::TestEarleyStandard::test_basic1 tests/test_parser.py::TestEarleyStandard::test_basic2 tests/test_parser.py::TestEarleyStandard::test_bytes_utf8 tests/test_parser.py::TestEarleyStandard::test_dont_expand1_lists_with_multiple_items tests/test_parser.py::TestEarleyStandard::test_dont_expand1_lists_with_multiple_items_2 tests/test_parser.py::TestEarleyStandard::test_earley_prioritization tests/test_parser.py::TestEarleyStandard::test_earley_prioritization_sum tests/test_parser.py::TestEarleyStandard::test_empty tests/test_parser.py::TestEarleyStandard::test_empty_end tests/test_parser.py::TestEarleyStandard::test_empty_expand1_list tests/test_parser.py::TestEarleyStandard::test_empty_expand1_list_2 tests/test_parser.py::TestEarleyStandard::test_empty_flatten_list tests/test_parser.py::TestEarleyStandard::test_escaped_string tests/test_parser.py::TestEarleyStandard::test_expand1_lists_with_one_item tests/test_parser.py::TestEarleyStandard::test_expand1_lists_with_one_item_2 tests/test_parser.py::TestEarleyStandard::test_float_without_lexer tests/test_parser.py::TestEarleyStandard::test_g_regex_flags tests/test_parser.py::TestEarleyStandard::test_hex_escape tests/test_parser.py::TestEarleyStandard::test_hex_literal_range_escape tests/test_parser.py::TestEarleyStandard::test_ignore tests/test_parser.py::TestEarleyStandard::test_import tests/test_parser.py::TestEarleyStandard::test_import_errors tests/test_parser.py::TestEarleyStandard::test_import_rename tests/test_parser.py::TestEarleyStandard::test_join_regex_flags tests/test_parser.py::TestEarleyStandard::test_keep_all_tokens tests/test_parser.py::TestEarleyStandard::test_lexer_detect_newline_tokens tests/test_parser.py::TestEarleyStandard::test_lexer_prioritization tests/test_parser.py::TestEarleyStandard::test_lexer_token_limit tests/test_parser.py::TestEarleyStandard::test_line_and_column tests/test_parser.py::TestEarleyStandard::test_line_counting tests/test_parser.py::TestEarleyStandard::test_maybe tests/test_parser.py::TestEarleyStandard::test_maybe_placeholders tests/test_parser.py::TestEarleyStandard::test_meddling_unused tests/test_parser.py::TestEarleyStandard::test_multi_import tests/test_parser.py::TestEarleyStandard::test_multi_start tests/test_parser.py::TestEarleyStandard::test_ranged_repeat_rules tests/test_parser.py::TestEarleyStandard::test_ranged_repeat_terms tests/test_parser.py::TestEarleyStandard::test_reduce_cycle tests/test_parser.py::TestEarleyStandard::test_regex_escaping tests/test_parser.py::TestEarleyStandard::test_regex_quote tests/test_parser.py::TestEarleyStandard::test_relative_import tests/test_parser.py::TestEarleyStandard::test_relative_import_of_nested_grammar tests/test_parser.py::TestEarleyStandard::test_relative_import_preserves_leading_underscore tests/test_parser.py::TestEarleyStandard::test_relative_import_rename tests/test_parser.py::TestEarleyStandard::test_relative_import_rules_dependencies_imported_only_once tests/test_parser.py::TestEarleyStandard::test_relative_import_unicode tests/test_parser.py::TestEarleyStandard::test_relative_multi_import tests/test_parser.py::TestEarleyStandard::test_relative_rule_import tests/test_parser.py::TestEarleyStandard::test_relative_rule_import_drop_ignore tests/test_parser.py::TestEarleyStandard::test_relative_rule_import_rename tests/test_parser.py::TestEarleyStandard::test_relative_rule_import_subrule tests/test_parser.py::TestEarleyStandard::test_relative_rule_import_subrule_no_conflict tests/test_parser.py::TestEarleyStandard::test_rule_collision tests/test_parser.py::TestEarleyStandard::test_rule_collision2 tests/test_parser.py::TestEarleyStandard::test_special_chars tests/test_parser.py::TestEarleyStandard::test_stack_for_ebnf tests/test_parser.py::TestEarleyStandard::test_start tests/test_parser.py::TestEarleyStandard::test_stringio_unicode tests/test_parser.py::TestEarleyStandard::test_templates tests/test_parser.py::TestEarleyStandard::test_templates_alias tests/test_parser.py::TestEarleyStandard::test_templates_import tests/test_parser.py::TestEarleyStandard::test_templates_modifiers tests/test_parser.py::TestEarleyStandard::test_templates_recursion tests/test_parser.py::TestEarleyStandard::test_templates_templates tests/test_parser.py::TestEarleyStandard::test_token_collision tests/test_parser.py::TestEarleyStandard::test_token_collision2 tests/test_parser.py::TestEarleyStandard::test_token_collision_WS tests/test_parser.py::TestEarleyStandard::test_token_ebnf tests/test_parser.py::TestEarleyStandard::test_token_flags tests/test_parser.py::TestEarleyStandard::test_token_flags2 tests/test_parser.py::TestEarleyStandard::test_token_flags3 tests/test_parser.py::TestEarleyStandard::test_token_flags_verbose tests/test_parser.py::TestEarleyStandard::test_token_flags_verbose_multiline tests/test_parser.py::TestEarleyStandard::test_token_multiline_only_works_with_x_flag tests/test_parser.py::TestEarleyStandard::test_token_not_anon tests/test_parser.py::TestEarleyStandard::test_twice_empty tests/test_parser.py::TestEarleyStandard::test_undefined_ignore tests/test_parser.py::TestEarleyStandard::test_undefined_rule tests/test_parser.py::TestEarleyStandard::test_undefined_token tests/test_parser.py::TestEarleyStandard::test_unicode tests/test_parser.py::TestEarleyStandard::test_unicode2 tests/test_parser.py::TestEarleyStandard::test_unicode3 tests/test_parser.py::TestEarleyStandard::test_unicode_class tests/test_parser.py::TestEarleyStandard::test_unicode_literal_range_escape tests/test_parser.py::TestEarleyStandard::test_unicode_word tests/test_parser.py::TestEarleyStandard::test_utf8 tests/test_parser.py::TestCykStandard::test_alias tests/test_parser.py::TestCykStandard::test_alias_in_terminal tests/test_parser.py::TestCykStandard::test_backslash tests/test_parser.py::TestCykStandard::test_backslash2 tests/test_parser.py::TestCykStandard::test_basic1 tests/test_parser.py::TestCykStandard::test_basic2 tests/test_parser.py::TestCykStandard::test_bytes_utf8 tests/test_parser.py::TestCykStandard::test_dont_expand1_lists_with_multiple_items tests/test_parser.py::TestCykStandard::test_dont_expand1_lists_with_multiple_items_2 tests/test_parser.py::TestCykStandard::test_escaped_string tests/test_parser.py::TestCykStandard::test_expand1_lists_with_one_item tests/test_parser.py::TestCykStandard::test_expand1_lists_with_one_item_2 tests/test_parser.py::TestCykStandard::test_float_without_lexer tests/test_parser.py::TestCykStandard::test_g_regex_flags tests/test_parser.py::TestCykStandard::test_hex_escape tests/test_parser.py::TestCykStandard::test_hex_literal_range_escape tests/test_parser.py::TestCykStandard::test_import tests/test_parser.py::TestCykStandard::test_import_errors tests/test_parser.py::TestCykStandard::test_import_rename tests/test_parser.py::TestCykStandard::test_join_regex_flags tests/test_parser.py::TestCykStandard::test_keep_all_tokens tests/test_parser.py::TestCykStandard::test_lexer_detect_newline_tokens tests/test_parser.py::TestCykStandard::test_lexer_prioritization tests/test_parser.py::TestCykStandard::test_lexer_token_limit tests/test_parser.py::TestCykStandard::test_line_and_column tests/test_parser.py::TestCykStandard::test_line_counting tests/test_parser.py::TestCykStandard::test_meddling_unused tests/test_parser.py::TestCykStandard::test_multi_import tests/test_parser.py::TestCykStandard::test_multi_start tests/test_parser.py::TestCykStandard::test_priority_vs_embedded tests/test_parser.py::TestCykStandard::test_ranged_repeat_rules tests/test_parser.py::TestCykStandard::test_ranged_repeat_terms tests/test_parser.py::TestCykStandard::test_reduce_cycle tests/test_parser.py::TestCykStandard::test_regex_escaping tests/test_parser.py::TestCykStandard::test_regex_quote tests/test_parser.py::TestCykStandard::test_relative_import tests/test_parser.py::TestCykStandard::test_relative_import_of_nested_grammar tests/test_parser.py::TestCykStandard::test_relative_import_preserves_leading_underscore tests/test_parser.py::TestCykStandard::test_relative_import_rename tests/test_parser.py::TestCykStandard::test_relative_import_rules_dependencies_imported_only_once tests/test_parser.py::TestCykStandard::test_relative_import_unicode tests/test_parser.py::TestCykStandard::test_relative_multi_import tests/test_parser.py::TestCykStandard::test_relative_rule_import tests/test_parser.py::TestCykStandard::test_relative_rule_import_drop_ignore tests/test_parser.py::TestCykStandard::test_relative_rule_import_rename tests/test_parser.py::TestCykStandard::test_relative_rule_import_subrule tests/test_parser.py::TestCykStandard::test_relative_rule_import_subrule_no_conflict tests/test_parser.py::TestCykStandard::test_rule_collision tests/test_parser.py::TestCykStandard::test_rule_collision2 tests/test_parser.py::TestCykStandard::test_special_chars tests/test_parser.py::TestCykStandard::test_start tests/test_parser.py::TestCykStandard::test_stringio_unicode tests/test_parser.py::TestCykStandard::test_templates tests/test_parser.py::TestCykStandard::test_templates_alias tests/test_parser.py::TestCykStandard::test_templates_import tests/test_parser.py::TestCykStandard::test_templates_modifiers tests/test_parser.py::TestCykStandard::test_templates_recursion tests/test_parser.py::TestCykStandard::test_templates_templates tests/test_parser.py::TestCykStandard::test_token_collision tests/test_parser.py::TestCykStandard::test_token_collision2 tests/test_parser.py::TestCykStandard::test_token_collision_WS tests/test_parser.py::TestCykStandard::test_token_ebnf tests/test_parser.py::TestCykStandard::test_token_flags tests/test_parser.py::TestCykStandard::test_token_flags2 tests/test_parser.py::TestCykStandard::test_token_flags3 tests/test_parser.py::TestCykStandard::test_token_flags_verbose tests/test_parser.py::TestCykStandard::test_token_flags_verbose_multiline tests/test_parser.py::TestCykStandard::test_token_multiline_only_works_with_x_flag tests/test_parser.py::TestCykStandard::test_token_not_anon tests/test_parser.py::TestCykStandard::test_undefined_ignore tests/test_parser.py::TestCykStandard::test_undefined_rule tests/test_parser.py::TestCykStandard::test_undefined_token tests/test_parser.py::TestCykStandard::test_unicode tests/test_parser.py::TestCykStandard::test_unicode2 tests/test_parser.py::TestCykStandard::test_unicode3 tests/test_parser.py::TestCykStandard::test_unicode_class tests/test_parser.py::TestCykStandard::test_unicode_literal_range_escape tests/test_parser.py::TestCykStandard::test_unicode_word tests/test_parser.py::TestCykStandard::test_utf8 tests/test_parser.py::TestEarleyDynamic::test_alias tests/test_parser.py::TestEarleyDynamic::test_alias_in_terminal tests/test_parser.py::TestEarleyDynamic::test_backslash tests/test_parser.py::TestEarleyDynamic::test_backslash2 tests/test_parser.py::TestEarleyDynamic::test_basic1 tests/test_parser.py::TestEarleyDynamic::test_basic2 tests/test_parser.py::TestEarleyDynamic::test_bytes_utf8 tests/test_parser.py::TestEarleyDynamic::test_dont_expand1_lists_with_multiple_items tests/test_parser.py::TestEarleyDynamic::test_dont_expand1_lists_with_multiple_items_2 tests/test_parser.py::TestEarleyDynamic::test_earley_prioritization tests/test_parser.py::TestEarleyDynamic::test_earley_prioritization_sum tests/test_parser.py::TestEarleyDynamic::test_empty tests/test_parser.py::TestEarleyDynamic::test_empty_end tests/test_parser.py::TestEarleyDynamic::test_empty_expand1_list tests/test_parser.py::TestEarleyDynamic::test_empty_expand1_list_2 tests/test_parser.py::TestEarleyDynamic::test_empty_flatten_list tests/test_parser.py::TestEarleyDynamic::test_escaped_string tests/test_parser.py::TestEarleyDynamic::test_expand1_lists_with_one_item tests/test_parser.py::TestEarleyDynamic::test_expand1_lists_with_one_item_2 tests/test_parser.py::TestEarleyDynamic::test_float_without_lexer tests/test_parser.py::TestEarleyDynamic::test_g_regex_flags tests/test_parser.py::TestEarleyDynamic::test_hex_escape tests/test_parser.py::TestEarleyDynamic::test_hex_literal_range_escape tests/test_parser.py::TestEarleyDynamic::test_ignore tests/test_parser.py::TestEarleyDynamic::test_import tests/test_parser.py::TestEarleyDynamic::test_import_errors tests/test_parser.py::TestEarleyDynamic::test_import_rename tests/test_parser.py::TestEarleyDynamic::test_join_regex_flags tests/test_parser.py::TestEarleyDynamic::test_keep_all_tokens tests/test_parser.py::TestEarleyDynamic::test_lexer_detect_newline_tokens tests/test_parser.py::TestEarleyDynamic::test_lexer_token_limit tests/test_parser.py::TestEarleyDynamic::test_line_and_column tests/test_parser.py::TestEarleyDynamic::test_line_counting tests/test_parser.py::TestEarleyDynamic::test_maybe tests/test_parser.py::TestEarleyDynamic::test_maybe_placeholders tests/test_parser.py::TestEarleyDynamic::test_meddling_unused tests/test_parser.py::TestEarleyDynamic::test_multi_import tests/test_parser.py::TestEarleyDynamic::test_multi_start tests/test_parser.py::TestEarleyDynamic::test_ranged_repeat_rules tests/test_parser.py::TestEarleyDynamic::test_ranged_repeat_terms tests/test_parser.py::TestEarleyDynamic::test_reduce_cycle tests/test_parser.py::TestEarleyDynamic::test_regex_escaping tests/test_parser.py::TestEarleyDynamic::test_regex_quote tests/test_parser.py::TestEarleyDynamic::test_relative_import tests/test_parser.py::TestEarleyDynamic::test_relative_import_of_nested_grammar tests/test_parser.py::TestEarleyDynamic::test_relative_import_preserves_leading_underscore tests/test_parser.py::TestEarleyDynamic::test_relative_import_rename tests/test_parser.py::TestEarleyDynamic::test_relative_import_rules_dependencies_imported_only_once tests/test_parser.py::TestEarleyDynamic::test_relative_import_unicode tests/test_parser.py::TestEarleyDynamic::test_relative_multi_import tests/test_parser.py::TestEarleyDynamic::test_relative_rule_import tests/test_parser.py::TestEarleyDynamic::test_relative_rule_import_drop_ignore tests/test_parser.py::TestEarleyDynamic::test_relative_rule_import_rename tests/test_parser.py::TestEarleyDynamic::test_relative_rule_import_subrule tests/test_parser.py::TestEarleyDynamic::test_relative_rule_import_subrule_no_conflict tests/test_parser.py::TestEarleyDynamic::test_rule_collision tests/test_parser.py::TestEarleyDynamic::test_rule_collision2 tests/test_parser.py::TestEarleyDynamic::test_special_chars tests/test_parser.py::TestEarleyDynamic::test_stack_for_ebnf tests/test_parser.py::TestEarleyDynamic::test_start tests/test_parser.py::TestEarleyDynamic::test_stringio_unicode tests/test_parser.py::TestEarleyDynamic::test_templates tests/test_parser.py::TestEarleyDynamic::test_templates_alias tests/test_parser.py::TestEarleyDynamic::test_templates_import tests/test_parser.py::TestEarleyDynamic::test_templates_modifiers tests/test_parser.py::TestEarleyDynamic::test_templates_recursion tests/test_parser.py::TestEarleyDynamic::test_templates_templates tests/test_parser.py::TestEarleyDynamic::test_token_collision tests/test_parser.py::TestEarleyDynamic::test_token_collision2 tests/test_parser.py::TestEarleyDynamic::test_token_collision_WS tests/test_parser.py::TestEarleyDynamic::test_token_ebnf tests/test_parser.py::TestEarleyDynamic::test_token_flags tests/test_parser.py::TestEarleyDynamic::test_token_flags2 tests/test_parser.py::TestEarleyDynamic::test_token_flags3 tests/test_parser.py::TestEarleyDynamic::test_token_flags_verbose tests/test_parser.py::TestEarleyDynamic::test_token_flags_verbose_multiline tests/test_parser.py::TestEarleyDynamic::test_token_multiline_only_works_with_x_flag tests/test_parser.py::TestEarleyDynamic::test_token_not_anon tests/test_parser.py::TestEarleyDynamic::test_twice_empty tests/test_parser.py::TestEarleyDynamic::test_undefined_ignore tests/test_parser.py::TestEarleyDynamic::test_undefined_rule tests/test_parser.py::TestEarleyDynamic::test_undefined_token tests/test_parser.py::TestEarleyDynamic::test_unicode tests/test_parser.py::TestEarleyDynamic::test_unicode2 tests/test_parser.py::TestEarleyDynamic::test_unicode3 tests/test_parser.py::TestEarleyDynamic::test_unicode_class tests/test_parser.py::TestEarleyDynamic::test_unicode_literal_range_escape tests/test_parser.py::TestEarleyDynamic::test_unicode_word tests/test_parser.py::TestEarleyDynamic::test_utf8 tests/test_parser.py::TestEarleyDynamic_complete::test_alias tests/test_parser.py::TestEarleyDynamic_complete::test_alias_in_terminal tests/test_parser.py::TestEarleyDynamic_complete::test_backslash tests/test_parser.py::TestEarleyDynamic_complete::test_backslash2 tests/test_parser.py::TestEarleyDynamic_complete::test_basic1 tests/test_parser.py::TestEarleyDynamic_complete::test_basic2 tests/test_parser.py::TestEarleyDynamic_complete::test_bytes_utf8 tests/test_parser.py::TestEarleyDynamic_complete::test_dont_expand1_lists_with_multiple_items tests/test_parser.py::TestEarleyDynamic_complete::test_dont_expand1_lists_with_multiple_items_2 tests/test_parser.py::TestEarleyDynamic_complete::test_earley_prioritization tests/test_parser.py::TestEarleyDynamic_complete::test_earley_prioritization_sum tests/test_parser.py::TestEarleyDynamic_complete::test_empty tests/test_parser.py::TestEarleyDynamic_complete::test_empty_end tests/test_parser.py::TestEarleyDynamic_complete::test_empty_expand1_list tests/test_parser.py::TestEarleyDynamic_complete::test_empty_expand1_list_2 tests/test_parser.py::TestEarleyDynamic_complete::test_empty_flatten_list tests/test_parser.py::TestEarleyDynamic_complete::test_escaped_string tests/test_parser.py::TestEarleyDynamic_complete::test_expand1_lists_with_one_item tests/test_parser.py::TestEarleyDynamic_complete::test_expand1_lists_with_one_item_2 tests/test_parser.py::TestEarleyDynamic_complete::test_float_without_lexer tests/test_parser.py::TestEarleyDynamic_complete::test_g_regex_flags tests/test_parser.py::TestEarleyDynamic_complete::test_hex_escape tests/test_parser.py::TestEarleyDynamic_complete::test_hex_literal_range_escape tests/test_parser.py::TestEarleyDynamic_complete::test_ignore tests/test_parser.py::TestEarleyDynamic_complete::test_import tests/test_parser.py::TestEarleyDynamic_complete::test_import_errors tests/test_parser.py::TestEarleyDynamic_complete::test_import_rename tests/test_parser.py::TestEarleyDynamic_complete::test_join_regex_flags tests/test_parser.py::TestEarleyDynamic_complete::test_keep_all_tokens tests/test_parser.py::TestEarleyDynamic_complete::test_lexer_detect_newline_tokens tests/test_parser.py::TestEarleyDynamic_complete::test_lexer_token_limit tests/test_parser.py::TestEarleyDynamic_complete::test_line_and_column tests/test_parser.py::TestEarleyDynamic_complete::test_line_counting tests/test_parser.py::TestEarleyDynamic_complete::test_maybe tests/test_parser.py::TestEarleyDynamic_complete::test_maybe_placeholders tests/test_parser.py::TestEarleyDynamic_complete::test_meddling_unused tests/test_parser.py::TestEarleyDynamic_complete::test_multi_import tests/test_parser.py::TestEarleyDynamic_complete::test_multi_start tests/test_parser.py::TestEarleyDynamic_complete::test_ranged_repeat_rules tests/test_parser.py::TestEarleyDynamic_complete::test_ranged_repeat_terms tests/test_parser.py::TestEarleyDynamic_complete::test_reduce_cycle tests/test_parser.py::TestEarleyDynamic_complete::test_regex_escaping tests/test_parser.py::TestEarleyDynamic_complete::test_regex_quote tests/test_parser.py::TestEarleyDynamic_complete::test_relative_import tests/test_parser.py::TestEarleyDynamic_complete::test_relative_import_of_nested_grammar tests/test_parser.py::TestEarleyDynamic_complete::test_relative_import_preserves_leading_underscore tests/test_parser.py::TestEarleyDynamic_complete::test_relative_import_rename tests/test_parser.py::TestEarleyDynamic_complete::test_relative_import_rules_dependencies_imported_only_once tests/test_parser.py::TestEarleyDynamic_complete::test_relative_import_unicode tests/test_parser.py::TestEarleyDynamic_complete::test_relative_multi_import tests/test_parser.py::TestEarleyDynamic_complete::test_relative_rule_import tests/test_parser.py::TestEarleyDynamic_complete::test_relative_rule_import_drop_ignore tests/test_parser.py::TestEarleyDynamic_complete::test_relative_rule_import_rename tests/test_parser.py::TestEarleyDynamic_complete::test_relative_rule_import_subrule tests/test_parser.py::TestEarleyDynamic_complete::test_relative_rule_import_subrule_no_conflict tests/test_parser.py::TestEarleyDynamic_complete::test_rule_collision tests/test_parser.py::TestEarleyDynamic_complete::test_rule_collision2 tests/test_parser.py::TestEarleyDynamic_complete::test_special_chars tests/test_parser.py::TestEarleyDynamic_complete::test_stack_for_ebnf tests/test_parser.py::TestEarleyDynamic_complete::test_start tests/test_parser.py::TestEarleyDynamic_complete::test_stringio_unicode tests/test_parser.py::TestEarleyDynamic_complete::test_templates tests/test_parser.py::TestEarleyDynamic_complete::test_templates_alias tests/test_parser.py::TestEarleyDynamic_complete::test_templates_import tests/test_parser.py::TestEarleyDynamic_complete::test_templates_modifiers tests/test_parser.py::TestEarleyDynamic_complete::test_templates_recursion tests/test_parser.py::TestEarleyDynamic_complete::test_templates_templates tests/test_parser.py::TestEarleyDynamic_complete::test_token_collision tests/test_parser.py::TestEarleyDynamic_complete::test_token_collision2 tests/test_parser.py::TestEarleyDynamic_complete::test_token_collision_WS tests/test_parser.py::TestEarleyDynamic_complete::test_token_ebnf tests/test_parser.py::TestEarleyDynamic_complete::test_token_flags tests/test_parser.py::TestEarleyDynamic_complete::test_token_flags2 tests/test_parser.py::TestEarleyDynamic_complete::test_token_flags3 tests/test_parser.py::TestEarleyDynamic_complete::test_token_flags_verbose tests/test_parser.py::TestEarleyDynamic_complete::test_token_flags_verbose_multiline tests/test_parser.py::TestEarleyDynamic_complete::test_token_multiline_only_works_with_x_flag tests/test_parser.py::TestEarleyDynamic_complete::test_token_not_anon tests/test_parser.py::TestEarleyDynamic_complete::test_twice_empty tests/test_parser.py::TestEarleyDynamic_complete::test_undefined_ignore tests/test_parser.py::TestEarleyDynamic_complete::test_undefined_rule tests/test_parser.py::TestEarleyDynamic_complete::test_undefined_token tests/test_parser.py::TestEarleyDynamic_complete::test_unicode tests/test_parser.py::TestEarleyDynamic_complete::test_unicode2 tests/test_parser.py::TestEarleyDynamic_complete::test_unicode3 tests/test_parser.py::TestEarleyDynamic_complete::test_unicode_class tests/test_parser.py::TestEarleyDynamic_complete::test_unicode_literal_range_escape tests/test_parser.py::TestEarleyDynamic_complete::test_unicode_word tests/test_parser.py::TestEarleyDynamic_complete::test_utf8 tests/test_parser.py::TestLalrStandard::test_alias tests/test_parser.py::TestLalrStandard::test_alias_in_terminal tests/test_parser.py::TestLalrStandard::test_backslash tests/test_parser.py::TestLalrStandard::test_backslash2 tests/test_parser.py::TestLalrStandard::test_basic1 tests/test_parser.py::TestLalrStandard::test_basic2 tests/test_parser.py::TestLalrStandard::test_bytes_utf8 tests/test_parser.py::TestLalrStandard::test_dont_expand1_lists_with_multiple_items tests/test_parser.py::TestLalrStandard::test_dont_expand1_lists_with_multiple_items_2 tests/test_parser.py::TestLalrStandard::test_empty tests/test_parser.py::TestLalrStandard::test_empty_end tests/test_parser.py::TestLalrStandard::test_empty_expand1_list tests/test_parser.py::TestLalrStandard::test_empty_expand1_list_2 tests/test_parser.py::TestLalrStandard::test_empty_flatten_list tests/test_parser.py::TestLalrStandard::test_escaped_string tests/test_parser.py::TestLalrStandard::test_expand1_lists_with_one_item tests/test_parser.py::TestLalrStandard::test_expand1_lists_with_one_item_2 tests/test_parser.py::TestLalrStandard::test_float_without_lexer tests/test_parser.py::TestLalrStandard::test_g_regex_flags tests/test_parser.py::TestLalrStandard::test_hex_escape tests/test_parser.py::TestLalrStandard::test_hex_literal_range_escape tests/test_parser.py::TestLalrStandard::test_ignore tests/test_parser.py::TestLalrStandard::test_import tests/test_parser.py::TestLalrStandard::test_import_errors tests/test_parser.py::TestLalrStandard::test_import_rename tests/test_parser.py::TestLalrStandard::test_join_regex_flags tests/test_parser.py::TestLalrStandard::test_keep_all_tokens tests/test_parser.py::TestLalrStandard::test_lexer_detect_newline_tokens tests/test_parser.py::TestLalrStandard::test_lexer_prioritization tests/test_parser.py::TestLalrStandard::test_lexer_token_limit tests/test_parser.py::TestLalrStandard::test_line_and_column tests/test_parser.py::TestLalrStandard::test_line_counting tests/test_parser.py::TestLalrStandard::test_maybe tests/test_parser.py::TestLalrStandard::test_maybe_placeholders tests/test_parser.py::TestLalrStandard::test_meddling_unused tests/test_parser.py::TestLalrStandard::test_multi_import tests/test_parser.py::TestLalrStandard::test_multi_start tests/test_parser.py::TestLalrStandard::test_priority_vs_embedded tests/test_parser.py::TestLalrStandard::test_ranged_repeat_rules tests/test_parser.py::TestLalrStandard::test_ranged_repeat_terms tests/test_parser.py::TestLalrStandard::test_reduce_cycle tests/test_parser.py::TestLalrStandard::test_regex_escaping tests/test_parser.py::TestLalrStandard::test_regex_quote tests/test_parser.py::TestLalrStandard::test_relative_import tests/test_parser.py::TestLalrStandard::test_relative_import_of_nested_grammar tests/test_parser.py::TestLalrStandard::test_relative_import_preserves_leading_underscore tests/test_parser.py::TestLalrStandard::test_relative_import_rename tests/test_parser.py::TestLalrStandard::test_relative_import_rules_dependencies_imported_only_once tests/test_parser.py::TestLalrStandard::test_relative_import_unicode tests/test_parser.py::TestLalrStandard::test_relative_multi_import tests/test_parser.py::TestLalrStandard::test_relative_rule_import tests/test_parser.py::TestLalrStandard::test_relative_rule_import_drop_ignore tests/test_parser.py::TestLalrStandard::test_relative_rule_import_rename tests/test_parser.py::TestLalrStandard::test_relative_rule_import_subrule tests/test_parser.py::TestLalrStandard::test_relative_rule_import_subrule_no_conflict tests/test_parser.py::TestLalrStandard::test_rule_collision tests/test_parser.py::TestLalrStandard::test_rule_collision2 tests/test_parser.py::TestLalrStandard::test_serialize tests/test_parser.py::TestLalrStandard::test_special_chars tests/test_parser.py::TestLalrStandard::test_stack_for_ebnf tests/test_parser.py::TestLalrStandard::test_start tests/test_parser.py::TestLalrStandard::test_stringio_unicode tests/test_parser.py::TestLalrStandard::test_templates tests/test_parser.py::TestLalrStandard::test_templates_alias tests/test_parser.py::TestLalrStandard::test_templates_import tests/test_parser.py::TestLalrStandard::test_templates_modifiers tests/test_parser.py::TestLalrStandard::test_templates_recursion tests/test_parser.py::TestLalrStandard::test_templates_templates tests/test_parser.py::TestLalrStandard::test_token_collision tests/test_parser.py::TestLalrStandard::test_token_collision2 tests/test_parser.py::TestLalrStandard::test_token_collision_WS tests/test_parser.py::TestLalrStandard::test_token_ebnf tests/test_parser.py::TestLalrStandard::test_token_flags tests/test_parser.py::TestLalrStandard::test_token_flags2 tests/test_parser.py::TestLalrStandard::test_token_flags3 tests/test_parser.py::TestLalrStandard::test_token_flags_verbose tests/test_parser.py::TestLalrStandard::test_token_flags_verbose_multiline tests/test_parser.py::TestLalrStandard::test_token_multiline_only_works_with_x_flag tests/test_parser.py::TestLalrStandard::test_token_not_anon tests/test_parser.py::TestLalrStandard::test_twice_empty tests/test_parser.py::TestLalrStandard::test_undefined_ignore tests/test_parser.py::TestLalrStandard::test_undefined_rule tests/test_parser.py::TestLalrStandard::test_undefined_token tests/test_parser.py::TestLalrStandard::test_unicode tests/test_parser.py::TestLalrStandard::test_unicode2 tests/test_parser.py::TestLalrStandard::test_unicode3 tests/test_parser.py::TestLalrStandard::test_unicode_class tests/test_parser.py::TestLalrStandard::test_unicode_literal_range_escape tests/test_parser.py::TestLalrStandard::test_unicode_word tests/test_parser.py::TestLalrStandard::test_utf8 tests/test_parser.py::TestLalrContextual::test_alias tests/test_parser.py::TestLalrContextual::test_alias_in_terminal tests/test_parser.py::TestLalrContextual::test_backslash tests/test_parser.py::TestLalrContextual::test_backslash2 tests/test_parser.py::TestLalrContextual::test_basic1 tests/test_parser.py::TestLalrContextual::test_basic2 tests/test_parser.py::TestLalrContextual::test_bytes_utf8 tests/test_parser.py::TestLalrContextual::test_dont_expand1_lists_with_multiple_items tests/test_parser.py::TestLalrContextual::test_dont_expand1_lists_with_multiple_items_2 tests/test_parser.py::TestLalrContextual::test_empty tests/test_parser.py::TestLalrContextual::test_empty_end tests/test_parser.py::TestLalrContextual::test_empty_expand1_list tests/test_parser.py::TestLalrContextual::test_empty_expand1_list_2 tests/test_parser.py::TestLalrContextual::test_empty_flatten_list tests/test_parser.py::TestLalrContextual::test_escaped_string tests/test_parser.py::TestLalrContextual::test_expand1_lists_with_one_item tests/test_parser.py::TestLalrContextual::test_expand1_lists_with_one_item_2 tests/test_parser.py::TestLalrContextual::test_float_without_lexer tests/test_parser.py::TestLalrContextual::test_g_regex_flags tests/test_parser.py::TestLalrContextual::test_hex_escape tests/test_parser.py::TestLalrContextual::test_hex_literal_range_escape tests/test_parser.py::TestLalrContextual::test_ignore tests/test_parser.py::TestLalrContextual::test_import tests/test_parser.py::TestLalrContextual::test_import_errors tests/test_parser.py::TestLalrContextual::test_import_rename tests/test_parser.py::TestLalrContextual::test_join_regex_flags tests/test_parser.py::TestLalrContextual::test_keep_all_tokens tests/test_parser.py::TestLalrContextual::test_lexer_detect_newline_tokens tests/test_parser.py::TestLalrContextual::test_lexer_token_limit tests/test_parser.py::TestLalrContextual::test_line_and_column tests/test_parser.py::TestLalrContextual::test_line_counting tests/test_parser.py::TestLalrContextual::test_maybe tests/test_parser.py::TestLalrContextual::test_maybe_placeholders tests/test_parser.py::TestLalrContextual::test_meddling_unused tests/test_parser.py::TestLalrContextual::test_multi_import tests/test_parser.py::TestLalrContextual::test_multi_start tests/test_parser.py::TestLalrContextual::test_priority_vs_embedded tests/test_parser.py::TestLalrContextual::test_ranged_repeat_rules tests/test_parser.py::TestLalrContextual::test_ranged_repeat_terms tests/test_parser.py::TestLalrContextual::test_reduce_cycle tests/test_parser.py::TestLalrContextual::test_regex_escaping tests/test_parser.py::TestLalrContextual::test_regex_quote tests/test_parser.py::TestLalrContextual::test_relative_import tests/test_parser.py::TestLalrContextual::test_relative_import_of_nested_grammar tests/test_parser.py::TestLalrContextual::test_relative_import_preserves_leading_underscore tests/test_parser.py::TestLalrContextual::test_relative_import_rename tests/test_parser.py::TestLalrContextual::test_relative_import_rules_dependencies_imported_only_once tests/test_parser.py::TestLalrContextual::test_relative_import_unicode tests/test_parser.py::TestLalrContextual::test_relative_multi_import tests/test_parser.py::TestLalrContextual::test_relative_rule_import tests/test_parser.py::TestLalrContextual::test_relative_rule_import_drop_ignore tests/test_parser.py::TestLalrContextual::test_relative_rule_import_rename tests/test_parser.py::TestLalrContextual::test_relative_rule_import_subrule tests/test_parser.py::TestLalrContextual::test_relative_rule_import_subrule_no_conflict tests/test_parser.py::TestLalrContextual::test_rule_collision tests/test_parser.py::TestLalrContextual::test_rule_collision2 tests/test_parser.py::TestLalrContextual::test_serialize tests/test_parser.py::TestLalrContextual::test_special_chars tests/test_parser.py::TestLalrContextual::test_stack_for_ebnf tests/test_parser.py::TestLalrContextual::test_start tests/test_parser.py::TestLalrContextual::test_stringio_unicode tests/test_parser.py::TestLalrContextual::test_templates tests/test_parser.py::TestLalrContextual::test_templates_alias tests/test_parser.py::TestLalrContextual::test_templates_import tests/test_parser.py::TestLalrContextual::test_templates_modifiers tests/test_parser.py::TestLalrContextual::test_templates_recursion tests/test_parser.py::TestLalrContextual::test_templates_templates tests/test_parser.py::TestLalrContextual::test_token_collision tests/test_parser.py::TestLalrContextual::test_token_collision2 tests/test_parser.py::TestLalrContextual::test_token_collision_WS tests/test_parser.py::TestLalrContextual::test_token_ebnf tests/test_parser.py::TestLalrContextual::test_token_flags tests/test_parser.py::TestLalrContextual::test_token_flags2 tests/test_parser.py::TestLalrContextual::test_token_flags3 tests/test_parser.py::TestLalrContextual::test_token_flags_verbose tests/test_parser.py::TestLalrContextual::test_token_flags_verbose_multiline tests/test_parser.py::TestLalrContextual::test_token_multiline_only_works_with_x_flag tests/test_parser.py::TestLalrContextual::test_token_not_anon tests/test_parser.py::TestLalrContextual::test_twice_empty tests/test_parser.py::TestLalrContextual::test_undefined_ignore tests/test_parser.py::TestLalrContextual::test_undefined_rule tests/test_parser.py::TestLalrContextual::test_undefined_token tests/test_parser.py::TestLalrContextual::test_unicode tests/test_parser.py::TestLalrContextual::test_unicode2 tests/test_parser.py::TestLalrContextual::test_unicode3 tests/test_parser.py::TestLalrContextual::test_unicode_class tests/test_parser.py::TestLalrContextual::test_unicode_literal_range_escape tests/test_parser.py::TestLalrContextual::test_unicode_word tests/test_parser.py::TestLalrContextual::test_utf8 tests/test_parser.py::TestLalrCustom::test_alias tests/test_parser.py::TestLalrCustom::test_alias_in_terminal tests/test_parser.py::TestLalrCustom::test_backslash tests/test_parser.py::TestLalrCustom::test_backslash2 tests/test_parser.py::TestLalrCustom::test_basic1 tests/test_parser.py::TestLalrCustom::test_basic2 tests/test_parser.py::TestLalrCustom::test_bytes_utf8 tests/test_parser.py::TestLalrCustom::test_dont_expand1_lists_with_multiple_items tests/test_parser.py::TestLalrCustom::test_dont_expand1_lists_with_multiple_items_2 tests/test_parser.py::TestLalrCustom::test_empty tests/test_parser.py::TestLalrCustom::test_empty_end tests/test_parser.py::TestLalrCustom::test_empty_expand1_list tests/test_parser.py::TestLalrCustom::test_empty_expand1_list_2 tests/test_parser.py::TestLalrCustom::test_empty_flatten_list tests/test_parser.py::TestLalrCustom::test_escaped_string tests/test_parser.py::TestLalrCustom::test_expand1_lists_with_one_item tests/test_parser.py::TestLalrCustom::test_expand1_lists_with_one_item_2 tests/test_parser.py::TestLalrCustom::test_float_without_lexer tests/test_parser.py::TestLalrCustom::test_g_regex_flags tests/test_parser.py::TestLalrCustom::test_hex_escape tests/test_parser.py::TestLalrCustom::test_hex_literal_range_escape tests/test_parser.py::TestLalrCustom::test_ignore tests/test_parser.py::TestLalrCustom::test_import tests/test_parser.py::TestLalrCustom::test_import_errors tests/test_parser.py::TestLalrCustom::test_import_rename tests/test_parser.py::TestLalrCustom::test_join_regex_flags tests/test_parser.py::TestLalrCustom::test_keep_all_tokens tests/test_parser.py::TestLalrCustom::test_lexer_detect_newline_tokens tests/test_parser.py::TestLalrCustom::test_lexer_token_limit tests/test_parser.py::TestLalrCustom::test_line_and_column tests/test_parser.py::TestLalrCustom::test_line_counting tests/test_parser.py::TestLalrCustom::test_maybe tests/test_parser.py::TestLalrCustom::test_maybe_placeholders tests/test_parser.py::TestLalrCustom::test_meddling_unused tests/test_parser.py::TestLalrCustom::test_multi_import tests/test_parser.py::TestLalrCustom::test_multi_start tests/test_parser.py::TestLalrCustom::test_priority_vs_embedded tests/test_parser.py::TestLalrCustom::test_ranged_repeat_rules tests/test_parser.py::TestLalrCustom::test_ranged_repeat_terms tests/test_parser.py::TestLalrCustom::test_reduce_cycle tests/test_parser.py::TestLalrCustom::test_regex_escaping tests/test_parser.py::TestLalrCustom::test_regex_quote tests/test_parser.py::TestLalrCustom::test_relative_import tests/test_parser.py::TestLalrCustom::test_relative_import_of_nested_grammar tests/test_parser.py::TestLalrCustom::test_relative_import_preserves_leading_underscore tests/test_parser.py::TestLalrCustom::test_relative_import_rename tests/test_parser.py::TestLalrCustom::test_relative_import_rules_dependencies_imported_only_once tests/test_parser.py::TestLalrCustom::test_relative_import_unicode tests/test_parser.py::TestLalrCustom::test_relative_multi_import tests/test_parser.py::TestLalrCustom::test_relative_rule_import tests/test_parser.py::TestLalrCustom::test_relative_rule_import_drop_ignore tests/test_parser.py::TestLalrCustom::test_relative_rule_import_rename tests/test_parser.py::TestLalrCustom::test_relative_rule_import_subrule tests/test_parser.py::TestLalrCustom::test_relative_rule_import_subrule_no_conflict tests/test_parser.py::TestLalrCustom::test_rule_collision tests/test_parser.py::TestLalrCustom::test_rule_collision2 tests/test_parser.py::TestLalrCustom::test_special_chars tests/test_parser.py::TestLalrCustom::test_stack_for_ebnf tests/test_parser.py::TestLalrCustom::test_start tests/test_parser.py::TestLalrCustom::test_stringio_unicode tests/test_parser.py::TestLalrCustom::test_templates tests/test_parser.py::TestLalrCustom::test_templates_alias tests/test_parser.py::TestLalrCustom::test_templates_import tests/test_parser.py::TestLalrCustom::test_templates_modifiers tests/test_parser.py::TestLalrCustom::test_templates_recursion tests/test_parser.py::TestLalrCustom::test_templates_templates tests/test_parser.py::TestLalrCustom::test_token_collision tests/test_parser.py::TestLalrCustom::test_token_collision2 tests/test_parser.py::TestLalrCustom::test_token_collision_WS tests/test_parser.py::TestLalrCustom::test_token_ebnf tests/test_parser.py::TestLalrCustom::test_token_flags tests/test_parser.py::TestLalrCustom::test_token_flags2 tests/test_parser.py::TestLalrCustom::test_token_flags3 tests/test_parser.py::TestLalrCustom::test_token_flags_verbose tests/test_parser.py::TestLalrCustom::test_token_flags_verbose_multiline tests/test_parser.py::TestLalrCustom::test_token_multiline_only_works_with_x_flag tests/test_parser.py::TestLalrCustom::test_token_not_anon tests/test_parser.py::TestLalrCustom::test_twice_empty tests/test_parser.py::TestLalrCustom::test_undefined_ignore tests/test_parser.py::TestLalrCustom::test_undefined_rule tests/test_parser.py::TestLalrCustom::test_undefined_token tests/test_parser.py::TestLalrCustom::test_unicode tests/test_parser.py::TestLalrCustom::test_unicode2 tests/test_parser.py::TestLalrCustom::test_unicode3 tests/test_parser.py::TestLalrCustom::test_unicode_class tests/test_parser.py::TestLalrCustom::test_unicode_literal_range_escape tests/test_parser.py::TestLalrCustom::test_unicode_word tests/test_parser.py::TestLalrCustom::test_utf8 tests/test_parser.py::TestFullEarleyDynamic::test_ambiguity1 tests/test_parser.py::TestFullEarleyDynamic::test_ambiguity2 tests/test_parser.py::TestFullEarleyDynamic::test_anon tests/test_parser.py::TestFullEarleyDynamic::test_earley tests/test_parser.py::TestFullEarleyDynamic::test_earley2 tests/test_parser.py::TestFullEarleyDynamic::test_earley4 tests/test_parser.py::TestFullEarleyDynamic::test_earley_explicit_ambiguity tests/test_parser.py::TestFullEarleyDynamic::test_earley_repeating_empty tests/test_parser.py::TestFullEarleyDynamic::test_fruitflies_ambig tests/test_parser.py::TestFullEarleyDynamic::test_term_ambig_resolve tests/test_parser.py::TestFullEarleyDynamic_complete::test_ambiguity1 tests/test_parser.py::TestFullEarleyDynamic_complete::test_ambiguity2 tests/test_parser.py::TestFullEarleyDynamic_complete::test_anon tests/test_parser.py::TestFullEarleyDynamic_complete::test_earley tests/test_parser.py::TestFullEarleyDynamic_complete::test_earley2 tests/test_parser.py::TestFullEarleyDynamic_complete::test_earley3 tests/test_parser.py::TestFullEarleyDynamic_complete::test_earley4 tests/test_parser.py::TestFullEarleyDynamic_complete::test_earley_explicit_ambiguity tests/test_parser.py::TestFullEarleyDynamic_complete::test_earley_repeating_empty tests/test_parser.py::TestFullEarleyDynamic_complete::test_explicit_ambiguity2 tests/test_parser.py::TestFullEarleyDynamic_complete::test_fruitflies_ambig tests/test_parser.py::TestFullEarleyDynamic_complete::test_term_ambig_resolve tests/test_parser.py::TestParsers::test_alias tests/test_parser.py::TestParsers::test_big_list tests/test_parser.py::TestParsers::test_comment_in_rule_definition tests/test_parser.py::TestParsers::test_embedded_transformer tests/test_parser.py::TestParsers::test_embedded_transformer_inplace tests/test_parser.py::TestParsers::test_expand1 tests/test_parser.py::TestParsers::test_infinite_recurse tests/test_parser.py::TestParsers::test_propagate_positions tests/test_parser.py::TestParsers::test_same_ast tests/test_parser.py::TestParsers::test_vargs_meta tests/test_parser.py::TestParsers::test_vargs_tree tests/test_parser.py::TestParsers::test_visit_tokens
lark/parse_tree_builder.py lark/parsers/earley.py lark/parsers/earley_forest.py
lark/parse_tree_builder.py lark/parsers/earley.py lark/parsers/earley_forest.py