X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/82198030eef6f99ad47470d82c34d9a6e1a4e6df..8f380911e0cd8057bd9a1f0c418d81195ce858a3:/blib2to3/pygram.py diff --git a/blib2to3/pygram.py b/blib2to3/pygram.py index b847c1e..0c916a9 100644 --- a/blib2to3/pygram.py +++ b/blib2to3/pygram.py @@ -9,7 +9,6 @@ import os # Local imports from .pgen2 import token from .pgen2 import driver -from . import pytree # The grammar file _GRAMMAR_FILE = os.path.join(os.path.dirname(__file__), "Grammar.txt") @@ -29,19 +28,36 @@ class Symbols(object): setattr(self, name, symbol) -# Python 2 -python_grammar = driver.load_packaged_grammar("blib2to3", _GRAMMAR_FILE) +def initialize(cache_dir=None): + global python_grammar + global python_grammar_no_print_statement + global python_grammar_no_print_statement_no_exec_statement + global python_grammar_no_print_statement_no_exec_statement_async_keywords + global python_symbols + global pattern_grammar + global pattern_symbols -python_symbols = Symbols(python_grammar) + # Python 2 + python_grammar = driver.load_packaged_grammar("blib2to3", _GRAMMAR_FILE, + cache_dir) -# Python 2 + from __future__ import print_function -python_grammar_no_print_statement = python_grammar.copy() -del python_grammar_no_print_statement.keywords["print"] + python_symbols = Symbols(python_grammar) -# Python 3 -python_grammar_no_print_statement_no_exec_statement = python_grammar.copy() -del python_grammar_no_print_statement_no_exec_statement.keywords["print"] -del python_grammar_no_print_statement_no_exec_statement.keywords["exec"] + # Python 2 + from __future__ import print_function + python_grammar_no_print_statement = python_grammar.copy() + del python_grammar_no_print_statement.keywords["print"] -pattern_grammar = driver.load_packaged_grammar("blib2to3", _PATTERN_GRAMMAR_FILE) -pattern_symbols = Symbols(pattern_grammar) + # Python 3.0-3.6 + python_grammar_no_print_statement_no_exec_statement = python_grammar.copy() + del python_grammar_no_print_statement_no_exec_statement.keywords["print"] + del python_grammar_no_print_statement_no_exec_statement.keywords["exec"] + + # Python 3.7+ + python_grammar_no_print_statement_no_exec_statement_async_keywords = ( + python_grammar_no_print_statement_no_exec_statement.copy() + ) + python_grammar_no_print_statement_no_exec_statement_async_keywords.async_keywords = True + + pattern_grammar = driver.load_packaged_grammar("blib2to3", _PATTERN_GRAMMAR_FILE, + cache_dir) + pattern_symbols = Symbols(pattern_grammar)