this file (t.jac) causes the grammar to recurse into a rule named "impossible" which does not exist:
$ 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'
this file (t.jac) causes the grammar to recurse into a rule named "impossible" which does not exist:
the grammar source is here:
jac-vscode/syntaxes/jac.tmLanguage.json
Line 1541 in 468a529
impossible)in
babithis results in a crash (viababi-textmate-demo t.jac):