[pypy-svn] r45651 - pypy/dist/pypy/translator/goal
jlg at codespeak.net
jlg at codespeak.net
Tue Aug 14 12:38:45 CEST 2007
Author: jlg
Date: Tue Aug 14 12:38:44 2007
New Revision: 45651
Modified:
pypy/dist/pypy/translator/goal/targetscheme.py
Log:
parser should return list or raise assertion; no translation warnings
Modified: pypy/dist/pypy/translator/goal/targetscheme.py
==============================================================================
--- pypy/dist/pypy/translator/goal/targetscheme.py (original)
+++ pypy/dist/pypy/translator/goal/targetscheme.py Tue Aug 14 12:38:44 2007
@@ -6,7 +6,8 @@
import sys
from pypy.rlib.streamio import open_file_as_stream
from pypy.lang.scheme.ssparser import parse
-from pypy.lang.scheme.object import SchemeQuit
+from pypy.rlib.parsing.makepackrat import BacktrackException
+from pypy.lang.scheme.object import SchemeQuit, ContinuationReturn
from pypy.lang.scheme.execution import ExecutionContext
# __________ Entry point __________
@@ -14,13 +15,26 @@
def entry_point(argv):
if len(argv) == 2:
- f = open_file_as_stream(argv[1])
- t = parse(f.readall())
+ code = open_file_as_stream(argv[1]).readall()
+ try:
+ t = parse(code)
+ except BacktrackException:
+ #(line, col) = e.error.get_line_column(code)
+ #expected = " ".join(e.error.expected)
+ print "parse error"
+ return 1
+
+ #this should not be necessary here
+ assert isinstance(t, list)
ctx = ExecutionContext()
try:
for sexpr in t:
- w_retval = sexpr.eval(ctx)
- print w_retval.to_string()
+ try:
+ w_retval = sexpr.eval(ctx)
+ print w_retval.to_string()
+ except ContinuationReturn, e:
+ print e.result.to_string()
+
except SchemeQuit, e:
return 0
More information about the Pypy-commit
mailing list