diff --git a/jedi/api/__init__.py b/jedi/api/__init__.py index 67777731..094a8cb2 100644 --- a/jedi/api/__init__.py +++ b/jedi/api/__init__.py @@ -122,7 +122,7 @@ class Script(object): cache.clear_time_caches() debug.reset_time() - self._grammar = load_grammar('grammar%s.%s' % sys.version_info[:2]) + self._grammar = load_grammar(version='%s.%s' % sys.version_info[:2]) self._user_context = UserContext(self.source, self._pos) self._parser = UserContextParser(self._grammar, self.source, path, self._pos, self._user_context, diff --git a/jedi/evaluate/compiled/fake.py b/jedi/evaluate/compiled/fake.py index c5ccdede..8b3a7d23 100644 --- a/jedi/evaluate/compiled/fake.py +++ b/jedi/evaluate/compiled/fake.py @@ -30,7 +30,7 @@ def _load_faked_module(module): except IOError: modules[module_name] = None return - grammar = load_grammar('grammar3.4') + grammar = load_grammar(version='3.4') module = ParserWithRecovery(grammar, unicode(source), module_name).module modules[module_name] = module diff --git a/jedi/parser/__init__.py b/jedi/parser/__init__.py index a7c3a9f8..446f6671 100644 --- a/jedi/parser/__init__.py +++ b/jedi/parser/__init__.py @@ -41,16 +41,18 @@ class ParseError(Exception): """ -def load_grammar(file='grammar3.4'): +def load_grammar(version='3.4'): # For now we only support two different Python syntax versions: The latest # Python 3 and Python 2. This may change. - if file.startswith('grammar3'): - file = 'grammar3.4' - else: - file = 'grammar2.7' + if version in ('3.2', '3.3'): + version = '3.4' + elif version == '2.6': + version == '2.7' + + file = 'grammar' + version + '.txt' global _loaded_grammars - path = os.path.join(os.path.dirname(__file__), file) + '.txt' + path = os.path.join(os.path.dirname(__file__), file) try: return _loaded_grammars[path] except KeyError: diff --git a/test/test_parser/test_parser.py b/test/test_parser/test_parser.py index 588bad1f..6b739531 100644 --- a/test/test_parser/test_parser.py +++ b/test/test_parser/test_parser.py @@ -190,7 +190,7 @@ def test_param_splitting(): """ def check(src, result): # Python 2 tuple params should be ignored for now. - grammar = load_grammar('grammar%s.%s' % sys.version_info[:2]) + grammar = load_grammar('%s.%s' % sys.version_info[:2]) m = ParserWithRecovery(grammar, u(src)).module if is_py3: assert not m.subscopes