[Python-checkins] r53450 - sandbox/trunk/2to3/patcomp.py sandbox/trunk/2to3/pygram.py sandbox/trunk/2to3/refactor.py
guido.van.rossum
python-checkins at python.org
Mon Jan 15 02:03:17 CET 2007
Author: guido.van.rossum
Date: Mon Jan 15 02:03:16 2007
New Revision: 53450
Modified:
sandbox/trunk/2to3/patcomp.py
sandbox/trunk/2to3/pygram.py
sandbox/trunk/2to3/refactor.py
Log:
Make it possible to run refactor.py from a different directory.
Don't parse Grammar.txt twice.
Better diagnostics (showing traceback) if a fixer class can't be instantiated.
Modified: sandbox/trunk/2to3/patcomp.py
==============================================================================
--- sandbox/trunk/2to3/patcomp.py (original)
+++ sandbox/trunk/2to3/patcomp.py Mon Jan 15 02:03:16 2007
@@ -11,6 +11,7 @@
__author__ = "Guido van Rossum <guido at python.org>"
# Python imports
+import os
import token
import tokenize
@@ -20,19 +21,11 @@
# Really local imports
import pytree
+import pygram
-
-class Symbols(object):
-
- def __init__(self, grammar):
- """Initializer.
-
- Creates an attribute for each grammar symbol (nonterminal),
- whose value is the symbol's type (an int >= 256).
- """
- self._grammar = grammar
- for name in grammar.symbol2number:
- setattr(self, name, grammar.symbol2number[name])
+# The pattern grammar file
+_PATTERN_GRAMMAR_FILE = os.path.join(os.path.dirname(__file__),
+ "PatternGrammar.txt")
def tokenize_wrapper(input):
@@ -47,15 +40,15 @@
class PatternCompiler(object):
- def __init__(self, grammar_file="PatternGrammar.txt"):
+ def __init__(self, grammar_file=_PATTERN_GRAMMAR_FILE):
"""Initializer.
Takes an optional alternative filename for the pattern grammar.
"""
self.grammar = driver.load_grammar(grammar_file)
- self.syms = Symbols(self.grammar)
- self.pygrammar = driver.load_grammar("Grammar.txt")
- self.pysyms = Symbols(self.pygrammar)
+ 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)
def compile_pattern(self, input, debug=False):
Modified: sandbox/trunk/2to3/pygram.py
==============================================================================
--- sandbox/trunk/2to3/pygram.py (original)
+++ sandbox/trunk/2to3/pygram.py Mon Jan 15 02:03:16 2007
@@ -4,21 +4,30 @@
"""Export the Python grammar and symbols."""
# Python imports
+import os
import token
# Local imports
import pytree
from pgen2 import driver
+# The grammar file
+_GRAMMAR_FILE = os.path.join(os.path.dirname(__file__), "Grammar.txt")
+
class Symbols(object):
- def __init__(self, gr):
- for name, symbol in gr.symbol2number.iteritems():
+ def __init__(self, grammar):
+ """Initializer.
+
+ Creates an attribute for each grammar symbol (nonterminal),
+ whose value is the symbol's type (an int >= 256).
+ """
+ for name, symbol in grammar.symbol2number.iteritems():
setattr(self, name, symbol)
-python_grammar = driver.load_grammar("Grammar.txt")
+python_grammar = driver.load_grammar(_GRAMMAR_FILE)
python_symbols = Symbols(python_grammar)
Modified: sandbox/trunk/2to3/refactor.py
==============================================================================
--- sandbox/trunk/2to3/refactor.py (original)
+++ sandbox/trunk/2to3/refactor.py Mon Jan 15 02:03:16 2007
@@ -123,17 +123,17 @@
fixer = fix_class(self.options)
except Exception, err:
self.log_error("Can't instantiate fixes.fix_%s.%s()",
- fix_name, class_name)
+ fix_name, class_name, exc_info=True)
continue
if self.options.verbose:
self.log_message("Adding transformation: %s", fix_name)
fixers.append(fixer)
return fixers
- def log_error(self, msg, *args):
+ def log_error(self, msg, *args, **kwds):
"""Increments error count and log a message."""
self.errors += 1
- self.logger.error(msg, *args)
+ self.logger.error(msg, *args, **kwds)
def log_message(self, msg, *args):
"""Hook to log a message."""
More information about the Python-checkins
mailing list