[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