[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