[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