Author: Stephan <step...@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)))) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit