Browse Source

get_namespace_name now preserves leading underscore on relative import

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.7.1
PJCampi 5 years ago
parent
commit
4889013404
4 changed files with 16 additions and 0 deletions
  1. +2
    -0
      lark/load_grammar.py
  2. +6
    -0
      tests/grammars/leading_underscore_grammar.lark
  3. +5
    -0
      tests/test_parser.py
  4. +3
    -0
      tests/test_relative_import_preserves_leading_underscore.lark

+ 2
- 0
lark/load_grammar.py View File

@@ -597,6 +597,8 @@ def import_from_grammar_into_namespace(grammar, namespace, aliases):
try:
return aliases[name].value
except KeyError:
if name[0] == '_':
return '_%s__%s' % (namespace, name[1:])
return '%s__%s' % (namespace, name)

to_import = list(bfs(aliases, rule_dependencies))


+ 6
- 0
tests/grammars/leading_underscore_grammar.lark View File

@@ -0,0 +1,6 @@
A: "A"

_SEP: "x"
_a: A

c: _a _SEP

+ 5
- 0
tests/test_parser.py View File

@@ -1099,6 +1099,11 @@ def _make_parser_test(LEXER, PARSER):
x = l.parse('12 capybaras')
self.assertEqual(x.children, ['12', 'capybaras'])

def test_relative_import_preserves_leading_underscore(self):
l = _Lark_open("test_relative_import_preserves_leading_underscore.lark", rel_to=__file__)
x = l.parse('Ax')
self.assertEqual(next(x.find_data('c')).children, ['A'])

def test_import_errors(self):
grammar = """
start: NUMBER WORD


+ 3
- 0
tests/test_relative_import_preserves_leading_underscore.lark View File

@@ -0,0 +1,3 @@
start: c

%import .grammars.leading_underscore_grammar.c

Loading…
Cancel
Save