From 4e6f92b03bfef56fc83260f539d763f1dea3496e Mon Sep 17 00:00:00 2001 From: Erez Shinan Date: Sat, 9 Mar 2019 15:48:14 +0200 Subject: [PATCH] Support relative rule import in interactive environment (Issue #335) --- lark/load_grammar.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lark/load_grammar.py b/lark/load_grammar.py index f3b15a8..3fa1d72 100644 --- a/lark/load_grammar.py +++ b/lark/load_grammar.py @@ -749,10 +749,16 @@ class GrammarLoader: g = import_grammar(grammar_path) else: # Relative import if grammar_name == '': # Import relative to script file path if grammar is coded in script - base_file = os.path.abspath(sys.modules['__main__'].__file__) + try: + base_file = os.path.abspath(sys.modules['__main__'].__file__) + except AttributeError: + base_file = None else: base_file = grammar_name # Import relative to grammar file path if external grammar file - base_path = os.path.split(base_file)[0] + if base_file: + base_path = os.path.split(base_file)[0] + else: + base_path = os.path.abspath(os.path.curdir) g = import_grammar(grammar_path, base_paths=[base_path]) aliases_dict = dict(zip(names, aliases))