diff --git a/lark/load_grammar.py b/lark/load_grammar.py index 362a845d..9b6c5a4d 100644 --- a/lark/load_grammar.py +++ b/lark/load_grammar.py @@ -174,7 +174,7 @@ '_import_path': ['import_lib', 'import_rel'], 'import_lib': ['_import_args'], 'import_rel': ['_DOT _import_args'], - '_import_args': ['name', '_import_args _DOT name'], + '_import_args': ['name', '_import_args _DOT name', '_import_args _DOT OP'], 'name_list': ['_name_list'], '_name_list': ['name', '_name_list _COMMA name'], @@ -1325,8 +1325,12 @@ def do_import(self, dotted_path: Tuple[str, ...], base_path: Optional[str], alia self.used_files[joined_path] = h gb = GrammarBuilder(self.global_keep_all_tokens, self.import_paths, self.used_files) - gb.load_grammar(text, joined_path, mangle) - gb._remove_unused(map(mangle, aliases)) + if '*' in aliases: + assert len(aliases) == 1 + gb.load_grammar(text, joined_path, base_mangle) + else: + gb.load_grammar(text, joined_path, mangle) + gb._remove_unused(map(mangle, aliases)) for name in gb._definitions: if name in self._definitions: raise GrammarError("Cannot import '%s' from '%s': Symbol already defined." % (name, grammar_path))