From: <fwi...@us...> - 2008-07-28 02:41:40
|
Revision: 5005 http://jython.svn.sourceforge.net/jython/?rev=5005&view=rev Author: fwierzbicki Date: 2008-07-28 02:41:38 +0000 (Mon, 28 Jul 2008) Log Message: ----------- Better error messages in the face of parser errors (line numbers + char column). Modified Paths: -------------- branches/asm/src/org/python/core/ParserFacade.java Modified: branches/asm/src/org/python/core/ParserFacade.java =================================================================== --- branches/asm/src/org/python/core/ParserFacade.java 2008-07-27 13:21:12 UTC (rev 5004) +++ branches/asm/src/org/python/core/ParserFacade.java 2008-07-28 02:41:38 UTC (rev 5005) @@ -40,8 +40,9 @@ private ParserFacade() {} static String getLine(BufferedReader reader, int line) { - if (reader == null) + if (reader == null) { return ""; + } try { String text=null; for(int i=0; i < line; i++) { @@ -68,8 +69,8 @@ if (t instanceof ParseException) { ParseException e = (ParseException)t; PythonTree node = (PythonTree)e.node; - int line=0; - int col=0; + int line=e.line; + int col=e.charPositionInLine; if (node != null) { line = node.getLine(); col = node.getCharPositionInLine(); @@ -103,7 +104,7 @@ try { if (kind.equals("eval")) { bufreader = prepBufreader(new LeadingSpaceSkippingStream(bstream), cflags, filename); - CharStream cs = new ANTLRReaderStream(bufreader); + CharStream cs = new NoCloseReaderStream(bufreader); ExpressionParser e = new ExpressionParser(cs); node = e.parse(); } else if (kind.equals("single")) { @@ -112,7 +113,7 @@ node = i.parse(); } else if (kind.equals("exec")) { bufreader = prepBufreader(bstream, cflags, filename); - CharStream cs = new ANTLRReaderStream(bufreader); + CharStream cs = new NoCloseReaderStream(bufreader); ModuleParser g = new ModuleParser(cs); node = g.file_input(); } else { @@ -120,6 +121,14 @@ } } catch (Throwable t) { throw fixParseError(bufreader, t, filename); + } finally { + try { + if (bufreader != null) { + bufreader.close(); + } + } catch (IOException i) { + //XXX + } } return node; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |