[pypy-commit] lang-js default: handle lexer error

stepahn noreply at buildbot.pypy.org
Fri Dec 28 11:35:30 CET 2012


Author: Stephan <stephan at stzal.com>
Branch: 
Changeset: r308:2b64e213c29b
Date: 2012-12-11 12:22 +0100
http://bitbucket.org/pypy/lang-js/changeset/2b64e213c29b/

Log:	handle lexer error

diff --git a/js/py-js.py b/js/py-js.py
--- a/js/py-js.py
+++ b/js/py-js.py
@@ -4,6 +4,7 @@
 from js.execution import JsException
 from pypy.rlib.objectmodel import enforceargs
 from pypy.rlib.parsing.parsing import ParseError
+from pypy.rlib.parsing.deterministic import LexerError
 
 
 def main(argv):
@@ -54,6 +55,9 @@
         except ParseError as exc:
             printsyntaxerror(filename, exc, line)
             continue
+        except LexerError as e:
+            printlexererror(filename, e, line)
+            continue
         except JsException as e:
             printerrormessage(filename, e._msg())
             continue
@@ -66,15 +70,23 @@
     os.write(1, encode_unicode_utf8(msg))
 
 
-def printsyntaxerror(filename, exc, source):
-    # XXX format syntax errors nicier
-    marker_indent = u' ' * exc.source_pos.columnno
-    error = exc.errorinformation.failure_reasons
-    error_lineno = exc.source_pos.lineno
+def print_sourcepos(filename, source_pos, source):
+    marker_indent = u' ' * source_pos.columnno
+    error_lineno = source_pos.lineno
     error_line = (source.splitlines())[error_lineno]
     printmessage(u'Syntax Error in: %s:%d\n' % (unicode(filename), error_lineno))
     printmessage(u'%s\n' % (unicode(error_line)))
     printmessage(u'%s^\n' % (marker_indent))
+
+
+def printlexererror(filename, exc, source):
+    print_sourcepos(filename, exc.source_pos, source)
+
+
+def printsyntaxerror(filename, exc, source):
+    # XXX format syntax errors nicier
+    print_sourcepos(filename, exc.source_pos, source)
+    error = exc.errorinformation.failure_reasons
     printmessage(u'Error: %s\n' % (unicode(str(error))))
 
 


More information about the pypy-commit mailing list