From 48890134040f9a607c99da9bb15ab39cb30a3f63 Mon Sep 17 00:00:00 2001 From: PJCampi Date: Wed, 10 Apr 2019 02:33:55 +0200 Subject: [PATCH] get_namespace_name now preserves leading underscore on relative import --- lark/load_grammar.py | 2 ++ tests/grammars/leading_underscore_grammar.lark | 6 ++++++ tests/test_parser.py | 5 +++++ .../test_relative_import_preserves_leading_underscore.lark | 3 +++ 4 files changed, 16 insertions(+) create mode 100644 tests/grammars/leading_underscore_grammar.lark create mode 100644 tests/test_relative_import_preserves_leading_underscore.lark diff --git a/lark/load_grammar.py b/lark/load_grammar.py index b638a71..3608fcb 100644 --- a/lark/load_grammar.py +++ b/lark/load_grammar.py @@ -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)) diff --git a/tests/grammars/leading_underscore_grammar.lark b/tests/grammars/leading_underscore_grammar.lark new file mode 100644 index 0000000..b09a2f4 --- /dev/null +++ b/tests/grammars/leading_underscore_grammar.lark @@ -0,0 +1,6 @@ +A: "A" + +_SEP: "x" +_a: A + +c: _a _SEP \ No newline at end of file diff --git a/tests/test_parser.py b/tests/test_parser.py index 7cd7dd8..92f2f06 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -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 diff --git a/tests/test_relative_import_preserves_leading_underscore.lark b/tests/test_relative_import_preserves_leading_underscore.lark new file mode 100644 index 0000000..92c08c6 --- /dev/null +++ b/tests/test_relative_import_preserves_leading_underscore.lark @@ -0,0 +1,3 @@ +start: c + +%import .grammars.leading_underscore_grammar.c \ No newline at end of file