jvanzyl     02/03/03 20:53:33

  Modified:    src/java/org/apache/maven/jrcs/rcs ArchiveParser.java
                        ArchiveParserTokenManager.java
  Added:       src/java/org/apache/maven/jrcs/rcs JavaCharStream.java
  Log:
  Adding in the generated JavaCharStream. Jaun, I just generated myself so
  I don't think we bonked anything. We just wanted to build :-)
  
  Revision  Changes    Path
  1.10      +438 -273  
jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcs/ArchiveParser.java
  
  Index: ArchiveParser.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcs/ArchiveParser.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ArchiveParser.java        3 Mar 2002 22:14:20 -0000       1.9
  +++ ArchiveParser.java        4 Mar 2002 04:53:32 -0000       1.10
  @@ -11,7 +11,7 @@
    * This class is NOT thread safe.
    * 
    * @author <a href="mailto:[EMAIL PROTECTED]";>Juanco Anez</a>
  - * @version $Id: ArchiveParser.java,v 1.9 2002/03/03 22:14:20 juanco Exp $
  + * @version $Id: ArchiveParser.java,v 1.10 2002/03/04 04:53:32 jvanzyl Exp $
    * @see Archive
    */
   class ArchiveParser implements ArchiveParserConstants {
  @@ -77,442 +77,562 @@
   * PARSER STARTS HERE
   */
     final public void archive(Archive arc) throws ParseException {
  -    admin(arc);
  -    label_1:
  -    while (true) {
  -      switch (jj_nt.kind) {
  -      case NUM:
  -        ;
  -        break;
  -      default:
  -        break label_1;
  -      }
  -      delta(arc);
  +    trace_call("archive");
  +    try {
  +      admin(arc);
  +      label_1:
  +      while (true) {
  +        switch (jj_nt.kind) {
  +        case NUM:
  +          ;
  +          break;
  +        default:
  +          break label_1;
  +        }
  +        delta(arc);
  +      }
  +      desc(arc);
  +      label_2:
  +      while (true) {
  +        switch (jj_nt.kind) {
  +        case NUM:
  +          ;
  +          break;
  +        default:
  +          break label_2;
  +        }
  +        text(arc);
  +      }
  +      jj_consume_token(0);
  +    } finally {
  +      trace_return("archive");
       }
  -    desc(arc);
  -    label_2:
  -    while (true) {
  +  }
  +
  +  final public void admin(Archive arc) throws ParseException {
  +    trace_call("admin");
  +    try {
  +      head(arc);
         switch (jj_nt.kind) {
  -      case NUM:
  -        ;
  +      case BRANCH:
  +        branch(arc);
           break;
         default:
  -        break label_2;
  +        ;
         }
  -      text(arc);
  +      access(arc);
  +      symbols(arc);
  +      locks(arc);
  +      optionals(arc);
  +    } finally {
  +      trace_return("admin");
       }
  -    jj_consume_token(0);
  -  }
  -
  -  final public void admin(Archive arc) throws ParseException {
  -    head(arc);
  -    switch (jj_nt.kind) {
  -    case BRANCH:
  -      branch(arc);
  -      break;
  -    default:
  -      ;
  -    }
  -    access(arc);
  -    symbols(arc);
  -    locks(arc);
  -    optionals(arc);
     }
   
     final public void optionals(Archive arc) throws ParseException {
  -    label_3:
  -    while (true) {
  -      switch (jj_nt.kind) {
  -      case COMMENT:
  -      case EXPAND:
  -      case ID:
  -        ;
  -        break;
  -      default:
  -        break label_3;
  -      }
  -      switch (jj_nt.kind) {
  -      case COMMENT:
  -        comment(arc);
  -        break;
  -      case EXPAND:
  -        expand(arc);
  -        break;
  -      case ID:
  -        newPhrase(arc.phrases);
  -        break;
  -      default:
  -        jj_consume_token(-1);
  -        throw new ParseException();
  +    trace_call("optionals");
  +    try {
  +      label_3:
  +      while (true) {
  +        switch (jj_nt.kind) {
  +        case COMMENT:
  +        case EXPAND:
  +        case ID:
  +          ;
  +          break;
  +        default:
  +          break label_3;
  +        }
  +        switch (jj_nt.kind) {
  +        case COMMENT:
  +          comment(arc);
  +          break;
  +        case EXPAND:
  +          expand(arc);
  +          break;
  +        case ID:
  +          newPhrase(arc.phrases);
  +          break;
  +        default:
  +          jj_consume_token(-1);
  +          throw new ParseException();
  +        }
         }
  +    } finally {
  +      trace_return("optionals");
       }
     }
   
     final public void newPhrases(Map map) throws ParseException {
  -    label_4:
  -    while (true) {
  -      switch (jj_nt.kind) {
  -      case ID:
  -        ;
  -        break;
  -      default:
  -        break label_4;
  +    trace_call("newPhrases");
  +    try {
  +      label_4:
  +      while (true) {
  +        switch (jj_nt.kind) {
  +        case ID:
  +          ;
  +          break;
  +        default:
  +          break label_4;
  +        }
  +        newPhrase(map);
         }
  -      newPhrase(map);
  +    } finally {
  +      trace_return("newPhrases");
       }
     }
   
     final public void head(Archive arc) throws ParseException {
  +    trace_call("head");
  +    try {
       Version v;
  -    jj_consume_token(HEAD);
  -    switch (jj_nt.kind) {
  -    case NUM:
  -      v = version();
  +      jj_consume_token(HEAD);
  +      switch (jj_nt.kind) {
  +      case NUM:
  +        v = version();
                              arc.setHead(v);
  -      break;
  -    default:
  -      ;
  +        break;
  +      default:
  +        ;
  +      }
  +      jj_consume_token(29);
  +    } finally {
  +      trace_return("head");
       }
  -    jj_consume_token(29);
     }
   
     final public void branch(Archive arc) throws ParseException {
  +    trace_call("branch");
  +    try {
     Version v;
  -    jj_consume_token(BRANCH);
  -    switch (jj_nt.kind) {
  -    case NUM:
  -      v = version();
  +      jj_consume_token(BRANCH);
  +      switch (jj_nt.kind) {
  +      case NUM:
  +        v = version();
                                arc.setBranch(v);
  -      break;
  -    default:
  -      ;
  +        break;
  +      default:
  +        ;
  +      }
  +      jj_consume_token(29);
  +    } finally {
  +      trace_return("branch");
       }
  -    jj_consume_token(29);
     }
   
     final public void access(Archive arc) throws ParseException {
  +    trace_call("access");
  +    try {
       String name;
  -    jj_consume_token(ACCESS);
  -    label_5:
  -    while (true) {
  -      switch (jj_nt.kind) {
  -      case ID:
  -        ;
  -        break;
  -      default:
  -        break label_5;
  -      }
  -      name = id();
  +      jj_consume_token(ACCESS);
  +      label_5:
  +      while (true) {
  +        switch (jj_nt.kind) {
  +        case ID:
  +          ;
  +          break;
  +        default:
  +          break label_5;
  +        }
  +        name = id();
                              arc.addUser(name);
  +      }
  +      jj_consume_token(29);
  +    } finally {
  +      trace_return("access");
       }
  -    jj_consume_token(29);
     }
   
     final public void symbols(Archive arc) throws ParseException {
  +    trace_call("symbols");
  +    try {
       String  s;
       Version v;
  -    jj_consume_token(SYMBOLS);
  -    label_6:
  -    while (true) {
  -      switch (jj_nt.kind) {
  -      case ID:
  -      case SYM:
  -        ;
  -        break;
  -      default:
  -        break label_6;
  -      }
  -      s = sym();
  -      jj_consume_token(30);
  -      v = version();
  +      jj_consume_token(SYMBOLS);
  +      label_6:
  +      while (true) {
  +        switch (jj_nt.kind) {
  +        case ID:
  +        case SYM:
  +          ;
  +          break;
  +        default:
  +          break label_6;
  +        }
  +        s = sym();
  +        jj_consume_token(30);
  +        v = version();
                                               arc.addSymbol(s, v);
  +      }
  +      jj_consume_token(29);
  +    } finally {
  +      trace_return("symbols");
       }
  -    jj_consume_token(29);
     }
   
     final public void locks(Archive arc) throws ParseException {
  +    trace_call("locks");
  +    try {
       String  name;
       Version v;
  -    jj_consume_token(LOCKS);
  -    label_7:
  -    while (true) {
  +      jj_consume_token(LOCKS);
  +      label_7:
  +      while (true) {
  +        switch (jj_nt.kind) {
  +        case ID:
  +          ;
  +          break;
  +        default:
  +          break label_7;
  +        }
  +        name = id();
  +        jj_consume_token(30);
  +        v = version();
  +                                            arc.addLock(name, v);
  +      }
  +      jj_consume_token(29);
         switch (jj_nt.kind) {
  -      case ID:
  -        ;
  +      case STRICT:
  +        jj_consume_token(STRICT);
  +        jj_consume_token(29);
  +               arc.setStrictLocking(true);
           break;
         default:
  -        break label_7;
  +        ;
         }
  -      name = id();
  -      jj_consume_token(30);
  -      v = version();
  -                                            arc.addLock(name, v);
  -    }
  -    jj_consume_token(29);
  -    switch (jj_nt.kind) {
  -    case STRICT:
  -      jj_consume_token(STRICT);
  -      jj_consume_token(29);
  -               arc.setStrictLocking(true);
  -      break;
  -    default:
  -      ;
  +    } finally {
  +      trace_return("locks");
       }
     }
   
     final public void comment(Archive arc) throws ParseException {
  +    trace_call("comment");
  +    try {
     String s;
  -    jj_consume_token(COMMENT);
  -    switch (jj_nt.kind) {
  -    case STRING:
  -      s = string();
  +      jj_consume_token(COMMENT);
  +      switch (jj_nt.kind) {
  +      case STRING:
  +        s = string();
                               arc.setComment(s);
  -      break;
  -    default:
  -      ;
  +        break;
  +      default:
  +        ;
  +      }
  +      jj_consume_token(29);
  +    } finally {
  +      trace_return("comment");
       }
  -    jj_consume_token(29);
     }
   
     final public void expand(Archive arc) throws ParseException {
  +    trace_call("expand");
  +    try {
    String s;
  -    jj_consume_token(EXPAND);
  -    switch (jj_nt.kind) {
  -    case STRING:
  -      s = string();
  +      jj_consume_token(EXPAND);
  +      switch (jj_nt.kind) {
  +      case STRING:
  +        s = string();
                              arc.setExpand(s);
  -      break;
  -    default:
  -      ;
  +        break;
  +      default:
  +        ;
  +      }
  +      jj_consume_token(29);
  +    } finally {
  +      trace_return("expand");
       }
  -    jj_consume_token(29);
     }
   
     final public void newPhrase(Map map) throws ParseException {
  +    trace_call("newPhrase");
  +    try {
     String key;
     String value;
     StringBuffer values = new StringBuffer();
  -    key = id();
  -    label_8:
  -    while (true) {
  -      switch (jj_nt.kind) {
  -      case ID:
  -      case STRING:
  -      case NUM:
  -        ;
  -        break;
  -      default:
  -        break label_8;
  -      }
  -      value = word();
  +      key = id();
  +      label_8:
  +      while (true) {
  +        switch (jj_nt.kind) {
  +        case ID:
  +        case STRING:
  +        case NUM:
  +          ;
  +          break;
  +        default:
  +          break label_8;
  +        }
  +        value = word();
                        values.append(" " + value);
  -    }
  -    jj_consume_token(29);
  +      }
  +      jj_consume_token(29);
       if (map != null) map.put(key, values.toString());
  +    } finally {
  +      trace_return("newPhrase");
  +    }
     }
   
     final public String word() throws ParseException {
  +    trace_call("word");
  +    try {
     String result;
  -    if (jj_2_1(2)) {
  -      result = pair();
  -    } else {
  -      switch (jj_nt.kind) {
  -      case ID:
  -      case STRING:
  -      case NUM:
  -        result = simpleWord();
  -        break;
  -      default:
  -        jj_consume_token(-1);
  -        throw new ParseException();
  +      if (jj_2_1(2)) {
  +        result = pair();
  +      } else {
  +        switch (jj_nt.kind) {
  +        case ID:
  +        case STRING:
  +        case NUM:
  +          result = simpleWord();
  +          break;
  +        default:
  +          jj_consume_token(-1);
  +          throw new ParseException();
  +        }
         }
  -    }
       {if (true) return result;}
       throw new Error("Missing return statement in function");
  +    } finally {
  +      trace_return("word");
  +    }
     }
   
     final public String simpleWord() throws ParseException {
  +    trace_call("simpleWord");
  +    try {
       String  result;
       Version v;
  -    switch (jj_nt.kind) {
  -    case ID:
  -      result = id();
  -      break;
  -    case NUM:
  -      v = version();
  +      switch (jj_nt.kind) {
  +      case ID:
  +        result = id();
  +        break;
  +      case NUM:
  +        v = version();
                    result = v.toString();
  -      break;
  -    case STRING:
  -      result = string();
  -      break;
  -    default:
  -      jj_consume_token(-1);
  -      throw new ParseException();
  -    }
  +        break;
  +      case STRING:
  +        result = string();
  +        break;
  +      default:
  +        jj_consume_token(-1);
  +        throw new ParseException();
  +      }
      {if (true) return result;}
       throw new Error("Missing return statement in function");
  +    } finally {
  +      trace_return("simpleWord");
  +    }
     }
   
     final public String pair() throws ParseException {
  +    trace_call("pair");
  +    try {
       String left;
       String right;
  -    left = simpleWord();
  -    jj_consume_token(30);
  -    right = simpleWord();
  +      left = simpleWord();
  +      jj_consume_token(30);
  +      right = simpleWord();
         {if (true) return left + ":" + right;}
       throw new Error("Missing return statement in function");
  +    } finally {
  +      trace_return("pair");
  +    }
     }
   
     final public void desc(Archive arc) throws ParseException {
  +    trace_call("desc");
  +    try {
     String s;
  -    jj_consume_token(DESC);
  -    s = string();
  +      jj_consume_token(DESC);
  +      s = string();
                             arc.setDesc(s);
  +    } finally {
  +      trace_return("desc");
  +    }
     }
   
     final public void delta(Archive arc) throws ParseException {
  +    trace_call("delta");
  +    try {
       Version   v;
       Node      node;
       int[]     d;
       String    s;
  -    v = version();
  +      v = version();
          node = arc.newNode(v);
  -    jj_consume_token(DATE);
  -    d = date();
  +      jj_consume_token(DATE);
  +      d = date();
                                 node.setDate(d);
  -    jj_consume_token(29);
  -    jj_consume_token(AUTHOR);
  -    s = id();
  -                              node.setAuthor(s);
  -    jj_consume_token(29);
  -    jj_consume_token(STATE);
  -    switch (jj_nt.kind) {
  -    case ID:
  +      jj_consume_token(29);
  +      jj_consume_token(AUTHOR);
         s = id();
  -                            node.setState(s);
  -      break;
  -    default:
  -      ;
  -    }
  -    jj_consume_token(29);
  -    jj_consume_token(BRANCHES);
  -    label_9:
  -    while (true) {
  +                              node.setAuthor(s);
  +      jj_consume_token(29);
  +      jj_consume_token(STATE);
         switch (jj_nt.kind) {
  -      case NUM:
  -        ;
  +      case ID:
  +        s = id();
  +                            node.setState(s);
           break;
         default:
  -        break label_9;
  +        ;
         }
  -      v = version();
  +      jj_consume_token(29);
  +      jj_consume_token(BRANCHES);
  +      label_9:
  +      while (true) {
  +        switch (jj_nt.kind) {
  +        case NUM:
  +          ;
  +          break;
  +        default:
  +          break label_9;
  +        }
  +        v = version();
                                    node.addBranch(arc.newBranchNode(v));
  -    }
  -    jj_consume_token(29);
  -    jj_consume_token(NEXT);
  -    switch (jj_nt.kind) {
  -    case NUM:
  -      v = version();
  +      }
  +      jj_consume_token(29);
  +      jj_consume_token(NEXT);
  +      switch (jj_nt.kind) {
  +      case NUM:
  +        v = version();
                                    node.setRCSNext(arc.newNode(v));
  -      break;
  -    default:
  -      ;
  +        break;
  +      default:
  +        ;
  +      }
  +      jj_consume_token(29);
  +      newPhrases(node.phrases);
  +    } finally {
  +      trace_return("delta");
       }
  -    jj_consume_token(29);
  -    newPhrases(node.phrases);
     }
   
     final public void text(Archive arc) throws ParseException {
  +    trace_call("text");
  +    try {
     Version v;
     Node node;
     String log;
     String txt;
  -    v = version();
  +      v = version();
         node = arc.getNode(v);
  -    jj_consume_token(LOG);
  -    log = string();
  +      jj_consume_token(LOG);
  +      log = string();
         node.setLog(log);
  -    newPhrases(node.phrases);
  -    jj_consume_token(TEXT);
  -    txt = string();
  +      newPhrases(node.phrases);
  +      jj_consume_token(TEXT);
  +      txt = string();
          node.setText(txt);
  +    } finally {
  +      trace_return("text");
  +    }
     }
   
     final public String id() throws ParseException {
  +    trace_call("id");
  +    try {
                       Token t;
  -    t = jj_consume_token(ID);
  +      t = jj_consume_token(ID);
                                                {if (true) return t.image;}
       throw new Error("Missing return statement in function");
  +    } finally {
  +      trace_return("id");
  +    }
     }
   
     final public String sym() throws ParseException {
  +    trace_call("sym");
  +    try {
     Token t;
  -    switch (jj_nt.kind) {
  -    case SYM:
  -      t = jj_consume_token(SYM);
  -      break;
  -    case ID:
  -      t = jj_consume_token(ID);
  -      break;
  -    default:
  -      jj_consume_token(-1);
  -      throw new ParseException();
  -    }
  +      switch (jj_nt.kind) {
  +      case SYM:
  +        t = jj_consume_token(SYM);
  +        break;
  +      case ID:
  +        t = jj_consume_token(ID);
  +        break;
  +      default:
  +        jj_consume_token(-1);
  +        throw new ParseException();
  +      }
       {if (true) return t.image;}
       throw new Error("Missing return statement in function");
  +    } finally {
  +      trace_return("sym");
  +    }
     }
   
     final public Version version() throws ParseException {
  +    trace_call("version");
  +    try {
     Version v;
     int   n, r;
  -    n = num();
  -    v = new Version(n);
  -    label_10:
  -    while (true) {
  -      switch (jj_nt.kind) {
  -      case 31:
  -        ;
  -        break;
  -      default:
  -        break label_10;
  -      }
  -      jj_consume_token(31);
         n = num();
  +    v = new Version(n);
  +      label_10:
  +      while (true) {
  +        switch (jj_nt.kind) {
  +        case 31:
  +          ;
  +          break;
  +        default:
  +          break label_10;
  +        }
  +        jj_consume_token(31);
  +        n = num();
                       v.__addBranch(n);
  -    }
  +      }
       {if (true) return v;}
       throw new Error("Missing return statement in function");
  +    } finally {
  +      trace_return("version");
  +    }
     }
   
     final public int[] date() throws ParseException {
  +    trace_call("date");
  +    try {
     int[] n = new int[6];
  -    n[0] = num();
  -    jj_consume_token(31);
  -    n[1] = num();
  -    jj_consume_token(31);
  -    n[2] = num();
  -    jj_consume_token(31);
  -    n[3] = num();
  -    jj_consume_token(31);
  -    n[4] = num();
  -    jj_consume_token(31);
  -    n[5] = num();
  +      n[0] = num();
  +      jj_consume_token(31);
  +      n[1] = num();
  +      jj_consume_token(31);
  +      n[2] = num();
  +      jj_consume_token(31);
  +      n[3] = num();
  +      jj_consume_token(31);
  +      n[4] = num();
  +      jj_consume_token(31);
  +      n[5] = num();
      {if (true) return n;}
       throw new Error("Missing return statement in function");
  +    } finally {
  +      trace_return("date");
  +    }
     }
   
     final public int num() throws ParseException {
  +    trace_call("num");
  +    try {
                 Token t;
  -    t = jj_consume_token(NUM);
  +      t = jj_consume_token(NUM);
                                         {if (true) return Integer.parseInt(t.image);}
       throw new Error("Missing return statement in function");
  +    } finally {
  +      trace_return("num");
  +    }
     }
   
     final public String string() throws ParseException {
  +    trace_call("string");
  +    try {
    Token t;
  -    t = jj_consume_token(STRING);
  +      t = jj_consume_token(STRING);
                    {if (true) return Archive.unquoteString(t.image);}
       throw new Error("Missing return statement in function");
  +    } finally {
  +      trace_return("string");
  +    }
     }
   
     final private boolean jj_2_1(int xla) {
  @@ -655,6 +775,7 @@
       if ((token = jj_nt).next != null) jj_nt = jj_nt.next;
       else jj_nt = jj_nt.next = token_source.getNextToken();
       if (token.kind == kind) {
  +      trace_token(token, "");
         return token;
       }
       jj_nt = token;
  @@ -679,6 +800,7 @@
     final public Token getNextToken() {
       if ((token = jj_nt).next != null) jj_nt = jj_nt.next;
       else jj_nt = jj_nt.next = token_source.getNextToken();
  +      trace_token(token, " (in getNextToken)");
       return token;
     }
   
  @@ -698,10 +820,53 @@
       return new ParseException("Parse error at line " + line + ", column " + column 
+ ".  Encountered: " + mess);
     }
   
  +  private int trace_indent = 0;
  +  private boolean trace_enabled = true;
  +
     final public void enable_tracing() {
  +    trace_enabled = true;
     }
   
     final public void disable_tracing() {
  +    trace_enabled = false;
  +  }
  +
  +  final private void trace_call(String s) {
  +    if (trace_enabled) {
  +      for (int i = 0; i < trace_indent; i++) { System.out.print(" "); }
  +      System.out.println("Call:   " + s);
  +    }
  +    trace_indent = trace_indent + 2;
  +  }
  +
  +  final private void trace_return(String s) {
  +    trace_indent = trace_indent - 2;
  +    if (trace_enabled) {
  +      for (int i = 0; i < trace_indent; i++) { System.out.print(" "); }
  +      System.out.println("Return: " + s);
  +    }
  +  }
  +
  +  final private void trace_token(Token t, String where) {
  +    if (trace_enabled) {
  +      for (int i = 0; i < trace_indent; i++) { System.out.print(" "); }
  +      System.out.print("Consumed token: <" + tokenImage[t.kind]);
  +      if (t.kind != 0 && !tokenImage[t.kind].equals("\"" + t.image + "\"")) {
  +        System.out.print(": \"" + t.image + "\"");
  +      }
  +      System.out.println(">" + where);
  +    }
  +  }
  +
  +  final private void trace_scan(Token t1, int t2) {
  +    if (trace_enabled) {
  +      for (int i = 0; i < trace_indent; i++) { System.out.print(" "); }
  +      System.out.print("Visited token: <" + tokenImage[t1.kind]);
  +      if (t1.kind != 0 && !tokenImage[t1.kind].equals("\"" + t1.image + "\"")) {
  +        System.out.print(": \"" + t1.image + "\"");
  +      }
  +      System.out.println(">; Expected token: <" + tokenImage[t2] + ">");
  +    }
     }
   
   }
  
  
  
  1.5       +166 -0    
jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcs/ArchiveParserTokenManager.java
  
  Index: ArchiveParserTokenManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcs/ArchiveParserTokenManager.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ArchiveParserTokenManager.java    3 Mar 2002 22:14:20 -0000       1.4
  +++ ArchiveParserTokenManager.java    4 Mar 2002 04:53:32 -0000       1.5
  @@ -11,6 +11,7 @@
     public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
   private final int jjStopStringLiteralDfa_0(int pos, long active0)
   {
  +      debugStream.println("   No more string literal token matches are possible.");
      switch (pos)
      {
         case 0:
  @@ -93,14 +94,19 @@
   {
      jjmatchedKind = kind;
      jjmatchedPos = pos;
  +   debugStream.println("   No more string literal token matches are possible.");
  +   debugStream.println("   Currently matched the first " + (jjmatchedPos + 1) + " 
characters as a " + tokenImage[jjmatchedKind] + " token.");
      return pos + 1;
   }
   private final int jjStartNfaWithStates_0(int pos, int kind, int state)
   {
      jjmatchedKind = kind;
      jjmatchedPos = pos;
  +   debugStream.println("   No more string literal token matches are possible.");
  +   debugStream.println("   Currently matched the first " + (jjmatchedPos + 1) + " 
characters as a " + tokenImage[jjmatchedKind] + " token.");
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) { return pos + 1; }
  +   debugStream.println("<" + lexStateNames[curLexState] + ">" + "Current character 
: " + TokenMgrError.addEscapes(String.valueOf(curChar)) + " (" + (int)curChar + ")");
      return jjMoveNfa_0(state, pos + 1);
   }
   private final int jjMoveStringLiteralDfa0_0()
  @@ -134,16 +140,25 @@
         case 116:
            return jjMoveStringLiteralDfa1_0(0x200000L);
         default :
  +      debugStream.println("   No string literal matches possible.");
            return jjMoveNfa_0(0, 0);
      }
   }
   private final int jjMoveStringLiteralDfa1_0(long active0)
   {
  +   if (jjmatchedKind != 0 && jjmatchedKind != 0x7fffffff)
  +      debugStream.println("   Currently matched the first " + (jjmatchedPos + 1) + 
" characters as a " + tokenImage[jjmatchedKind] + " token.");
  +   debugStream.println("   Possible string literal matches : { "
  + + 
  +         jjKindsForBitVector(0, active0)  + " } ");
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
         jjStopStringLiteralDfa_0(0, active0);
  +      if (jjmatchedKind != 0 && jjmatchedKind != 0x7fffffff)
  +         debugStream.println("   Currently matched the first " + (jjmatchedPos + 1) 
+ " characters as a " + tokenImage[jjmatchedKind] + " token.");
         return 1;
      }
  +   debugStream.println("<" + lexStateNames[curLexState] + ">" + "Current character 
: " + TokenMgrError.addEscapes(String.valueOf(curChar)) + " (" + (int)curChar + ")");
      switch(curChar)
      {
         case 97:
  @@ -165,6 +180,7 @@
         case 121:
            return jjMoveStringLiteralDfa2_0(active0, 0x100000L);
         default :
  +      debugStream.println("   No string literal matches possible.");
            break;
      }
      return jjStartNfa_0(0, active0);
  @@ -173,11 +189,19 @@
   {
      if (((active0 &= old0)) == 0L)
         return jjStartNfa_0(0, old0); 
  +   if (jjmatchedKind != 0 && jjmatchedKind != 0x7fffffff)
  +      debugStream.println("   Currently matched the first " + (jjmatchedPos + 1) + 
" characters as a " + tokenImage[jjmatchedKind] + " token.");
  +   debugStream.println("   Possible string literal matches : { "
  + + 
  +         jjKindsForBitVector(0, active0)  + " } ");
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
         jjStopStringLiteralDfa_0(1, active0);
  +      if (jjmatchedKind != 0 && jjmatchedKind != 0x7fffffff)
  +         debugStream.println("   Currently matched the first " + (jjmatchedPos + 1) 
+ " characters as a " + tokenImage[jjmatchedKind] + " token.");
         return 2;
      }
  +   debugStream.println("<" + lexStateNames[curLexState] + ">" + "Current character 
: " + TokenMgrError.addEscapes(String.valueOf(curChar)) + " (" + (int)curChar + ")");
      switch(curChar)
      {
         case 97:
  @@ -201,6 +225,7 @@
         case 120:
            return jjMoveStringLiteralDfa3_0(active0, 0x220000L);
         default :
  +      debugStream.println("   No string literal matches possible.");
            break;
      }
      return jjStartNfa_0(1, active0);
  @@ -209,11 +234,19 @@
   {
      if (((active0 &= old0)) == 0L)
         return jjStartNfa_0(1, old0); 
  +   if (jjmatchedKind != 0 && jjmatchedKind != 0x7fffffff)
  +      debugStream.println("   Currently matched the first " + (jjmatchedPos + 1) + 
" characters as a " + tokenImage[jjmatchedKind] + " token.");
  +   debugStream.println("   Possible string literal matches : { "
  + + 
  +         jjKindsForBitVector(0, active0)  + " } ");
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
         jjStopStringLiteralDfa_0(2, active0);
  +      if (jjmatchedKind != 0 && jjmatchedKind != 0x7fffffff)
  +         debugStream.println("   Currently matched the first " + (jjmatchedPos + 1) 
+ " characters as a " + tokenImage[jjmatchedKind] + " token.");
         return 3;
      }
  +   debugStream.println("<" + lexStateNames[curLexState] + ">" + "Current character 
: " + TokenMgrError.addEscapes(String.valueOf(curChar)) + " (" + (int)curChar + ")");
      switch(curChar)
      {
         case 97:
  @@ -249,6 +282,7 @@
               return jjStartNfaWithStates_0(3, 21, 14);
            return jjMoveStringLiteralDfa4_0(active0, 0x40000L);
         default :
  +      debugStream.println("   No string literal matches possible.");
            break;
      }
      return jjStartNfa_0(2, active0);
  @@ -257,11 +291,19 @@
   {
      if (((active0 &= old0)) == 0L)
         return jjStartNfa_0(2, old0); 
  +   if (jjmatchedKind != 0 && jjmatchedKind != 0x7fffffff)
  +      debugStream.println("   Currently matched the first " + (jjmatchedPos + 1) + 
" characters as a " + tokenImage[jjmatchedKind] + " token.");
  +   debugStream.println("   Possible string literal matches : { "
  + + 
  +         jjKindsForBitVector(0, active0)  + " } ");
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
         jjStopStringLiteralDfa_0(3, active0);
  +      if (jjmatchedKind != 0 && jjmatchedKind != 0x7fffffff)
  +         debugStream.println("   Currently matched the first " + (jjmatchedPos + 1) 
+ " characters as a " + tokenImage[jjmatchedKind] + " token.");
         return 4;
      }
  +   debugStream.println("<" + lexStateNames[curLexState] + ">" + "Current character 
: " + TokenMgrError.addEscapes(String.valueOf(curChar)) + " (" + (int)curChar + ")");
      switch(curChar)
      {
         case 99:
  @@ -279,6 +321,7 @@
               return jjStartNfaWithStates_0(4, 15, 14);
            return jjMoveStringLiteralDfa5_0(active0, 0x40L);
         default :
  +      debugStream.println("   No string literal matches possible.");
            break;
      }
      return jjStartNfa_0(3, active0);
  @@ -287,11 +330,19 @@
   {
      if (((active0 &= old0)) == 0L)
         return jjStartNfa_0(3, old0); 
  +   if (jjmatchedKind != 0 && jjmatchedKind != 0x7fffffff)
  +      debugStream.println("   Currently matched the first " + (jjmatchedPos + 1) + 
" characters as a " + tokenImage[jjmatchedKind] + " token.");
  +   debugStream.println("   Possible string literal matches : { "
  + + 
  +         jjKindsForBitVector(0, active0)  + " } ");
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
         jjStopStringLiteralDfa_0(4, active0);
  +      if (jjmatchedKind != 0 && jjmatchedKind != 0x7fffffff)
  +         debugStream.println("   Currently matched the first " + (jjmatchedPos + 1) 
+ " characters as a " + tokenImage[jjmatchedKind] + " token.");
         return 5;
      }
  +   debugStream.println("<" + lexStateNames[curLexState] + ">" + "Current character 
: " + TokenMgrError.addEscapes(String.valueOf(curChar)) + " (" + (int)curChar + ")");
      switch(curChar)
      {
         case 100:
  @@ -322,6 +373,7 @@
               return jjStartNfaWithStates_0(5, 19, 14);
            break;
         default :
  +      debugStream.println("   No string literal matches possible.");
            break;
      }
      return jjStartNfa_0(4, active0);
  @@ -330,11 +382,19 @@
   {
      if (((active0 &= old0)) == 0L)
         return jjStartNfa_0(4, old0); 
  +   if (jjmatchedKind != 0 && jjmatchedKind != 0x7fffffff)
  +      debugStream.println("   Currently matched the first " + (jjmatchedPos + 1) + 
" characters as a " + tokenImage[jjmatchedKind] + " token.");
  +   debugStream.println("   Possible string literal matches : { "
  + + 
  +         jjKindsForBitVector(0, active0)  + " } ");
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
         jjStopStringLiteralDfa_0(5, active0);
  +      if (jjmatchedKind != 0 && jjmatchedKind != 0x7fffffff)
  +         debugStream.println("   Currently matched the first " + (jjmatchedPos + 1) 
+ " characters as a " + tokenImage[jjmatchedKind] + " token.");
         return 6;
      }
  +   debugStream.println("<" + lexStateNames[curLexState] + ">" + "Current character 
: " + TokenMgrError.addEscapes(String.valueOf(curChar)) + " (" + (int)curChar + ")");
      switch(curChar)
      {
         case 101:
  @@ -348,6 +408,7 @@
               return jjStartNfaWithStates_0(6, 10, 14);
            break;
         default :
  +      debugStream.println("   No string literal matches possible.");
            break;
      }
      return jjStartNfa_0(5, active0);
  @@ -356,11 +417,19 @@
   {
      if (((active0 &= old0)) == 0L)
         return jjStartNfa_0(5, old0); 
  +   if (jjmatchedKind != 0 && jjmatchedKind != 0x7fffffff)
  +      debugStream.println("   Currently matched the first " + (jjmatchedPos + 1) + 
" characters as a " + tokenImage[jjmatchedKind] + " token.");
  +   debugStream.println("   Possible string literal matches : { "
  + + 
  +         jjKindsForBitVector(0, active0)  + " } ");
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
         jjStopStringLiteralDfa_0(6, active0);
  +      if (jjmatchedKind != 0 && jjmatchedKind != 0x7fffffff)
  +         debugStream.println("   Currently matched the first " + (jjmatchedPos + 1) 
+ " characters as a " + tokenImage[jjmatchedKind] + " token.");
         return 7;
      }
  +   debugStream.println("<" + lexStateNames[curLexState] + ">" + "Current character 
: " + TokenMgrError.addEscapes(String.valueOf(curChar)) + " (" + (int)curChar + ")");
      switch(curChar)
      {
         case 115:
  @@ -368,6 +437,7 @@
               return jjStartNfaWithStates_0(7, 9, 14);
            break;
         default :
  +      debugStream.println("   No string literal matches possible.");
            break;
      }
      return jjStartNfa_0(6, active0);
  @@ -433,6 +503,8 @@
      jjnewStateCnt = 14;
      int i = 1;
      jjstateSet[0] = startState;
  +      debugStream.println("   Starting NFA to match one of : " + 
jjKindsForStateVector(curLexState, jjstateSet, 0, 1));
  +      debugStream.println("<" + lexStateNames[curLexState] + ">" + "Current 
character : " + TokenMgrError.addEscapes(String.valueOf(curChar)) + " (" + 
(int)curChar + ")");
      int j, kind = 0x7fffffff;
      for (;;)
      {
  @@ -682,10 +754,14 @@
            kind = 0x7fffffff;
         }
         ++curPos;
  +      if (jjmatchedKind != 0 && jjmatchedKind != 0x7fffffff)
  +         debugStream.println("   Currently matched the first " + (jjmatchedPos + 1) 
+ " characters as a " + tokenImage[jjmatchedKind] + " token.");
         if ((i = jjnewStateCnt) == (startsAt = 14 - (jjnewStateCnt = startsAt)))
            return curPos;
  +      debugStream.println("   Possible kinds of longer matches : " + 
jjKindsForStateVector(curLexState, jjstateSet, startsAt, i));
         try { curChar = input_stream.readChar(); }
         catch(java.io.IOException e) { return curPos; }
  +      debugStream.println("<" + lexStateNames[curLexState] + ">" + "Current 
character : " + TokenMgrError.addEscapes(String.valueOf(curChar)) + " (" + 
(int)curChar + ")");
      }
   }
   private final int jjMoveStringLiteralDfa0_1()
  @@ -693,6 +769,7 @@
      switch(curChar)
      {
         default :
  +      debugStream.println("   No string literal matches possible.");
            return 1;
      }
   }
  @@ -830,6 +907,7 @@
      }     
      catch(java.io.IOException e)
      {        
  +      debugStream.println("Returning the <EOF> token.");
         jjmatchedKind = 0;
         matchedToken = jjFillToken();
         return matchedToken;
  @@ -840,28 +918,40 @@
        case 0:
          try { input_stream.backup(0);
             while (curChar <= 32 && (0x100003600L & (1L << curChar)) != 0L)
  +       {
  +      debugStream.println("<" + lexStateNames[curLexState] + ">" + "Skipping 
character : " + TokenMgrError.addEscapes(String.valueOf(curChar)) + " (" + 
(int)curChar + ")");
                curChar = input_stream.BeginToken();
          }
  +       }
          catch (java.io.IOException e1) { continue EOFLoop; }
          jjmatchedKind = 0x7fffffff;
          jjmatchedPos = 0;
  +      debugStream.println("<" + lexStateNames[curLexState] + ">" + "Current 
character : " + TokenMgrError.addEscapes(String.valueOf(curChar)) + " (" + 
(int)curChar + ")");
          curPos = jjMoveStringLiteralDfa0_0();
          break;
        case 1:
          try { input_stream.backup(0);
             while (curChar <= 32 && (0x100003600L & (1L << curChar)) != 0L)
  +       {
  +      debugStream.println("<" + lexStateNames[curLexState] + ">" + "Skipping 
character : " + TokenMgrError.addEscapes(String.valueOf(curChar)) + " (" + 
(int)curChar + ")");
                curChar = input_stream.BeginToken();
          }
  +       }
          catch (java.io.IOException e1) { continue EOFLoop; }
          jjmatchedKind = 0x7fffffff;
          jjmatchedPos = 0;
  +      debugStream.println("<" + lexStateNames[curLexState] + ">" + "Current 
character : " + TokenMgrError.addEscapes(String.valueOf(curChar)) + " (" + 
(int)curChar + ")");
          curPos = jjMoveStringLiteralDfa0_1();
          break;
      }
        if (jjmatchedKind != 0x7fffffff)
        {
           if (jjmatchedPos + 1 < curPos)
  +        {
  +           debugStream.println("   Putting back " + (curPos - jjmatchedPos - 1) + " 
characters into the input stream.");
              input_stream.backup(curPos - jjmatchedPos - 1);
  +        }
  +    debugStream.println("****** FOUND A " + tokenImage[jjmatchedKind] + " MATCH (" 
+ TokenMgrError.addEscapes(new String(input_stream.GetSuffix(jjmatchedPos + 1))) + ") 
******\n");
           if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
           {
              matchedToken = jjFillToken();
  @@ -898,5 +988,81 @@
        throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, 
error_after, curChar, TokenMgrError.LEXICAL_ERROR);
     }
   }
  +
  +protected static final int[][][] statesForState = {
  + {
  +   { 0, 5, 13, },
  +   { 1 }, 
  +   { 2 }, 
  +   { 3 }, 
  +   { 4 }, 
  +   { 0, 5, 13, },
  +   { 6 }, 
  +   { 7, 8, 10, 11, },
  +   { 7, 8, 10, 11, },
  +   { 9 }, 
  +   { 7, 8, 10, 11, },
  +   { 7, 8, 10, 11, },
  +   { 12 }, 
  +   { 0, 5, 13, },
  +   { 7, 8, 10, 11, },
  + },
  + null, 
  +
  +};
  +protected static final int[][] kindForState = {
  +{ 25, 25, 25, 25, 25, 22, 22, 22, 22, 23, 23, 23, 28, 22}, 
  +null
  +
  +};
  +   int kindCnt = 0;
  +  protected  final String jjKindsForBitVector(int i, long vec)
  +  {
  +    String retVal = "";
  +    if (i == 0)
  +       kindCnt = 0;
  +    for (int j = 0; j < 64; j++)
  +    {
  +       if ((vec & (1L << j)) != 0L)
  +       {
  +          if (kindCnt++ > 0)
  +             retVal += ", ";
  +          if (kindCnt % 5 == 0)
  +             retVal += "\n     ";
  +          retVal += tokenImage[i * 64 + j];
  +       }
  +    }
  +    return retVal;
  +  }
  +
  +  protected  final String jjKindsForStateVector(int lexState, int[] vec, int start, 
int end)
  +  {
  +    boolean[] kindDone = new boolean[32];
  +    String retVal = "";
  +    int cnt = 0;
  +    for (int i = start; i < end; i++)
  +    {
  +     if (vec[i] == -1)
  +       continue;
  +     int[] stateSet = statesForState[curLexState][vec[i]];
  +     for (int j = 0; j < stateSet.length; j++)
  +     {
  +       int state = stateSet[j];
  +       if (!kindDone[kindForState[lexState][state]])
  +       {
  +          kindDone[kindForState[lexState][state]] = true;
  +          if (cnt++ > 0)
  +             retVal += ", ";
  +          if (cnt % 5 == 0)
  +             retVal += "\n     ";
  +          retVal += tokenImage[kindForState[lexState][state]];
  +       }
  +     }
  +    }
  +    if (cnt == 0)
  +       return "{  }";
  +    else
  +       return "{ " + retVal + " }";
  +  }
   
   }
  
  
  
  1.1                  
jakarta-turbine-maven/src/java/org/apache/maven/jrcs/rcs/JavaCharStream.java
  
  Index: JavaCharStream.java
  ===================================================================
  /* Generated By:JavaCC: Do not edit this line. JavaCharStream.java Version 2.1 */
  package org.apache.maven.jrcs.rcs;
  
  /**
   * An implementation of interface CharStream, where the stream is assumed to
   * contain only ASCII characters (with java-like unicode escape processing).
   */
  
  public final class JavaCharStream
  {
    public static final boolean staticFlag = false;
    static final int hexval(char c) throws java.io.IOException {
      switch(c)
      {
         case '0' :
            return 0;
         case '1' :
            return 1;
         case '2' :
            return 2;
         case '3' :
            return 3;
         case '4' :
            return 4;
         case '5' :
            return 5;
         case '6' :
            return 6;
         case '7' :
            return 7;
         case '8' :
            return 8;
         case '9' :
            return 9;
  
         case 'a' :
         case 'A' :
            return 10;
         case 'b' :
         case 'B' :
            return 11;
         case 'c' :
         case 'C' :
            return 12;
         case 'd' :
         case 'D' :
            return 13;
         case 'e' :
         case 'E' :
            return 14;
         case 'f' :
         case 'F' :
            return 15;
      }
  
      throw new java.io.IOException(); // Should never come here
    }
  
    public int bufpos = -1;
    int bufsize;
    int available;
    int tokenBegin;
    private int bufline[];
    private int bufcolumn[];
  
    private int column = 0;
    private int line = 1;
  
    private boolean prevCharIsCR = false;
    private boolean prevCharIsLF = false;
  
    private java.io.Reader inputStream;
  
    private char[] nextCharBuf;
    private char[] buffer;
    private int maxNextCharInd = 0;
    private int nextCharInd = -1;
    private int inBuf = 0;
  
    private final 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;
  
             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;
  
             bufpos -= tokenBegin;
          }
       }
       catch (Throwable t)
       {
          throw new Error(t.getMessage());
       }
  
       available = (bufsize += 2048);
       tokenBegin = 0;
    }
  
    private final void FillBuff() throws java.io.IOException
    {
       int i;
       if (maxNextCharInd == 4096)
          maxNextCharInd = nextCharInd = 0;
  
       try {
          if ((i = inputStream.read(nextCharBuf, maxNextCharInd,
                                              4096 - maxNextCharInd)) == -1)
          {
             inputStream.close();
             throw new java.io.IOException();
          }
          else
             maxNextCharInd += i;
          return;
       }
       catch(java.io.IOException e) {
          if (bufpos != 0)
          {
             --bufpos;
             backup(0);
          }
          else
          {
             bufline[bufpos] = line;
             bufcolumn[bufpos] = column;
          }
          throw e;
       }
    }
  
    private final char ReadByte() throws java.io.IOException
    {
       if (++nextCharInd >= maxNextCharInd)
          FillBuff();
  
       return nextCharBuf[nextCharInd];
    }
  
    public final char BeginToken() throws java.io.IOException
    {     
       if (inBuf > 0)
       {
          --inBuf;
  
          if (++bufpos == bufsize)
             bufpos = 0;
  
          tokenBegin = bufpos;
          return buffer[bufpos];
       }
  
       tokenBegin = 0;
       bufpos = -1;
  
       return readChar();
    }     
  
    private final void AdjustBuffSize()
    {
       if (available == bufsize)
       {
          if (tokenBegin > 2048)
          {
             bufpos = 0;
             available = tokenBegin;
          }
          else
             ExpandBuff(false);
       }
       else if (available > tokenBegin)
          available = bufsize;
       else if ((tokenBegin - available) < 2048)
          ExpandBuff(true);
       else
          available = tokenBegin;
    }
  
    private final 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 final char readChar() throws java.io.IOException
    {
       if (inBuf > 0)
       {
          --inBuf;
  
          if (++bufpos == bufsize)
             bufpos = 0;
  
          return buffer[bufpos];
       }
  
       char c;
  
       if (++bufpos == available)
          AdjustBuffSize();
  
       if ((buffer[bufpos] = c = ReadByte()) == '\\')
       {
          UpdateLineColumn(c);
  
          int backSlashCnt = 1;
  
          for (;;) // Read all the backslashes
          {
             if (++bufpos == available)
                AdjustBuffSize();
  
             try
             {
                if ((buffer[bufpos] = c = ReadByte()) != '\\')
                {
                   UpdateLineColumn(c);
                   // found a non-backslash char.
                   if ((c == 'u') && ((backSlashCnt & 1) == 1))
                   {
                      if (--bufpos < 0)
                         bufpos = bufsize - 1;
  
                      break;
                   }
  
                   backup(backSlashCnt);
                   return '\\';
                }
             }
             catch(java.io.IOException e)
             {
                if (backSlashCnt > 1)
                   backup(backSlashCnt);
  
                return '\\';
             }
  
             UpdateLineColumn(c);
             backSlashCnt++;
          }
  
          // Here, we have seen an odd number of backslash's followed by a 'u'
          try
          {
             while ((c = ReadByte()) == 'u')
                ++column;
  
             buffer[bufpos] = c = (char)(hexval(c) << 12 |
                                         hexval(ReadByte()) << 8 |
                                         hexval(ReadByte()) << 4 |
                                         hexval(ReadByte()));
  
             column += 4;
          }
          catch(java.io.IOException e)
          {
             throw new Error("Invalid escape character at line " + line +
                                           " column " + column + ".");
          }
  
          if (backSlashCnt == 1)
             return c;
          else
          {
             backup(backSlashCnt - 1);
             return '\\';
          }
       }
       else
       {
          UpdateLineColumn(c);
          return (c);
       }
    }
  
    /**
     * @deprecated 
     * @see #getEndColumn
     */
  
    public final int getColumn() {
       return bufcolumn[bufpos];
    }
  
    /**
     * @deprecated 
     * @see #getEndLine
     */
  
    public final int getLine() {
       return bufline[bufpos];
    }
  
    public final int getEndColumn() {
       return bufcolumn[bufpos];
    }
  
    public final int getEndLine() {
       return bufline[bufpos];
    }
  
    public final int getBeginColumn() {
       return bufcolumn[tokenBegin];
    }
  
    public final int getBeginLine() {
       return bufline[tokenBegin];
    }
  
    public final void backup(int amount) {
  
      inBuf += amount;
      if ((bufpos -= amount) < 0)
         bufpos += bufsize;
    }
  
    public JavaCharStream(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];
      nextCharBuf = new char[4096];
    }
  
    public JavaCharStream(java.io.Reader dstream,
                                          int startline, int startcolumn)
    {
       this(dstream, startline, startcolumn, 4096);
    }
  
    public JavaCharStream(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];
        nextCharBuf = new char[4096];
      }
      prevCharIsLF = prevCharIsCR = false;
      tokenBegin = inBuf = maxNextCharInd = 0;
      nextCharInd = 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 JavaCharStream(java.io.InputStream dstream, int startline,
    int startcolumn, int buffersize)
    {
       this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
    }
  
    public JavaCharStream(java.io.InputStream dstream, int startline,
                                                             int startcolumn)
    {
       this(dstream, startline, startcolumn, 4096);
    }
  
    public JavaCharStream(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, int startline,
                                                             int startcolumn)
    {
       ReInit(dstream, startline, startcolumn, 4096);
    }
    public void ReInit(java.io.InputStream dstream)
    {
       ReInit(dstream, 1, 1, 4096);
    }
  
    public final 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 final 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()
    {
       nextCharBuf = null;
       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];
    }
  
  }
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to