[pypy-svn] r17900 - pypy/dist/pypy/interpreter/pyparser

ac at codespeak.net ac at codespeak.net
Tue Sep 27 14:20:36 CEST 2005


Author: ac
Date: Tue Sep 27 14:20:36 2005
New Revision: 17900

Modified:
   pypy/dist/pypy/interpreter/pyparser/astbuilder.py
   pypy/dist/pypy/interpreter/pyparser/pythonparse.py
Log:
Use proper encoding when interpreting strings.

Modified: pypy/dist/pypy/interpreter/pyparser/astbuilder.py
==============================================================================
--- pypy/dist/pypy/interpreter/pyparser/astbuilder.py	(original)
+++ pypy/dist/pypy/interpreter/pyparser/astbuilder.py	Tue Sep 27 14:20:36 2005
@@ -553,14 +553,14 @@
             if len(atoms) == 1:
                 token = atoms[0]
                 assert isinstance(token, TokenObject)
-                builder.push(ast.Const(parsestr(builder.space, None, token.get_value()), top.lineno)) # XXX encoding
+                builder.push(ast.Const(parsestr(builder.space, builder.source_encoding, token.get_value()), top.lineno))
             else:
                 space = builder.space
                 empty = space.wrap('')
                 accum = []
                 for token in atoms:
                     assert isinstance(token, TokenObject)
-                    accum.append(parsestr(builder.space, None, token.get_value())) # XXX encoding
+                    accum.append(parsestr(builder.space, builder.source_encoding, token.get_value()))
                 w_s = space.call_method(empty, 'join', space.newlist(accum))
                 builder.push(ast.Const(w_s, top.lineno))
         elif top.name == tok.BACKQUOTE:
@@ -1581,7 +1581,8 @@
         BaseGrammarBuilder.__init__(self, rules, debug)
         self.rule_stack = []
         self.space = space
-
+        self.source_encoding = None
+        
     def context(self):
         return AstBuilderContext(self.rule_stack)
 

Modified: pypy/dist/pypy/interpreter/pyparser/pythonparse.py
==============================================================================
--- pypy/dist/pypy/interpreter/pyparser/pythonparse.py	(original)
+++ pypy/dist/pypy/interpreter/pyparser/pythonparse.py	Tue Sep 27 14:20:36 2005
@@ -37,11 +37,9 @@
         goalnumber = pysymbol.sym_values[goal]
         target = self.rules[goalnumber]
         src = Source(lines, flags)
-        
-        result = target.match(src, builder)
-        # <HACK> XXX find a clean way to process encoding declarations
         builder.source_encoding = src.encoding
-        # </HACK>
+
+        result = target.match(src, builder)
         if not result:
             line, lineno = src.debug()
             # XXX needs better error messages



More information about the Pypy-commit mailing list