[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