setattr(self, name, symbol)
-python_grammar = driver.load_packaged_grammar("blib2to3", _GRAMMAR_FILE)
-
-python_symbols = Symbols(python_grammar)
-
-python_grammar_no_print_statement = python_grammar.copy()
-del python_grammar_no_print_statement.keywords["print"]
-
-python_grammar_no_exec_statement = python_grammar.copy()
-del python_grammar_no_exec_statement.keywords["exec"]
-
-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"]
-
-pattern_grammar = driver.load_packaged_grammar("blib2to3", _PATTERN_GRAMMAR_FILE)
-pattern_symbols = Symbols(pattern_grammar)
+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_symbols
+ global pattern_grammar
+ global pattern_symbols
+
+ # Python 2
+ python_grammar = driver.load_packaged_grammar("blib2to3", _GRAMMAR_FILE,
+ cache_dir)
+
+ python_symbols = Symbols(python_grammar)
+
+ # Python 2 + from __future__ import print_function
+ python_grammar_no_print_statement = python_grammar.copy()
+ del python_grammar_no_print_statement.keywords["print"]
+
+ # 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"]
+
+ pattern_grammar = driver.load_packaged_grammar("blib2to3", _PATTERN_GRAMMAR_FILE,
+ cache_dir)
+ pattern_symbols = Symbols(pattern_grammar)