You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2003/07/04 19:58:30 UTC

cvs commit: cocoon-2.1/src/java/org/apache/cocoon/components/xpointer/parser XPointerFrameworkParserConstants.java SimpleCharStream.java XPointerFrameworkParser.java XPointerFrameworkParserTokenManager.java ParseException.java Token.java TokenMgrError.java

cziegeler    2003/07/04 10:58:30

  Modified:    src/java/org/apache/cocoon/components/xpointer
                        ElementPathPart.java
               src/java/org/apache/cocoon/components/xpointer/parser
                        XPointerFrameworkParserConstants.java
                        SimpleCharStream.java XPointerFrameworkParser.java
                        XPointerFrameworkParserTokenManager.java
                        ParseException.java Token.java TokenMgrError.java
  Log:
  CLeaning up
  
  Revision  Changes    Path
  1.2       +50 -0     cocoon-2.1/src/java/org/apache/cocoon/components/xpointer/ElementPathPart.java
  
  Index: ElementPathPart.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/xpointer/ElementPathPart.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ElementPathPart.java	4 Jul 2003 09:42:31 -0000	1.1
  +++ ElementPathPart.java	4 Jul 2003 17:58:30 -0000	1.2
  @@ -1,3 +1,53 @@
  +/*
  +
  + ============================================================================
  +                   The Apache Software License, Version 1.1
  + ============================================================================
  +
  + Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
  +
  + Redistribution and use in source and binary forms, with or without modifica-
  + tion, are permitted provided that the following conditions are met:
  +
  + 1. Redistributions of  source code must  retain the above copyright  notice,
  +    this list of conditions and the following disclaimer.
  +
  + 2. Redistributions in binary form must reproduce the above copyright notice,
  +    this list of conditions and the following disclaimer in the documentation
  +    and/or other materials provided with the distribution.
  +
  + 3. The end-user documentation included with the redistribution, if any, must
  +    include  the following  acknowledgment:  "This product includes  software
  +    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
  +    Alternately, this  acknowledgment may  appear in the software itself,  if
  +    and wherever such third-party acknowledgments normally appear.
  +
  + 4. The names "Apache Cocoon" and  "Apache Software Foundation" must  not  be
  +    used to  endorse or promote  products derived from  this software without
  +    prior written permission. For written permission, please contact
  +    apache@apache.org.
  +
  + 5. Products  derived from this software may not  be called "Apache", nor may
  +    "Apache" appear  in their name,  without prior written permission  of the
  +    Apache Software Foundation.
  +
  + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  + FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
  + APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
  + INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
  + DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
  + OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
  + ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
  + (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
  + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  +
  + This software  consists of voluntary contributions made  by many individuals
  + on  behalf of the Apache Software  Foundation and was  originally created by
  + Stefano Mazzocchi  <st...@apache.org>. For more  information on the Apache
  + Software Foundation, please see <http://www.apache.org/>.
  +
  +*/
   package org.apache.cocoon.components.xpointer;
   
   import org.xml.sax.SAXException;
  
  
  
  1.2       +50 -1     cocoon-2.1/src/java/org/apache/cocoon/components/xpointer/parser/XPointerFrameworkParserConstants.java
  
  Index: XPointerFrameworkParserConstants.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/xpointer/parser/XPointerFrameworkParserConstants.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XPointerFrameworkParserConstants.java	20 May 2003 11:57:14 -0000	1.1
  +++ XPointerFrameworkParserConstants.java	4 Jul 2003 17:58:30 -0000	1.2
  @@ -1,4 +1,53 @@
  -/* Generated By:JavaCC: Do not edit this line. XPointerFrameworkParserConstants.java */
  +/*
  +
  + ============================================================================
  +                   The Apache Software License, Version 1.1
  + ============================================================================
  +
  + Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
  +
  + Redistribution and use in source and binary forms, with or without modifica-
  + tion, are permitted provided that the following conditions are met:
  +
  + 1. Redistributions of  source code must  retain the above copyright  notice,
  +    this list of conditions and the following disclaimer.
  +
  + 2. Redistributions in binary form must reproduce the above copyright notice,
  +    this list of conditions and the following disclaimer in the documentation
  +    and/or other materials provided with the distribution.
  +
  + 3. The end-user documentation included with the redistribution, if any, must
  +    include  the following  acknowledgment:  "This product includes  software
  +    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
  +    Alternately, this  acknowledgment may  appear in the software itself,  if
  +    and wherever such third-party acknowledgments normally appear.
  +
  + 4. The names "Apache Cocoon" and  "Apache Software Foundation" must  not  be
  +    used to  endorse or promote  products derived from  this software without
  +    prior written permission. For written permission, please contact
  +    apache@apache.org.
  +
  + 5. Products  derived from this software may not  be called "Apache", nor may
  +    "Apache" appear  in their name,  without prior written permission  of the
  +    Apache Software Foundation.
  +
  + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  + FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
  + APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
  + INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
  + DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
  + OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
  + ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
  + (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
  + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  +
  + This software  consists of voluntary contributions made  by many individuals
  + on  behalf of the Apache Software  Foundation and was  originally created by
  + Stefano Mazzocchi  <st...@apache.org>. For more  information on the Apache
  + Software Foundation, please see <http://www.apache.org/>.
  +
  +*/
   package org.apache.cocoon.components.xpointer.parser;
   
   public interface XPointerFrameworkParserConstants {
  
  
  
  1.2       +462 -385  cocoon-2.1/src/java/org/apache/cocoon/components/xpointer/parser/SimpleCharStream.java
  
  Index: SimpleCharStream.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/xpointer/parser/SimpleCharStream.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SimpleCharStream.java	20 May 2003 11:57:14 -0000	1.1
  +++ SimpleCharStream.java	4 Jul 2003 17:58:30 -0000	1.2
  @@ -1,4 +1,53 @@
  -/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 3.0 */
  +/*
  +
  + ============================================================================
  +                   The Apache Software License, Version 1.1
  + ============================================================================
  +
  + Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
  +
  + Redistribution and use in source and binary forms, with or without modifica-
  + tion, are permitted provided that the following conditions are met:
  +
  + 1. Redistributions of  source code must  retain the above copyright  notice,
  +    this list of conditions and the following disclaimer.
  +
  + 2. Redistributions in binary form must reproduce the above copyright notice,
  +    this list of conditions and the following disclaimer in the documentation
  +    and/or other materials provided with the distribution.
  +
  + 3. The end-user documentation included with the redistribution, if any, must
  +    include  the following  acknowledgment:  "This product includes  software
  +    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
  +    Alternately, this  acknowledgment may  appear in the software itself,  if
  +    and wherever such third-party acknowledgments normally appear.
  +
  + 4. The names "Apache Cocoon" and  "Apache Software Foundation" must  not  be
  +    used to  endorse or promote  products derived from  this software without
  +    prior written permission. For written permission, please contact
  +    apache@apache.org.
  +
  + 5. Products  derived from this software may not  be called "Apache", nor may
  +    "Apache" appear  in their name,  without prior written permission  of the
  +    Apache Software Foundation.
  +
  + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  + FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
  + APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
  + INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
  + DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
  + OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
  + ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
  + (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
  + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  +
  + This software  consists of voluntary contributions made  by many individuals
  + on  behalf of the Apache Software  Foundation and was  originally created by
  + Stefano Mazzocchi  <st...@apache.org>. For more  information on the Apache
  + Software Foundation, please see <http://www.apache.org/>.
  +
  +*/
   package org.apache.cocoon.components.xpointer.parser;
   
   /**
  @@ -6,396 +55,424 @@
    * contain only ASCII characters (without unicode processing).
    */
   
  -public class SimpleCharStream
  -{
  -  public static final boolean staticFlag = false;
  -  int bufsize;
  -  int available;
  -  int tokenBegin;
  -  public int bufpos = -1;
  -  protected int bufline[];
  -  protected int bufcolumn[];
  -
  -  protected int column = 0;
  -  protected int line = 1;
  -
  -  protected boolean prevCharIsCR = false;
  -  protected boolean prevCharIsLF = false;
  -
  -  protected java.io.Reader inputStream;
  -
  -  protected char[] buffer;
  -  protected int maxNextCharInd = 0;
  -  protected int inBuf = 0;
  -
  -  protected void ExpandBuff(boolean wrapAround)
  -  {
  -     char[] newbuffer = new char[bufsize + 2048];
  -     int newbufline[] = new int[bufsize + 2048];
  -     int newbufcolumn[] = new int[bufsize + 2048];
  -
  -     try
  -     {
  -        if (wrapAround)
  -        {
  -           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
  -           System.arraycopy(buffer, 0, newbuffer,
  -                                             bufsize - tokenBegin, bufpos);
  -           buffer = newbuffer;
  -
  -           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
  -           System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
  -           bufline = newbufline;
  -
  -           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
  -           System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
  -           bufcolumn = newbufcolumn;
  +public class SimpleCharStream {
  +    public static final boolean staticFlag = false;
  +    int bufsize;
  +    int available;
  +    int tokenBegin;
  +    public int bufpos = -1;
  +    protected int bufline[];
  +    protected int bufcolumn[];
  +
  +    protected int column = 0;
  +    protected int line = 1;
  +
  +    protected boolean prevCharIsCR = false;
  +    protected boolean prevCharIsLF = false;
  +
  +    protected java.io.Reader inputStream;
  +
  +    protected char[] buffer;
  +    protected int maxNextCharInd = 0;
  +    protected int inBuf = 0;
  +
  +    protected void ExpandBuff(boolean wrapAround) {
  +        char[] newbuffer = new char[bufsize + 2048];
  +        int newbufline[] = new int[bufsize + 2048];
  +        int newbufcolumn[] = new int[bufsize + 2048];
  +
  +        try {
  +            if (wrapAround) {
  +                System.arraycopy(
  +                    buffer,
  +                    tokenBegin,
  +                    newbuffer,
  +                    0,
  +                    bufsize - tokenBegin);
  +                System.arraycopy(
  +                    buffer,
  +                    0,
  +                    newbuffer,
  +                    bufsize - tokenBegin,
  +                    bufpos);
  +                buffer = newbuffer;
  +
  +                System.arraycopy(
  +                    bufline,
  +                    tokenBegin,
  +                    newbufline,
  +                    0,
  +                    bufsize - tokenBegin);
  +                System.arraycopy(
  +                    bufline,
  +                    0,
  +                    newbufline,
  +                    bufsize - tokenBegin,
  +                    bufpos);
  +                bufline = newbufline;
  +
  +                System.arraycopy(
  +                    bufcolumn,
  +                    tokenBegin,
  +                    newbufcolumn,
  +                    0,
  +                    bufsize - tokenBegin);
  +                System.arraycopy(
  +                    bufcolumn,
  +                    0,
  +                    newbufcolumn,
  +                    bufsize - tokenBegin,
  +                    bufpos);
  +                bufcolumn = newbufcolumn;
  +
  +                maxNextCharInd = (bufpos += (bufsize - tokenBegin));
  +            } else {
  +                System.arraycopy(
  +                    buffer,
  +                    tokenBegin,
  +                    newbuffer,
  +                    0,
  +                    bufsize - tokenBegin);
  +                buffer = newbuffer;
  +
  +                System.arraycopy(
  +                    bufline,
  +                    tokenBegin,
  +                    newbufline,
  +                    0,
  +                    bufsize - tokenBegin);
  +                bufline = newbufline;
  +
  +                System.arraycopy(
  +                    bufcolumn,
  +                    tokenBegin,
  +                    newbufcolumn,
  +                    0,
  +                    bufsize - tokenBegin);
  +                bufcolumn = newbufcolumn;
  +
  +                maxNextCharInd = (bufpos -= tokenBegin);
  +            }
  +        } catch (Throwable t) {
  +            throw new Error(t.getMessage());
  +        }
  +
  +        bufsize += 2048;
  +        available = bufsize;
  +        tokenBegin = 0;
  +    }
   
  -           maxNextCharInd = (bufpos += (bufsize - tokenBegin));
  +    protected void FillBuff() throws java.io.IOException {
  +        if (maxNextCharInd == available) {
  +            if (available == bufsize) {
  +                if (tokenBegin > 2048) {
  +                    bufpos = maxNextCharInd = 0;
  +                    available = tokenBegin;
  +                } else if (tokenBegin < 0)
  +                    bufpos = maxNextCharInd = 0;
  +                else
  +                    ExpandBuff(false);
  +            } else if (available > tokenBegin)
  +                available = bufsize;
  +            else if ((tokenBegin - available) < 2048)
  +                ExpandBuff(true);
  +            else
  +                available = tokenBegin;
           }
  -        else
  -        {
  -           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
  -           buffer = newbuffer;
  -
  -           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
  -           bufline = newbufline;
  -
  -           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
  -           bufcolumn = newbufcolumn;
  -
  -           maxNextCharInd = (bufpos -= tokenBegin);
  -        }
  -     }
  -     catch (Throwable t)
  -     {
  -        throw new Error(t.getMessage());
  -     }
  -
  -
  -     bufsize += 2048;
  -     available = bufsize;
  -     tokenBegin = 0;
  -  }
  -
  -  protected void FillBuff() throws java.io.IOException
  -  {
  -     if (maxNextCharInd == available)
  -     {
  -        if (available == bufsize)
  -        {
  -           if (tokenBegin > 2048)
  -           {
  -              bufpos = maxNextCharInd = 0;
  -              available = tokenBegin;
  -           }
  -           else if (tokenBegin < 0)
  -              bufpos = maxNextCharInd = 0;
  -           else
  -              ExpandBuff(false);
  -        }
  -        else if (available > tokenBegin)
  -           available = bufsize;
  -        else if ((tokenBegin - available) < 2048)
  -           ExpandBuff(true);
  -        else
  -           available = tokenBegin;
  -     }
   
  -     int i;
  -     try {
  -        if ((i = inputStream.read(buffer, maxNextCharInd,
  -                                    available - maxNextCharInd)) == -1)
  -        {
  -           inputStream.close();
  -           throw new java.io.IOException();
  +        int i;
  +        try {
  +            if ((i =
  +                inputStream.read(
  +                    buffer,
  +                    maxNextCharInd,
  +                    available - maxNextCharInd))
  +                == -1) {
  +                inputStream.close();
  +                throw new java.io.IOException();
  +            } else
  +                maxNextCharInd += i;
  +            return;
  +        } catch (java.io.IOException e) {
  +            --bufpos;
  +            backup(0);
  +            if (tokenBegin == -1)
  +                tokenBegin = bufpos;
  +            throw e;
           }
  -        else
  -           maxNextCharInd += i;
  -        return;
  -     }
  -     catch(java.io.IOException e) {
  -        --bufpos;
  -        backup(0);
  -        if (tokenBegin == -1)
  -           tokenBegin = bufpos;
  -        throw e;
  -     }
  -  }
  -
  -  public char BeginToken() throws java.io.IOException
  -  {
  -     tokenBegin = -1;
  -     char c = readChar();
  -     tokenBegin = bufpos;
  -
  -     return c;
  -  }
  -
  -  protected void UpdateLineColumn(char c)
  -  {
  -     column++;
  -
  -     if (prevCharIsLF)
  -     {
  -        prevCharIsLF = false;
  -        line += (column = 1);
  -     }
  -     else if (prevCharIsCR)
  -     {
  -        prevCharIsCR = false;
  -        if (c == '\n')
  -        {
  -           prevCharIsLF = true;
  +    }
  +
  +    public char BeginToken() throws java.io.IOException {
  +        tokenBegin = -1;
  +        char c = readChar();
  +        tokenBegin = bufpos;
  +
  +        return c;
  +    }
  +
  +    protected void UpdateLineColumn(char c) {
  +        column++;
  +
  +        if (prevCharIsLF) {
  +            prevCharIsLF = false;
  +            line += (column = 1);
  +        } else if (prevCharIsCR) {
  +            prevCharIsCR = false;
  +            if (c == '\n') {
  +                prevCharIsLF = true;
  +            } else
  +                line += (column = 1);
  +        }
  +
  +        switch (c) {
  +            case '\r' :
  +                prevCharIsCR = true;
  +                break;
  +            case '\n' :
  +                prevCharIsLF = true;
  +                break;
  +            case '\t' :
  +                column--;
  +                column += (8 - (column & 07));
  +                break;
  +            default :
  +                break;
           }
  +
  +        bufline[bufpos] = line;
  +        bufcolumn[bufpos] = column;
  +    }
  +
  +    public char readChar() throws java.io.IOException {
  +        if (inBuf > 0) {
  +            --inBuf;
  +
  +            if (++bufpos == bufsize)
  +                bufpos = 0;
  +
  +            return buffer[bufpos];
  +        }
  +
  +        if (++bufpos >= maxNextCharInd)
  +            FillBuff();
  +
  +        char c = buffer[bufpos];
  +
  +        UpdateLineColumn(c);
  +        return (c);
  +    }
  +
  +    /**
  +     * @deprecated 
  +     * @see #getEndColumn
  +     */
  +
  +    public int getColumn() {
  +        return bufcolumn[bufpos];
  +    }
  +
  +    /**
  +     * @deprecated 
  +     * @see #getEndLine
  +     */
  +
  +    public int getLine() {
  +        return bufline[bufpos];
  +    }
  +
  +    public int getEndColumn() {
  +        return bufcolumn[bufpos];
  +    }
  +
  +    public int getEndLine() {
  +        return bufline[bufpos];
  +    }
  +
  +    public int getBeginColumn() {
  +        return bufcolumn[tokenBegin];
  +    }
  +
  +    public int getBeginLine() {
  +        return bufline[tokenBegin];
  +    }
  +
  +    public void backup(int amount) {
  +
  +        inBuf += amount;
  +        if ((bufpos -= amount) < 0)
  +            bufpos += bufsize;
  +    }
  +
  +    public SimpleCharStream(
  +        java.io.Reader dstream,
  +        int startline,
  +        int startcolumn,
  +        int buffersize) {
  +        inputStream = dstream;
  +        line = startline;
  +        column = startcolumn - 1;
  +
  +        available = bufsize = buffersize;
  +        buffer = new char[buffersize];
  +        bufline = new int[buffersize];
  +        bufcolumn = new int[buffersize];
  +    }
  +
  +    public SimpleCharStream(
  +        java.io.Reader dstream,
  +        int startline,
  +        int startcolumn) {
  +        this(dstream, startline, startcolumn, 4096);
  +    }
  +
  +    public SimpleCharStream(java.io.Reader dstream) {
  +        this(dstream, 1, 1, 4096);
  +    }
  +    public void ReInit(
  +        java.io.Reader dstream,
  +        int startline,
  +        int startcolumn,
  +        int buffersize) {
  +        inputStream = dstream;
  +        line = startline;
  +        column = startcolumn - 1;
  +
  +        if (buffer == null || buffersize != buffer.length) {
  +            available = bufsize = buffersize;
  +            buffer = new char[buffersize];
  +            bufline = new int[buffersize];
  +            bufcolumn = new int[buffersize];
  +        }
  +        prevCharIsLF = prevCharIsCR = false;
  +        tokenBegin = inBuf = maxNextCharInd = 0;
  +        bufpos = -1;
  +    }
  +
  +    public void ReInit(
  +        java.io.Reader dstream,
  +        int startline,
  +        int startcolumn) {
  +        ReInit(dstream, startline, startcolumn, 4096);
  +    }
  +
  +    public void ReInit(java.io.Reader dstream) {
  +        ReInit(dstream, 1, 1, 4096);
  +    }
  +    public SimpleCharStream(
  +        java.io.InputStream dstream,
  +        int startline,
  +        int startcolumn,
  +        int buffersize) {
  +        this(
  +            new java.io.InputStreamReader(dstream),
  +            startline,
  +            startcolumn,
  +            4096);
  +    }
  +
  +    public SimpleCharStream(
  +        java.io.InputStream dstream,
  +        int startline,
  +        int startcolumn) {
  +        this(dstream, startline, startcolumn, 4096);
  +    }
  +
  +    public SimpleCharStream(java.io.InputStream dstream) {
  +        this(dstream, 1, 1, 4096);
  +    }
  +
  +    public void ReInit(
  +        java.io.InputStream dstream,
  +        int startline,
  +        int startcolumn,
  +        int buffersize) {
  +        ReInit(
  +            new java.io.InputStreamReader(dstream),
  +            startline,
  +            startcolumn,
  +            4096);
  +    }
  +
  +    public void ReInit(java.io.InputStream dstream) {
  +        ReInit(dstream, 1, 1, 4096);
  +    }
  +    public void ReInit(
  +        java.io.InputStream dstream,
  +        int startline,
  +        int startcolumn) {
  +        ReInit(dstream, startline, startcolumn, 4096);
  +    }
  +    public String GetImage() {
  +        if (bufpos >= tokenBegin)
  +            return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
           else
  -           line += (column = 1);
  -     }
  +            return new String(buffer, tokenBegin, bufsize - tokenBegin)
  +                + new String(buffer, 0, bufpos + 1);
  +    }
  +
  +    public char[] GetSuffix(int len) {
  +        char[] ret = new char[len];
  +
  +        if ((bufpos + 1) >= len)
  +            System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
  +        else {
  +            System.arraycopy(
  +                buffer,
  +                bufsize - (len - bufpos - 1),
  +                ret,
  +                0,
  +                len - bufpos - 1);
  +            System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
  +        }
  +
  +        return ret;
  +    }
   
  -     switch (c)
  -     {
  -        case '\r' :
  -           prevCharIsCR = true;
  -           break;
  -        case '\n' :
  -           prevCharIsLF = true;
  -           break;
  -        case '\t' :
  -           column--;
  -           column += (8 - (column & 07));
  -           break;
  -        default :
  -           break;
  -     }
  -
  -     bufline[bufpos] = line;
  -     bufcolumn[bufpos] = column;
  -  }
  -
  -  public char readChar() throws java.io.IOException
  -  {
  -     if (inBuf > 0)
  -     {
  -        --inBuf;
  -
  -        if (++bufpos == bufsize)
  -           bufpos = 0;
  -
  -        return buffer[bufpos];
  -     }
  -
  -     if (++bufpos >= maxNextCharInd)
  -        FillBuff();
  -
  -     char c = buffer[bufpos];
  -
  -     UpdateLineColumn(c);
  -     return (c);
  -  }
  -
  -  /**
  -   * @deprecated 
  -   * @see #getEndColumn
  -   */
  -
  -  public int getColumn() {
  -     return bufcolumn[bufpos];
  -  }
  -
  -  /**
  -   * @deprecated 
  -   * @see #getEndLine
  -   */
  -
  -  public int getLine() {
  -     return bufline[bufpos];
  -  }
  -
  -  public int getEndColumn() {
  -     return bufcolumn[bufpos];
  -  }
  -
  -  public int getEndLine() {
  -     return bufline[bufpos];
  -  }
  -
  -  public int getBeginColumn() {
  -     return bufcolumn[tokenBegin];
  -  }
  -
  -  public int getBeginLine() {
  -     return bufline[tokenBegin];
  -  }
  -
  -  public void backup(int amount) {
  -
  -    inBuf += amount;
  -    if ((bufpos -= amount) < 0)
  -       bufpos += bufsize;
  -  }
  -
  -  public SimpleCharStream(java.io.Reader dstream, int startline,
  -  int startcolumn, int buffersize)
  -  {
  -    inputStream = dstream;
  -    line = startline;
  -    column = startcolumn - 1;
  -
  -    available = bufsize = buffersize;
  -    buffer = new char[buffersize];
  -    bufline = new int[buffersize];
  -    bufcolumn = new int[buffersize];
  -  }
  -
  -  public SimpleCharStream(java.io.Reader dstream, int startline,
  -                                                           int startcolumn)
  -  {
  -     this(dstream, startline, startcolumn, 4096);
  -  }
  -
  -  public SimpleCharStream(java.io.Reader dstream)
  -  {
  -     this(dstream, 1, 1, 4096);
  -  }
  -  public void ReInit(java.io.Reader dstream, int startline,
  -  int startcolumn, int buffersize)
  -  {
  -    inputStream = dstream;
  -    line = startline;
  -    column = startcolumn - 1;
  -
  -    if (buffer == null || buffersize != buffer.length)
  -    {
  -      available = bufsize = buffersize;
  -      buffer = new char[buffersize];
  -      bufline = new int[buffersize];
  -      bufcolumn = new int[buffersize];
  -    }
  -    prevCharIsLF = prevCharIsCR = false;
  -    tokenBegin = inBuf = maxNextCharInd = 0;
  -    bufpos = -1;
  -  }
  -
  -  public void ReInit(java.io.Reader dstream, int startline,
  -                                                           int startcolumn)
  -  {
  -     ReInit(dstream, startline, startcolumn, 4096);
  -  }
  -
  -  public void ReInit(java.io.Reader dstream)
  -  {
  -     ReInit(dstream, 1, 1, 4096);
  -  }
  -  public SimpleCharStream(java.io.InputStream dstream, int startline,
  -  int startcolumn, int buffersize)
  -  {
  -     this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
  -  }
  -
  -  public SimpleCharStream(java.io.InputStream dstream, int startline,
  -                                                           int startcolumn)
  -  {
  -     this(dstream, startline, startcolumn, 4096);
  -  }
  -
  -  public SimpleCharStream(java.io.InputStream dstream)
  -  {
  -     this(dstream, 1, 1, 4096);
  -  }
  -
  -  public void ReInit(java.io.InputStream dstream, int startline,
  -                          int startcolumn, int buffersize)
  -  {
  -     ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
  -  }
  -
  -  public void ReInit(java.io.InputStream dstream)
  -  {
  -     ReInit(dstream, 1, 1, 4096);
  -  }
  -  public void ReInit(java.io.InputStream dstream, int startline,
  -                                                           int startcolumn)
  -  {
  -     ReInit(dstream, startline, startcolumn, 4096);
  -  }
  -  public String GetImage()
  -  {
  -     if (bufpos >= tokenBegin)
  -        return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
  -     else
  -        return new String(buffer, tokenBegin, bufsize - tokenBegin) +
  -                              new String(buffer, 0, bufpos + 1);
  -  }
  -
  -  public char[] GetSuffix(int len)
  -  {
  -     char[] ret = new char[len];
  -
  -     if ((bufpos + 1) >= len)
  -        System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
  -     else
  -     {
  -        System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
  -                                                          len - bufpos - 1);
  -        System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
  -     }
  -
  -     return ret;
  -  }
  -
  -  public void Done()
  -  {
  -     buffer = null;
  -     bufline = null;
  -     bufcolumn = null;
  -  }
  -
  -  /**
  -   * Method to adjust line and column numbers for the start of a token.<BR>
  -   */
  -  public void adjustBeginLineColumn(int newLine, int newCol)
  -  {
  -     int start = tokenBegin;
  -     int len;
  -
  -     if (bufpos >= tokenBegin)
  -     {
  -        len = bufpos - tokenBegin + inBuf + 1;
  -     }
  -     else
  -     {
  -        len = bufsize - tokenBegin + bufpos + 1 + inBuf;
  -     }
  -
  -     int i = 0, j = 0, k = 0;
  -     int nextColDiff = 0, columnDiff = 0;
  -
  -     while (i < len &&
  -            bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
  -     {
  -        bufline[j] = newLine;
  -        nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
  -        bufcolumn[j] = newCol + columnDiff;
  -        columnDiff = nextColDiff;
  -        i++;
  -     } 
  -
  -     if (i < len)
  -     {
  -        bufline[j] = newLine++;
  -        bufcolumn[j] = newCol + columnDiff;
  -
  -        while (i++ < len)
  -        {
  -           if (bufline[j = start % bufsize] != bufline[++start % bufsize])
  -              bufline[j] = newLine++;
  -           else
  -              bufline[j] = newLine;
  -        }
  -     }
  -
  -     line = bufline[j];
  -     column = bufcolumn[j];
  -  }
  +    public void Done() {
  +        buffer = null;
  +        bufline = null;
  +        bufcolumn = null;
  +    }
  +
  +    /**
  +     * Method to adjust line and column numbers for the start of a token.<BR>
  +     */
  +    public void adjustBeginLineColumn(int newLine, int newCol) {
  +        int start = tokenBegin;
  +        int len;
  +
  +        if (bufpos >= tokenBegin) {
  +            len = bufpos - tokenBegin + inBuf + 1;
  +        } else {
  +            len = bufsize - tokenBegin + bufpos + 1 + inBuf;
  +        }
  +
  +        int i = 0, j = 0, k = 0;
  +        int nextColDiff = 0, columnDiff = 0;
  +
  +        while (i < len && bufline[j =
  +            start % bufsize] == bufline[k = ++start % bufsize]) {
  +            bufline[j] = newLine;
  +            nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
  +            bufcolumn[j] = newCol + columnDiff;
  +            columnDiff = nextColDiff;
  +            i++;
  +        }
  +
  +        if (i < len) {
  +            bufline[j] = newLine++;
  +            bufcolumn[j] = newCol + columnDiff;
  +
  +            while (i++ < len) {
  +                if (bufline[j = start % bufsize] != bufline[++start % bufsize])
  +                    bufline[j] = newLine++;
  +                else
  +                    bufline[j] = newLine;
  +            }
  +        }
  +
  +        line = bufline[j];
  +        column = bufcolumn[j];
  +    }
   
   }
  
  
  
  1.3       +623 -506  cocoon-2.1/src/java/org/apache/cocoon/components/xpointer/parser/XPointerFrameworkParser.java
  
  Index: XPointerFrameworkParser.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/xpointer/parser/XPointerFrameworkParser.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XPointerFrameworkParser.java	4 Jul 2003 09:43:35 -0000	1.2
  +++ XPointerFrameworkParser.java	4 Jul 2003 17:58:30 -0000	1.3
  @@ -1,525 +1,642 @@
  -/* Generated By:JavaCC: Do not edit this line. XPointerFrameworkParser.java */
  -  package org.apache.cocoon.components.xpointer.parser;
  +/*
   
  -  import org.apache.cocoon.components.xpointer.*;
  -  import java.util.HashMap;
  + ============================================================================
  +                   The Apache Software License, Version 1.1
  + ============================================================================
  +
  + Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
  +
  + Redistribution and use in source and binary forms, with or without modifica-
  + tion, are permitted provided that the following conditions are met:
  +
  + 1. Redistributions of  source code must  retain the above copyright  notice,
  +    this list of conditions and the following disclaimer.
  +
  + 2. Redistributions in binary form must reproduce the above copyright notice,
  +    this list of conditions and the following disclaimer in the documentation
  +    and/or other materials provided with the distribution.
  +
  + 3. The end-user documentation included with the redistribution, if any, must
  +    include  the following  acknowledgment:  "This product includes  software
  +    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
  +    Alternately, this  acknowledgment may  appear in the software itself,  if
  +    and wherever such third-party acknowledgments normally appear.
  +
  + 4. The names "Apache Cocoon" and  "Apache Software Foundation" must  not  be
  +    used to  endorse or promote  products derived from  this software without
  +    prior written permission. For written permission, please contact
  +    apache@apache.org.
  +
  + 5. Products  derived from this software may not  be called "Apache", nor may
  +    "Apache" appear  in their name,  without prior written permission  of the
  +    Apache Software Foundation.
  +
  + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  + FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
  + APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
  + INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
  + DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
  + OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
  + ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
  + (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
  + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  +
  + This software  consists of voluntary contributions made  by many individuals
  + on  behalf of the Apache Software  Foundation and was  originally created by
  + Stefano Mazzocchi  <st...@apache.org>. For more  information on the Apache
  + Software Foundation, please see <http://www.apache.org/>.
   
  -  public class XPointerFrameworkParser implements XPointerFrameworkParserConstants {
  +*/
  +package org.apache.cocoon.components.xpointer.parser;
  +
  +import org.apache.cocoon.components.xpointer.*;
  +import java.util.HashMap;
  +
  +public class XPointerFrameworkParser
  +    implements XPointerFrameworkParserConstants {
       private XPointer xpointer = new XPointer();
       private HashMap namespaces = new HashMap();
   
  -    public static void main(String [] args) throws Exception {
  -      System.out.println("will parse this: " + args[0]);
  -      XPointerFrameworkParser xfp = new XPointerFrameworkParser(new java.io.StringReader(args[0]));
  -      xfp.pointer();
  +    public static void main(String[] args) throws Exception {
  +        System.out.println("will parse this: " + args[0]);
  +        XPointerFrameworkParser xfp =
  +            new XPointerFrameworkParser(new java.io.StringReader(args[0]));
  +        xfp.pointer();
       }
   
       public static XPointer parse(String xpointer) throws ParseException {
  -      XPointerFrameworkParser xfp = new XPointerFrameworkParser(new java.io.StringReader(xpointer));
  -      xfp.pointer();
  -      return xfp.getXPointer();
  +        XPointerFrameworkParser xfp =
  +            new XPointerFrameworkParser(new java.io.StringReader(xpointer));
  +        xfp.pointer();
  +        return xfp.getXPointer();
       }
   
       public XPointer getXPointer() {
  -      return xpointer;
  +        return xpointer;
       }
   
       private String unescape(String data) throws ParseException {
  -      StringBuffer result = new StringBuffer(data.length());
  -      boolean inCircumflex = false;
  -      for (int i = 0; i < data.length(); i++) {
  -        char c = data.charAt(i);
  -        if (inCircumflex) {
  -          switch (c) {
  -            case '^':
  -            case '(':
  -            case ')':
  -              result.append(c);
  -              inCircumflex = false;
  -              break;
  -            default:
  -              throw new ParseException("Incorrect use of circumflex character at position " + i + " in the string " + data);
  -          }
  -        } else if (c == '^') {
  -          inCircumflex = true;
  +        StringBuffer result = new StringBuffer(data.length());
  +        boolean inCircumflex = false;
  +        for (int i = 0; i < data.length(); i++) {
  +            char c = data.charAt(i);
  +            if (inCircumflex) {
  +                switch (c) {
  +                    case '^' :
  +                    case '(' :
  +                    case ')' :
  +                        result.append(c);
  +                        inCircumflex = false;
  +                        break;
  +                    default :
  +                        throw new ParseException(
  +                            "Incorrect use of circumflex character at position "
  +                                + i
  +                                + " in the string "
  +                                + data);
  +                }
  +            } else if (c == '^') {
  +                inCircumflex = true;
  +            } else {
  +                result.append(c);
  +            }
  +        }
  +        return result.toString();
  +    }
  +
  +    final public void pointer() throws ParseException {
  +        if (jj_2_1(2)) {
  +            schemeBased();
  +        } else {
  +            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
  +                case NCName :
  +                    shortHand();
  +                    break;
  +                default :
  +                    jj_la1[0] = jj_gen;
  +                    jj_consume_token(-1);
  +                    throw new ParseException();
  +            }
  +        }
  +    }
  +
  +    final public void shortHand() throws ParseException {
  +        Token x;
  +        x = jj_consume_token(NCName);
  +        xpointer.addPart(new ShorthandPart(x.image));
  +    }
  +
  +    final public void schemeBased() throws ParseException {
  +        pointerPart();
  +        label_1 : while (true) {
  +            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
  +                case NCName :
  +                case WS :
  +                case QName :
  +                    ;
  +                    break;
  +                default :
  +                    jj_la1[1] = jj_gen;
  +                    break label_1;
  +            }
  +            label_2 : while (true) {
  +                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
  +                    case WS :
  +                        ;
  +                        break;
  +                    default :
  +                        jj_la1[2] = jj_gen;
  +                        break label_2;
  +                }
  +                jj_consume_token(WS);
  +            }
  +            pointerPart();
  +        }
  +    }
  +
  +    final public void pointerPart() throws ParseException {
  +        Token x;
  +        String schemeName;
  +        String schemeData;
  +        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
  +            case NCName :
  +                x = jj_consume_token(NCName);
  +                break;
  +            case QName :
  +                x = jj_consume_token(QName);
  +                break;
  +            default :
  +                jj_la1[3] = jj_gen;
  +                jj_consume_token(-1);
  +                throw new ParseException();
  +        }
  +        jj_consume_token(LBRACE);
  +        // when going inside the scheme data, swith to a different lexical state
  +        token_source.SwitchTo(IN_SCHEME);
  +
  +        // store the scheme name
  +        schemeName = x.image;
  +        schemeData = schemeData();
  +        jj_consume_token(RBRACE);
  +        // when going outside the scheme data, swith back to the default lexical state
  +        token_source.SwitchTo(DEFAULT);
  +
  +        // parse schemeName in prefix and localName
  +        String schemeNamespace = null, schemeLocalName = null;
  +        int colonPos = schemeName.indexOf(':');
  +        if (colonPos != -1) {
  +            String schemePrefix = schemeName.substring(0, colonPos);
  +            schemeNamespace = (String) namespaces.get(schemePrefix);
  +            schemeLocalName = schemeName.substring(colonPos + 1);
  +        } else {
  +            schemeLocalName = schemeName;
  +        }
  +
  +        // add the pointer part
  +        if (schemeNamespace == null && schemeLocalName.equals("xmlns")) {
  +            int eqPos = schemeData.indexOf("=");
  +            if (eqPos == -1) {
  +                if (true)
  +                    throw new ParseException("xmlns scheme data should contain an equals sign");
  +            }
  +
  +            // Note: the trimming below is not entirely correct, since space is only allowed left
  +            // and right of the equal sign, but not at the beginning and end of the schemeData
  +            String prefix = schemeData.substring(0, eqPos).trim();
  +            String namespace =
  +                schemeData.substring(eqPos + 1, schemeData.length()).trim();
  +            xpointer.addPart(new XmlnsPart(prefix, namespace));
  +            namespaces.put(prefix, namespace);
  +        } else if (
  +            schemeNamespace == null && schemeLocalName.equals("xpointer")) {
  +            xpointer.addPart(new XPointerPart(schemeData));
  +        } else if (
  +            "http://apache.org/cocoon/xpointer".equals(schemeNamespace)
  +                && schemeLocalName.equals("elementpath")) {
  +            xpointer.addPart(new ElementPathPart(schemeData));
           } else {
  -          result.append(c);
  +            xpointer.addPart(new UnsupportedPart(schemeName));
  +        }
  +    }
  +
  +    final public String schemeData() throws ParseException {
  +        String temp;
  +        StringBuffer schemeData = new StringBuffer();
  +        label_3 : while (true) {
  +            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
  +                case LBRACE :
  +                case CIRC_LBRACE :
  +                case CIRC_RBRACE :
  +                case DOUBLE_CIRC :
  +                case NormalChar :
  +                    ;
  +                    break;
  +                default :
  +                    jj_la1[4] = jj_gen;
  +                    break label_3;
  +            }
  +            temp = escapedData();
  +            schemeData.append(temp);
  +        }
  +        {
  +            if (true)
  +                return unescape(schemeData.toString());
           }
  -      }
  -      return result.toString();
  +        throw new Error("Missing return statement in function");
       }
   
  -  final public void pointer() throws ParseException {
  -    if (jj_2_1(2)) {
  -      schemeBased();
  -    } else {
  -      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  -      case NCName:
  -        shortHand();
  -        break;
  -      default:
  -        jj_la1[0] = jj_gen;
  -        jj_consume_token(-1);
  -        throw new ParseException();
  -      }
  -    }
  -  }
  -
  -  final public void shortHand() throws ParseException {
  -  Token x;
  -    x = jj_consume_token(NCName);
  -    xpointer.addPart(new ShorthandPart(x.image));
  -  }
  -
  -  final public void schemeBased() throws ParseException {
  -    pointerPart();
  -    label_1:
  -    while (true) {
  -      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  -      case NCName:
  -      case WS:
  -      case QName:
  -        ;
  -        break;
  -      default:
  -        jj_la1[1] = jj_gen;
  -        break label_1;
  -      }
  -      label_2:
  -      while (true) {
  -        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  -        case WS:
  -          ;
  -          break;
  -        default:
  -          jj_la1[2] = jj_gen;
  -          break label_2;
  -        }
  -        jj_consume_token(WS);
  -      }
  -      pointerPart();
  -    }
  -  }
  -
  -  final public void pointerPart() throws ParseException {
  -  Token x;
  -  String schemeName;
  -  String schemeData;
  -    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  -    case NCName:
  -      x = jj_consume_token(NCName);
  -      break;
  -    case QName:
  -      x = jj_consume_token(QName);
  -      break;
  -    default:
  -      jj_la1[3] = jj_gen;
  -      jj_consume_token(-1);
  -      throw new ParseException();
  -    }
  -    jj_consume_token(LBRACE);
  -      // when going inside the scheme data, swith to a different lexical state
  -      token_source.SwitchTo(IN_SCHEME);
  -
  -      // store the scheme name
  -      schemeName = x.image;
  -    schemeData = schemeData();
  -    jj_consume_token(RBRACE);
  -      // when going outside the scheme data, swith back to the default lexical state
  -      token_source.SwitchTo(DEFAULT);
  -
  -      // parse schemeName in prefix and localName
  -      String schemeNamespace = null, schemeLocalName = null;
  -      int colonPos = schemeName.indexOf(':');
  -      if (colonPos != -1) {
  -         String schemePrefix = schemeName.substring(0, colonPos);
  -         schemeNamespace = (String)namespaces.get(schemePrefix);
  -         schemeLocalName = schemeName.substring(colonPos + 1);
  -       } else {
  -         schemeLocalName = schemeName;
  -       }
  -
  -
  -      // add the pointer part
  -      if (schemeNamespace == null && schemeLocalName.equals("xmlns")) {
  -        int eqPos = schemeData.indexOf("=");
  -        if (eqPos == -1)
  -          {if (true) throw new ParseException("xmlns scheme data should contain an equals sign");}
  -
  -        // Note: the trimming below is not entirely correct, since space is only allowed left
  -        // and right of the equal sign, but not at the beginning and end of the schemeData
  -        String prefix = schemeData.substring(0, eqPos).trim();
  -        String namespace = schemeData.substring(eqPos + 1, schemeData.length()).trim();
  -        xpointer.addPart(new XmlnsPart(prefix, namespace));
  -        namespaces.put(prefix, namespace);
  -      } else if (schemeNamespace == null && schemeLocalName.equals("xpointer")) {
  -        xpointer.addPart(new XPointerPart(schemeData));
  -      } else if ("http://apache.org/cocoon/xpointer".equals(schemeNamespace) && schemeLocalName.equals("elementpath")) {
  -        xpointer.addPart(new ElementPathPart(schemeData));
  -      } else {
  -        xpointer.addPart(new UnsupportedPart(schemeName));
  -      }
  -  }
  -
  -  final public String schemeData() throws ParseException {
  -  String temp;
  -  StringBuffer schemeData = new StringBuffer();
  -    label_3:
  -    while (true) {
  -      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  -      case LBRACE:
  -      case CIRC_LBRACE:
  -      case CIRC_RBRACE:
  -      case DOUBLE_CIRC:
  -      case NormalChar:
  -        ;
  -        break;
  -      default:
  -        jj_la1[4] = jj_gen;
  -        break label_3;
  -      }
  -      temp = escapedData();
  -                            schemeData.append(temp);
  -    }
  -    {if (true) return unescape(schemeData.toString());}
  -    throw new Error("Missing return statement in function");
  -  }
  -
  -  final public String escapedData() throws ParseException {
  -  Token x;
  -  String temp;
  -  StringBuffer data = new StringBuffer();
  -    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  -    case NormalChar:
  -      x = jj_consume_token(NormalChar);
  -                      data.append(x.image);
  -      break;
  -    case CIRC_LBRACE:
  -      x = jj_consume_token(CIRC_LBRACE);
  -                         data.append(x.image);
  -      break;
  -    case CIRC_RBRACE:
  -      x = jj_consume_token(CIRC_RBRACE);
  -                         data.append(x.image);
  -      break;
  -    case DOUBLE_CIRC:
  -      x = jj_consume_token(DOUBLE_CIRC);
  -                         data.append(x.image);
  -      break;
  -    case LBRACE:
  -      x = jj_consume_token(LBRACE);
  -                    data.append(x.image);
  -      temp = schemeData();
  -                           data.append(temp);
  -      x = jj_consume_token(RBRACE);
  -                    data.append(x.image);
  -      break;
  -    default:
  -      jj_la1[5] = jj_gen;
  -      jj_consume_token(-1);
  -      throw new ParseException();
  -    }
  -    {if (true) return data.toString();}
  -    throw new Error("Missing return statement in function");
  -  }
  -
  -  final private boolean jj_2_1(int xla) {
  -    jj_la = xla; jj_lastpos = jj_scanpos = token;
  -    boolean retval = !jj_3_1();
  -    jj_save(0, xla);
  -    return retval;
  -  }
  -
  -  final private boolean jj_3R_6() {
  -    if (jj_scan_token(NCName)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_4() {
  -    if (jj_3R_5()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_5() {
  -    Token xsp;
  -    xsp = jj_scanpos;
  -    if (jj_3R_6()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_7()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(LBRACE)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_7() {
  -    if (jj_scan_token(QName)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3_1() {
  -    if (jj_3R_4()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  public XPointerFrameworkParserTokenManager token_source;
  -  SimpleCharStream jj_input_stream;
  -  public Token token, jj_nt;
  -  private int jj_ntk;
  -  private Token jj_scanpos, jj_lastpos;
  -  private int jj_la;
  -  public boolean lookingAhead = false;
  -  private boolean jj_semLA;
  -  private int jj_gen;
  -  final private int[] jj_la1 = new int[6];
  -  static private int[] jj_la1_0;
  -  static {
  -      jj_la1_0();
  -   }
  -   private static void jj_la1_0() {
  -      jj_la1_0 = new int[] {0x80,0x380,0x100,0x280,0xf400,0xf400,};
  -   }
  -  final private JJCalls[] jj_2_rtns = new JJCalls[1];
  -  private boolean jj_rescan = false;
  -  private int jj_gc = 0;
  -
  -  public XPointerFrameworkParser(java.io.InputStream stream) {
  -    jj_input_stream = new SimpleCharStream(stream, 1, 1);
  -    token_source = new XPointerFrameworkParserTokenManager(jj_input_stream);
  -    token = new Token();
  -    jj_ntk = -1;
  -    jj_gen = 0;
  -    for (int i = 0; i < 6; i++) jj_la1[i] = -1;
  -    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  -  }
  -
  -  public void ReInit(java.io.InputStream stream) {
  -    jj_input_stream.ReInit(stream, 1, 1);
  -    token_source.ReInit(jj_input_stream);
  -    token = new Token();
  -    jj_ntk = -1;
  -    jj_gen = 0;
  -    for (int i = 0; i < 6; i++) jj_la1[i] = -1;
  -    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  -  }
  -
  -  public XPointerFrameworkParser(java.io.Reader stream) {
  -    jj_input_stream = new SimpleCharStream(stream, 1, 1);
  -    token_source = new XPointerFrameworkParserTokenManager(jj_input_stream);
  -    token = new Token();
  -    jj_ntk = -1;
  -    jj_gen = 0;
  -    for (int i = 0; i < 6; i++) jj_la1[i] = -1;
  -    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  -  }
  -
  -  public void ReInit(java.io.Reader stream) {
  -    jj_input_stream.ReInit(stream, 1, 1);
  -    token_source.ReInit(jj_input_stream);
  -    token = new Token();
  -    jj_ntk = -1;
  -    jj_gen = 0;
  -    for (int i = 0; i < 6; i++) jj_la1[i] = -1;
  -    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  -  }
  -
  -  public XPointerFrameworkParser(XPointerFrameworkParserTokenManager tm) {
  -    token_source = tm;
  -    token = new Token();
  -    jj_ntk = -1;
  -    jj_gen = 0;
  -    for (int i = 0; i < 6; i++) jj_la1[i] = -1;
  -    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  -  }
  -
  -  public void ReInit(XPointerFrameworkParserTokenManager tm) {
  -    token_source = tm;
  -    token = new Token();
  -    jj_ntk = -1;
  -    jj_gen = 0;
  -    for (int i = 0; i < 6; i++) jj_la1[i] = -1;
  -    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  -  }
  -
  -  final private Token jj_consume_token(int kind) throws ParseException {
  -    Token oldToken;
  -    if ((oldToken = token).next != null) token = token.next;
  -    else token = token.next = token_source.getNextToken();
  -    jj_ntk = -1;
  -    if (token.kind == kind) {
  -      jj_gen++;
  -      if (++jj_gc > 100) {
  -        jj_gc = 0;
  -        for (int i = 0; i < jj_2_rtns.length; i++) {
  -          JJCalls c = jj_2_rtns[i];
  -          while (c != null) {
  -            if (c.gen < jj_gen) c.first = null;
  -            c = c.next;
  -          }
  -        }
  -      }
  -      return token;
  -    }
  -    token = oldToken;
  -    jj_kind = kind;
  -    throw generateParseException();
  -  }
  -
  -  final private boolean jj_scan_token(int kind) {
  -    if (jj_scanpos == jj_lastpos) {
  -      jj_la--;
  -      if (jj_scanpos.next == null) {
  -        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
  -      } else {
  -        jj_lastpos = jj_scanpos = jj_scanpos.next;
  -      }
  -    } else {
  -      jj_scanpos = jj_scanpos.next;
  -    }
  -    if (jj_rescan) {
  -      int i = 0; Token tok = token;
  -      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
  -      if (tok != null) jj_add_error_token(kind, i);
  -    }
  -    return (jj_scanpos.kind != kind);
  -  }
  -
  -  final public Token getNextToken() {
  -    if (token.next != null) token = token.next;
  -    else token = token.next = token_source.getNextToken();
  -    jj_ntk = -1;
  -    jj_gen++;
  -    return token;
  -  }
  -
  -  final public Token getToken(int index) {
  -    Token t = lookingAhead ? jj_scanpos : token;
  -    for (int i = 0; i < index; i++) {
  -      if (t.next != null) t = t.next;
  -      else t = t.next = token_source.getNextToken();
  -    }
  -    return t;
  -  }
  -
  -  final private int jj_ntk() {
  -    if ((jj_nt=token.next) == null)
  -      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
  -    else
  -      return (jj_ntk = jj_nt.kind);
  -  }
  -
  -  private java.util.Vector jj_expentries = new java.util.Vector();
  -  private int[] jj_expentry;
  -  private int jj_kind = -1;
  -  private int[] jj_lasttokens = new int[100];
  -  private int jj_endpos;
  -
  -  private void jj_add_error_token(int kind, int pos) {
  -    if (pos >= 100) return;
  -    if (pos == jj_endpos + 1) {
  -      jj_lasttokens[jj_endpos++] = kind;
  -    } else if (jj_endpos != 0) {
  -      jj_expentry = new int[jj_endpos];
  -      for (int i = 0; i < jj_endpos; i++) {
  -        jj_expentry[i] = jj_lasttokens[i];
  -      }
  -      boolean exists = false;
  -      for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) {
  -        int[] oldentry = (int[])(enum.nextElement());
  -        if (oldentry.length == jj_expentry.length) {
  -          exists = true;
  -          for (int i = 0; i < jj_expentry.length; i++) {
  -            if (oldentry[i] != jj_expentry[i]) {
  -              exists = false;
  -              break;
  -            }
  -          }
  -          if (exists) break;
  -        }
  -      }
  -      if (!exists) jj_expentries.addElement(jj_expentry);
  -      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
  -    }
  -  }
  -
  -  public ParseException generateParseException() {
  -    jj_expentries.removeAllElements();
  -    boolean[] la1tokens = new boolean[16];
  -    for (int i = 0; i < 16; i++) {
  -      la1tokens[i] = false;
  -    }
  -    if (jj_kind >= 0) {
  -      la1tokens[jj_kind] = true;
  -      jj_kind = -1;
  -    }
  -    for (int i = 0; i < 6; i++) {
  -      if (jj_la1[i] == jj_gen) {
  -        for (int j = 0; j < 32; j++) {
  -          if ((jj_la1_0[i] & (1<<j)) != 0) {
  -            la1tokens[j] = true;
  -          }
  -        }
  -      }
  -    }
  -    for (int i = 0; i < 16; i++) {
  -      if (la1tokens[i]) {
  -        jj_expentry = new int[1];
  -        jj_expentry[0] = i;
  -        jj_expentries.addElement(jj_expentry);
  -      }
  -    }
  -    jj_endpos = 0;
  -    jj_rescan_token();
  -    jj_add_error_token(0, 0);
  -    int[][] exptokseq = new int[jj_expentries.size()][];
  -    for (int i = 0; i < jj_expentries.size(); i++) {
  -      exptokseq[i] = (int[])jj_expentries.elementAt(i);
  -    }
  -    return new ParseException(token, exptokseq, tokenImage);
  -  }
  -
  -  final public void enable_tracing() {
  -  }
  -
  -  final public void disable_tracing() {
  -  }
  -
  -  final private void jj_rescan_token() {
  -    jj_rescan = true;
  -    for (int i = 0; i < 1; i++) {
  -      JJCalls p = jj_2_rtns[i];
  -      do {
  -        if (p.gen > jj_gen) {
  -          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
  -          switch (i) {
  -            case 0: jj_3_1(); break;
  -          }
  -        }
  -        p = p.next;
  -      } while (p != null);
  -    }
  -    jj_rescan = false;
  -  }
  -
  -  final private void jj_save(int index, int xla) {
  -    JJCalls p = jj_2_rtns[index];
  -    while (p.gen > jj_gen) {
  -      if (p.next == null) { p = p.next = new JJCalls(); break; }
  -      p = p.next;
  -    }
  -    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
  -  }
  -
  -  static final class JJCalls {
  -    int gen;
  -    Token first;
  -    int arg;
  -    JJCalls next;
  -  }
  +    final public String escapedData() throws ParseException {
  +        Token x;
  +        String temp;
  +        StringBuffer data = new StringBuffer();
  +        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
  +            case NormalChar :
  +                x = jj_consume_token(NormalChar);
  +                data.append(x.image);
  +                break;
  +            case CIRC_LBRACE :
  +                x = jj_consume_token(CIRC_LBRACE);
  +                data.append(x.image);
  +                break;
  +            case CIRC_RBRACE :
  +                x = jj_consume_token(CIRC_RBRACE);
  +                data.append(x.image);
  +                break;
  +            case DOUBLE_CIRC :
  +                x = jj_consume_token(DOUBLE_CIRC);
  +                data.append(x.image);
  +                break;
  +            case LBRACE :
  +                x = jj_consume_token(LBRACE);
  +                data.append(x.image);
  +                temp = schemeData();
  +                data.append(temp);
  +                x = jj_consume_token(RBRACE);
  +                data.append(x.image);
  +                break;
  +            default :
  +                jj_la1[5] = jj_gen;
  +                jj_consume_token(-1);
  +                throw new ParseException();
  +        }
  +        {
  +            if (true)
  +                return data.toString();
  +        }
  +        throw new Error("Missing return statement in function");
  +    }
  +
  +    final private boolean jj_2_1(int xla) {
  +        jj_la = xla;
  +        jj_lastpos = jj_scanpos = token;
  +        boolean retval = !jj_3_1();
  +        jj_save(0, xla);
  +        return retval;
  +    }
  +
  +    final private boolean jj_3R_6() {
  +        if (jj_scan_token(NCName))
  +            return true;
  +        if (jj_la == 0 && jj_scanpos == jj_lastpos)
  +            return false;
  +        return false;
  +    }
  +
  +    final private boolean jj_3R_4() {
  +        if (jj_3R_5())
  +            return true;
  +        if (jj_la == 0 && jj_scanpos == jj_lastpos)
  +            return false;
  +        return false;
  +    }
  +
  +    final private boolean jj_3R_5() {
  +        Token xsp;
  +        xsp = jj_scanpos;
  +        if (jj_3R_6()) {
  +            jj_scanpos = xsp;
  +            if (jj_3R_7())
  +                return true;
  +            if (jj_la == 0 && jj_scanpos == jj_lastpos)
  +                return false;
  +        } else if (jj_la == 0 && jj_scanpos == jj_lastpos)
  +            return false;
  +        if (jj_scan_token(LBRACE))
  +            return true;
  +        if (jj_la == 0 && jj_scanpos == jj_lastpos)
  +            return false;
  +        return false;
  +    }
  +
  +    final private boolean jj_3R_7() {
  +        if (jj_scan_token(QName))
  +            return true;
  +        if (jj_la == 0 && jj_scanpos == jj_lastpos)
  +            return false;
  +        return false;
  +    }
  +
  +    final private boolean jj_3_1() {
  +        if (jj_3R_4())
  +            return true;
  +        if (jj_la == 0 && jj_scanpos == jj_lastpos)
  +            return false;
  +        return false;
  +    }
  +
  +    public XPointerFrameworkParserTokenManager token_source;
  +    SimpleCharStream jj_input_stream;
  +    public Token token, jj_nt;
  +    private int jj_ntk;
  +    private Token jj_scanpos, jj_lastpos;
  +    private int jj_la;
  +    public boolean lookingAhead = false;
  +    private boolean jj_semLA;
  +    private int jj_gen;
  +    final private int[] jj_la1 = new int[6];
  +    static private int[] jj_la1_0;
  +    static {
  +        jj_la1_0();
  +    }
  +    private static void jj_la1_0() {
  +        jj_la1_0 = new int[] { 0x80, 0x380, 0x100, 0x280, 0xf400, 0xf400, };
  +    }
  +    final private JJCalls[] jj_2_rtns = new JJCalls[1];
  +    private boolean jj_rescan = false;
  +    private int jj_gc = 0;
  +
  +    public XPointerFrameworkParser(java.io.InputStream stream) {
  +        jj_input_stream = new SimpleCharStream(stream, 1, 1);
  +        token_source = new XPointerFrameworkParserTokenManager(jj_input_stream);
  +        token = new Token();
  +        jj_ntk = -1;
  +        jj_gen = 0;
  +        for (int i = 0; i < 6; i++)
  +            jj_la1[i] = -1;
  +        for (int i = 0; i < jj_2_rtns.length; i++)
  +            jj_2_rtns[i] = new JJCalls();
  +    }
  +
  +    public void ReInit(java.io.InputStream stream) {
  +        jj_input_stream.ReInit(stream, 1, 1);
  +        token_source.ReInit(jj_input_stream);
  +        token = new Token();
  +        jj_ntk = -1;
  +        jj_gen = 0;
  +        for (int i = 0; i < 6; i++)
  +            jj_la1[i] = -1;
  +        for (int i = 0; i < jj_2_rtns.length; i++)
  +            jj_2_rtns[i] = new JJCalls();
  +    }
  +
  +    public XPointerFrameworkParser(java.io.Reader stream) {
  +        jj_input_stream = new SimpleCharStream(stream, 1, 1);
  +        token_source = new XPointerFrameworkParserTokenManager(jj_input_stream);
  +        token = new Token();
  +        jj_ntk = -1;
  +        jj_gen = 0;
  +        for (int i = 0; i < 6; i++)
  +            jj_la1[i] = -1;
  +        for (int i = 0; i < jj_2_rtns.length; i++)
  +            jj_2_rtns[i] = new JJCalls();
  +    }
  +
  +    public void ReInit(java.io.Reader stream) {
  +        jj_input_stream.ReInit(stream, 1, 1);
  +        token_source.ReInit(jj_input_stream);
  +        token = new Token();
  +        jj_ntk = -1;
  +        jj_gen = 0;
  +        for (int i = 0; i < 6; i++)
  +            jj_la1[i] = -1;
  +        for (int i = 0; i < jj_2_rtns.length; i++)
  +            jj_2_rtns[i] = new JJCalls();
  +    }
  +
  +    public XPointerFrameworkParser(XPointerFrameworkParserTokenManager tm) {
  +        token_source = tm;
  +        token = new Token();
  +        jj_ntk = -1;
  +        jj_gen = 0;
  +        for (int i = 0; i < 6; i++)
  +            jj_la1[i] = -1;
  +        for (int i = 0; i < jj_2_rtns.length; i++)
  +            jj_2_rtns[i] = new JJCalls();
  +    }
  +
  +    public void ReInit(XPointerFrameworkParserTokenManager tm) {
  +        token_source = tm;
  +        token = new Token();
  +        jj_ntk = -1;
  +        jj_gen = 0;
  +        for (int i = 0; i < 6; i++)
  +            jj_la1[i] = -1;
  +        for (int i = 0; i < jj_2_rtns.length; i++)
  +            jj_2_rtns[i] = new JJCalls();
  +    }
  +
  +    final private Token jj_consume_token(int kind) throws ParseException {
  +        Token oldToken;
  +        if ((oldToken = token).next != null)
  +            token = token.next;
  +        else
  +            token = token.next = token_source.getNextToken();
  +        jj_ntk = -1;
  +        if (token.kind == kind) {
  +            jj_gen++;
  +            if (++jj_gc > 100) {
  +                jj_gc = 0;
  +                for (int i = 0; i < jj_2_rtns.length; i++) {
  +                    JJCalls c = jj_2_rtns[i];
  +                    while (c != null) {
  +                        if (c.gen < jj_gen)
  +                            c.first = null;
  +                        c = c.next;
  +                    }
  +                }
  +            }
  +            return token;
  +        }
  +        token = oldToken;
  +        jj_kind = kind;
  +        throw generateParseException();
  +    }
  +
  +    final private boolean jj_scan_token(int kind) {
  +        if (jj_scanpos == jj_lastpos) {
  +            jj_la--;
  +            if (jj_scanpos.next == null) {
  +                jj_lastpos =
  +                    jj_scanpos = jj_scanpos.next = token_source.getNextToken();
  +            } else {
  +                jj_lastpos = jj_scanpos = jj_scanpos.next;
  +            }
  +        } else {
  +            jj_scanpos = jj_scanpos.next;
  +        }
  +        if (jj_rescan) {
  +            int i = 0;
  +            Token tok = token;
  +            while (tok != null && tok != jj_scanpos) {
  +                i++;
  +                tok = tok.next;
  +            }
  +            if (tok != null)
  +                jj_add_error_token(kind, i);
  +        }
  +        return (jj_scanpos.kind != kind);
  +    }
  +
  +    final public Token getNextToken() {
  +        if (token.next != null)
  +            token = token.next;
  +        else
  +            token = token.next = token_source.getNextToken();
  +        jj_ntk = -1;
  +        jj_gen++;
  +        return token;
  +    }
  +
  +    final public Token getToken(int index) {
  +        Token t = lookingAhead ? jj_scanpos : token;
  +        for (int i = 0; i < index; i++) {
  +            if (t.next != null)
  +                t = t.next;
  +            else
  +                t = t.next = token_source.getNextToken();
  +        }
  +        return t;
  +    }
  +
  +    final private int jj_ntk() {
  +        if ((jj_nt = token.next) == null)
  +            return (jj_ntk = (token.next = token_source.getNextToken()).kind);
  +        else
  +            return (jj_ntk = jj_nt.kind);
  +    }
  +
  +    private java.util.Vector jj_expentries = new java.util.Vector();
  +    private int[] jj_expentry;
  +    private int jj_kind = -1;
  +    private int[] jj_lasttokens = new int[100];
  +    private int jj_endpos;
  +
  +    private void jj_add_error_token(int kind, int pos) {
  +        if (pos >= 100)
  +            return;
  +        if (pos == jj_endpos + 1) {
  +            jj_lasttokens[jj_endpos++] = kind;
  +        } else if (jj_endpos != 0) {
  +            jj_expentry = new int[jj_endpos];
  +            for (int i = 0; i < jj_endpos; i++) {
  +                jj_expentry[i] = jj_lasttokens[i];
  +            }
  +            boolean exists = false;
  +            for (java.util.Enumeration enum = jj_expentries.elements();
  +                enum.hasMoreElements();
  +                ) {
  +                int[] oldentry = (int[]) (enum.nextElement());
  +                if (oldentry.length == jj_expentry.length) {
  +                    exists = true;
  +                    for (int i = 0; i < jj_expentry.length; i++) {
  +                        if (oldentry[i] != jj_expentry[i]) {
  +                            exists = false;
  +                            break;
  +                        }
  +                    }
  +                    if (exists)
  +                        break;
  +                }
  +            }
  +            if (!exists)
  +                jj_expentries.addElement(jj_expentry);
  +            if (pos != 0)
  +                jj_lasttokens[(jj_endpos = pos) - 1] = kind;
  +        }
  +    }
  +
  +    public ParseException generateParseException() {
  +        jj_expentries.removeAllElements();
  +        boolean[] la1tokens = new boolean[16];
  +        for (int i = 0; i < 16; i++) {
  +            la1tokens[i] = false;
  +        }
  +        if (jj_kind >= 0) {
  +            la1tokens[jj_kind] = true;
  +            jj_kind = -1;
  +        }
  +        for (int i = 0; i < 6; i++) {
  +            if (jj_la1[i] == jj_gen) {
  +                for (int j = 0; j < 32; j++) {
  +                    if ((jj_la1_0[i] & (1 << j)) != 0) {
  +                        la1tokens[j] = true;
  +                    }
  +                }
  +            }
  +        }
  +        for (int i = 0; i < 16; i++) {
  +            if (la1tokens[i]) {
  +                jj_expentry = new int[1];
  +                jj_expentry[0] = i;
  +                jj_expentries.addElement(jj_expentry);
  +            }
  +        }
  +        jj_endpos = 0;
  +        jj_rescan_token();
  +        jj_add_error_token(0, 0);
  +        int[][] exptokseq = new int[jj_expentries.size()][];
  +        for (int i = 0; i < jj_expentries.size(); i++) {
  +            exptokseq[i] = (int[]) jj_expentries.elementAt(i);
  +        }
  +        return new ParseException(token, exptokseq, tokenImage);
  +    }
  +
  +    final public void enable_tracing() {
  +    }
  +
  +    final public void disable_tracing() {
  +    }
  +
  +    final private void jj_rescan_token() {
  +        jj_rescan = true;
  +        for (int i = 0; i < 1; i++) {
  +            JJCalls p = jj_2_rtns[i];
  +            do {
  +                if (p.gen > jj_gen) {
  +                    jj_la = p.arg;
  +                    jj_lastpos = jj_scanpos = p.first;
  +                    switch (i) {
  +                        case 0 :
  +                            jj_3_1();
  +                            break;
  +                    }
  +                }
  +                p = p.next;
  +            } while (p != null);
  +        }
  +        jj_rescan = false;
  +    }
  +
  +    final private void jj_save(int index, int xla) {
  +        JJCalls p = jj_2_rtns[index];
  +        while (p.gen > jj_gen) {
  +            if (p.next == null) {
  +                p = p.next = new JJCalls();
  +                break;
  +            }
  +            p = p.next;
  +        }
  +        p.gen = jj_gen + xla - jj_la;
  +        p.first = token;
  +        p.arg = xla;
  +    }
  +
  +    static final class JJCalls {
  +        int gen;
  +        Token first;
  +        int arg;
  +        JJCalls next;
  +    }
   
  -  }
  +}
  
  
  
  1.4       +812 -742  cocoon-2.1/src/java/org/apache/cocoon/components/xpointer/parser/XPointerFrameworkParserTokenManager.java
  
  Index: XPointerFrameworkParserTokenManager.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/xpointer/parser/XPointerFrameworkParserTokenManager.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XPointerFrameworkParserTokenManager.java	4 Jul 2003 09:43:36 -0000	1.3
  +++ XPointerFrameworkParserTokenManager.java	4 Jul 2003 17:58:30 -0000	1.4
  @@ -1,748 +1,818 @@
  -/* Generated By:JavaCC: Do not edit this line. XPointerFrameworkParserTokenManager.java */
  +/*
  +
  + ============================================================================
  +                   The Apache Software License, Version 1.1
  + ============================================================================
  +
  + Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
  +
  + Redistribution and use in source and binary forms, with or without modifica-
  + tion, are permitted provided that the following conditions are met:
  +
  + 1. Redistributions of  source code must  retain the above copyright  notice,
  +    this list of conditions and the following disclaimer.
  +
  + 2. Redistributions in binary form must reproduce the above copyright notice,
  +    this list of conditions and the following disclaimer in the documentation
  +    and/or other materials provided with the distribution.
  +
  + 3. The end-user documentation included with the redistribution, if any, must
  +    include  the following  acknowledgment:  "This product includes  software
  +    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
  +    Alternately, this  acknowledgment may  appear in the software itself,  if
  +    and wherever such third-party acknowledgments normally appear.
  +
  + 4. The names "Apache Cocoon" and  "Apache Software Foundation" must  not  be
  +    used to  endorse or promote  products derived from  this software without
  +    prior written permission. For written permission, please contact
  +    apache@apache.org.
  +
  + 5. Products  derived from this software may not  be called "Apache", nor may
  +    "Apache" appear  in their name,  without prior written permission  of the
  +    Apache Software Foundation.
  +
  + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  + FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
  + APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
  + INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
  + DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
  + OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
  + ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
  + (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
  + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  +
  + This software  consists of voluntary contributions made  by many individuals
  + on  behalf of the Apache Software  Foundation and was  originally created by
  + Stefano Mazzocchi  <st...@apache.org>. For more  information on the Apache
  + Software Foundation, please see <http://www.apache.org/>.
  +
  +*/
   package org.apache.cocoon.components.xpointer.parser;
  -import org.apache.cocoon.components.xpointer.*;
  -import java.util.HashMap;
   
  -public class XPointerFrameworkParserTokenManager implements XPointerFrameworkParserConstants
  -{
  -  public  java.io.PrintStream debugStream = System.out;
  -  public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
  -private final int jjStopStringLiteralDfa_0(int pos, long active0)
  -{
  -   switch (pos)
  -   {
  -      default :
  -         return -1;
  -   }
  -}
  -private final int jjStartNfa_0(int pos, long active0)
  -{
  -   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
  -}
  -private final int jjStopAtPos(int pos, int kind)
  -{
  -   jjmatchedKind = kind;
  -   jjmatchedPos = pos;
  -   return pos + 1;
  -}
  -private final int jjStartNfaWithStates_0(int pos, int kind, int state)
  -{
  -   jjmatchedKind = kind;
  -   jjmatchedPos = pos;
  -   try { curChar = input_stream.readChar(); }
  -   catch(java.io.IOException e) { return pos + 1; }
  -   return jjMoveNfa_0(state, pos + 1);
  -}
  -private final int jjMoveStringLiteralDfa0_0()
  -{
  -   switch(curChar)
  -   {
  -      case 40:
  -         return jjStopAtPos(0, 10);
  -      case 41:
  -         return jjStopAtPos(0, 11);
  -      default :
  -         return jjMoveNfa_0(0, 0);
  -   }
  -}
  -private final void jjCheckNAdd(int state)
  -{
  -   if (jjrounds[state] != jjround)
  -   {
  -      jjstateSet[jjnewStateCnt++] = state;
  -      jjrounds[state] = jjround;
  -   }
  -}
  -private final void jjAddStates(int start, int end)
  -{
  -   do {
  -      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
  -   } while (start++ != end);
  -}
  -private final void jjCheckNAddTwoStates(int state1, int state2)
  -{
  -   jjCheckNAdd(state1);
  -   jjCheckNAdd(state2);
  -}
  -private final void jjCheckNAddStates(int start, int end)
  -{
  -   do {
  -      jjCheckNAdd(jjnextStates[start]);
  -   } while (start++ != end);
  -}
  -private final void jjCheckNAddStates(int start)
  -{
  -   jjCheckNAdd(jjnextStates[start]);
  -   jjCheckNAdd(jjnextStates[start + 1]);
  -}
  -static final long[] jjbitVec0 = {
  -   0x0L, 0xffffffffffffc000L, 0xfffff0007fffffffL, 0x7fffffL
  -};
  -static final long[] jjbitVec2 = {
  -   0x0L, 0x0L, 0x0L, 0xff7fffffff7fffffL
  -};
  -static final long[] jjbitVec3 = {
  -   0x7ff3ffffffffffffL, 0x7ffffffffffffdfeL, 0xffffffffffffffffL, 0xfc31ffffffffe00fL
  -};
  -static final long[] jjbitVec4 = {
  -   0xffffffL, 0xffffffffffff0000L, 0xf80001ffffffffffL, 0x3L
  -};
  -static final long[] jjbitVec5 = {
  -   0x0L, 0x0L, 0xfffffffbffffd740L, 0xffffd547f7fffL
  -};
  -static final long[] jjbitVec6 = {
  -   0xffffffffffffdffeL, 0xffffffffdffeffffL, 0xffffffffffff0003L, 0x33fcfffffff199fL
  -};
  -static final long[] jjbitVec7 = {
  -   0xfffe000000000000L, 0xfffffffe027fffffL, 0x7fL, 0x707ffffff0000L
  -};
  -static final long[] jjbitVec8 = {
  -   0x7fffffe00000000L, 0xfffe0000000007feL, 0x7cffffffffffffffL, 0x60002f7fffL
  -};
  -static final long[] jjbitVec9 = {
  -   0x23ffffffffffffe0L, 0x3ff000000L, 0x3c5fdfffff99fe0L, 0x30003b0000000L
  -};
  -static final long[] jjbitVec10 = {
  -   0x36dfdfffff987e0L, 0x1c00005e000000L, 0x23edfdfffffbafe0L, 0x100000000L
  -};
  -static final long[] jjbitVec11 = {
  -   0x23cdfdfffff99fe0L, 0x3b0000000L, 0x3bfc718d63dc7e0L, 0x0L
  -};
  -static final long[] jjbitVec12 = {
  -   0x3effdfffffddfe0L, 0x300000000L, 0x3effdfffffddfe0L, 0x340000000L
  -};
  -static final long[] jjbitVec13 = {
  -   0x3fffdfffffddfe0L, 0x300000000L, 0x0L, 0x0L
  -};
  -static final long[] jjbitVec14 = {
  -   0xd7ffffffffffeL, 0x3fL, 0x200d6caefef02596L, 0x1fL
  -};
  -static final long[] jjbitVec15 = {
  -   0x0L, 0x3fffffffeffL, 0x0L, 0x0L
  -};
  -static final long[] jjbitVec16 = {
  -   0x0L, 0x0L, 0xffffffff00000000L, 0x7fffffffff003fL
  -};
  -static final long[] jjbitVec17 = {
  -   0x500000000007daedL, 0x2c62ab82315001L, 0xf580c90040000000L, 0x201080000000007L
  -};
  -static final long[] jjbitVec18 = {
  -   0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffff0fffffffL, 0x3ffffffffffffffL
  -};
  -static final long[] jjbitVec19 = {
  -   0xffffffff3f3fffffL, 0x3fffffffaaff3f3fL, 0x5fdfffffffffffffL, 0x1fdc1fff0fcf1fdcL
  -};
  -static final long[] jjbitVec20 = {
  -   0x4c4000000000L, 0x0L, 0x7L, 0x0L
  -};
  -static final long[] jjbitVec21 = {
  -   0x3fe00000080L, 0xfffffffffffffffeL, 0xfffffffe001fffffL, 0x7ffffffffffffffL
  -};
  -static final long[] jjbitVec22 = {
  -   0x1fffffffffe0L, 0x0L, 0x0L, 0x0L
  -};
  -static final long[] jjbitVec23 = {
  -   0xffffffffffffffffL, 0xffffffffffffffffL, 0x3fffffffffL, 0x0L
  -};
  -static final long[] jjbitVec24 = {
  -   0xffffffffffffffffL, 0xffffffffffffffffL, 0xfffffffffL, 0x0L
  -};
  -static final long[] jjbitVec25 = {
  -   0x0L, 0x0L, 0x80000000000000L, 0xff7fffffff7fffffL
  -};
  -static final long[] jjbitVec26 = {
  -   0xffffffL, 0xffffffffffff0000L, 0xf80001ffffffffffL, 0x30003L
  -};
  -static final long[] jjbitVec27 = {
  -   0xffffffffffffffffL, 0x30000003fL, 0xfffffffbffffd7c0L, 0xffffd547f7fffL
  -};
  -static final long[] jjbitVec28 = {
  -   0xffffffffffffdffeL, 0xffffffffdffeffffL, 0xffffffffffff007bL, 0x33fcfffffff199fL
  -};
  -static final long[] jjbitVec29 = {
  -   0xfffe000000000000L, 0xfffffffe027fffffL, 0xbbfffffbfffe007fL, 0x707ffffff0016L
  -};
  -static final long[] jjbitVec30 = {
  -   0x7fffffe00000000L, 0xffff03ff0007ffffL, 0x7cffffffffffffffL, 0x3ff3dffffef7fffL
  -};
  -static final long[] jjbitVec31 = {
  -   0xf3ffffffffffffeeL, 0xffcfff1e3fffL, 0xd3c5fdfffff99feeL, 0x3ffcfb080399fL
  -};
  -static final long[] jjbitVec32 = {
  -   0xd36dfdfffff987e4L, 0x1fffc05e003987L, 0xf3edfdfffffbafeeL, 0xffc100003bbfL
  -};
  -static final long[] jjbitVec33 = {
  -   0xf3cdfdfffff99feeL, 0xffc3b0c0398fL, 0xc3bfc718d63dc7ecL, 0xff8000803dc7L
  -};
  -static final long[] jjbitVec34 = {
  -   0xc3effdfffffddfeeL, 0xffc300603ddfL, 0xc3effdfffffddfecL, 0xffc340603ddfL
  -};
  -static final long[] jjbitVec35 = {
  -   0xc3fffdfffffddfecL, 0xffc300803dcfL, 0x0L, 0x0L
  -};
  -static final long[] jjbitVec36 = {
  -   0x7ff7ffffffffffeL, 0x3ff7fffL, 0x3bff6caefef02596L, 0x3ff3f5fL
  -};
  -static final long[] jjbitVec37 = {
  -   0xc2a003ff03000000L, 0xfffe03fffffffeffL, 0x2fe3ffffebf0fdfL, 0x0L
  -};
  -static final long[] jjbitVec38 = {
  -   0x0L, 0x0L, 0x0L, 0x21fff0000L
  -};
  -static final long[] jjbitVec39 = {
  -   0x3efffe000000a0L, 0xfffffffffffffffeL, 0xfffffffe661fffffL, 0x77ffffffffffffffL
  -};
  -private final int jjMoveNfa_0(int startState, int curPos)
  -{
  -   int[] nextStates;
  -   int startsAt = 0;
  -   jjnewStateCnt = 7;
  -   int i = 1;
  -   jjstateSet[0] = startState;
  -   int j, kind = 0x7fffffff;
  -   for (;;)
  -   {
  -      if (++jjround == 0x7fffffff)
  -         ReInitRounds();
  -      if (curChar < 64)
  -      {
  -         long l = 1L << curChar;
  -         MatchLoop: do
  -         {
  -            switch(jjstateSet[--i])
  -            {
  -               case 0:
  -                  if ((0x100002600L & l) != 0L)
  -                     kind = 8;
  -                  break;
  -               case 2:
  -                  if ((0x3ff600000000000L & l) == 0L)
  -                     break;
  -                  if (kind > 7)
  -                     kind = 7;
  -                  jjstateSet[jjnewStateCnt++] = 2;
  -                  break;
  -               case 3:
  -                  if ((0x3ff600000000000L & l) != 0L)
  -                     jjAddStates(0, 1);
  -                  break;
  -               case 4:
  -                  if (curChar == 58)
  -                     jjstateSet[jjnewStateCnt++] = 5;
  -                  break;
  -               case 6:
  -                  if ((0x3ff600000000000L & l) == 0L)
  -                     break;
  -                  if (kind > 9)
  -                     kind = 9;
  -                  jjstateSet[jjnewStateCnt++] = 6;
  -                  break;
  -               default : break;
  -            }
  -         } while(i != startsAt);
  -      }
  -      else if (curChar < 128)
  -      {
  -         long l = 1L << (curChar & 077);
  -         MatchLoop: do
  -         {
  -            switch(jjstateSet[--i])
  -            {
  -               case 0:
  -                  if ((0x7fffffe87fffffeL & l) == 0L)
  -                     break;
  -                  if (kind > 7)
  -                     kind = 7;
  -                  jjCheckNAddStates(2, 5);
  -                  break;
  -               case 2:
  -                  if ((0x7fffffe87fffffeL & l) == 0L)
  -                     break;
  -                  if (kind > 7)
  -                     kind = 7;
  -                  jjCheckNAdd(2);
  -                  break;
  -               case 3:
  -                  if ((0x7fffffe87fffffeL & l) != 0L)
  -                     jjCheckNAddTwoStates(3, 4);
  -                  break;
  -               case 5:
  -               case 6:
  -                  if ((0x7fffffe87fffffeL & l) == 0L)
  -                     break;
  -                  if (kind > 9)
  -                     kind = 9;
  -                  jjCheckNAdd(6);
  -                  break;
  -               default : break;
  -            }
  -         } while(i != startsAt);
  -      }
  -      else
  -      {
  -         int hiByte = (int)(curChar >> 8);
  -         int i1 = hiByte >> 6;
  -         long l1 = 1L << (hiByte & 077);
  -         int i2 = (curChar & 0xff) >> 6;
  -         long l2 = 1L << (curChar & 077);
  -         MatchLoop: do
  -         {
  -            switch(jjstateSet[--i])
  -            {
  -               case 0:
  -                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
  -                     break;
  -                  if (kind > 7)
  -                     kind = 7;
  -                  jjCheckNAddStates(2, 5);
  -                  break;
  -               case 2:
  -                  if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
  -                     break;
  -                  if (kind > 7)
  -                     kind = 7;
  -                  jjCheckNAdd(2);
  -                  break;
  -               case 3:
  -                  if (jjCanMove_1(hiByte, i1, i2, l1, l2))
  -                     jjCheckNAddTwoStates(3, 4);
  -                  break;
  -               case 5:
  -                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
  -                     break;
  -                  if (kind > 9)
  -                     kind = 9;
  -                  jjCheckNAdd(6);
  -                  break;
  -               case 6:
  -                  if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
  -                     break;
  -                  if (kind > 9)
  -                     kind = 9;
  -                  jjCheckNAdd(6);
  -                  break;
  -               default : break;
  -            }
  -         } while(i != startsAt);
  -      }
  -      if (kind != 0x7fffffff)
  -      {
  -         jjmatchedKind = kind;
  -         jjmatchedPos = curPos;
  -         kind = 0x7fffffff;
  -      }
  -      ++curPos;
  -      if ((i = jjnewStateCnt) == (startsAt = 7 - (jjnewStateCnt = startsAt)))
  -         return curPos;
  -      try { curChar = input_stream.readChar(); }
  -      catch(java.io.IOException e) { return curPos; }
  -   }
  -}
  -private final int jjStopStringLiteralDfa_1(int pos, long active0)
  -{
  -   switch (pos)
  -   {
  -      default :
  -         return -1;
  -   }
  -}
  -private final int jjStartNfa_1(int pos, long active0)
  -{
  -   return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1);
  -}
  -private final int jjStartNfaWithStates_1(int pos, int kind, int state)
  -{
  -   jjmatchedKind = kind;
  -   jjmatchedPos = pos;
  -   try { curChar = input_stream.readChar(); }
  -   catch(java.io.IOException e) { return pos + 1; }
  -   return jjMoveNfa_1(state, pos + 1);
  -}
  -private final int jjMoveStringLiteralDfa0_1()
  -{
  -   switch(curChar)
  -   {
  -      case 40:
  -         return jjStopAtPos(0, 10);
  -      case 41:
  -         return jjStopAtPos(0, 11);
  -      case 94:
  -         return jjMoveStringLiteralDfa1_1(0x7000L);
  -      default :
  -         return jjMoveNfa_1(0, 0);
  -   }
  -}
  -private final int jjMoveStringLiteralDfa1_1(long active0)
  -{
  -   try { curChar = input_stream.readChar(); }
  -   catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_1(0, active0);
  -      return 1;
  -   }
  -   switch(curChar)
  -   {
  -      case 40:
  -         if ((active0 & 0x1000L) != 0L)
  -            return jjStopAtPos(1, 12);
  -         break;
  -      case 41:
  -         if ((active0 & 0x2000L) != 0L)
  -            return jjStopAtPos(1, 13);
  -         break;
  -      case 94:
  -         if ((active0 & 0x4000L) != 0L)
  -            return jjStopAtPos(1, 14);
  -         break;
  -      default :
  -         break;
  -   }
  -   return jjStartNfa_1(0, active0);
  -}
  -static final long[] jjbitVec40 = {
  -   0xfffffffffffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
  -};
  -static final long[] jjbitVec41 = {
  -   0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
  -};
  -private final int jjMoveNfa_1(int startState, int curPos)
  -{
  -   int[] nextStates;
  -   int startsAt = 0;
  -   jjnewStateCnt = 1;
  -   int i = 1;
  -   jjstateSet[0] = startState;
  -   int j, kind = 0x7fffffff;
  -   for (;;)
  -   {
  -      if (++jjround == 0x7fffffff)
  -         ReInitRounds();
  -      if (curChar < 64)
  -      {
  -         long l = 1L << curChar;
  -         MatchLoop: do
  -         {
  -            switch(jjstateSet[--i])
  -            {
  -               case 0:
  -                  if ((0xfffffcffffffffffL & l) != 0L)
  -                     kind = 15;
  -                  break;
  -               default : break;
  -            }
  -         } while(i != startsAt);
  -      }
  -      else if (curChar < 128)
  -      {
  -         long l = 1L << (curChar & 077);
  -         MatchLoop: do
  -         {
  -            switch(jjstateSet[--i])
  -            {
  -               case 0:
  -                  if ((0xffffffffbfffffffL & l) != 0L)
  -                     kind = 15;
  -                  break;
  -               default : break;
  -            }
  -         } while(i != startsAt);
  -      }
  -      else
  -      {
  -         int hiByte = (int)(curChar >> 8);
  -         int i1 = hiByte >> 6;
  -         long l1 = 1L << (hiByte & 077);
  -         int i2 = (curChar & 0xff) >> 6;
  -         long l2 = 1L << (curChar & 077);
  -         MatchLoop: do
  -         {
  -            switch(jjstateSet[--i])
  -            {
  -               case 0:
  -                  if (jjCanMove_2(hiByte, i1, i2, l1, l2) && kind > 15)
  -                     kind = 15;
  -                  break;
  -               default : break;
  -            }
  -         } while(i != startsAt);
  -      }
  -      if (kind != 0x7fffffff)
  -      {
  -         jjmatchedKind = kind;
  -         jjmatchedPos = curPos;
  -         kind = 0x7fffffff;
  -      }
  -      ++curPos;
  -      if ((i = jjnewStateCnt) == (startsAt = 1 - (jjnewStateCnt = startsAt)))
  -         return curPos;
  -      try { curChar = input_stream.readChar(); }
  -      catch(java.io.IOException e) { return curPos; }
  -   }
  -}
  -static final int[] jjnextStates = {
  -   3, 4, 2, 3, 4, 6, 
  -};
  -private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2)
  -{
  -   switch(hiByte)
  -   {
  -      case 0:
  -         return ((jjbitVec2[i2] & l2) != 0L);
  -      case 1:
  -         return ((jjbitVec3[i2] & l2) != 0L);
  -      case 2:
  -         return ((jjbitVec4[i2] & l2) != 0L);
  -      case 3:
  -         return ((jjbitVec5[i2] & l2) != 0L);
  -      case 4:
  -         return ((jjbitVec6[i2] & l2) != 0L);
  -      case 5:
  -         return ((jjbitVec7[i2] & l2) != 0L);
  -      case 6:
  -         return ((jjbitVec8[i2] & l2) != 0L);
  -      case 9:
  -         return ((jjbitVec9[i2] & l2) != 0L);
  -      case 10:
  -         return ((jjbitVec10[i2] & l2) != 0L);
  -      case 11:
  -         return ((jjbitVec11[i2] & l2) != 0L);
  -      case 12:
  -         return ((jjbitVec12[i2] & l2) != 0L);
  -      case 13:
  -         return ((jjbitVec13[i2] & l2) != 0L);
  -      case 14:
  -         return ((jjbitVec14[i2] & l2) != 0L);
  -      case 15:
  -         return ((jjbitVec15[i2] & l2) != 0L);
  -      case 16:
  -         return ((jjbitVec16[i2] & l2) != 0L);
  -      case 17:
  -         return ((jjbitVec17[i2] & l2) != 0L);
  -      case 30:
  -         return ((jjbitVec18[i2] & l2) != 0L);
  -      case 31:
  -         return ((jjbitVec19[i2] & l2) != 0L);
  -      case 33:
  -         return ((jjbitVec20[i2] & l2) != 0L);
  -      case 48:
  -         return ((jjbitVec21[i2] & l2) != 0L);
  -      case 49:
  -         return ((jjbitVec22[i2] & l2) != 0L);
  -      case 159:
  -         return ((jjbitVec23[i2] & l2) != 0L);
  -      case 215:
  -         return ((jjbitVec24[i2] & l2) != 0L);
  -      default : 
  -         if ((jjbitVec0[i1] & l1) != 0L)
  -            return true;
  -         return false;
  -   }
  -}
  -private static final boolean jjCanMove_1(int hiByte, int i1, int i2, long l1, long l2)
  -{
  -   switch(hiByte)
  -   {
  -      case 0:
  -         return ((jjbitVec25[i2] & l2) != 0L);
  -      case 1:
  -         return ((jjbitVec3[i2] & l2) != 0L);
  -      case 2:
  -         return ((jjbitVec26[i2] & l2) != 0L);
  -      case 3:
  -         return ((jjbitVec27[i2] & l2) != 0L);
  -      case 4:
  -         return ((jjbitVec28[i2] & l2) != 0L);
  -      case 5:
  -         return ((jjbitVec29[i2] & l2) != 0L);
  -      case 6:
  -         return ((jjbitVec30[i2] & l2) != 0L);
  -      case 9:
  -         return ((jjbitVec31[i2] & l2) != 0L);
  -      case 10:
  -         return ((jjbitVec32[i2] & l2) != 0L);
  -      case 11:
  -         return ((jjbitVec33[i2] & l2) != 0L);
  -      case 12:
  -         return ((jjbitVec34[i2] & l2) != 0L);
  -      case 13:
  -         return ((jjbitVec35[i2] & l2) != 0L);
  -      case 14:
  -         return ((jjbitVec36[i2] & l2) != 0L);
  -      case 15:
  -         return ((jjbitVec37[i2] & l2) != 0L);
  -      case 16:
  -         return ((jjbitVec16[i2] & l2) != 0L);
  -      case 17:
  -         return ((jjbitVec17[i2] & l2) != 0L);
  -      case 30:
  -         return ((jjbitVec18[i2] & l2) != 0L);
  -      case 31:
  -         return ((jjbitVec19[i2] & l2) != 0L);
  -      case 32:
  -         return ((jjbitVec38[i2] & l2) != 0L);
  -      case 33:
  -         return ((jjbitVec20[i2] & l2) != 0L);
  -      case 48:
  -         return ((jjbitVec39[i2] & l2) != 0L);
  -      case 49:
  -         return ((jjbitVec22[i2] & l2) != 0L);
  -      case 159:
  -         return ((jjbitVec23[i2] & l2) != 0L);
  -      case 215:
  -         return ((jjbitVec24[i2] & l2) != 0L);
  -      default : 
  -         if ((jjbitVec0[i1] & l1) != 0L)
  -            return true;
  -         return false;
  -   }
  -}
  -private static final boolean jjCanMove_2(int hiByte, int i1, int i2, long l1, long l2)
  -{
  -   switch(hiByte)
  -   {
  -      case 0:
  -         return ((jjbitVec41[i2] & l2) != 0L);
  -      default : 
  -         if ((jjbitVec40[i1] & l1) != 0L)
  -            return true;
  -         return false;
  -   }
  -}
  -public static final String[] jjstrLiteralImages = {
  -"", null, null, null, null, null, null, null, null, null, "\50", "\51", 
  -"\136\50", "\136\51", "\136\136", null, };
  -public static final String[] lexStateNames = {
  -   "DEFAULT", 
  -   "IN_SCHEME", 
  -};
  -public static final int[] jjnewLexState = {
  -   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
  -};
  -protected SimpleCharStream input_stream;
  -private final int[] jjrounds = new int[7];
  -private final int[] jjstateSet = new int[14];
  -protected char curChar;
  -public XPointerFrameworkParserTokenManager(SimpleCharStream stream)
  -{
  -   if (SimpleCharStream.staticFlag)
  -      throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
  -   input_stream = stream;
  -}
  -public XPointerFrameworkParserTokenManager(SimpleCharStream stream, int lexState)
  -{
  -   this(stream);
  -   SwitchTo(lexState);
  -}
  -public void ReInit(SimpleCharStream stream)
  -{
  -   jjmatchedPos = jjnewStateCnt = 0;
  -   curLexState = defaultLexState;
  -   input_stream = stream;
  -   ReInitRounds();
  -}
  -private final void ReInitRounds()
  -{
  -   int i;
  -   jjround = 0x80000001;
  -   for (i = 7; i-- > 0;)
  -      jjrounds[i] = 0x80000000;
  -}
  -public void ReInit(SimpleCharStream stream, int lexState)
  -{
  -   ReInit(stream);
  -   SwitchTo(lexState);
  -}
  -public void SwitchTo(int lexState)
  -{
  -   if (lexState >= 2 || lexState < 0)
  -      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
  -   else
  -      curLexState = lexState;
  -}
  -
  -protected Token jjFillToken()
  -{
  -   Token t = Token.newToken(jjmatchedKind);
  -   t.kind = jjmatchedKind;
  -   String im = jjstrLiteralImages[jjmatchedKind];
  -   t.image = (im == null) ? input_stream.GetImage() : im;
  -   t.beginLine = input_stream.getBeginLine();
  -   t.beginColumn = input_stream.getBeginColumn();
  -   t.endLine = input_stream.getEndLine();
  -   t.endColumn = input_stream.getEndColumn();
  -   return t;
  -}
  -
  -int curLexState = 0;
  -int defaultLexState = 0;
  -int jjnewStateCnt;
  -int jjround;
  -int jjmatchedPos;
  -int jjmatchedKind;
  -
  -public Token getNextToken() 
  -{
  -  int kind;
  -  Token specialToken = null;
  -  Token matchedToken;
  -  int curPos = 0;
  -
  -  EOFLoop :
  -  for (;;)
  -  {   
  -   try   
  -   {     
  -      curChar = input_stream.BeginToken();
  -   }     
  -   catch(java.io.IOException e)
  -   {        
  -      jjmatchedKind = 0;
  -      matchedToken = jjFillToken();
  -      return matchedToken;
  -   }
  -
  -   switch(curLexState)
  -   {
  -     case 0:
  -       jjmatchedKind = 0x7fffffff;
  -       jjmatchedPos = 0;
  -       curPos = jjMoveStringLiteralDfa0_0();
  -       break;
  -     case 1:
  -       jjmatchedKind = 0x7fffffff;
  -       jjmatchedPos = 0;
  -       curPos = jjMoveStringLiteralDfa0_1();
  -       break;
  -   }
  -     if (jjmatchedKind != 0x7fffffff)
  -     {
  -        if (jjmatchedPos + 1 < curPos)
  -           input_stream.backup(curPos - jjmatchedPos - 1);
  -           matchedToken = jjFillToken();
  -       if (jjnewLexState[jjmatchedKind] != -1)
  -         curLexState = jjnewLexState[jjmatchedKind];
  -           return matchedToken;
  -     }
  -     int error_line = input_stream.getEndLine();
  -     int error_column = input_stream.getEndColumn();
  -     String error_after = null;
  -     boolean EOFSeen = false;
  -     try { input_stream.readChar(); input_stream.backup(1); }
  -     catch (java.io.IOException e1) {
  -        EOFSeen = true;
  -        error_after = curPos <= 1 ? "" : input_stream.GetImage();
  -        if (curChar == '\n' || curChar == '\r') {
  -           error_line++;
  -           error_column = 0;
  +public class XPointerFrameworkParserTokenManager
  +    implements XPointerFrameworkParserConstants {
  +    public java.io.PrintStream debugStream = System.out;
  +    public void setDebugStream(java.io.PrintStream ds) {
  +        debugStream = ds;
  +    }
  +    private final int jjStopStringLiteralDfa_0(int pos, long active0) {
  +        switch (pos) {
  +            default :
  +                return -1;
  +        }
  +    }
  +    private final int jjStartNfa_0(int pos, long active0) {
  +        return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
  +    }
  +    private final int jjStopAtPos(int pos, int kind) {
  +        jjmatchedKind = kind;
  +        jjmatchedPos = pos;
  +        return pos + 1;
  +    }
  +    private final int jjStartNfaWithStates_0(int pos, int kind, int state) {
  +        jjmatchedKind = kind;
  +        jjmatchedPos = pos;
  +        try {
  +            curChar = input_stream.readChar();
  +        } catch (java.io.IOException e) {
  +            return pos + 1;
  +        }
  +        return jjMoveNfa_0(state, pos + 1);
  +    }
  +    private final int jjMoveStringLiteralDfa0_0() {
  +        switch (curChar) {
  +            case 40 :
  +                return jjStopAtPos(0, 10);
  +            case 41 :
  +                return jjStopAtPos(0, 11);
  +            default :
  +                return jjMoveNfa_0(0, 0);
  +        }
  +    }
  +    private final void jjCheckNAdd(int state) {
  +        if (jjrounds[state] != jjround) {
  +            jjstateSet[jjnewStateCnt++] = state;
  +            jjrounds[state] = jjround;
  +        }
  +    }
  +    private final void jjAddStates(int start, int end) {
  +        do {
  +            jjstateSet[jjnewStateCnt++] = jjnextStates[start];
  +        } while (start++ != end);
  +    }
  +    private final void jjCheckNAddTwoStates(int state1, int state2) {
  +        jjCheckNAdd(state1);
  +        jjCheckNAdd(state2);
  +    }
  +    private final void jjCheckNAddStates(int start, int end) {
  +        do {
  +            jjCheckNAdd(jjnextStates[start]);
  +        } while (start++ != end);
  +    }
  +    private final void jjCheckNAddStates(int start) {
  +        jjCheckNAdd(jjnextStates[start]);
  +        jjCheckNAdd(jjnextStates[start + 1]);
  +    }
  +    static final long[] jjbitVec0 =
  +        { 0x0L, 0xffffffffffffc000L, 0xfffff0007fffffffL, 0x7fffffL };
  +    static final long[] jjbitVec2 = { 0x0L, 0x0L, 0x0L, 0xff7fffffff7fffffL };
  +    static final long[] jjbitVec3 =
  +        {
  +            0x7ff3ffffffffffffL,
  +            0x7ffffffffffffdfeL,
  +            0xffffffffffffffffL,
  +            0xfc31ffffffffe00fL };
  +    static final long[] jjbitVec4 =
  +        { 0xffffffL, 0xffffffffffff0000L, 0xf80001ffffffffffL, 0x3L };
  +    static final long[] jjbitVec5 =
  +        { 0x0L, 0x0L, 0xfffffffbffffd740L, 0xffffd547f7fffL };
  +    static final long[] jjbitVec6 =
  +        {
  +            0xffffffffffffdffeL,
  +            0xffffffffdffeffffL,
  +            0xffffffffffff0003L,
  +            0x33fcfffffff199fL };
  +    static final long[] jjbitVec7 =
  +        { 0xfffe000000000000L, 0xfffffffe027fffffL, 0x7fL, 0x707ffffff0000L };
  +    static final long[] jjbitVec8 =
  +        {
  +            0x7fffffe00000000L,
  +            0xfffe0000000007feL,
  +            0x7cffffffffffffffL,
  +            0x60002f7fffL };
  +    static final long[] jjbitVec9 =
  +        {
  +            0x23ffffffffffffe0L,
  +            0x3ff000000L,
  +            0x3c5fdfffff99fe0L,
  +            0x30003b0000000L };
  +    static final long[] jjbitVec10 =
  +        {
  +            0x36dfdfffff987e0L,
  +            0x1c00005e000000L,
  +            0x23edfdfffffbafe0L,
  +            0x100000000L };
  +    static final long[] jjbitVec11 =
  +        { 0x23cdfdfffff99fe0L, 0x3b0000000L, 0x3bfc718d63dc7e0L, 0x0L };
  +    static final long[] jjbitVec12 =
  +        { 0x3effdfffffddfe0L, 0x300000000L, 0x3effdfffffddfe0L, 0x340000000L };
  +    static final long[] jjbitVec13 =
  +        { 0x3fffdfffffddfe0L, 0x300000000L, 0x0L, 0x0L };
  +    static final long[] jjbitVec14 =
  +        { 0xd7ffffffffffeL, 0x3fL, 0x200d6caefef02596L, 0x1fL };
  +    static final long[] jjbitVec15 = { 0x0L, 0x3fffffffeffL, 0x0L, 0x0L };
  +    static final long[] jjbitVec16 =
  +        { 0x0L, 0x0L, 0xffffffff00000000L, 0x7fffffffff003fL };
  +    static final long[] jjbitVec17 =
  +        {
  +            0x500000000007daedL,
  +            0x2c62ab82315001L,
  +            0xf580c90040000000L,
  +            0x201080000000007L };
  +    static final long[] jjbitVec18 =
  +        {
  +            0xffffffffffffffffL,
  +            0xffffffffffffffffL,
  +            0xffffffff0fffffffL,
  +            0x3ffffffffffffffL };
  +    static final long[] jjbitVec19 =
  +        {
  +            0xffffffff3f3fffffL,
  +            0x3fffffffaaff3f3fL,
  +            0x5fdfffffffffffffL,
  +            0x1fdc1fff0fcf1fdcL };
  +    static final long[] jjbitVec20 = { 0x4c4000000000L, 0x0L, 0x7L, 0x0L };
  +    static final long[] jjbitVec21 =
  +        {
  +            0x3fe00000080L,
  +            0xfffffffffffffffeL,
  +            0xfffffffe001fffffL,
  +            0x7ffffffffffffffL };
  +    static final long[] jjbitVec22 = { 0x1fffffffffe0L, 0x0L, 0x0L, 0x0L };
  +    static final long[] jjbitVec23 =
  +        { 0xffffffffffffffffL, 0xffffffffffffffffL, 0x3fffffffffL, 0x0L };
  +    static final long[] jjbitVec24 =
  +        { 0xffffffffffffffffL, 0xffffffffffffffffL, 0xfffffffffL, 0x0L };
  +    static final long[] jjbitVec25 =
  +        { 0x0L, 0x0L, 0x80000000000000L, 0xff7fffffff7fffffL };
  +    static final long[] jjbitVec26 =
  +        { 0xffffffL, 0xffffffffffff0000L, 0xf80001ffffffffffL, 0x30003L };
  +    static final long[] jjbitVec27 =
  +        {
  +            0xffffffffffffffffL,
  +            0x30000003fL,
  +            0xfffffffbffffd7c0L,
  +            0xffffd547f7fffL };
  +    static final long[] jjbitVec28 =
  +        {
  +            0xffffffffffffdffeL,
  +            0xffffffffdffeffffL,
  +            0xffffffffffff007bL,
  +            0x33fcfffffff199fL };
  +    static final long[] jjbitVec29 =
  +        {
  +            0xfffe000000000000L,
  +            0xfffffffe027fffffL,
  +            0xbbfffffbfffe007fL,
  +            0x707ffffff0016L };
  +    static final long[] jjbitVec30 =
  +        {
  +            0x7fffffe00000000L,
  +            0xffff03ff0007ffffL,
  +            0x7cffffffffffffffL,
  +            0x3ff3dffffef7fffL };
  +    static final long[] jjbitVec31 =
  +        {
  +            0xf3ffffffffffffeeL,
  +            0xffcfff1e3fffL,
  +            0xd3c5fdfffff99feeL,
  +            0x3ffcfb080399fL };
  +    static final long[] jjbitVec32 =
  +        {
  +            0xd36dfdfffff987e4L,
  +            0x1fffc05e003987L,
  +            0xf3edfdfffffbafeeL,
  +            0xffc100003bbfL };
  +    static final long[] jjbitVec33 =
  +        {
  +            0xf3cdfdfffff99feeL,
  +            0xffc3b0c0398fL,
  +            0xc3bfc718d63dc7ecL,
  +            0xff8000803dc7L };
  +    static final long[] jjbitVec34 =
  +        {
  +            0xc3effdfffffddfeeL,
  +            0xffc300603ddfL,
  +            0xc3effdfffffddfecL,
  +            0xffc340603ddfL };
  +    static final long[] jjbitVec35 =
  +        { 0xc3fffdfffffddfecL, 0xffc300803dcfL, 0x0L, 0x0L };
  +    static final long[] jjbitVec36 =
  +        { 0x7ff7ffffffffffeL, 0x3ff7fffL, 0x3bff6caefef02596L, 0x3ff3f5fL };
  +    static final long[] jjbitVec37 =
  +        { 0xc2a003ff03000000L, 0xfffe03fffffffeffL, 0x2fe3ffffebf0fdfL, 0x0L };
  +    static final long[] jjbitVec38 = { 0x0L, 0x0L, 0x0L, 0x21fff0000L };
  +    static final long[] jjbitVec39 =
  +        {
  +            0x3efffe000000a0L,
  +            0xfffffffffffffffeL,
  +            0xfffffffe661fffffL,
  +            0x77ffffffffffffffL };
  +    private final int jjMoveNfa_0(int startState, int curPos) {
  +        int[] nextStates;
  +        int startsAt = 0;
  +        jjnewStateCnt = 7;
  +        int i = 1;
  +        jjstateSet[0] = startState;
  +        int j, kind = 0x7fffffff;
  +        for (;;) {
  +            if (++jjround == 0x7fffffff)
  +                ReInitRounds();
  +            if (curChar < 64) {
  +                long l = 1L << curChar;
  +                MatchLoop : do {
  +                    switch (jjstateSet[--i]) {
  +                        case 0 :
  +                            if ((0x100002600L & l) != 0L)
  +                                kind = 8;
  +                            break;
  +                        case 2 :
  +                            if ((0x3ff600000000000L & l) == 0L)
  +                                break;
  +                            if (kind > 7)
  +                                kind = 7;
  +                            jjstateSet[jjnewStateCnt++] = 2;
  +                            break;
  +                        case 3 :
  +                            if ((0x3ff600000000000L & l) != 0L)
  +                                jjAddStates(0, 1);
  +                            break;
  +                        case 4 :
  +                            if (curChar == 58)
  +                                jjstateSet[jjnewStateCnt++] = 5;
  +                            break;
  +                        case 6 :
  +                            if ((0x3ff600000000000L & l) == 0L)
  +                                break;
  +                            if (kind > 9)
  +                                kind = 9;
  +                            jjstateSet[jjnewStateCnt++] = 6;
  +                            break;
  +                        default :
  +                            break;
  +                    }
  +                } while (i != startsAt);
  +            } else if (curChar < 128) {
  +                long l = 1L << (curChar & 077);
  +                MatchLoop : do {
  +                    switch (jjstateSet[--i]) {
  +                        case 0 :
  +                            if ((0x7fffffe87fffffeL & l) == 0L)
  +                                break;
  +                            if (kind > 7)
  +                                kind = 7;
  +                            jjCheckNAddStates(2, 5);
  +                            break;
  +                        case 2 :
  +                            if ((0x7fffffe87fffffeL & l) == 0L)
  +                                break;
  +                            if (kind > 7)
  +                                kind = 7;
  +                            jjCheckNAdd(2);
  +                            break;
  +                        case 3 :
  +                            if ((0x7fffffe87fffffeL & l) != 0L)
  +                                jjCheckNAddTwoStates(3, 4);
  +                            break;
  +                        case 5 :
  +                        case 6 :
  +                            if ((0x7fffffe87fffffeL & l) == 0L)
  +                                break;
  +                            if (kind > 9)
  +                                kind = 9;
  +                            jjCheckNAdd(6);
  +                            break;
  +                        default :
  +                            break;
  +                    }
  +                } while (i != startsAt);
  +            } else {
  +                int hiByte = (int) (curChar >> 8);
  +                int i1 = hiByte >> 6;
  +                long l1 = 1L << (hiByte & 077);
  +                int i2 = (curChar & 0xff) >> 6;
  +                long l2 = 1L << (curChar & 077);
  +                MatchLoop : do {
  +                    switch (jjstateSet[--i]) {
  +                        case 0 :
  +                            if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
  +                                break;
  +                            if (kind > 7)
  +                                kind = 7;
  +                            jjCheckNAddStates(2, 5);
  +                            break;
  +                        case 2 :
  +                            if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
  +                                break;
  +                            if (kind > 7)
  +                                kind = 7;
  +                            jjCheckNAdd(2);
  +                            break;
  +                        case 3 :
  +                            if (jjCanMove_1(hiByte, i1, i2, l1, l2))
  +                                jjCheckNAddTwoStates(3, 4);
  +                            break;
  +                        case 5 :
  +                            if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
  +                                break;
  +                            if (kind > 9)
  +                                kind = 9;
  +                            jjCheckNAdd(6);
  +                            break;
  +                        case 6 :
  +                            if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
  +                                break;
  +                            if (kind > 9)
  +                                kind = 9;
  +                            jjCheckNAdd(6);
  +                            break;
  +                        default :
  +                            break;
  +                    }
  +                } while (i != startsAt);
  +            }
  +            if (kind != 0x7fffffff) {
  +                jjmatchedKind = kind;
  +                jjmatchedPos = curPos;
  +                kind = 0x7fffffff;
  +            }
  +            ++curPos;
  +            if ((i = jjnewStateCnt)
  +                == (startsAt = 7 - (jjnewStateCnt = startsAt)))
  +                return curPos;
  +            try {
  +                curChar = input_stream.readChar();
  +            } catch (java.io.IOException e) {
  +                return curPos;
  +            }
  +        }
  +    }
  +    private final int jjStopStringLiteralDfa_1(int pos, long active0) {
  +        switch (pos) {
  +            default :
  +                return -1;
  +        }
  +    }
  +    private final int jjStartNfa_1(int pos, long active0) {
  +        return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1);
  +    }
  +    private final int jjStartNfaWithStates_1(int pos, int kind, int state) {
  +        jjmatchedKind = kind;
  +        jjmatchedPos = pos;
  +        try {
  +            curChar = input_stream.readChar();
  +        } catch (java.io.IOException e) {
  +            return pos + 1;
  +        }
  +        return jjMoveNfa_1(state, pos + 1);
  +    }
  +    private final int jjMoveStringLiteralDfa0_1() {
  +        switch (curChar) {
  +            case 40 :
  +                return jjStopAtPos(0, 10);
  +            case 41 :
  +                return jjStopAtPos(0, 11);
  +            case 94 :
  +                return jjMoveStringLiteralDfa1_1(0x7000L);
  +            default :
  +                return jjMoveNfa_1(0, 0);
           }
  +    }
  +    private final int jjMoveStringLiteralDfa1_1(long active0) {
  +        try {
  +            curChar = input_stream.readChar();
  +        } catch (java.io.IOException e) {
  +            jjStopStringLiteralDfa_1(0, active0);
  +            return 1;
  +        }
  +        switch (curChar) {
  +            case 40 :
  +                if ((active0 & 0x1000L) != 0L)
  +                    return jjStopAtPos(1, 12);
  +                break;
  +            case 41 :
  +                if ((active0 & 0x2000L) != 0L)
  +                    return jjStopAtPos(1, 13);
  +                break;
  +            case 94 :
  +                if ((active0 & 0x4000L) != 0L)
  +                    return jjStopAtPos(1, 14);
  +                break;
  +            default :
  +                break;
  +        }
  +        return jjStartNfa_1(0, active0);
  +    }
  +    static final long[] jjbitVec40 =
  +        {
  +            0xfffffffffffffffeL,
  +            0xffffffffffffffffL,
  +            0xffffffffffffffffL,
  +            0xffffffffffffffffL };
  +    static final long[] jjbitVec41 =
  +        { 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL };
  +    private final int jjMoveNfa_1(int startState, int curPos) {
  +        int[] nextStates;
  +        int startsAt = 0;
  +        jjnewStateCnt = 1;
  +        int i = 1;
  +        jjstateSet[0] = startState;
  +        int j, kind = 0x7fffffff;
  +        for (;;) {
  +            if (++jjround == 0x7fffffff)
  +                ReInitRounds();
  +            if (curChar < 64) {
  +                long l = 1L << curChar;
  +                MatchLoop : do {
  +                    switch (jjstateSet[--i]) {
  +                        case 0 :
  +                            if ((0xfffffcffffffffffL & l) != 0L)
  +                                kind = 15;
  +                            break;
  +                        default :
  +                            break;
  +                    }
  +                } while (i != startsAt);
  +            } else if (curChar < 128) {
  +                long l = 1L << (curChar & 077);
  +                MatchLoop : do {
  +                    switch (jjstateSet[--i]) {
  +                        case 0 :
  +                            if ((0xffffffffbfffffffL & l) != 0L)
  +                                kind = 15;
  +                            break;
  +                        default :
  +                            break;
  +                    }
  +                } while (i != startsAt);
  +            } else {
  +                int hiByte = (int) (curChar >> 8);
  +                int i1 = hiByte >> 6;
  +                long l1 = 1L << (hiByte & 077);
  +                int i2 = (curChar & 0xff) >> 6;
  +                long l2 = 1L << (curChar & 077);
  +                MatchLoop : do {
  +                    switch (jjstateSet[--i]) {
  +                        case 0 :
  +                            if (jjCanMove_2(hiByte, i1, i2, l1, l2)
  +                                && kind > 15)
  +                                kind = 15;
  +                            break;
  +                        default :
  +                            break;
  +                    }
  +                } while (i != startsAt);
  +            }
  +            if (kind != 0x7fffffff) {
  +                jjmatchedKind = kind;
  +                jjmatchedPos = curPos;
  +                kind = 0x7fffffff;
  +            }
  +            ++curPos;
  +            if ((i = jjnewStateCnt)
  +                == (startsAt = 1 - (jjnewStateCnt = startsAt)))
  +                return curPos;
  +            try {
  +                curChar = input_stream.readChar();
  +            } catch (java.io.IOException e) {
  +                return curPos;
  +            }
  +        }
  +    }
  +    static final int[] jjnextStates = { 3, 4, 2, 3, 4, 6, };
  +    private static final boolean jjCanMove_0(
  +        int hiByte,
  +        int i1,
  +        int i2,
  +        long l1,
  +        long l2) {
  +        switch (hiByte) {
  +            case 0 :
  +                return ((jjbitVec2[i2] & l2) != 0L);
  +            case 1 :
  +                return ((jjbitVec3[i2] & l2) != 0L);
  +            case 2 :
  +                return ((jjbitVec4[i2] & l2) != 0L);
  +            case 3 :
  +                return ((jjbitVec5[i2] & l2) != 0L);
  +            case 4 :
  +                return ((jjbitVec6[i2] & l2) != 0L);
  +            case 5 :
  +                return ((jjbitVec7[i2] & l2) != 0L);
  +            case 6 :
  +                return ((jjbitVec8[i2] & l2) != 0L);
  +            case 9 :
  +                return ((jjbitVec9[i2] & l2) != 0L);
  +            case 10 :
  +                return ((jjbitVec10[i2] & l2) != 0L);
  +            case 11 :
  +                return ((jjbitVec11[i2] & l2) != 0L);
  +            case 12 :
  +                return ((jjbitVec12[i2] & l2) != 0L);
  +            case 13 :
  +                return ((jjbitVec13[i2] & l2) != 0L);
  +            case 14 :
  +                return ((jjbitVec14[i2] & l2) != 0L);
  +            case 15 :
  +                return ((jjbitVec15[i2] & l2) != 0L);
  +            case 16 :
  +                return ((jjbitVec16[i2] & l2) != 0L);
  +            case 17 :
  +                return ((jjbitVec17[i2] & l2) != 0L);
  +            case 30 :
  +                return ((jjbitVec18[i2] & l2) != 0L);
  +            case 31 :
  +                return ((jjbitVec19[i2] & l2) != 0L);
  +            case 33 :
  +                return ((jjbitVec20[i2] & l2) != 0L);
  +            case 48 :
  +                return ((jjbitVec21[i2] & l2) != 0L);
  +            case 49 :
  +                return ((jjbitVec22[i2] & l2) != 0L);
  +            case 159 :
  +                return ((jjbitVec23[i2] & l2) != 0L);
  +            case 215 :
  +                return ((jjbitVec24[i2] & l2) != 0L);
  +            default :
  +                if ((jjbitVec0[i1] & l1) != 0L)
  +                    return true;
  +                return false;
  +        }
  +    }
  +    private static final boolean jjCanMove_1(
  +        int hiByte,
  +        int i1,
  +        int i2,
  +        long l1,
  +        long l2) {
  +        switch (hiByte) {
  +            case 0 :
  +                return ((jjbitVec25[i2] & l2) != 0L);
  +            case 1 :
  +                return ((jjbitVec3[i2] & l2) != 0L);
  +            case 2 :
  +                return ((jjbitVec26[i2] & l2) != 0L);
  +            case 3 :
  +                return ((jjbitVec27[i2] & l2) != 0L);
  +            case 4 :
  +                return ((jjbitVec28[i2] & l2) != 0L);
  +            case 5 :
  +                return ((jjbitVec29[i2] & l2) != 0L);
  +            case 6 :
  +                return ((jjbitVec30[i2] & l2) != 0L);
  +            case 9 :
  +                return ((jjbitVec31[i2] & l2) != 0L);
  +            case 10 :
  +                return ((jjbitVec32[i2] & l2) != 0L);
  +            case 11 :
  +                return ((jjbitVec33[i2] & l2) != 0L);
  +            case 12 :
  +                return ((jjbitVec34[i2] & l2) != 0L);
  +            case 13 :
  +                return ((jjbitVec35[i2] & l2) != 0L);
  +            case 14 :
  +                return ((jjbitVec36[i2] & l2) != 0L);
  +            case 15 :
  +                return ((jjbitVec37[i2] & l2) != 0L);
  +            case 16 :
  +                return ((jjbitVec16[i2] & l2) != 0L);
  +            case 17 :
  +                return ((jjbitVec17[i2] & l2) != 0L);
  +            case 30 :
  +                return ((jjbitVec18[i2] & l2) != 0L);
  +            case 31 :
  +                return ((jjbitVec19[i2] & l2) != 0L);
  +            case 32 :
  +                return ((jjbitVec38[i2] & l2) != 0L);
  +            case 33 :
  +                return ((jjbitVec20[i2] & l2) != 0L);
  +            case 48 :
  +                return ((jjbitVec39[i2] & l2) != 0L);
  +            case 49 :
  +                return ((jjbitVec22[i2] & l2) != 0L);
  +            case 159 :
  +                return ((jjbitVec23[i2] & l2) != 0L);
  +            case 215 :
  +                return ((jjbitVec24[i2] & l2) != 0L);
  +            default :
  +                if ((jjbitVec0[i1] & l1) != 0L)
  +                    return true;
  +                return false;
  +        }
  +    }
  +    private static final boolean jjCanMove_2(
  +        int hiByte,
  +        int i1,
  +        int i2,
  +        long l1,
  +        long l2) {
  +        switch (hiByte) {
  +            case 0 :
  +                return ((jjbitVec41[i2] & l2) != 0L);
  +            default :
  +                if ((jjbitVec40[i1] & l1) != 0L)
  +                    return true;
  +                return false;
  +        }
  +    }
  +    public static final String[] jjstrLiteralImages =
  +        {
  +            "",
  +            null,
  +            null,
  +            null,
  +            null,
  +            null,
  +            null,
  +            null,
  +            null,
  +            null,
  +            "\50",
  +            "\51",
  +            "\136\50",
  +            "\136\51",
  +            "\136\136",
  +            null,
  +            };
  +    public static final String[] lexStateNames = { "DEFAULT", "IN_SCHEME", };
  +    public static final int[] jjnewLexState =
  +        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, };
  +    protected SimpleCharStream input_stream;
  +    private final int[] jjrounds = new int[7];
  +    private final int[] jjstateSet = new int[14];
  +    protected char curChar;
  +    public XPointerFrameworkParserTokenManager(SimpleCharStream stream) {
  +        if (SimpleCharStream.staticFlag)
  +            throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
  +        input_stream = stream;
  +    }
  +    public XPointerFrameworkParserTokenManager(
  +        SimpleCharStream stream,
  +        int lexState) {
  +        this(stream);
  +        SwitchTo(lexState);
  +    }
  +    public void ReInit(SimpleCharStream stream) {
  +        jjmatchedPos = jjnewStateCnt = 0;
  +        curLexState = defaultLexState;
  +        input_stream = stream;
  +        ReInitRounds();
  +    }
  +    private final void ReInitRounds() {
  +        int i;
  +        jjround = 0x80000001;
  +        for (i = 7; i-- > 0;)
  +            jjrounds[i] = 0x80000000;
  +    }
  +    public void ReInit(SimpleCharStream stream, int lexState) {
  +        ReInit(stream);
  +        SwitchTo(lexState);
  +    }
  +    public void SwitchTo(int lexState) {
  +        if (lexState >= 2 || lexState < 0)
  +            throw new TokenMgrError(
  +                "Error: Ignoring invalid lexical state : "
  +                    + lexState
  +                    + ". State unchanged.",
  +                TokenMgrError.INVALID_LEXICAL_STATE);
           else
  -           error_column++;
  -     }
  -     if (!EOFSeen) {
  -        input_stream.backup(1);
  -        error_after = curPos <= 1 ? "" : input_stream.GetImage();
  -     }
  -     throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
  -  }
  -}
  +            curLexState = lexState;
  +    }
  +
  +    protected Token jjFillToken() {
  +        Token t = Token.newToken(jjmatchedKind);
  +        t.kind = jjmatchedKind;
  +        String im = jjstrLiteralImages[jjmatchedKind];
  +        t.image = (im == null) ? input_stream.GetImage() : im;
  +        t.beginLine = input_stream.getBeginLine();
  +        t.beginColumn = input_stream.getBeginColumn();
  +        t.endLine = input_stream.getEndLine();
  +        t.endColumn = input_stream.getEndColumn();
  +        return t;
  +    }
  +
  +    int curLexState = 0;
  +    int defaultLexState = 0;
  +    int jjnewStateCnt;
  +    int jjround;
  +    int jjmatchedPos;
  +    int jjmatchedKind;
  +
  +    public Token getNextToken() {
  +        int kind;
  +        Token specialToken = null;
  +        Token matchedToken;
  +        int curPos = 0;
  +
  +        EOFLoop : for (;;) {
  +            try {
  +                curChar = input_stream.BeginToken();
  +            } catch (java.io.IOException e) {
  +                jjmatchedKind = 0;
  +                matchedToken = jjFillToken();
  +                return matchedToken;
  +            }
  +
  +            switch (curLexState) {
  +                case 0 :
  +                    jjmatchedKind = 0x7fffffff;
  +                    jjmatchedPos = 0;
  +                    curPos = jjMoveStringLiteralDfa0_0();
  +                    break;
  +                case 1 :
  +                    jjmatchedKind = 0x7fffffff;
  +                    jjmatchedPos = 0;
  +                    curPos = jjMoveStringLiteralDfa0_1();
  +                    break;
  +            }
  +            if (jjmatchedKind != 0x7fffffff) {
  +                if (jjmatchedPos + 1 < curPos)
  +                    input_stream.backup(curPos - jjmatchedPos - 1);
  +                matchedToken = jjFillToken();
  +                if (jjnewLexState[jjmatchedKind] != -1)
  +                    curLexState = jjnewLexState[jjmatchedKind];
  +                return matchedToken;
  +            }
  +            int error_line = input_stream.getEndLine();
  +            int error_column = input_stream.getEndColumn();
  +            String error_after = null;
  +            boolean EOFSeen = false;
  +            try {
  +                input_stream.readChar();
  +                input_stream.backup(1);
  +            } catch (java.io.IOException e1) {
  +                EOFSeen = true;
  +                error_after = curPos <= 1 ? "" : input_stream.GetImage();
  +                if (curChar == '\n' || curChar == '\r') {
  +                    error_line++;
  +                    error_column = 0;
  +                } else
  +                    error_column++;
  +            }
  +            if (!EOFSeen) {
  +                input_stream.backup(1);
  +                error_after = curPos <= 1 ? "" : input_stream.GetImage();
  +            }
  +            throw new TokenMgrError(
  +                EOFSeen,
  +                curLexState,
  +                error_line,
  +                error_column,
  +                error_after,
  +                curChar,
  +                TokenMgrError.LEXICAL_ERROR);
  +        }
  +    }
   
   }
  
  
  
  1.2       +225 -172  cocoon-2.1/src/java/org/apache/cocoon/components/xpointer/parser/ParseException.java
  
  Index: ParseException.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/xpointer/parser/ParseException.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ParseException.java	20 May 2003 11:57:14 -0000	1.1
  +++ ParseException.java	4 Jul 2003 17:58:30 -0000	1.2
  @@ -1,4 +1,53 @@
  -/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */
  +/*
  +
  + ============================================================================
  +                   The Apache Software License, Version 1.1
  + ============================================================================
  +
  + Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
  +
  + Redistribution and use in source and binary forms, with or without modifica-
  + tion, are permitted provided that the following conditions are met:
  +
  + 1. Redistributions of  source code must  retain the above copyright  notice,
  +    this list of conditions and the following disclaimer.
  +
  + 2. Redistributions in binary form must reproduce the above copyright notice,
  +    this list of conditions and the following disclaimer in the documentation
  +    and/or other materials provided with the distribution.
  +
  + 3. The end-user documentation included with the redistribution, if any, must
  +    include  the following  acknowledgment:  "This product includes  software
  +    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
  +    Alternately, this  acknowledgment may  appear in the software itself,  if
  +    and wherever such third-party acknowledgments normally appear.
  +
  + 4. The names "Apache Cocoon" and  "Apache Software Foundation" must  not  be
  +    used to  endorse or promote  products derived from  this software without
  +    prior written permission. For written permission, please contact
  +    apache@apache.org.
  +
  + 5. Products  derived from this software may not  be called "Apache", nor may
  +    "Apache" appear  in their name,  without prior written permission  of the
  +    Apache Software Foundation.
  +
  + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  + FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
  + APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
  + INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
  + DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
  + OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
  + ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
  + (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
  + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  +
  + This software  consists of voluntary contributions made  by many individuals
  + on  behalf of the Apache Software  Foundation and was  originally created by
  + Stefano Mazzocchi  <st...@apache.org>. For more  information on the Apache
  + Software Foundation, please see <http://www.apache.org/>.
  +
  +*/
   package org.apache.cocoon.components.xpointer.parser;
   
   /**
  @@ -12,181 +61,185 @@
    */
   public class ParseException extends Exception {
   
  -  /**
  -   * This constructor is used by the method "generateParseException"
  -   * in the generated parser.  Calling this constructor generates
  -   * a new object of this type with the fields "currentToken",
  -   * "expectedTokenSequences", and "tokenImage" set.  The boolean
  -   * flag "specialConstructor" is also set to true to indicate that
  -   * this constructor was used to create this object.
  -   * This constructor calls its super class with the empty string
  -   * to force the "toString" method of parent class "Throwable" to
  -   * print the error message in the form:
  -   *     ParseException: <result of getMessage>
  -   */
  -  public ParseException(Token currentTokenVal,
  -                        int[][] expectedTokenSequencesVal,
  -                        String[] tokenImageVal
  -                       )
  -  {
  -    super("");
  -    specialConstructor = true;
  -    currentToken = currentTokenVal;
  -    expectedTokenSequences = expectedTokenSequencesVal;
  -    tokenImage = tokenImageVal;
  -  }
  -
  -  /**
  -   * The following constructors are for use by you for whatever
  -   * purpose you can think of.  Constructing the exception in this
  -   * manner makes the exception behave in the normal way - i.e., as
  -   * documented in the class "Throwable".  The fields "errorToken",
  -   * "expectedTokenSequences", and "tokenImage" do not contain
  -   * relevant information.  The JavaCC generated code does not use
  -   * these constructors.
  -   */
  -
  -  public ParseException() {
  -    super();
  -    specialConstructor = false;
  -  }
  -
  -  public ParseException(String message) {
  -    super(message);
  -    specialConstructor = false;
  -  }
  -
  -  /**
  -   * This variable determines which constructor was used to create
  -   * this object and thereby affects the semantics of the
  -   * "getMessage" method (see below).
  -   */
  -  protected boolean specialConstructor;
  -
  -  /**
  -   * This is the last token that has been consumed successfully.  If
  -   * this object has been created due to a parse error, the token
  -   * followng this token will (therefore) be the first error token.
  -   */
  -  public Token currentToken;
  -
  -  /**
  -   * Each entry in this array is an array of integers.  Each array
  -   * of integers represents a sequence of tokens (by their ordinal
  -   * values) that is expected at this point of the parse.
  -   */
  -  public int[][] expectedTokenSequences;
  -
  -  /**
  -   * This is a reference to the "tokenImage" array of the generated
  -   * parser within which the parse error occurred.  This array is
  -   * defined in the generated ...Constants interface.
  -   */
  -  public String[] tokenImage;
  -
  -  /**
  -   * This method has the standard behavior when this object has been
  -   * created using the standard constructors.  Otherwise, it uses
  -   * "currentToken" and "expectedTokenSequences" to generate a parse
  -   * error message and returns it.  If this object has been created
  -   * due to a parse error, and you do not catch it (it gets thrown
  -   * from the parser), then this method is called during the printing
  -   * of the final stack trace, and hence the correct error message
  -   * gets displayed.
  -   */
  -  public String getMessage() {
  -    if (!specialConstructor) {
  -      return super.getMessage();
  +    /**
  +     * This constructor is used by the method "generateParseException"
  +     * in the generated parser.  Calling this constructor generates
  +     * a new object of this type with the fields "currentToken",
  +     * "expectedTokenSequences", and "tokenImage" set.  The boolean
  +     * flag "specialConstructor" is also set to true to indicate that
  +     * this constructor was used to create this object.
  +     * This constructor calls its super class with the empty string
  +     * to force the "toString" method of parent class "Throwable" to
  +     * print the error message in the form:
  +     *     ParseException: <result of getMessage>
  +     */
  +    public ParseException(
  +        Token currentTokenVal,
  +        int[][] expectedTokenSequencesVal,
  +        String[] tokenImageVal) {
  +        super("");
  +        specialConstructor = true;
  +        currentToken = currentTokenVal;
  +        expectedTokenSequences = expectedTokenSequencesVal;
  +        tokenImage = tokenImageVal;
       }
  -    String expected = "";
  -    int maxSize = 0;
  -    for (int i = 0; i < expectedTokenSequences.length; i++) {
  -      if (maxSize < expectedTokenSequences[i].length) {
  -        maxSize = expectedTokenSequences[i].length;
  -      }
  -      for (int j = 0; j < expectedTokenSequences[i].length; j++) {
  -        expected += tokenImage[expectedTokenSequences[i][j]] + " ";
  -      }
  -      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
  -        expected += "...";
  -      }
  -      expected += eol + "    ";
  +
  +    /**
  +     * The following constructors are for use by you for whatever
  +     * purpose you can think of.  Constructing the exception in this
  +     * manner makes the exception behave in the normal way - i.e., as
  +     * documented in the class "Throwable".  The fields "errorToken",
  +     * "expectedTokenSequences", and "tokenImage" do not contain
  +     * relevant information.  The JavaCC generated code does not use
  +     * these constructors.
  +     */
  +
  +    public ParseException() {
  +        super();
  +        specialConstructor = false;
       }
  -    String retval = "Encountered \"";
  -    Token tok = currentToken.next;
  -    for (int i = 0; i < maxSize; i++) {
  -      if (i != 0) retval += " ";
  -      if (tok.kind == 0) {
  -        retval += tokenImage[0];
  -        break;
  -      }
  -      retval += add_escapes(tok.image);
  -      tok = tok.next; 
  +
  +    public ParseException(String message) {
  +        super(message);
  +        specialConstructor = false;
       }
  -    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
  -    retval += "." + eol;
  -    if (expectedTokenSequences.length == 1) {
  -      retval += "Was expecting:" + eol + "    ";
  -    } else {
  -      retval += "Was expecting one of:" + eol + "    ";
  +
  +    /**
  +     * This variable determines which constructor was used to create
  +     * this object and thereby affects the semantics of the
  +     * "getMessage" method (see below).
  +     */
  +    protected boolean specialConstructor;
  +
  +    /**
  +     * This is the last token that has been consumed successfully.  If
  +     * this object has been created due to a parse error, the token
  +     * followng this token will (therefore) be the first error token.
  +     */
  +    public Token currentToken;
  +
  +    /**
  +     * Each entry in this array is an array of integers.  Each array
  +     * of integers represents a sequence of tokens (by their ordinal
  +     * values) that is expected at this point of the parse.
  +     */
  +    public int[][] expectedTokenSequences;
  +
  +    /**
  +     * This is a reference to the "tokenImage" array of the generated
  +     * parser within which the parse error occurred.  This array is
  +     * defined in the generated ...Constants interface.
  +     */
  +    public String[] tokenImage;
  +
  +    /**
  +     * This method has the standard behavior when this object has been
  +     * created using the standard constructors.  Otherwise, it uses
  +     * "currentToken" and "expectedTokenSequences" to generate a parse
  +     * error message and returns it.  If this object has been created
  +     * due to a parse error, and you do not catch it (it gets thrown
  +     * from the parser), then this method is called during the printing
  +     * of the final stack trace, and hence the correct error message
  +     * gets displayed.
  +     */
  +    public String getMessage() {
  +        if (!specialConstructor) {
  +            return super.getMessage();
  +        }
  +        String expected = "";
  +        int maxSize = 0;
  +        for (int i = 0; i < expectedTokenSequences.length; i++) {
  +            if (maxSize < expectedTokenSequences[i].length) {
  +                maxSize = expectedTokenSequences[i].length;
  +            }
  +            for (int j = 0; j < expectedTokenSequences[i].length; j++) {
  +                expected += tokenImage[expectedTokenSequences[i][j]] + " ";
  +            }
  +            if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1]
  +                != 0) {
  +                expected += "...";
  +            }
  +            expected += eol + "    ";
  +        }
  +        String retval = "Encountered \"";
  +        Token tok = currentToken.next;
  +        for (int i = 0; i < maxSize; i++) {
  +            if (i != 0)
  +                retval += " ";
  +            if (tok.kind == 0) {
  +                retval += tokenImage[0];
  +                break;
  +            }
  +            retval += add_escapes(tok.image);
  +            tok = tok.next;
  +        }
  +        retval += "\" at line "
  +            + currentToken.next.beginLine
  +            + ", column "
  +            + currentToken.next.beginColumn;
  +        retval += "." + eol;
  +        if (expectedTokenSequences.length == 1) {
  +            retval += "Was expecting:" + eol + "    ";
  +        } else {
  +            retval += "Was expecting one of:" + eol + "    ";
  +        }
  +        retval += expected;
  +        return retval;
       }
  -    retval += expected;
  -    return retval;
  -  }
  -
  -  /**
  -   * The end of line string for this machine.
  -   */
  -  protected String eol = System.getProperty("line.separator", "\n");
  - 
  -  /**
  -   * Used to convert raw characters to their escaped version
  -   * when these raw version cannot be used as part of an ASCII
  -   * string literal.
  -   */
  -  protected String add_escapes(String str) {
  -      StringBuffer retval = new StringBuffer();
  -      char ch;
  -      for (int i = 0; i < str.length(); i++) {
  -        switch (str.charAt(i))
  -        {
  -           case 0 :
  -              continue;
  -           case '\b':
  -              retval.append("\\b");
  -              continue;
  -           case '\t':
  -              retval.append("\\t");
  -              continue;
  -           case '\n':
  -              retval.append("\\n");
  -              continue;
  -           case '\f':
  -              retval.append("\\f");
  -              continue;
  -           case '\r':
  -              retval.append("\\r");
  -              continue;
  -           case '\"':
  -              retval.append("\\\"");
  -              continue;
  -           case '\'':
  -              retval.append("\\\'");
  -              continue;
  -           case '\\':
  -              retval.append("\\\\");
  -              continue;
  -           default:
  -              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
  -                 String s = "0000" + Integer.toString(ch, 16);
  -                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
  -              } else {
  -                 retval.append(ch);
  -              }
  -              continue;
  +
  +    /**
  +     * The end of line string for this machine.
  +     */
  +    protected String eol = System.getProperty("line.separator", "\n");
  +
  +    /**
  +     * Used to convert raw characters to their escaped version
  +     * when these raw version cannot be used as part of an ASCII
  +     * string literal.
  +     */
  +    protected String add_escapes(String str) {
  +        StringBuffer retval = new StringBuffer();
  +        char ch;
  +        for (int i = 0; i < str.length(); i++) {
  +            switch (str.charAt(i)) {
  +                case 0 :
  +                    continue;
  +                case '\b' :
  +                    retval.append("\\b");
  +                    continue;
  +                case '\t' :
  +                    retval.append("\\t");
  +                    continue;
  +                case '\n' :
  +                    retval.append("\\n");
  +                    continue;
  +                case '\f' :
  +                    retval.append("\\f");
  +                    continue;
  +                case '\r' :
  +                    retval.append("\\r");
  +                    continue;
  +                case '\"' :
  +                    retval.append("\\\"");
  +                    continue;
  +                case '\'' :
  +                    retval.append("\\\'");
  +                    continue;
  +                case '\\' :
  +                    retval.append("\\\\");
  +                    continue;
  +                default :
  +                    if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
  +                        String s = "0000" + Integer.toString(ch, 16);
  +                        retval.append(
  +                            "\\u" + s.substring(s.length() - 4, s.length()));
  +                    } else {
  +                        retval.append(ch);
  +                    }
  +                    continue;
  +            }
           }
  -      }
  -      return retval.toString();
  -   }
  +        return retval.toString();
  +    }
   
   }
  
  
  
  1.2       +118 -71   cocoon-2.1/src/java/org/apache/cocoon/components/xpointer/parser/Token.java
  
  Index: Token.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/xpointer/parser/Token.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Token.java	20 May 2003 11:57:14 -0000	1.1
  +++ Token.java	4 Jul 2003 17:58:30 -0000	1.2
  @@ -1,4 +1,53 @@
  -/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
  +/*
  +
  + ============================================================================
  +                   The Apache Software License, Version 1.1
  + ============================================================================
  +
  + Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
  +
  + Redistribution and use in source and binary forms, with or without modifica-
  + tion, are permitted provided that the following conditions are met:
  +
  + 1. Redistributions of  source code must  retain the above copyright  notice,
  +    this list of conditions and the following disclaimer.
  +
  + 2. Redistributions in binary form must reproduce the above copyright notice,
  +    this list of conditions and the following disclaimer in the documentation
  +    and/or other materials provided with the distribution.
  +
  + 3. The end-user documentation included with the redistribution, if any, must
  +    include  the following  acknowledgment:  "This product includes  software
  +    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
  +    Alternately, this  acknowledgment may  appear in the software itself,  if
  +    and wherever such third-party acknowledgments normally appear.
  +
  + 4. The names "Apache Cocoon" and  "Apache Software Foundation" must  not  be
  +    used to  endorse or promote  products derived from  this software without
  +    prior written permission. For written permission, please contact
  +    apache@apache.org.
  +
  + 5. Products  derived from this software may not  be called "Apache", nor may
  +    "Apache" appear  in their name,  without prior written permission  of the
  +    Apache Software Foundation.
  +
  + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  + FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
  + APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
  + INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
  + DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
  + OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
  + ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
  + (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
  + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  +
  + This software  consists of voluntary contributions made  by many individuals
  + on  behalf of the Apache Software  Foundation and was  originally created by
  + Stefano Mazzocchi  <st...@apache.org>. For more  information on the Apache
  + Software Foundation, please see <http://www.apache.org/>.
  +
  +*/
   package org.apache.cocoon.components.xpointer.parser;
   
   /**
  @@ -7,75 +56,73 @@
   
   public class Token {
   
  -  /**
  -   * An integer that describes the kind of this token.  This numbering
  -   * system is determined by JavaCCParser, and a table of these numbers is
  -   * stored in the file ...Constants.java.
  -   */
  -  public int kind;
  -
  -  /**
  -   * beginLine and beginColumn describe the position of the first character
  -   * of this token; endLine and endColumn describe the position of the
  -   * last character of this token.
  -   */
  -  public int beginLine, beginColumn, endLine, endColumn;
  -
  -  /**
  -   * The string image of the token.
  -   */
  -  public String image;
  -
  -  /**
  -   * A reference to the next regular (non-special) token from the input
  -   * stream.  If this is the last token from the input stream, or if the
  -   * token manager has not read tokens beyond this one, this field is
  -   * set to null.  This is true only if this token is also a regular
  -   * token.  Otherwise, see below for a description of the contents of
  -   * this field.
  -   */
  -  public Token next;
  -
  -  /**
  -   * This field is used to access special tokens that occur prior to this
  -   * token, but after the immediately preceding regular (non-special) token.
  -   * If there are no such special tokens, this field is set to null.
  -   * When there are more than one such special token, this field refers
  -   * to the last of these special tokens, which in turn refers to the next
  -   * previous special token through its specialToken field, and so on
  -   * until the first special token (whose specialToken field is null).
  -   * The next fields of special tokens refer to other special tokens that
  -   * immediately follow it (without an intervening regular token).  If there
  -   * is no such token, this field is null.
  -   */
  -  public Token specialToken;
  -
  -  /**
  -   * Returns the image.
  -   */
  -  public String toString()
  -  {
  -     return image;
  -  }
  -
  -  /**
  -   * Returns a new Token object, by default. However, if you want, you
  -   * can create and return subclass objects based on the value of ofKind.
  -   * Simply add the cases to the switch for all those special cases.
  -   * For example, if you have a subclass of Token called IDToken that
  -   * you want to create if ofKind is ID, simlpy add something like :
  -   *
  -   *    case MyParserConstants.ID : return new IDToken();
  -   *
  -   * to the following switch statement. Then you can cast matchedToken
  -   * variable to the appropriate type and use it in your lexical actions.
  -   */
  -  public static final Token newToken(int ofKind)
  -  {
  -     switch(ofKind)
  -     {
  -       default : return new Token();
  -     }
  -  }
  +    /**
  +     * An integer that describes the kind of this token.  This numbering
  +     * system is determined by JavaCCParser, and a table of these numbers is
  +     * stored in the file ...Constants.java.
  +     */
  +    public int kind;
  +
  +    /**
  +     * beginLine and beginColumn describe the position of the first character
  +     * of this token; endLine and endColumn describe the position of the
  +     * last character of this token.
  +     */
  +    public int beginLine, beginColumn, endLine, endColumn;
  +
  +    /**
  +     * The string image of the token.
  +     */
  +    public String image;
  +
  +    /**
  +     * A reference to the next regular (non-special) token from the input
  +     * stream.  If this is the last token from the input stream, or if the
  +     * token manager has not read tokens beyond this one, this field is
  +     * set to null.  This is true only if this token is also a regular
  +     * token.  Otherwise, see below for a description of the contents of
  +     * this field.
  +     */
  +    public Token next;
  +
  +    /**
  +     * This field is used to access special tokens that occur prior to this
  +     * token, but after the immediately preceding regular (non-special) token.
  +     * If there are no such special tokens, this field is set to null.
  +     * When there are more than one such special token, this field refers
  +     * to the last of these special tokens, which in turn refers to the next
  +     * previous special token through its specialToken field, and so on
  +     * until the first special token (whose specialToken field is null).
  +     * The next fields of special tokens refer to other special tokens that
  +     * immediately follow it (without an intervening regular token).  If there
  +     * is no such token, this field is null.
  +     */
  +    public Token specialToken;
  +
  +    /**
  +     * Returns the image.
  +     */
  +    public String toString() {
  +        return image;
  +    }
  +
  +    /**
  +     * Returns a new Token object, by default. However, if you want, you
  +     * can create and return subclass objects based on the value of ofKind.
  +     * Simply add the cases to the switch for all those special cases.
  +     * For example, if you have a subclass of Token called IDToken that
  +     * you want to create if ofKind is ID, simlpy add something like :
  +     *
  +     *    case MyParserConstants.ID : return new IDToken();
  +     *
  +     * to the following switch statement. Then you can cast matchedToken
  +     * variable to the appropriate type and use it in your lexical actions.
  +     */
  +    public static final Token newToken(int ofKind) {
  +        switch (ofKind) {
  +            default :
  +                return new Token();
  +        }
  +    }
   
   }
  
  
  
  1.2       +208 -129  cocoon-2.1/src/java/org/apache/cocoon/components/xpointer/parser/TokenMgrError.java
  
  Index: TokenMgrError.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/xpointer/parser/TokenMgrError.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TokenMgrError.java	20 May 2003 11:57:14 -0000	1.1
  +++ TokenMgrError.java	4 Jul 2003 17:58:30 -0000	1.2
  @@ -1,133 +1,212 @@
  -/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */
  +/*
  +
  + ============================================================================
  +                   The Apache Software License, Version 1.1
  + ============================================================================
  +
  + Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
  +
  + Redistribution and use in source and binary forms, with or without modifica-
  + tion, are permitted provided that the following conditions are met:
  +
  + 1. Redistributions of  source code must  retain the above copyright  notice,
  +    this list of conditions and the following disclaimer.
  +
  + 2. Redistributions in binary form must reproduce the above copyright notice,
  +    this list of conditions and the following disclaimer in the documentation
  +    and/or other materials provided with the distribution.
  +
  + 3. The end-user documentation included with the redistribution, if any, must
  +    include  the following  acknowledgment:  "This product includes  software
  +    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
  +    Alternately, this  acknowledgment may  appear in the software itself,  if
  +    and wherever such third-party acknowledgments normally appear.
  +
  + 4. The names "Apache Cocoon" and  "Apache Software Foundation" must  not  be
  +    used to  endorse or promote  products derived from  this software without
  +    prior written permission. For written permission, please contact
  +    apache@apache.org.
  +
  + 5. Products  derived from this software may not  be called "Apache", nor may
  +    "Apache" appear  in their name,  without prior written permission  of the
  +    Apache Software Foundation.
  +
  + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  + FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
  + APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
  + INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
  + DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
  + OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
  + ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
  + (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
  + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  +
  + This software  consists of voluntary contributions made  by many individuals
  + on  behalf of the Apache Software  Foundation and was  originally created by
  + Stefano Mazzocchi  <st...@apache.org>. For more  information on the Apache
  + Software Foundation, please see <http://www.apache.org/>.
  +
  +*/
   package org.apache.cocoon.components.xpointer.parser;
   
  -public class TokenMgrError extends Error
  -{
  -   /*
  -    * Ordinals for various reasons why an Error of this type can be thrown.
  -    */
  -
  -   /**
  -    * Lexical error occured.
  -    */
  -   static final int LEXICAL_ERROR = 0;
  -
  -   /**
  -    * An attempt wass made to create a second instance of a static token manager.
  -    */
  -   static final int STATIC_LEXER_ERROR = 1;
  -
  -   /**
  -    * Tried to change to an invalid lexical state.
  -    */
  -   static final int INVALID_LEXICAL_STATE = 2;
  -
  -   /**
  -    * Detected (and bailed out of) an infinite loop in the token manager.
  -    */
  -   static final int LOOP_DETECTED = 3;
  -
  -   /**
  -    * Indicates the reason why the exception is thrown. It will have
  -    * one of the above 4 values.
  -    */
  -   int errorCode;
  -
  -   /**
  -    * Replaces unprintable characters by their espaced (or unicode escaped)
  -    * equivalents in the given string
  -    */
  -   protected static final String addEscapes(String str) {
  -      StringBuffer retval = new StringBuffer();
  -      char ch;
  -      for (int i = 0; i < str.length(); i++) {
  -        switch (str.charAt(i))
  -        {
  -           case 0 :
  -              continue;
  -           case '\b':
  -              retval.append("\\b");
  -              continue;
  -           case '\t':
  -              retval.append("\\t");
  -              continue;
  -           case '\n':
  -              retval.append("\\n");
  -              continue;
  -           case '\f':
  -              retval.append("\\f");
  -              continue;
  -           case '\r':
  -              retval.append("\\r");
  -              continue;
  -           case '\"':
  -              retval.append("\\\"");
  -              continue;
  -           case '\'':
  -              retval.append("\\\'");
  -              continue;
  -           case '\\':
  -              retval.append("\\\\");
  -              continue;
  -           default:
  -              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
  -                 String s = "0000" + Integer.toString(ch, 16);
  -                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
  -              } else {
  -                 retval.append(ch);
  -              }
  -              continue;
  +public class TokenMgrError extends Error {
  +    /*
  +     * Ordinals for various reasons why an Error of this type can be thrown.
  +     */
  +
  +    /**
  +     * Lexical error occured.
  +     */
  +    static final int LEXICAL_ERROR = 0;
  +
  +    /**
  +     * An attempt wass made to create a second instance of a static token manager.
  +     */
  +    static final int STATIC_LEXER_ERROR = 1;
  +
  +    /**
  +     * Tried to change to an invalid lexical state.
  +     */
  +    static final int INVALID_LEXICAL_STATE = 2;
  +
  +    /**
  +     * Detected (and bailed out of) an infinite loop in the token manager.
  +     */
  +    static final int LOOP_DETECTED = 3;
  +
  +    /**
  +     * Indicates the reason why the exception is thrown. It will have
  +     * one of the above 4 values.
  +     */
  +    int errorCode;
  +
  +    /**
  +     * Replaces unprintable characters by their espaced (or unicode escaped)
  +     * equivalents in the given string
  +     */
  +    protected static final String addEscapes(String str) {
  +        StringBuffer retval = new StringBuffer();
  +        char ch;
  +        for (int i = 0; i < str.length(); i++) {
  +            switch (str.charAt(i)) {
  +                case 0 :
  +                    continue;
  +                case '\b' :
  +                    retval.append("\\b");
  +                    continue;
  +                case '\t' :
  +                    retval.append("\\t");
  +                    continue;
  +                case '\n' :
  +                    retval.append("\\n");
  +                    continue;
  +                case '\f' :
  +                    retval.append("\\f");
  +                    continue;
  +                case '\r' :
  +                    retval.append("\\r");
  +                    continue;
  +                case '\"' :
  +                    retval.append("\\\"");
  +                    continue;
  +                case '\'' :
  +                    retval.append("\\\'");
  +                    continue;
  +                case '\\' :
  +                    retval.append("\\\\");
  +                    continue;
  +                default :
  +                    if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
  +                        String s = "0000" + Integer.toString(ch, 16);
  +                        retval.append(
  +                            "\\u" + s.substring(s.length() - 4, s.length()));
  +                    } else {
  +                        retval.append(ch);
  +                    }
  +                    continue;
  +            }
           }
  -      }
  -      return retval.toString();
  -   }
  -
  -   /**
  -    * Returns a detailed message for the Error when it is thrown by the
  -    * token manager to indicate a lexical error.
  -    * Parameters : 
  -    *    EOFSeen     : indicates if EOF caused the lexicl error
  -    *    curLexState : lexical state in which this error occured
  -    *    errorLine   : line number when the error occured
  -    *    errorColumn : column number when the error occured
  -    *    errorAfter  : prefix that was seen before this error occured
  -    *    curchar     : the offending character
  -    * Note: You can customize the lexical error message by modifying this method.
  -    */
  -   protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
  -      return("Lexical error at line " +
  -           errorLine + ", column " +
  -           errorColumn + ".  Encountered: " +
  -           (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
  -           "after : \"" + addEscapes(errorAfter) + "\"");
  -   }
  -
  -   /**
  -    * You can also modify the body of this method to customize your error messages.
  -    * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
  -    * of end-users concern, so you can return something like : 
  -    *
  -    *     "Internal Error : Please file a bug report .... "
  -    *
  -    * from this method for such cases in the release version of your parser.
  -    */
  -   public String getMessage() {
  -      return super.getMessage();
  -   }
  -
  -   /*
  -    * Constructors of various flavors follow.
  -    */
  -
  -   public TokenMgrError() {
  -   }
  -
  -   public TokenMgrError(String message, int reason) {
  -      super(message);
  -      errorCode = reason;
  -   }
  -
  -   public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
  -      this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
  -   }
  +        return retval.toString();
  +    }
  +
  +    /**
  +     * Returns a detailed message for the Error when it is thrown by the
  +     * token manager to indicate a lexical error.
  +     * Parameters : 
  +     *    EOFSeen     : indicates if EOF caused the lexicl error
  +     *    curLexState : lexical state in which this error occured
  +     *    errorLine   : line number when the error occured
  +     *    errorColumn : column number when the error occured
  +     *    errorAfter  : prefix that was seen before this error occured
  +     *    curchar     : the offending character
  +     * Note: You can customize the lexical error message by modifying this method.
  +     */
  +    protected static String LexicalError(
  +        boolean EOFSeen,
  +        int lexState,
  +        int errorLine,
  +        int errorColumn,
  +        String errorAfter,
  +        char curChar) {
  +        return (
  +            "Lexical error at line "
  +                + errorLine
  +                + ", column "
  +                + errorColumn
  +                + ".  Encountered: "
  +                + (EOFSeen
  +                    ? "<EOF> "
  +                    : ("\"" + addEscapes(String.valueOf(curChar)) + "\"")
  +                        + " ("
  +                        + (int) curChar
  +                        + "), ")
  +                + "after : \""
  +                + addEscapes(errorAfter)
  +                + "\"");
  +    }
  +
  +    /**
  +     * You can also modify the body of this method to customize your error messages.
  +     * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
  +     * of end-users concern, so you can return something like : 
  +     *
  +     *     "Internal Error : Please file a bug report .... "
  +     *
  +     * from this method for such cases in the release version of your parser.
  +     */
  +    public String getMessage() {
  +        return super.getMessage();
  +    }
  +
  +    /*
  +     * Constructors of various flavors follow.
  +     */
  +
  +    public TokenMgrError() {
  +    }
  +
  +    public TokenMgrError(String message, int reason) {
  +        super(message);
  +        errorCode = reason;
  +    }
  +
  +    public TokenMgrError(
  +        boolean EOFSeen,
  +        int lexState,
  +        int errorLine,
  +        int errorColumn,
  +        String errorAfter,
  +        char curChar,
  +        int reason) {
  +        this(
  +            LexicalError(
  +                EOFSeen,
  +                lexState,
  +                errorLine,
  +                errorColumn,
  +                errorAfter,
  +                curChar),
  +            reason);
  +    }
   }