[pypy-svn] r44972 - in pypy/dist/pypy/lang/scheme: . test

jlg at codespeak.net jlg at codespeak.net
Thu Jul 12 17:02:27 CEST 2007


Author: jlg
Date: Thu Jul 12 17:02:22 2007
New Revision: 44972

Modified:
   pypy/dist/pypy/lang/scheme/interactive.py
   pypy/dist/pypy/lang/scheme/ssparser.py
   pypy/dist/pypy/lang/scheme/test/test_eval.py
   pypy/dist/pypy/lang/scheme/test/test_parser.py
Log:
(antocuni, jlg) - parse() now returns list of sexpressions, not only the first one

Modified: pypy/dist/pypy/lang/scheme/interactive.py
==============================================================================
--- pypy/dist/pypy/lang/scheme/interactive.py	(original)
+++ pypy/dist/pypy/lang/scheme/interactive.py	Thu Jul 12 17:02:22 2007
@@ -31,7 +31,7 @@
                 if to_exec == "":
                     print
                     raise SchemeQuit
-                print parse(to_exec).eval(ctx).to_string()
+                print parse(to_exec)[0].eval(ctx).to_string()
             except SchemeQuit, e:
                 break
             except BacktrackException, e:

Modified: pypy/dist/pypy/lang/scheme/ssparser.py
==============================================================================
--- pypy/dist/pypy/lang/scheme/ssparser.py	(original)
+++ pypy/dist/pypy/lang/scheme/ssparser.py	Thu Jul 12 17:02:22 2007
@@ -42,7 +42,7 @@
     BOOLEAN:
         c = `#(t|f)`
         IGNORE*
-        return {W_Boolean(c[-1] == 't')};
+        return {W_Boolean(c[1] == 't')};
 
     IGNORE:
         ` |\n|\t|;[^\n]*`;
@@ -52,7 +52,7 @@
     
     file:
         IGNORE*
-        s = sexpr
+        s = sexpr*
         EOF
         return {s};
     

Modified: pypy/dist/pypy/lang/scheme/test/test_eval.py
==============================================================================
--- pypy/dist/pypy/lang/scheme/test/test_eval.py	(original)
+++ pypy/dist/pypy/lang/scheme/test/test_eval.py	Thu Jul 12 17:02:22 2007
@@ -8,10 +8,10 @@
     assert w_num.eval(None).to_number() == 9 
 
 def eval_expr(ctx, expr):
-    return parse(expr).eval(ctx)
+    return parse(expr)[0].eval(ctx)
 
 def eval_noctx(expr):
-    return parse(expr).eval(None)
+    return parse(expr)[0].eval(None)
 
 def test_numerical():
     w_num = eval_noctx("(+ 4)")

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	Thu Jul 12 17:02:22 2007
@@ -3,6 +3,9 @@
 from pypy.lang.scheme.object import W_Boolean, W_Float, W_Fixnum, W_String
 from pypy.lang.scheme.object import W_Pair, W_Nil, W_Symbol, W_Identifier
 
+def parse_sexpr(expr):
+    return parse(expr)[0]
+
 def unwrap(w_obj):
     """for testing purposes: unwrap a scheme object into a python object"""
     if isinstance(w_obj, W_Float):
@@ -26,43 +29,43 @@
     raise NotImplementedError("don't know what to do with: %s" % (w_obj, ))
 
 def test_simple():
-    w_fixnum = parse('1')
+    w_fixnum = parse_sexpr('1')
     assert isinstance(w_fixnum, W_Fixnum)
     assert unwrap(w_fixnum) == 1
-    w_fixnum = parse('0')
+    w_fixnum = parse_sexpr('0')
     assert unwrap(w_fixnum) == 0
     assert isinstance(w_fixnum, W_Fixnum)
-    w_fixnum = parse('1123')
+    w_fixnum = parse_sexpr('1123')
     assert unwrap(w_fixnum) == 1123
     assert isinstance(w_fixnum, W_Fixnum)
-    w_fixnum = parse('abfa__')
+    w_fixnum = parse_sexpr('abfa__')
     assert isinstance(w_fixnum, W_Identifier)
-    t = parse(r'''"don't believe \"them\""''')
+    t = parse_sexpr(r'''"don't believe \"them\""''')
     assert isinstance(t, W_String)
     assert unwrap(t) == 'don\'t believe "them"'
 
 def test_objects():
-    w_fixnum = parse('-12345')
+    w_fixnum = parse_sexpr('-12345')
     assert isinstance(w_fixnum, W_Fixnum)
     assert unwrap(w_fixnum) == -12345
 
-    w_float = parse('123456.1234')
+    w_float = parse_sexpr('123456.1234')
     assert isinstance(w_float, W_Float)
     assert unwrap(w_float) == 123456.1234
-    w_float = parse('-123456.1234')
+    w_float = parse_sexpr('-123456.1234')
     assert isinstance(w_float, W_Float)
     assert unwrap(w_float) == -123456.1234
 
 def test_sexpr():
-    w_list = parse('( 1 )')
+    w_list = parse_sexpr('( 1 )')
     assert isinstance(w_list, W_Pair)
     assert isinstance(w_list.car, W_Fixnum)
     assert isinstance(w_list.cdr, W_Nil)
 
-    #w_list = parse('()')
+    #w_list = parse_sexpr('()')
     #assert isinstance(w_list, W_Nil)
 
-    w_list = parse('(+ 1 2)')
+    w_list = parse_sexpr('(+ 1 2)')
     assert isinstance(w_list, W_Pair)
     assert isinstance(w_list.car, W_Identifier)
     assert isinstance(w_list.cdr, W_Pair)
@@ -72,7 +75,7 @@
 
 def test_complex_sexpr():
     #parse more complex sexpr
-    t = parse(r'''
+    t = parse_sexpr(r'''
         (define (fac n) ; comment
             (if (< n 2) n
                 (* (fac (- n 1)) n)))
@@ -88,38 +91,38 @@
         yield check_ident_ch, char
 
 def check_ident_ch(char):
-    t = parse("(" + char + ")")
+    t = parse_sexpr("(" + char + ")")
     assert isinstance(t, W_Pair)
     assert isinstance(t.car, W_Identifier)
     assert unwrap(t.car) == char
     assert isinstance(t.cdr, W_Nil)
 
 def test_truth_values():
-    t = parse("#f")
+    t = parse_sexpr("#f")
     assert unwrap(t) == False
-    t = parse("#t")
+    t = parse_sexpr("#t")
     assert unwrap(t) == True
 
 def test_list_dotted():
-    t = parse("(1 . 2)")
+    t = parse_sexpr("(1 . 2)")
     assert isinstance(t, W_Pair)
     assert unwrap(t.car) == 1
     assert unwrap(t.cdr) == 2
 
-    t = parse("(1 . (2 . 3))")
+    t = parse_sexpr("(1 . (2 . 3))")
     assert unwrap(t.car) == 1
     assert unwrap(t.cdr.car) == 2
     assert unwrap(t.cdr.cdr) == 3
 
-    t = parse("(1 . (2 . (3 . ())))")
+    t = parse_sexpr("(1 . (2 . (3 . ())))")
     assert unwrap(t) == [1, 2, 3]
 
 def test_list_mixed():
-    t = parse("(1 2 . 3)")
+    t = parse_sexpr("(1 2 . 3)")
     assert unwrap(t.car) == 1
     assert unwrap(t.cdr.car) == 2
     assert unwrap(t.cdr.cdr) == 3
 
-    t = parse("(1 2 . (3 4))")
+    t = parse_sexpr("(1 2 . (3 4))")
     assert unwrap(t) == [1, 2, 3, 4]
 



More information about the Pypy-commit mailing list