Skip to content

grammar attempts to load "impossible" rule #68

@asottile

Description

@asottile

this file (t.jac) causes the grammar to recurse into a rule named "impossible" which does not exist:

f'''

the grammar source is here:

"include": "#impossible"
(that include goes nowhere though, there's no rule repository named impossible)

in babi this results in a crash (via babi-textmate-demo t.jac):

$ babi-textmate-demo t.jac 

Traceback (most recent call last):
  File "/home/asottile/opt/venv/bin/babi-textmate-demo", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/asottile/opt/venv/lib/python3.12/site-packages/babi/textmate_demo.py", line 66, in main
    return _highlight_output(theme, compiler, args.filename)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/asottile/opt/venv/lib/python3.12/site-packages/babi/textmate_demo.py", line 44, in _highlight_output
    state, regions = highlight_line(compiler, state, line, first_line)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/asottile/opt/venv/lib/python3.12/site-packages/babi/highlight.py", line 748, in highlight_line
    search_res = state.cur.rule.search(
                 ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/asottile/opt/venv/lib/python3.12/site-packages/babi/highlight.py", line 362, in search
    return _do_regset(idx, match, self, compiler, state, pos)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/asottile/opt/venv/lib/python3.12/site-packages/babi/highlight.py", line 331, in _do_regset
    target_rule = compiler.compile_rule(rule.u_rules[idx])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/asottile/opt/venv/lib/python3.12/site-packages/babi/highlight.py", line 632, in compile_rule
    ret = self._c_rules[rule] = self._compile_rule(grammar, rule)
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/asottile/opt/venv/lib/python3.12/site-packages/babi/highlight.py", line 600, in _compile_rule
    regs, rules = self._patterns(grammar, rule.patterns)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/asottile/opt/venv/lib/python3.12/site-packages/babi/highlight.py", line 564, in _patterns_
    tmp_regs, tmp_rules = self._include(
                          ^^^^^^^^^^^^^^
  File "/home/asottile/opt/venv/lib/python3.12/site-packages/babi/highlight.py", line 546, in _include_
    return self._patterns(grammar, (repository[s[1:]],))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/asottile/opt/venv/lib/python3.12/site-packages/babi/highlight.py", line 570, in _patterns_
    tmp_regs, tmp_rules = self._patterns(grammar, rule.patterns)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/asottile/opt/venv/lib/python3.12/site-packages/babi/highlight.py", line 564, in _patterns_
    tmp_regs, tmp_rules = self._include(
                          ^^^^^^^^^^^^^^
  File "/home/asottile/opt/venv/lib/python3.12/site-packages/babi/highlight.py", line 546, in _include_
    return self._patterns(grammar, (repository[s[1:]],))
                                    ~~~~~~~~~~^^^^^^^
  File "/home/asottile/opt/venv/lib/python3.12/site-packages/babi/fdict.py", line 45, in __getitem__
    raise KeyError(key)
KeyError: 'impossible'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions