]> granicus.if.org Git - python/commitdiff
make PatternCompiler use the packaged grammar if possible (more bpo-24960) (GH-5034...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Fri, 29 Dec 2017 02:12:41 +0000 (18:12 -0800)
committerBenjamin Peterson <benjamin@python.org>
Fri, 29 Dec 2017 02:12:41 +0000 (18:12 -0800)
(cherry picked from commit e5f7dccefaa8d97ab53b3051acbb4a4d49379dc4)

Lib/lib2to3/patcomp.py

index 06a4b9dd230e36fec3ec6c188064a2e8d1c4045f..5bda0f9299d9bd1c933579fbe451b78a96889ad3 100644 (file)
@@ -21,10 +21,6 @@ from .pgen2 import driver, literals, token, tokenize, parse, grammar
 from . import pytree
 from . import pygram
 
-# The pattern grammar file
-_PATTERN_GRAMMAR_FILE = os.path.join(os.path.dirname(__file__),
-                                     "PatternGrammar.txt")
-
 
 class PatternSyntaxError(Exception):
     pass
@@ -42,13 +38,17 @@ def tokenize_wrapper(input):
 
 class PatternCompiler(object):
 
-    def __init__(self, grammar_file=_PATTERN_GRAMMAR_FILE):
+    def __init__(self, grammar_file=None):
         """Initializer.
 
         Takes an optional alternative filename for the pattern grammar.
         """
-        self.grammar = driver.load_grammar(grammar_file)
-        self.syms = pygram.Symbols(self.grammar)
+        if grammar_file is None:
+            self.grammar = pygram.pattern_grammar
+            self.syms = pygram.pattern_symbols
+        else:
+            self.grammar = driver.load_grammar(grammar_file)
+            self.syms = pygram.Symbols(self.grammar)
         self.pygrammar = pygram.python_grammar
         self.pysyms = pygram.python_symbols
         self.driver = driver.Driver(self.grammar, convert=pattern_convert)