private void appendError(XmlBError err) { if (errList == null) { errList = new ArrayList(); } errList.Add(err); }
/// <summary>Is invoked in case of a failure for which /// there is still hope to use error recovery.</summary> public void recoverableFail(String msg) // throws XmlBException, XmlBRecoveryException { bool goOn; int first; String a; XmlBError err; // System.out.println ("RecoveryBp: " + recoveryBp); if (recoveryBp == 0) { fatalFail(msg); } err = new XmlBError(msg, getPtr()); goOn = true; while (goOn) { skipTill('<'); first = getPtr(); advance(); // System.out.println ("Current = " + current()); if (current() == '/') { advance(); skipTill('>'); a = slice(first, 1 + getPtr() - first); try { advance(); } catch (XmlBException) { ; } // System.out.println ("Found: " + a); for (int i = recoveryBp - 1; i >= 0; i--) { //System.out.println ("Trying: " +i + ":" + // a + "/" + stack[i]); if (a.Equals(stack[i])) { appendError(err); throw new XmlBRecoveryException(stack[i]); } } } } fatalFail(msg); }
public String errorMessage(XmlBError err) { int f; int t; StringBuilder res; String errMsg; int errPtr; int line = 1; int col = 1; errMsg = err.getMsg(); errPtr = err.getPtr(); ArrayList tmp = errList; reset(); errList = tmp; // Find the line & column numbers // This is a bit brutal though.... for (int i = 0; i < errPtr; i++) { if (current() == '\n') { line += 1; col = 1; } else { col += 1; } advance(); } res = new StringBuilder(); res.Append(line); res.Append(":"); res.Append(col); res.Append(":"); res.Append(errMsg); res.Append(":\n"); f = errPtr - 60; t = errPtr + 60; if (f < 0) { f = 0; } else { res.Append(" ... "); } for (int i = f; i < t; i++) { if (i == errPtr) { res.Append('^'); } if (posOk(i)) { res.Append(charAt(i)); } } if (!posOk(t)) { res.Append("[EOF]"); } res.Append("\n"); return(res.ToString()); }
// throws XmlBException, XmlBRecoveryException /// <summary>Is invoked in case of a failure for which /// there is still hope to use error recovery.</summary> public void recoverableFail(String msg) { bool goOn; int first; String a; XmlBError err; // System.out.println ("RecoveryBp: " + recoveryBp); if (recoveryBp == 0) { fatalFail(msg); } err = new XmlBError(msg, getPtr()); goOn = true; while (goOn) { skipTill('<'); first = getPtr(); advance(); // System.out.println ("Current = " + current()); if (current() == '/') { advance(); skipTill('>'); a = slice(first, 1 + getPtr() - first); try { advance(); } catch (XmlBException) { ; } // System.out.println ("Found: " + a); for (int i = recoveryBp - 1; i >= 0; i--) { //System.out.println ("Trying: " +i + ":" + // a + "/" + stack[i]); if (a.Equals(stack[i])) { appendError(err); throw new XmlBRecoveryException(stack[i]); } } } } fatalFail(msg); }
public String errorMessage(XmlBError err) { int f; int t; StringBuilder res; String errMsg; int errPtr; int line = 1; int col = 1; errMsg = err.getMsg(); errPtr = err.getPtr(); ArrayList tmp = errList; reset(); errList = tmp; // Find the line & column numbers // This is a bit brutal though.... for (int i = 0; i < errPtr; i++) { if (current() == '\n') { line += 1; col = 1; } else { col += 1; } advance(); } res = new StringBuilder(); res.Append(line); res.Append(":"); res.Append(col); res.Append(":"); res.Append(errMsg); res.Append(":\n"); f = errPtr - 60; t = errPtr + 60; if (f < 0) f = 0; else res.Append(" ... "); for (int i = f; i < t; i++) { if (i == errPtr) res.Append('^'); if (posOk(i)) res.Append(charAt(i)); } if (!posOk(t)) { res.Append("[EOF]"); } res.Append("\n"); return res.ToString(); }