Skip to content

Commit

Permalink
Initial support for import * (WIP)
Browse files Browse the repository at this point in the history
  • Loading branch information
erezsh committed Aug 14, 2024
1 parent acfe33d commit a500cf0
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions lark/load_grammar.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'],
Expand Down Expand Up @@ -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))
Expand Down

0 comments on commit a500cf0

Please sign in to comment.