Exemple #1
0
 private void appendError(XmlBError err)
 {
     if (errList == null)
     {
         errList = new ArrayList();
     }
     errList.Add(err);
 }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        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();
        }
 private void appendError(XmlBError err)
 {
     if (errList == null)
     {
         errList = new ArrayList();
     }
     errList.Add(err);
 }