[pypy-svn] r44453 - in pypy/dist/pypy/lang/scheme: . test
cfbolz at codespeak.net
cfbolz at codespeak.net
Sat Jun 23 00:45:50 CEST 2007
Author: cfbolz
Date: Sat Jun 23 00:45:50 2007
New Revision: 44453
Modified:
pypy/dist/pypy/lang/scheme/ssparser.py
pypy/dist/pypy/lang/scheme/test/test_parser.py
Log:
unquoting of strings
Modified: pypy/dist/pypy/lang/scheme/ssparser.py
==============================================================================
--- pypy/dist/pypy/lang/scheme/ssparser.py (original)
+++ pypy/dist/pypy/lang/scheme/ssparser.py Sat Jun 23 00:45:50 2007
@@ -5,12 +5,15 @@
DEBUG = False
+def unquote(s):
+ return s.replace('\\"', '"')
+
class SchemeParser(PackratParser):
r'''
STRING:
c = `\"([^\\\"]|\\\"|\\\\)*\"`
IGNORE*
- return {W_String(c)};
+ return {W_String(unquote(c[1:-1]))};
IDENTIFIER:
c = `[\+\-\*\^\?a-zA-Z!<=>_~/$%&:][\+\-\*\^\?a-zA-Z0-9!<=>_~/$%&:]*`
Modified: pypy/dist/pypy/lang/scheme/test/test_parser.py
==============================================================================
--- pypy/dist/pypy/lang/scheme/test/test_parser.py (original)
+++ pypy/dist/pypy/lang/scheme/test/test_parser.py Sat Jun 23 00:45:50 2007
@@ -29,8 +29,9 @@
assert isinstance(w_fixnum, W_Symbol)
w_fixnum = parse(r'''+''')
assert isinstance(w_fixnum, W_Symbol)
- t = parse(r'''"don't beleive \"them\""''')
+ t = parse(r'''"don't believe \"them\""''')
assert isinstance(t, W_String)
+ assert unwrap(t) == 'don\'t believe "them"'
w_list = parse(r'''(+ 1 2)''')
assert isinstance(w_list, W_Pair)
assert isinstance(w_list.car, W_Symbol)
@@ -62,4 +63,3 @@
assert isinstance(t.car, W_Symbol)
assert isinstance(t.cdr, W_Nil)
-
More information about the Pypy-commit
mailing list