You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ju...@apache.org on 2002/09/26 19:43:16 UTC

cvs commit: jakarta-commons-sandbox/jrcs/src/java/org/apache/commons/jrcs/rcs SimpleCharStream.java ArchiveParser.java ArchiveParser.jj ArchiveParserConstants.java ArchiveParserTokenManager.java ASCII_UCodeESC_CharStream.java JavaCharStream.java

juanco      2002/09/26 10:43:15

  Modified:    jrcs/src/java/org/apache/commons/jrcs/rcs ArchiveParser.java
                        ArchiveParser.jj ArchiveParserConstants.java
                        ArchiveParserTokenManager.java
  Added:       jrcs/src/java/org/apache/commons/jrcs/rcs
                        SimpleCharStream.java
  Removed:     jrcs/src/java/org/apache/commons/jrcs/rcs
                        ASCII_UCodeESC_CharStream.java JavaCharStream.java
  Log:
  Removed unicode features from parser as RCS files are plain ASCII.
  
  Fixed a LA bug in the grammar that somehow had gone undetected so far.
  
  Revision  Changes    Path
  1.3       +1034 -699 jakarta-commons-sandbox/jrcs/src/java/org/apache/commons/jrcs/rcs/ArchiveParser.java
  
  Index: ArchiveParser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/jrcs/src/java/org/apache/commons/jrcs/rcs/ArchiveParser.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ArchiveParser.java	14 Jun 2002 01:32:15 -0000	1.2
  +++ ArchiveParser.java	26 Sep 2002 17:43:15 -0000	1.3
  @@ -1,11 +1,11 @@
  -/* Generated By:JavaCC: Do not edit this line. ArchiveParser.java */
  -package org.apache.commons.jrcs.rcs;
  -
  -import java.util.Map;
  -import java.io.FileInputStream;
  -import java.io.FileNotFoundException;
  -import java.io.InputStream;
  -
  +/* Generated By:JavaCC: Do not edit this line. ArchiveParser.java */
  +package org.apache.commons.jrcs.rcs;
  +
  +import java.util.Map;
  +import java.io.FileInputStream;
  +import java.io.FileNotFoundException;
  +import java.io.InputStream;
  +
   /**
    * Parses an RCS/CVS style version control archive into an Archive.
    * This class is NOT thread safe.
  @@ -13,695 +13,1030 @@
    * @author <a href="mailto:juanco@suigeneris.org">Juanco Anez</a>
    * @version $Id$
    * @see Archive
  - */
  -class ArchiveParser implements ArchiveParserConstants {
  -
  -  static final String ident = "RCS ArchiveParser Parser $version$:";
  -
  -  public static void main(String args[]) {
  -    ArchiveParser parser;
  -    if (args.length == 0)
  -    {
  -      System.out.println(ident + "  Reading from standard input . . .");
  -      parser = new ArchiveParser(System.in);
  -    }
  -    else if (args.length == 1)
  -    {
  -      System.out.println(ident + "  Reading from file " + args[0] + " . . .");
  -      try
  -      {
  -        parser = new ArchiveParser(new FileInputStream(args[0]));
  -      }
  -      catch (java.io.FileNotFoundException e)
  -      {
  -        System.out.println(ident + "  File " + args[0] + " not found.");
  -        return;
  -      }
  -    }
  -    else
  -    {
  -      System.out.println(ident+"  Usage is one of:");
  -      System.out.println("         java ArchiveParser < inputfile");
  -      System.out.println("OR");
  -      System.out.println("         java ArchiveParser inputfile");
  -      return;
  -    }
  -    parser.parse();
  -  }
  -
  -  public static void load(Archive arc, InputStream input) throws ParseException
  -  {
  -      ArchiveParser parser = new ArchiveParser(input);
  -      parser.archive(arc);
  -  }
  -
  -  public static void load(Archive arc, String fname) throws FileNotFoundException, ParseException
  -  {
  -    load(arc, new FileInputStream(fname) );
  -  }
  -
  -  public void parse()
  -  {
  -    try
  -    {
  -      archive(null);
  -      System.out.println("RCS ArchiveParser Parser version 1.1:  RCS ArchiveParser parsed successfully.");
  -    }
  -    catch (ParseException e)
  -    {
  -      System.out.println("RCS ArchiveParser Parser version 1.1:  Encountered errors during parse.");
  -    }
  -  }
  -
  + */
  +class ArchiveParser implements ArchiveParserConstants {
  +
  +  static final String ident = "RCS ArchiveParser Parser $version$:";
  +
  +  public static void main(String args[]) {
  +    ArchiveParser parser;
  +    if (args.length == 0)
  +    {
  +      System.out.println(ident + "  Reading from standard input . . .");
  +      parser = new ArchiveParser(System.in);
  +    }
  +    else if (args.length == 1)
  +    {
  +      System.out.println(ident + "  Reading from file " + args[0] + " . . .");
  +      try
  +      {
  +        parser = new ArchiveParser(new FileInputStream(args[0]));
  +      }
  +      catch (java.io.FileNotFoundException e)
  +      {
  +        System.out.println(ident + "  File " + args[0] + " not found.");
  +        return;
  +      }
  +    }
  +    else
  +    {
  +      System.out.println(ident+"  Usage is one of:");
  +      System.out.println("         java ArchiveParser < inputfile");
  +      System.out.println("OR");
  +      System.out.println("         java ArchiveParser inputfile");
  +      return;
  +    }
  +    parser.parse();
  +  }
  +
  +  public static void load(Archive arc, InputStream input) throws ParseException
  +  {
  +      ArchiveParser parser = new ArchiveParser(input);
  +      parser.archive(arc);
  +  }
  +
  +  public static void load(Archive arc, String fname) throws FileNotFoundException, ParseException
  +  {
  +    load(arc, new FileInputStream(fname) );
  +  }
  +
  +  public void parse()
  +  {
  +    try
  +    {
  +      archive(null);
  +      System.out.println("RCS ArchiveParser Parser version 1.1:  RCS ArchiveParser parsed successfully.");
  +    }
  +    catch (ParseException e)
  +    {
  +      System.out.println("RCS ArchiveParser Parser version 1.1:  Encountered errors during parse.");
  +    }
  +  }
  +
   /**
   * 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);
  -    }
  -    desc(arc);
  -    label_2:
  -    while (true) {
  -      switch (jj_nt.kind) {
  -      case NUM:
  -        ;
  -        break;
  -      default:
  -        break label_2;
  -      }
  -      text(arc);
  -    }
  -    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();
  -      }
  -    }
  -  }
  -
  -  final public void newPhrases(Map map) throws ParseException {
  -    label_4:
  -    while (true) {
  -      switch (jj_nt.kind) {
  -      case ID:
  -        ;
  -        break;
  -      default:
  -        break label_4;
  -      }
  -      newPhrase(map);
  -    }
  -  }
  -
  -  final public void head(Archive arc) throws ParseException {
  -    Version v;
  -    jj_consume_token(HEAD);
  -    switch (jj_nt.kind) {
  -    case NUM:
  -      v = version();
  -                           arc.setHead(v);
  -      break;
  -    default:
  -      ;
  -    }
  -    jj_consume_token(28);
  -  }
  -
  -  final public void branch(Archive arc) throws ParseException {
  -  Version v;
  -    jj_consume_token(BRANCH);
  -    switch (jj_nt.kind) {
  -    case NUM:
  -      v = version();
  -                             arc.setBranch(v);
  -      break;
  -    default:
  -      ;
  -    }
  -    jj_consume_token(28);
  -  }
  -
  -  final public void access(Archive arc) throws ParseException {
  -    String name;
  -    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(28);
  -  }
  -
  -  final public void symbols(Archive arc) throws ParseException {
  -    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(29);
  -      v = version();
  -                                            arc.addSymbol(s, v);
  -    }
  -    jj_consume_token(28);
  -  }
  -
  -  final public void locks(Archive arc) throws ParseException {
  -    String  name;
  -    Version v;
  -    jj_consume_token(LOCKS);
  -    label_7:
  -    while (true) {
  -      switch (jj_nt.kind) {
  -      case ID:
  -        ;
  -        break;
  -      default:
  -        break label_7;
  -      }
  -      name = id();
  -      jj_consume_token(29);
  -      v = version();
  -                                            arc.addLock(name, v);
  -    }
  -    jj_consume_token(28);
  -    switch (jj_nt.kind) {
  -    case STRICT:
  -      jj_consume_token(STRICT);
  -      jj_consume_token(28);
  -               arc.setStrictLocking(true);
  -      break;
  -    default:
  -      ;
  -    }
  -  }
  -
  -  final public void comment(Archive arc) throws ParseException {
  -  String s;
  -    jj_consume_token(COMMENT);
  -    switch (jj_nt.kind) {
  -    case STRING:
  -      s = string();
  -                            arc.setComment(s);
  -      break;
  -    default:
  -      ;
  -    }
  -    jj_consume_token(28);
  -  }
  -
  -  final public void expand(Archive arc) throws ParseException {
  - String s;
  -    jj_consume_token(EXPAND);
  -    switch (jj_nt.kind) {
  -    case STRING:
  -      s = string();
  -                           arc.setExpand(s);
  -      break;
  -    default:
  -      ;
  -    }
  -    jj_consume_token(28);
  -  }
  -
  -  final public void newPhrase(Map map) throws ParseException {
  -  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();
  -                     values.append(" " + value);
  -    }
  -    jj_consume_token(28);
  -    if (map != null) map.put(key, values.toString());
  -  }
  -
  -  final public String word() throws ParseException {
  -  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 (true) return result;}
  -    throw new Error("Missing return statement in function");
  -  }
  -
  -  final public String simpleWord() throws ParseException {
  -    String  result;
  -    Version v;
  -    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();
  -    }
  -   {if (true) return result;}
  -    throw new Error("Missing return statement in function");
  -  }
  -
  -  final public String pair() throws ParseException {
  -    String left;
  -    String right;
  -    left = simpleWord();
  -    jj_consume_token(29);
  -    right = simpleWord();
  -      {if (true) return left + ":" + right;}
  -    throw new Error("Missing return statement in function");
  -  }
  -
  -  final public void desc(Archive arc) throws ParseException {
  -  String s;
  -    jj_consume_token(DESC);
  -    s = string();
  -                          arc.setDesc(s);
  -  }
  -
  -  final public void delta(Archive arc) throws ParseException {
  -    Version   v;
  -    Node      node;
  -    int[]     d;
  -    String    s;
  -    v = version();
  -       node = arc.newNode(v);
  -    jj_consume_token(DATE);
  -    d = date();
  -                              node.setDate(d);
  -    jj_consume_token(28);
  -    jj_consume_token(AUTHOR);
  -    s = id();
  -                              node.setAuthor(s);
  -    jj_consume_token(28);
  -    jj_consume_token(STATE);
  -    switch (jj_nt.kind) {
  -    case ID:
  -      s = id();
  -                            node.setState(s);
  -      break;
  -    default:
  -      ;
  -    }
  -    jj_consume_token(28);
  -    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(28);
  -    jj_consume_token(NEXT);
  -    switch (jj_nt.kind) {
  -    case NUM:
  -      v = version();
  -                                 node.setRCSNext(arc.newNode(v));
  -      break;
  -    default:
  -      ;
  -    }
  -    jj_consume_token(28);
  -    newPhrases(node.phrases);
  -  }
  -
  -  final public void text(Archive arc) throws ParseException {
  -  Version v;
  -  Node node;
  -  String log;
  -  String txt;
  -    v = version();
  -      node = arc.getNode(v);
  -    jj_consume_token(LOG);
  -    log = string();
  -      node.setLog(log);
  -    newPhrases(node.phrases);
  -    jj_consume_token(TEXT);
  -    txt = string();
  -       node.setText(txt);
  -  }
  -
  -  final public String id() throws ParseException {
  -                    Token t;
  -    t = jj_consume_token(ID);
  -                                             {if (true) return t.image;}
  -    throw new Error("Missing return statement in function");
  -  }
  -
  -  final public String sym() throws ParseException {
  -  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();
  -    }
  -    {if (true) return t.image;}
  -    throw new Error("Missing return statement in function");
  -  }
  -
  -  final public Version version() throws ParseException {
  -  Version v;
  -  int   n, r;
  -    n = num();
  -    v = new Version(n);
  -    label_10:
  -    while (true) {
  -      switch (jj_nt.kind) {
  -      case 30:
  -        ;
  -        break;
  -      default:
  -        break label_10;
  -      }
  -      jj_consume_token(30);
  -      n = num();
  -                    v.__addBranch(n);
  -    }
  -    {if (true) return v;}
  -    throw new Error("Missing return statement in function");
  -  }
  -
  -  final public int[] date() throws ParseException {
  -  int[] n = new int[6];
  -    n[0] = num();
  -    jj_consume_token(30);
  -    n[1] = num();
  -    jj_consume_token(30);
  -    n[2] = num();
  -    jj_consume_token(30);
  -    n[3] = num();
  -    jj_consume_token(30);
  -    n[4] = num();
  -    jj_consume_token(30);
  -    n[5] = num();
  -   {if (true) return n;}
  -    throw new Error("Missing return statement in function");
  -  }
  -
  -  final public int num() throws ParseException {
  -              Token t;
  -    t = jj_consume_token(NUM);
  -                                      {if (true) return Integer.parseInt(t.image);}
  -    throw new Error("Missing return statement in function");
  -  }
  -
  -  final public String string() throws ParseException {
  - Token t;
  -    t = jj_consume_token(STRING);
  -                 {if (true) return Archive.unquoteString(t.image);}
  -    throw new Error("Missing return statement in function");
  -  }
  -
  -  final private boolean jj_2_1(int xla) {
  -    jj_la = xla; jj_lastpos = jj_scanpos = token;
  -    return !jj_3_1();
  -  }
  -
  -  final private boolean jj_3R_15() {
  -    if (jj_3R_18()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_14() {
  -    if (jj_3R_17()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_20() {
  -    if (jj_scan_token(30)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_13() {
  -    if (jj_3R_16()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_12() {
  -    Token xsp;
  -    xsp = jj_scanpos;
  -    if (jj_3R_13()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_14()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_15()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_18() {
  -    if (jj_scan_token(STRING)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_17() {
  -    if (jj_3R_19()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_20()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_11() {
  -    if (jj_3R_12()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(29)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_19() {
  -    if (jj_scan_token(NUM)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3_1() {
  -    if (jj_3R_11()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_16() {
  -    if (jj_scan_token(ID)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  public ArchiveParserTokenManager token_source;
  -  JavaCharStream jj_input_stream;
  -  public Token token, jj_nt;
  -  private Token jj_scanpos, jj_lastpos;
  -  private int jj_la;
  -  public boolean lookingAhead = false;
  -  private boolean jj_semLA;
  -
  -  public ArchiveParser(java.io.InputStream stream) {
  -    jj_input_stream = new JavaCharStream(stream, 1, 1);
  -    token_source = new ArchiveParserTokenManager(jj_input_stream);
  -    token = new Token();
  -    token.next = jj_nt = token_source.getNextToken();
  -  }
  -
  -  public void ReInit(java.io.InputStream stream) {
  -    jj_input_stream.ReInit(stream, 1, 1);
  -    token_source.ReInit(jj_input_stream);
  -    token = new Token();
  -    token.next = jj_nt = token_source.getNextToken();
  -  }
  -
  -  public ArchiveParser(java.io.Reader stream) {
  -    jj_input_stream = new JavaCharStream(stream, 1, 1);
  -    token_source = new ArchiveParserTokenManager(jj_input_stream);
  -    token = new Token();
  -    token.next = jj_nt = token_source.getNextToken();
  -  }
  -
  -  public void ReInit(java.io.Reader stream) {
  -    jj_input_stream.ReInit(stream, 1, 1);
  -    token_source.ReInit(jj_input_stream);
  -    token = new Token();
  -    token.next = jj_nt = token_source.getNextToken();
  -  }
  -
  -  public ArchiveParser(ArchiveParserTokenManager tm) {
  -    token_source = tm;
  -    token = new Token();
  -    token.next = jj_nt = token_source.getNextToken();
  -  }
  -
  -  public void ReInit(ArchiveParserTokenManager tm) {
  -    token_source = tm;
  -    token = new Token();
  -    token.next = jj_nt = token_source.getNextToken();
  -  }
  -
  -  final private Token jj_consume_token(int kind) throws ParseException {
  -    Token oldToken = token;
  -    if ((token = jj_nt).next != null) jj_nt = jj_nt.next;
  -    else jj_nt = jj_nt.next = token_source.getNextToken();
  -    if (token.kind == kind) {
  -      return token;
  -    }
  -    jj_nt = token;
  -    token = oldToken;
  -    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;
  -    }
  -    return (jj_scanpos.kind != kind);
  -  }
  -
  -  final public Token getNextToken() {
  -    if ((token = jj_nt).next != null) jj_nt = jj_nt.next;
  -    else jj_nt = jj_nt.next = token_source.getNextToken();
  -    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 public ParseException generateParseException() {
  -    Token errortok = token.next;
  -    int line = errortok.beginLine, column = errortok.beginColumn;
  -    String mess = (errortok.kind == 0) ? tokenImage[0] : errortok.image;
  -    return new ParseException("Parse error at line " + line + ", column " + column + ".  Encountered: " + mess);
  -  }
  -
  -  final public void enable_tracing() {
  -  }
  -
  -  final public void disable_tracing() {
  -  }
  -
  -}
  +*/
  +  final public void archive(Archive arc) throws ParseException {
  +    admin(arc);
  +    label_1:
  +    while (true) {
  +      if (jj_2_1(3)) {
  +        ;
  +      } else {
  +        break label_1;
  +      }
  +      delta(arc);
  +    }
  +    desc(arc);
  +    label_2:
  +    while (true) {
  +      if (jj_2_2(3)) {
  +        ;
  +      } else {
  +        break label_2;
  +      }
  +      text(arc);
  +    }
  +    jj_consume_token(0);
  +  }
  +
  +  final public void admin(Archive arc) throws ParseException {
  +    head(arc);
  +    if (jj_2_3(3)) {
  +      branch(arc);
  +    } else {
  +      ;
  +    }
  +    access(arc);
  +    symbols(arc);
  +    locks(arc);
  +    optionals(arc);
  +  }
  +
  +  final public void optionals(Archive arc) throws ParseException {
  +    label_3:
  +    while (true) {
  +      if (jj_2_4(3)) {
  +        ;
  +      } else {
  +        break label_3;
  +      }
  +      if (jj_2_5(3)) {
  +        comment(arc);
  +      } else if (jj_2_6(3)) {
  +        expand(arc);
  +      } else if (jj_2_7(3)) {
  +        newPhrase(arc.phrases);
  +      } else {
  +        jj_consume_token(-1);
  +        throw new ParseException();
  +      }
  +    }
  +  }
  +
  +  final public void newPhrases(Map map) throws ParseException {
  +    label_4:
  +    while (true) {
  +      if (jj_2_8(3)) {
  +        ;
  +      } else {
  +        break label_4;
  +      }
  +      newPhrase(map);
  +    }
  +  }
  +
  +  final public void head(Archive arc) throws ParseException {
  +    Version v;
  +    jj_consume_token(HEAD);
  +    if (jj_2_9(3)) {
  +      v = version();
  +                           arc.setHead(v);
  +    } else {
  +      ;
  +    }
  +    jj_consume_token(28);
  +  }
  +
  +  final public void branch(Archive arc) throws ParseException {
  +  Version v;
  +    jj_consume_token(BRANCH);
  +    if (jj_2_10(3)) {
  +      v = version();
  +                             arc.setBranch(v);
  +    } else {
  +      ;
  +    }
  +    jj_consume_token(28);
  +  }
  +
  +  final public void access(Archive arc) throws ParseException {
  +    String name;
  +    jj_consume_token(ACCESS);
  +    label_5:
  +    while (true) {
  +      if (jj_2_11(3)) {
  +        ;
  +      } else {
  +        break label_5;
  +      }
  +      name = id();
  +                           arc.addUser(name);
  +    }
  +    jj_consume_token(28);
  +  }
  +
  +  final public void symbols(Archive arc) throws ParseException {
  +    String  s;
  +    Version v;
  +    jj_consume_token(SYMBOLS);
  +    label_6:
  +    while (true) {
  +      if (jj_2_12(3)) {
  +        ;
  +      } else {
  +        break label_6;
  +      }
  +      s = sym();
  +      jj_consume_token(29);
  +      v = version();
  +                                            arc.addSymbol(s, v);
  +    }
  +    jj_consume_token(28);
  +  }
  +
  +  final public void locks(Archive arc) throws ParseException {
  +    String  name;
  +    Version v;
  +    jj_consume_token(LOCKS);
  +    label_7:
  +    while (true) {
  +      if (jj_2_13(3)) {
  +        ;
  +      } else {
  +        break label_7;
  +      }
  +      name = id();
  +      jj_consume_token(29);
  +      v = version();
  +                                            arc.addLock(name, v);
  +    }
  +    jj_consume_token(28);
  +    if (jj_2_14(3)) {
  +      jj_consume_token(STRICT);
  +      jj_consume_token(28);
  +               arc.setStrictLocking(true);
  +    } else {
  +      ;
  +    }
  +  }
  +
  +  final public void comment(Archive arc) throws ParseException {
  +  String s;
  +    jj_consume_token(COMMENT);
  +    if (jj_2_15(3)) {
  +      s = string();
  +                            arc.setComment(s);
  +    } else {
  +      ;
  +    }
  +    jj_consume_token(28);
  +  }
  +
  +  final public void expand(Archive arc) throws ParseException {
  + String s;
  +    jj_consume_token(EXPAND);
  +    if (jj_2_16(3)) {
  +      s = string();
  +                           arc.setExpand(s);
  +    } else {
  +      ;
  +    }
  +    jj_consume_token(28);
  +  }
  +
  +  final public void newPhrase(Map map) throws ParseException {
  +  String key;
  +  String value;
  +  StringBuffer values = new StringBuffer();
  +    key = id();
  +    label_8:
  +    while (true) {
  +      if (jj_2_17(3)) {
  +        ;
  +      } else {
  +        break label_8;
  +      }
  +      value = word();
  +                     values.append(" " + value);
  +    }
  +    jj_consume_token(28);
  +    if (map != null) map.put(key, values.toString());
  +  }
  +
  +  final public String word() throws ParseException {
  +  String result;
  +    if (jj_2_18(2)) {
  +      result = pair();
  +    } else if (jj_2_19(3)) {
  +      result = simpleWord();
  +    } else {
  +      jj_consume_token(-1);
  +      throw new ParseException();
  +    }
  +    {if (true) return result;}
  +    throw new Error("Missing return statement in function");
  +  }
  +
  +  final public String simpleWord() throws ParseException {
  +    String  result;
  +    Version v;
  +    if (jj_2_20(3)) {
  +      result = id();
  +    } else if (jj_2_21(3)) {
  +      v = version();
  +                 result = v.toString();
  +    } else if (jj_2_22(3)) {
  +      result = string();
  +    } else {
  +      jj_consume_token(-1);
  +      throw new ParseException();
  +    }
  +   {if (true) return result;}
  +    throw new Error("Missing return statement in function");
  +  }
  +
  +  final public String pair() throws ParseException {
  +    String left;
  +    String right;
  +    left = simpleWord();
  +    jj_consume_token(29);
  +    right = simpleWord();
  +      {if (true) return left + ":" + right;}
  +    throw new Error("Missing return statement in function");
  +  }
  +
  +  final public void desc(Archive arc) throws ParseException {
  +  String s;
  +    jj_consume_token(DESC);
  +    s = string();
  +                          arc.setDesc(s);
  +  }
  +
  +  final public void delta(Archive arc) throws ParseException {
  +    Version   v;
  +    Node      node;
  +    int[]     d;
  +    String    s;
  +    v = version();
  +       node = arc.newNode(v);
  +    jj_consume_token(DATE);
  +    d = date();
  +                              node.setDate(d);
  +    jj_consume_token(28);
  +    jj_consume_token(AUTHOR);
  +    s = id();
  +                              node.setAuthor(s);
  +    jj_consume_token(28);
  +    jj_consume_token(STATE);
  +    if (jj_2_23(3)) {
  +      s = id();
  +                            node.setState(s);
  +    } else {
  +      ;
  +    }
  +    jj_consume_token(28);
  +    jj_consume_token(BRANCHES);
  +    label_9:
  +    while (true) {
  +      if (jj_2_24(3)) {
  +        ;
  +      } else {
  +        break label_9;
  +      }
  +      v = version();
  +                                 node.addBranch(arc.newBranchNode(v));
  +    }
  +    jj_consume_token(28);
  +    jj_consume_token(NEXT);
  +    if (jj_2_25(3)) {
  +      v = version();
  +                                 node.setRCSNext(arc.newNode(v));
  +    } else {
  +      ;
  +    }
  +    jj_consume_token(28);
  +    newPhrases(node.phrases);
  +  }
  +
  +  final public void text(Archive arc) throws ParseException {
  +  Version v;
  +  Node node;
  +  String log;
  +  String txt;
  +    v = version();
  +      node = arc.getNode(v);
  +    jj_consume_token(LOG);
  +    log = string();
  +      node.setLog(log);
  +    newPhrases(node.phrases);
  +    jj_consume_token(TEXT);
  +    txt = string();
  +       node.setText(txt);
  +  }
  +
  +  final public String id() throws ParseException {
  +                    Token t;
  +    t = jj_consume_token(ID);
  +                                             {if (true) return t.image;}
  +    throw new Error("Missing return statement in function");
  +  }
  +
  +  final public String sym() throws ParseException {
  +  Token t;
  +    if (jj_2_26(3)) {
  +      t = jj_consume_token(SYM);
  +    } else if (jj_2_27(3)) {
  +      t = jj_consume_token(ID);
  +    } else {
  +      jj_consume_token(-1);
  +      throw new ParseException();
  +    }
  +    {if (true) return t.image;}
  +    throw new Error("Missing return statement in function");
  +  }
  +
  +  final public Version version() throws ParseException {
  +  Version v;
  +  int   n, r;
  +    n = num();
  +    v = new Version(n);
  +    label_10:
  +    while (true) {
  +      if (jj_2_28(3)) {
  +        ;
  +      } else {
  +        break label_10;
  +      }
  +      jj_consume_token(30);
  +      n = num();
  +                    v.__addBranch(n);
  +    }
  +    {if (true) return v;}
  +    throw new Error("Missing return statement in function");
  +  }
  +
  +  final public int[] date() throws ParseException {
  +  int[] n = new int[6];
  +    n[0] = num();
  +    jj_consume_token(30);
  +    n[1] = num();
  +    jj_consume_token(30);
  +    n[2] = num();
  +    jj_consume_token(30);
  +    n[3] = num();
  +    jj_consume_token(30);
  +    n[4] = num();
  +    jj_consume_token(30);
  +    n[5] = num();
  +   {if (true) return n;}
  +    throw new Error("Missing return statement in function");
  +  }
  +
  +  final public int num() throws ParseException {
  +              Token t;
  +    t = jj_consume_token(NUM);
  +                                      {if (true) return Integer.parseInt(t.image);}
  +    throw new Error("Missing return statement in function");
  +  }
  +
  +  final public String string() throws ParseException {
  + Token t;
  +    t = jj_consume_token(STRING);
  +                 {if (true) return Archive.unquoteString(t.image);}
  +    throw new Error("Missing return statement in function");
  +  }
  +
  +  final private boolean jj_2_1(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_1();
  +  }
  +
  +  final private boolean jj_2_2(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_2();
  +  }
  +
  +  final private boolean jj_2_3(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_3();
  +  }
  +
  +  final private boolean jj_2_4(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_4();
  +  }
  +
  +  final private boolean jj_2_5(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_5();
  +  }
  +
  +  final private boolean jj_2_6(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_6();
  +  }
  +
  +  final private boolean jj_2_7(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_7();
  +  }
  +
  +  final private boolean jj_2_8(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_8();
  +  }
  +
  +  final private boolean jj_2_9(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_9();
  +  }
  +
  +  final private boolean jj_2_10(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_10();
  +  }
  +
  +  final private boolean jj_2_11(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_11();
  +  }
  +
  +  final private boolean jj_2_12(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_12();
  +  }
  +
  +  final private boolean jj_2_13(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_13();
  +  }
  +
  +  final private boolean jj_2_14(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_14();
  +  }
  +
  +  final private boolean jj_2_15(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_15();
  +  }
  +
  +  final private boolean jj_2_16(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_16();
  +  }
  +
  +  final private boolean jj_2_17(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_17();
  +  }
  +
  +  final private boolean jj_2_18(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_18();
  +  }
  +
  +  final private boolean jj_2_19(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_19();
  +  }
  +
  +  final private boolean jj_2_20(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_20();
  +  }
  +
  +  final private boolean jj_2_21(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_21();
  +  }
  +
  +  final private boolean jj_2_22(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_22();
  +  }
  +
  +  final private boolean jj_2_23(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_23();
  +  }
  +
  +  final private boolean jj_2_24(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_24();
  +  }
  +
  +  final private boolean jj_2_25(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_25();
  +  }
  +
  +  final private boolean jj_2_26(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_26();
  +  }
  +
  +  final private boolean jj_2_27(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_27();
  +  }
  +
  +  final private boolean jj_2_28(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    return !jj_3_28();
  +  }
  +
  +  final private boolean jj_3R_24() {
  +    if (jj_scan_token(NUM)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_11() {
  +    if (jj_3R_17()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_scan_token(DATE)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_25()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_9() {
  +    if (jj_3R_17()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_13() {
  +    if (jj_scan_token(BRANCH)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3_10()) jj_scanpos = xsp;
  +    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_scan_token(28)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_22() {
  +    if (jj_3R_23()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_scan_token(29)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_23()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_20() {
  +    if (jj_scan_token(STRING)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_8() {
  +    if (jj_3R_16()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_7() {
  +    if (jj_3R_16()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_6() {
  +    if (jj_3R_15()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_4() {
  +    Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3_5()) {
  +    jj_scanpos = xsp;
  +    if (jj_3_6()) {
  +    jj_scanpos = xsp;
  +    if (jj_3_7()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_5() {
  +    if (jj_3R_14()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_18() {
  +    if (jj_scan_token(ID)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_25() {
  +    if (jj_3R_24()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_22() {
  +    if (jj_3R_20()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_21() {
  +    if (jj_3R_17()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_20() {
  +    if (jj_3R_18()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_23() {
  +    Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3_20()) {
  +    jj_scanpos = xsp;
  +    if (jj_3_21()) {
  +    jj_scanpos = xsp;
  +    if (jj_3_22()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_3() {
  +    if (jj_3R_13()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_28() {
  +    if (jj_scan_token(30)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_24()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_17() {
  +    if (jj_3R_24()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    Token xsp;
  +    while (true) {
  +      xsp = jj_scanpos;
  +      if (jj_3_28()) { jj_scanpos = xsp; break; }
  +      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    }
  +    return false;
  +  }
  +
  +  final private boolean jj_3_2() {
  +    if (jj_3R_12()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_19() {
  +    if (jj_3R_23()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_1() {
  +    if (jj_3R_11()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_18() {
  +    if (jj_3R_22()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_21() {
  +    Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3_18()) {
  +    jj_scanpos = xsp;
  +    if (jj_3_19()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_27() {
  +    if (jj_scan_token(ID)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_26() {
  +    if (jj_scan_token(SYM)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_19() {
  +    Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3_26()) {
  +    jj_scanpos = xsp;
  +    if (jj_3_27()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_17() {
  +    if (jj_3R_21()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_16() {
  +    if (jj_3R_20()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_16() {
  +    if (jj_3R_18()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    Token xsp;
  +    while (true) {
  +      xsp = jj_scanpos;
  +      if (jj_3_17()) { jj_scanpos = xsp; break; }
  +      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    }
  +    if (jj_scan_token(28)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_15() {
  +    if (jj_3R_20()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_15() {
  +    if (jj_scan_token(EXPAND)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3_16()) jj_scanpos = xsp;
  +    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_scan_token(28)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_13() {
  +    if (jj_3R_18()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_scan_token(29)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_17()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_14() {
  +    if (jj_scan_token(COMMENT)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3_15()) jj_scanpos = xsp;
  +    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_scan_token(28)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_12() {
  +    if (jj_3R_19()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_scan_token(29)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_17()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_25() {
  +    if (jj_3R_17()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_24() {
  +    if (jj_3R_17()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_12() {
  +    if (jj_3R_17()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_scan_token(LOG)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_20()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_23() {
  +    if (jj_3R_18()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_14() {
  +    if (jj_scan_token(STRICT)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_scan_token(28)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_11() {
  +    if (jj_3R_18()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_10() {
  +    if (jj_3R_17()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  public ArchiveParserTokenManager token_source;
  +  SimpleCharStream jj_input_stream;
  +  public Token token, jj_nt;
  +  private Token jj_scanpos, jj_lastpos;
  +  private int jj_la;
  +  public boolean lookingAhead = false;
  +  private boolean jj_semLA;
  +
  +  public ArchiveParser(java.io.InputStream stream) {
  +    jj_input_stream = new SimpleCharStream(stream, 1, 1);
  +    token_source = new ArchiveParserTokenManager(jj_input_stream);
  +    token = new Token();
  +    token.next = jj_nt = token_source.getNextToken();
  +  }
  +
  +  public void ReInit(java.io.InputStream stream) {
  +    jj_input_stream.ReInit(stream, 1, 1);
  +    token_source.ReInit(jj_input_stream);
  +    token = new Token();
  +    token.next = jj_nt = token_source.getNextToken();
  +  }
  +
  +  public ArchiveParser(java.io.Reader stream) {
  +    jj_input_stream = new SimpleCharStream(stream, 1, 1);
  +    token_source = new ArchiveParserTokenManager(jj_input_stream);
  +    token = new Token();
  +    token.next = jj_nt = token_source.getNextToken();
  +  }
  +
  +  public void ReInit(java.io.Reader stream) {
  +    jj_input_stream.ReInit(stream, 1, 1);
  +    token_source.ReInit(jj_input_stream);
  +    token = new Token();
  +    token.next = jj_nt = token_source.getNextToken();
  +  }
  +
  +  public ArchiveParser(ArchiveParserTokenManager tm) {
  +    token_source = tm;
  +    token = new Token();
  +    token.next = jj_nt = token_source.getNextToken();
  +  }
  +
  +  public void ReInit(ArchiveParserTokenManager tm) {
  +    token_source = tm;
  +    token = new Token();
  +    token.next = jj_nt = token_source.getNextToken();
  +  }
  +
  +  final private Token jj_consume_token(int kind) throws ParseException {
  +    Token oldToken = token;
  +    if ((token = jj_nt).next != null) jj_nt = jj_nt.next;
  +    else jj_nt = jj_nt.next = token_source.getNextToken();
  +    if (token.kind == kind) {
  +      return token;
  +    }
  +    jj_nt = token;
  +    token = oldToken;
  +    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;
  +    }
  +    return (jj_scanpos.kind != kind);
  +  }
  +
  +  final public Token getNextToken() {
  +    if ((token = jj_nt).next != null) jj_nt = jj_nt.next;
  +    else jj_nt = jj_nt.next = token_source.getNextToken();
  +    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 public ParseException generateParseException() {
  +    Token errortok = token.next;
  +    int line = errortok.beginLine, column = errortok.beginColumn;
  +    String mess = (errortok.kind == 0) ? tokenImage[0] : errortok.image;
  +    return new ParseException("Parse error at line " + line + ", column " + column + ".  Encountered: " + mess);
  +  }
  +
  +  final public void enable_tracing() {
  +  }
  +
  +  final public void disable_tracing() {
  +  }
  +
  +}
  
  
  
  1.3       +10 -30    jakarta-commons-sandbox/jrcs/src/java/org/apache/commons/jrcs/rcs/ArchiveParser.jj
  
  Index: ArchiveParser.jj
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/jrcs/src/java/org/apache/commons/jrcs/rcs/ArchiveParser.jj,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ArchiveParser.jj	14 Jun 2002 01:32:15 -0000	1.2
  +++ ArchiveParser.jj	26 Sep 2002 17:43:15 -0000	1.3
  @@ -64,9 +64,9 @@
   DEBUG_LOOKAHEAD=false;
   DEBUG_PARSER=false;
   ERROR_REPORTING=false;
  -FORCE_LA_CHECK=false;
  +FORCE_LA_CHECK=true;
   IGNORE_CASE=false;
  -JAVA_UNICODE_ESCAPE=true;
  +JAVA_UNICODE_ESCAPE=false;  // RCS files are plain ASCII
   LOOKAHEAD=1;
   OTHER_AMBIGUITY_CHECK=1;
   SANITY_CHECK=true;
  @@ -210,26 +210,7 @@
     < STRING: "@" ( ~["@"] | "@@" )* "@" >
   |
     < #IDCHAR:
  -      [
  -       "\u0021"-"\u0023", // ! " #
  -       "\u0025"-"\u0027", // % & '
  -       "\u0028"-"\u002b", // ( ) * +
  -       "\u002d","\u002f", // - /
  -       "\u003c"-"\u003f", // < = > ?
  -       "\u005b"-"\u0060", // [ \ ] ^ _ `
  -       "\u007b"-"\u007e", // { | } ~
  -       "\u0041"-"\u005a", // A B C ... X Y Z
  -       "\u0061"-"\u007a", // a b c ... x y z
  -       "\u00c0"-"\u00d6",
  -       "\u00d8"-"\u00f6",
  -       "\u00f8"-"\u00ff",
  -       "\u0100"-"\u1fff",
  -       "\u3040"-"\u318f",
  -       "\u3300"-"\u337f",
  -       "\u3400"-"\u3d2d",
  -       "\u4e00"-"\u9fff",
  -       "\uf900"-"\ufaff"
  -      ]
  +      ["A"-"Z","a"-"z","-","_"]
     >
   |
     < #DIGIT: ["0"-"9"]  >
  @@ -338,12 +319,12 @@
   }
   
   String word():
  -{ String result; }
  +{ String result, right; }
   {  (
      LOOKAHEAD(2)
      result = pair()
      |
  -   result = simpleWord()
  +   result = simpleWord() [ right = range() { result = result + right; } ]
      )
      {return result;}
   }
  @@ -364,14 +345,13 @@
    { return result; }
   }
   
  -String pair() :
  +String range() :
   {
  -    String left;
  -    String right;
  +    String rightSide;
   }
   {
  -    left = simpleWord() ":" right = simpleWord()
  -    { return left + ":" + right; }
  +    ":" rightSide = simpleWord()
  +    { return ":" + rightSide; }
   }
   
   void desc(Archive arc) :
  
  
  
  1.3       +67 -67    jakarta-commons-sandbox/jrcs/src/java/org/apache/commons/jrcs/rcs/ArchiveParserConstants.java
  
  Index: ArchiveParserConstants.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/jrcs/src/java/org/apache/commons/jrcs/rcs/ArchiveParserConstants.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ArchiveParserConstants.java	14 Jun 2002 01:32:15 -0000	1.2
  +++ ArchiveParserConstants.java	26 Sep 2002 17:43:15 -0000	1.3
  @@ -1,67 +1,67 @@
  -/* Generated By:JavaCC: Do not edit this line. ArchiveParserConstants.java */
  -package org.apache.commons.jrcs.rcs;
  -
  -public interface ArchiveParserConstants {
  -
  -  int EOF = 0;
  -  int ACCESS = 6;
  -  int AUTHOR = 7;
  -  int BRANCH = 8;
  -  int BRANCHES = 9;
  -  int COMMENT = 10;
  -  int DATE = 11;
  -  int DESC = 12;
  -  int EXPAND = 13;
  -  int HEAD = 14;
  -  int LOCKS = 15;
  -  int LOG = 16;
  -  int NEXT = 17;
  -  int STATE = 18;
  -  int STRICT = 19;
  -  int SYMBOLS = 20;
  -  int TEXT = 21;
  -  int ID = 22;
  -  int SYM = 23;
  -  int STRING = 24;
  -  int IDCHAR = 25;
  -  int DIGIT = 26;
  -  int NUM = 27;
  -
  -  int DEFAULT = 0;
  -  int PRE_DELTA = 1;
  -
  -  String[] tokenImage = {
  -    "<EOF>",
  -    "\" \"",
  -    "\"\\n\"",
  -    "\"\\t\"",
  -    "\"\\r\"",
  -    "\"\\f\"",
  -    "\"access\"",
  -    "\"author\"",
  -    "\"branch\"",
  -    "\"branches\"",
  -    "\"comment\"",
  -    "\"date\"",
  -    "\"desc\"",
  -    "\"expand\"",
  -    "\"head\"",
  -    "\"locks\"",
  -    "\"log\"",
  -    "\"next\"",
  -    "\"state\"",
  -    "\"strict\"",
  -    "\"symbols\"",
  -    "\"text\"",
  -    "<ID>",
  -    "<SYM>",
  -    "<STRING>",
  -    "<IDCHAR>",
  -    "<DIGIT>",
  -    "<NUM>",
  -    "\";\"",
  -    "\":\"",
  -    "\".\"",
  -  };
  -
  -}
  +/* Generated By:JavaCC: Do not edit this line. ArchiveParserConstants.java */
  +package org.apache.commons.jrcs.rcs;
  +
  +public interface ArchiveParserConstants {
  +
  +  int EOF = 0;
  +  int ACCESS = 6;
  +  int AUTHOR = 7;
  +  int BRANCH = 8;
  +  int BRANCHES = 9;
  +  int COMMENT = 10;
  +  int DATE = 11;
  +  int DESC = 12;
  +  int EXPAND = 13;
  +  int HEAD = 14;
  +  int LOCKS = 15;
  +  int LOG = 16;
  +  int NEXT = 17;
  +  int STATE = 18;
  +  int STRICT = 19;
  +  int SYMBOLS = 20;
  +  int TEXT = 21;
  +  int ID = 22;
  +  int SYM = 23;
  +  int STRING = 24;
  +  int IDCHAR = 25;
  +  int DIGIT = 26;
  +  int NUM = 27;
  +
  +  int DEFAULT = 0;
  +  int PRE_DELTA = 1;
  +
  +  String[] tokenImage = {
  +    "<EOF>",
  +    "\" \"",
  +    "\"\\n\"",
  +    "\"\\t\"",
  +    "\"\\r\"",
  +    "\"\\f\"",
  +    "\"access\"",
  +    "\"author\"",
  +    "\"branch\"",
  +    "\"branches\"",
  +    "\"comment\"",
  +    "\"date\"",
  +    "\"desc\"",
  +    "\"expand\"",
  +    "\"head\"",
  +    "\"locks\"",
  +    "\"log\"",
  +    "\"next\"",
  +    "\"state\"",
  +    "\"strict\"",
  +    "\"symbols\"",
  +    "\"text\"",
  +    "<ID>",
  +    "<SYM>",
  +    "<STRING>",
  +    "<IDCHAR>",
  +    "<DIGIT>",
  +    "<NUM>",
  +    "\";\"",
  +    "\":\"",
  +    "\".\"",
  +  };
  +
  +}
  
  
  
  1.3       +793 -892  jakarta-commons-sandbox/jrcs/src/java/org/apache/commons/jrcs/rcs/ArchiveParserTokenManager.java
  
  Index: ArchiveParserTokenManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/jrcs/src/java/org/apache/commons/jrcs/rcs/ArchiveParserTokenManager.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ArchiveParserTokenManager.java	14 Jun 2002 01:32:15 -0000	1.2
  +++ ArchiveParserTokenManager.java	26 Sep 2002 17:43:15 -0000	1.3
  @@ -1,907 +1,808 @@
  -/* Generated By:JavaCC: Do not edit this line. ArchiveParserTokenManager.java */
  -package org.apache.commons.jrcs.rcs;
  -import java.util.Map;
  -import java.io.FileInputStream;
  -import java.io.FileNotFoundException;
  -import java.io.InputStream;
  -
  -public class ArchiveParserTokenManager implements ArchiveParserConstants
  -{
  -  public  java.io.PrintStream debugStream = System.out;
  -  public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
  +/* Generated By:JavaCC: Do not edit this line. ArchiveParserTokenManager.java */
  +package org.apache.commons.jrcs.rcs;
  +import java.util.Map;
  +import java.io.FileInputStream;
  +import java.io.FileNotFoundException;
  +import java.io.InputStream;
  +
  +public class ArchiveParserTokenManager implements ArchiveParserConstants
  +{
  +  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)
  -   {
  -      case 0:
  -         if ((active0 & 0x40000000L) != 0L)
  -            return 1;
  -         if ((active0 & 0x3fffc0L) != 0L)
  -         {
  -            jjmatchedKind = 22;
  -            return 14;
  -         }
  -         return -1;
  -      case 1:
  -         if ((active0 & 0x3fffc0L) != 0L)
  -         {
  -            jjmatchedKind = 22;
  -            jjmatchedPos = 1;
  -            return 14;
  -         }
  -         return -1;
  -      case 2:
  -         if ((active0 & 0x3effc0L) != 0L)
  -         {
  -            jjmatchedKind = 22;
  -            jjmatchedPos = 2;
  -            return 14;
  -         }
  -         if ((active0 & 0x10000L) != 0L)
  -            return 14;
  -         return -1;
  -      case 3:
  -         if ((active0 & 0x1ca7c0L) != 0L)
  -         {
  -            jjmatchedKind = 22;
  -            jjmatchedPos = 3;
  -            return 14;
  -         }
  -         if ((active0 & 0x225800L) != 0L)
  -            return 14;
  -         return -1;
  -      case 4:
  -         if ((active0 & 0x1827c0L) != 0L)
  -         {
  -            jjmatchedKind = 22;
  -            jjmatchedPos = 4;
  -            return 14;
  -         }
  -         if ((active0 & 0x48000L) != 0L)
  -            return 14;
  -         return -1;
  -      case 5:
  -         if ((active0 & 0x823c0L) != 0L)
  -            return 14;
  -         if ((active0 & 0x100400L) != 0L)
  -         {
  -            if (jjmatchedPos != 5)
  -            {
  -               jjmatchedKind = 22;
  -               jjmatchedPos = 5;
  -            }
  -            return 14;
  -         }
  -         return -1;
  -      case 6:
  -         if ((active0 & 0x200L) != 0L)
  -         {
  -            jjmatchedKind = 22;
  -            jjmatchedPos = 6;
  -            return 14;
  -         }
  -         if ((active0 & 0x100400L) != 0L)
  -            return 14;
  -         return -1;
  -      default :
  -         return -1;
  -   }
  -}
  +   {
  +      case 0:
  +         if ((active0 & 0x40000000L) != 0L)
  +            return 1;
  +         if ((active0 & 0x3fffc0L) != 0L)
  +         {
  +            jjmatchedKind = 22;
  +            return 14;
  +         }
  +         return -1;
  +      case 1:
  +         if ((active0 & 0x3fffc0L) != 0L)
  +         {
  +            jjmatchedKind = 22;
  +            jjmatchedPos = 1;
  +            return 14;
  +         }
  +         return -1;
  +      case 2:
  +         if ((active0 & 0x3effc0L) != 0L)
  +         {
  +            jjmatchedKind = 22;
  +            jjmatchedPos = 2;
  +            return 14;
  +         }
  +         if ((active0 & 0x10000L) != 0L)
  +            return 14;
  +         return -1;
  +      case 3:
  +         if ((active0 & 0x1ca7c0L) != 0L)
  +         {
  +            jjmatchedKind = 22;
  +            jjmatchedPos = 3;
  +            return 14;
  +         }
  +         if ((active0 & 0x225800L) != 0L)
  +            return 14;
  +         return -1;
  +      case 4:
  +         if ((active0 & 0x1827c0L) != 0L)
  +         {
  +            jjmatchedKind = 22;
  +            jjmatchedPos = 4;
  +            return 14;
  +         }
  +         if ((active0 & 0x48000L) != 0L)
  +            return 14;
  +         return -1;
  +      case 5:
  +         if ((active0 & 0x823c0L) != 0L)
  +            return 14;
  +         if ((active0 & 0x100400L) != 0L)
  +         {
  +            if (jjmatchedPos != 5)
  +            {
  +               jjmatchedKind = 22;
  +               jjmatchedPos = 5;
  +            }
  +            return 14;
  +         }
  +         return -1;
  +      case 6:
  +         if ((active0 & 0x200L) != 0L)
  +         {
  +            jjmatchedKind = 22;
  +            jjmatchedPos = 6;
  +            return 14;
  +         }
  +         if ((active0 & 0x100400L) != 0L)
  +            return 14;
  +         return -1;
  +      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 46:
  -         return jjStartNfaWithStates_0(0, 30, 1);
  -      case 58:
  -         return jjStopAtPos(0, 29);
  -      case 59:
  -         return jjStopAtPos(0, 28);
  -      case 97:
  -         return jjMoveStringLiteralDfa1_0(0xc0L);
  -      case 98:
  -         return jjMoveStringLiteralDfa1_0(0x300L);
  -      case 99:
  -         return jjMoveStringLiteralDfa1_0(0x400L);
  -      case 100:
  -         return jjMoveStringLiteralDfa1_0(0x1800L);
  -      case 101:
  -         return jjMoveStringLiteralDfa1_0(0x2000L);
  -      case 104:
  -         return jjMoveStringLiteralDfa1_0(0x4000L);
  -      case 108:
  -         return jjMoveStringLiteralDfa1_0(0x18000L);
  -      case 110:
  -         return jjMoveStringLiteralDfa1_0(0x20000L);
  -      case 115:
  -         return jjMoveStringLiteralDfa1_0(0x1c0000L);
  -      case 116:
  -         return jjMoveStringLiteralDfa1_0(0x200000L);
  -      default :
  -         return jjMoveNfa_0(0, 0);
  -   }
  -}
  -private final int jjMoveStringLiteralDfa1_0(long active0)
  -{
  -   try { curChar = input_stream.readChar(); }
  -   catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_0(0, active0);
  -      return 1;
  -   }
  -   switch(curChar)
  -   {
  -      case 97:
  -         return jjMoveStringLiteralDfa2_0(active0, 0x800L);
  -      case 99:
  -         return jjMoveStringLiteralDfa2_0(active0, 0x40L);
  -      case 101:
  -         return jjMoveStringLiteralDfa2_0(active0, 0x225000L);
  -      case 111:
  -         return jjMoveStringLiteralDfa2_0(active0, 0x18400L);
  -      case 114:
  -         return jjMoveStringLiteralDfa2_0(active0, 0x300L);
  -      case 116:
  -         return jjMoveStringLiteralDfa2_0(active0, 0xc0000L);
  -      case 117:
  -         return jjMoveStringLiteralDfa2_0(active0, 0x80L);
  -      case 120:
  -         return jjMoveStringLiteralDfa2_0(active0, 0x2000L);
  -      case 121:
  -         return jjMoveStringLiteralDfa2_0(active0, 0x100000L);
  -      default :
  -         break;
  -   }
  -   return jjStartNfa_0(0, active0);
  -}
  -private final int jjMoveStringLiteralDfa2_0(long old0, long active0)
  -{
  -   if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_0(0, old0); 
  -   try { curChar = input_stream.readChar(); }
  -   catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_0(1, active0);
  -      return 2;
  -   }
  -   switch(curChar)
  -   {
  -      case 97:
  -         return jjMoveStringLiteralDfa3_0(active0, 0x44300L);
  -      case 99:
  -         return jjMoveStringLiteralDfa3_0(active0, 0x8040L);
  -      case 103:
  -         if ((active0 & 0x10000L) != 0L)
  -            return jjStartNfaWithStates_0(2, 16, 14);
  -         break;
  -      case 109:
  -         return jjMoveStringLiteralDfa3_0(active0, 0x100400L);
  -      case 112:
  -         return jjMoveStringLiteralDfa3_0(active0, 0x2000L);
  -      case 114:
  -         return jjMoveStringLiteralDfa3_0(active0, 0x80000L);
  -      case 115:
  -         return jjMoveStringLiteralDfa3_0(active0, 0x1000L);
  -      case 116:
  -         return jjMoveStringLiteralDfa3_0(active0, 0x880L);
  -      case 120:
  -         return jjMoveStringLiteralDfa3_0(active0, 0x220000L);
  -      default :
  -         break;
  -   }
  -   return jjStartNfa_0(1, active0);
  -}
  -private final int jjMoveStringLiteralDfa3_0(long old0, long active0)
  -{
  -   if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_0(1, old0); 
  -   try { curChar = input_stream.readChar(); }
  -   catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_0(2, active0);
  -      return 3;
  -   }
  -   switch(curChar)
  -   {
  -      case 97:
  -         return jjMoveStringLiteralDfa4_0(active0, 0x2000L);
  -      case 98:
  -         return jjMoveStringLiteralDfa4_0(active0, 0x100000L);
  -      case 99:
  -         if ((active0 & 0x1000L) != 0L)
  -            return jjStartNfaWithStates_0(3, 12, 14);
  -         break;
  -      case 100:
  -         if ((active0 & 0x4000L) != 0L)
  -            return jjStartNfaWithStates_0(3, 14, 14);
  -         break;
  -      case 101:
  -         if ((active0 & 0x800L) != 0L)
  -            return jjStartNfaWithStates_0(3, 11, 14);
  -         return jjMoveStringLiteralDfa4_0(active0, 0x40L);
  -      case 104:
  -         return jjMoveStringLiteralDfa4_0(active0, 0x80L);
  -      case 105:
  -         return jjMoveStringLiteralDfa4_0(active0, 0x80000L);
  -      case 107:
  -         return jjMoveStringLiteralDfa4_0(active0, 0x8000L);
  -      case 109:
  -         return jjMoveStringLiteralDfa4_0(active0, 0x400L);
  -      case 110:
  -         return jjMoveStringLiteralDfa4_0(active0, 0x300L);
  -      case 116:
  -         if ((active0 & 0x20000L) != 0L)
  -            return jjStartNfaWithStates_0(3, 17, 14);
  -         else if ((active0 & 0x200000L) != 0L)
  -            return jjStartNfaWithStates_0(3, 21, 14);
  -         return jjMoveStringLiteralDfa4_0(active0, 0x40000L);
  -      default :
  -         break;
  -   }
  -   return jjStartNfa_0(2, active0);
  -}
  -private final int jjMoveStringLiteralDfa4_0(long old0, long active0)
  -{
  -   if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_0(2, old0); 
  -   try { curChar = input_stream.readChar(); }
  -   catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_0(3, active0);
  -      return 4;
  -   }
  -   switch(curChar)
  -   {
  -      case 99:
  -         return jjMoveStringLiteralDfa5_0(active0, 0x80300L);
  -      case 101:
  -         if ((active0 & 0x40000L) != 0L)
  -            return jjStartNfaWithStates_0(4, 18, 14);
  -         return jjMoveStringLiteralDfa5_0(active0, 0x400L);
  -      case 110:
  -         return jjMoveStringLiteralDfa5_0(active0, 0x2000L);
  -      case 111:
  -         return jjMoveStringLiteralDfa5_0(active0, 0x100080L);
  -      case 115:
  -         if ((active0 & 0x8000L) != 0L)
  -            return jjStartNfaWithStates_0(4, 15, 14);
  -         return jjMoveStringLiteralDfa5_0(active0, 0x40L);
  -      default :
  -         break;
  -   }
  -   return jjStartNfa_0(3, active0);
  -}
  -private final int jjMoveStringLiteralDfa5_0(long old0, long active0)
  -{
  -   if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_0(3, old0); 
  -   try { curChar = input_stream.readChar(); }
  -   catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_0(4, active0);
  -      return 5;
  -   }
  -   switch(curChar)
  -   {
  -      case 100:
  -         if ((active0 & 0x2000L) != 0L)
  -            return jjStartNfaWithStates_0(5, 13, 14);
  -         break;
  -      case 104:
  -         if ((active0 & 0x100L) != 0L)
  -         {
  -            jjmatchedKind = 8;
  -            jjmatchedPos = 5;
  -         }
  -         return jjMoveStringLiteralDfa6_0(active0, 0x200L);
  -      case 108:
  -         return jjMoveStringLiteralDfa6_0(active0, 0x100000L);
  -      case 110:
  -         return jjMoveStringLiteralDfa6_0(active0, 0x400L);
  -      case 114:
  -         if ((active0 & 0x80L) != 0L)
  -            return jjStartNfaWithStates_0(5, 7, 14);
  -         break;
  -      case 115:
  -         if ((active0 & 0x40L) != 0L)
  -            return jjStartNfaWithStates_0(5, 6, 14);
  -         break;
  -      case 116:
  -         if ((active0 & 0x80000L) != 0L)
  -            return jjStartNfaWithStates_0(5, 19, 14);
  -         break;
  -      default :
  -         break;
  -   }
  -   return jjStartNfa_0(4, active0);
  -}
  -private final int jjMoveStringLiteralDfa6_0(long old0, long active0)
  -{
  -   if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_0(4, old0); 
  -   try { curChar = input_stream.readChar(); }
  -   catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_0(5, active0);
  -      return 6;
  -   }
  -   switch(curChar)
  -   {
  -      case 101:
  -         return jjMoveStringLiteralDfa7_0(active0, 0x200L);
  -      case 115:
  -         if ((active0 & 0x100000L) != 0L)
  -            return jjStartNfaWithStates_0(6, 20, 14);
  -         break;
  -      case 116:
  -         if ((active0 & 0x400L) != 0L)
  -            return jjStartNfaWithStates_0(6, 10, 14);
  -         break;
  -      default :
  -         break;
  -   }
  -   return jjStartNfa_0(5, active0);
  -}
  -private final int jjMoveStringLiteralDfa7_0(long old0, long active0)
  -{
  -   if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_0(5, old0); 
  -   try { curChar = input_stream.readChar(); }
  -   catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_0(6, active0);
  -      return 7;
  -   }
  -   switch(curChar)
  -   {
  -      case 115:
  -         if ((active0 & 0x200L) != 0L)
  -            return jjStartNfaWithStates_0(7, 9, 14);
  -         break;
  -      default :
  -         break;
  -   }
  -   return jjStartNfa_0(6, active0);
  -}
  -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]);
  -}
  +{
  +   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 46:
  +         return jjStartNfaWithStates_0(0, 30, 1);
  +      case 58:
  +         return jjStopAtPos(0, 29);
  +      case 59:
  +         return jjStopAtPos(0, 28);
  +      case 97:
  +         return jjMoveStringLiteralDfa1_0(0xc0L);
  +      case 98:
  +         return jjMoveStringLiteralDfa1_0(0x300L);
  +      case 99:
  +         return jjMoveStringLiteralDfa1_0(0x400L);
  +      case 100:
  +         return jjMoveStringLiteralDfa1_0(0x1800L);
  +      case 101:
  +         return jjMoveStringLiteralDfa1_0(0x2000L);
  +      case 104:
  +         return jjMoveStringLiteralDfa1_0(0x4000L);
  +      case 108:
  +         return jjMoveStringLiteralDfa1_0(0x18000L);
  +      case 110:
  +         return jjMoveStringLiteralDfa1_0(0x20000L);
  +      case 115:
  +         return jjMoveStringLiteralDfa1_0(0x1c0000L);
  +      case 116:
  +         return jjMoveStringLiteralDfa1_0(0x200000L);
  +      default :
  +         return jjMoveNfa_0(0, 0);
  +   }
  +}
  +private final int jjMoveStringLiteralDfa1_0(long active0)
  +{
  +   try { curChar = input_stream.readChar(); }
  +   catch(java.io.IOException e) {
  +      jjStopStringLiteralDfa_0(0, active0);
  +      return 1;
  +   }
  +   switch(curChar)
  +   {
  +      case 97:
  +         return jjMoveStringLiteralDfa2_0(active0, 0x800L);
  +      case 99:
  +         return jjMoveStringLiteralDfa2_0(active0, 0x40L);
  +      case 101:
  +         return jjMoveStringLiteralDfa2_0(active0, 0x225000L);
  +      case 111:
  +         return jjMoveStringLiteralDfa2_0(active0, 0x18400L);
  +      case 114:
  +         return jjMoveStringLiteralDfa2_0(active0, 0x300L);
  +      case 116:
  +         return jjMoveStringLiteralDfa2_0(active0, 0xc0000L);
  +      case 117:
  +         return jjMoveStringLiteralDfa2_0(active0, 0x80L);
  +      case 120:
  +         return jjMoveStringLiteralDfa2_0(active0, 0x2000L);
  +      case 121:
  +         return jjMoveStringLiteralDfa2_0(active0, 0x100000L);
  +      default :
  +         break;
  +   }
  +   return jjStartNfa_0(0, active0);
  +}
  +private final int jjMoveStringLiteralDfa2_0(long old0, long active0)
  +{
  +   if (((active0 &= old0)) == 0L)
  +      return jjStartNfa_0(0, old0); 
  +   try { curChar = input_stream.readChar(); }
  +   catch(java.io.IOException e) {
  +      jjStopStringLiteralDfa_0(1, active0);
  +      return 2;
  +   }
  +   switch(curChar)
  +   {
  +      case 97:
  +         return jjMoveStringLiteralDfa3_0(active0, 0x44300L);
  +      case 99:
  +         return jjMoveStringLiteralDfa3_0(active0, 0x8040L);
  +      case 103:
  +         if ((active0 & 0x10000L) != 0L)
  +            return jjStartNfaWithStates_0(2, 16, 14);
  +         break;
  +      case 109:
  +         return jjMoveStringLiteralDfa3_0(active0, 0x100400L);
  +      case 112:
  +         return jjMoveStringLiteralDfa3_0(active0, 0x2000L);
  +      case 114:
  +         return jjMoveStringLiteralDfa3_0(active0, 0x80000L);
  +      case 115:
  +         return jjMoveStringLiteralDfa3_0(active0, 0x1000L);
  +      case 116:
  +         return jjMoveStringLiteralDfa3_0(active0, 0x880L);
  +      case 120:
  +         return jjMoveStringLiteralDfa3_0(active0, 0x220000L);
  +      default :
  +         break;
  +   }
  +   return jjStartNfa_0(1, active0);
  +}
  +private final int jjMoveStringLiteralDfa3_0(long old0, long active0)
  +{
  +   if (((active0 &= old0)) == 0L)
  +      return jjStartNfa_0(1, old0); 
  +   try { curChar = input_stream.readChar(); }
  +   catch(java.io.IOException e) {
  +      jjStopStringLiteralDfa_0(2, active0);
  +      return 3;
  +   }
  +   switch(curChar)
  +   {
  +      case 97:
  +         return jjMoveStringLiteralDfa4_0(active0, 0x2000L);
  +      case 98:
  +         return jjMoveStringLiteralDfa4_0(active0, 0x100000L);
  +      case 99:
  +         if ((active0 & 0x1000L) != 0L)
  +            return jjStartNfaWithStates_0(3, 12, 14);
  +         break;
  +      case 100:
  +         if ((active0 & 0x4000L) != 0L)
  +            return jjStartNfaWithStates_0(3, 14, 14);
  +         break;
  +      case 101:
  +         if ((active0 & 0x800L) != 0L)
  +            return jjStartNfaWithStates_0(3, 11, 14);
  +         return jjMoveStringLiteralDfa4_0(active0, 0x40L);
  +      case 104:
  +         return jjMoveStringLiteralDfa4_0(active0, 0x80L);
  +      case 105:
  +         return jjMoveStringLiteralDfa4_0(active0, 0x80000L);
  +      case 107:
  +         return jjMoveStringLiteralDfa4_0(active0, 0x8000L);
  +      case 109:
  +         return jjMoveStringLiteralDfa4_0(active0, 0x400L);
  +      case 110:
  +         return jjMoveStringLiteralDfa4_0(active0, 0x300L);
  +      case 116:
  +         if ((active0 & 0x20000L) != 0L)
  +            return jjStartNfaWithStates_0(3, 17, 14);
  +         else if ((active0 & 0x200000L) != 0L)
  +            return jjStartNfaWithStates_0(3, 21, 14);
  +         return jjMoveStringLiteralDfa4_0(active0, 0x40000L);
  +      default :
  +         break;
  +   }
  +   return jjStartNfa_0(2, active0);
  +}
  +private final int jjMoveStringLiteralDfa4_0(long old0, long active0)
  +{
  +   if (((active0 &= old0)) == 0L)
  +      return jjStartNfa_0(2, old0); 
  +   try { curChar = input_stream.readChar(); }
  +   catch(java.io.IOException e) {
  +      jjStopStringLiteralDfa_0(3, active0);
  +      return 4;
  +   }
  +   switch(curChar)
  +   {
  +      case 99:
  +         return jjMoveStringLiteralDfa5_0(active0, 0x80300L);
  +      case 101:
  +         if ((active0 & 0x40000L) != 0L)
  +            return jjStartNfaWithStates_0(4, 18, 14);
  +         return jjMoveStringLiteralDfa5_0(active0, 0x400L);
  +      case 110:
  +         return jjMoveStringLiteralDfa5_0(active0, 0x2000L);
  +      case 111:
  +         return jjMoveStringLiteralDfa5_0(active0, 0x100080L);
  +      case 115:
  +         if ((active0 & 0x8000L) != 0L)
  +            return jjStartNfaWithStates_0(4, 15, 14);
  +         return jjMoveStringLiteralDfa5_0(active0, 0x40L);
  +      default :
  +         break;
  +   }
  +   return jjStartNfa_0(3, active0);
  +}
  +private final int jjMoveStringLiteralDfa5_0(long old0, long active0)
  +{
  +   if (((active0 &= old0)) == 0L)
  +      return jjStartNfa_0(3, old0); 
  +   try { curChar = input_stream.readChar(); }
  +   catch(java.io.IOException e) {
  +      jjStopStringLiteralDfa_0(4, active0);
  +      return 5;
  +   }
  +   switch(curChar)
  +   {
  +      case 100:
  +         if ((active0 & 0x2000L) != 0L)
  +            return jjStartNfaWithStates_0(5, 13, 14);
  +         break;
  +      case 104:
  +         if ((active0 & 0x100L) != 0L)
  +         {
  +            jjmatchedKind = 8;
  +            jjmatchedPos = 5;
  +         }
  +         return jjMoveStringLiteralDfa6_0(active0, 0x200L);
  +      case 108:
  +         return jjMoveStringLiteralDfa6_0(active0, 0x100000L);
  +      case 110:
  +         return jjMoveStringLiteralDfa6_0(active0, 0x400L);
  +      case 114:
  +         if ((active0 & 0x80L) != 0L)
  +            return jjStartNfaWithStates_0(5, 7, 14);
  +         break;
  +      case 115:
  +         if ((active0 & 0x40L) != 0L)
  +            return jjStartNfaWithStates_0(5, 6, 14);
  +         break;
  +      case 116:
  +         if ((active0 & 0x80000L) != 0L)
  +            return jjStartNfaWithStates_0(5, 19, 14);
  +         break;
  +      default :
  +         break;
  +   }
  +   return jjStartNfa_0(4, active0);
  +}
  +private final int jjMoveStringLiteralDfa6_0(long old0, long active0)
  +{
  +   if (((active0 &= old0)) == 0L)
  +      return jjStartNfa_0(4, old0); 
  +   try { curChar = input_stream.readChar(); }
  +   catch(java.io.IOException e) {
  +      jjStopStringLiteralDfa_0(5, active0);
  +      return 6;
  +   }
  +   switch(curChar)
  +   {
  +      case 101:
  +         return jjMoveStringLiteralDfa7_0(active0, 0x200L);
  +      case 115:
  +         if ((active0 & 0x100000L) != 0L)
  +            return jjStartNfaWithStates_0(6, 20, 14);
  +         break;
  +      case 116:
  +         if ((active0 & 0x400L) != 0L)
  +            return jjStartNfaWithStates_0(6, 10, 14);
  +         break;
  +      default :
  +         break;
  +   }
  +   return jjStartNfa_0(5, active0);
  +}
  +private final int jjMoveStringLiteralDfa7_0(long old0, long active0)
  +{
  +   if (((active0 &= old0)) == 0L)
  +      return jjStartNfa_0(5, old0); 
  +   try { curChar = input_stream.readChar(); }
  +   catch(java.io.IOException e) {
  +      jjStopStringLiteralDfa_0(6, active0);
  +      return 7;
  +   }
  +   switch(curChar)
  +   {
  +      case 115:
  +         if ((active0 & 0x200L) != 0L)
  +            return jjStartNfaWithStates_0(7, 9, 14);
  +         break;
  +      default :
  +         break;
  +   }
  +   return jjStartNfa_0(6, active0);
  +}
  +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 = {
  -   0x1ff00000fffffffeL, 0xffffffffffffc000L, 0xffffffffL, 0x600000000000000L
  -};
  -static final long[] jjbitVec2 = {
  -   0x0L, 0x0L, 0x0L, 0xff7fffffff7fffffL
  -};
  -static final long[] jjbitVec3 = {
  -   0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
  -};
  -static final long[] jjbitVec4 = {
  -   0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffL, 0x0L
  -};
  -static final long[] jjbitVec5 = {
  -   0xffffffffffffffffL, 0xffffffffffffffffL, 0x0L, 0x0L
  -};
  -static final long[] jjbitVec6 = {
  -   0x3fffffffffffL, 0x0L, 0x0L, 0x0L
  -};
  -static final long[] jjbitVec7 = {
  -   0xfffffffffffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
  -};
  -static final long[] jjbitVec8 = {
      0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
  -};
  -private final int jjMoveNfa_0(int startState, int curPos)
  -{
  -   int[] nextStates;
  -   int startsAt = 0;
  -   jjnewStateCnt = 14;
  -   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 14:
  -                  if ((0xf3ffefee00000000L & l) != 0L)
  -                  {
  -                     if (kind > 22)
  -                        kind = 22;
  -                     jjCheckNAdd(2);
  -                  }
  -                  if ((0xf3ffafee00000000L & l) != 0L)
  -                  {
  -                     if (kind > 23)
  -                        kind = 23;
  -                     jjCheckNAdd(9);
  -                  }
  -                  break;
  -               case 0:
  -                  if ((0xf000afee00000000L & l) != 0L)
  -                  {
  -                     if (kind > 22)
  -                        kind = 22;
  -                     jjCheckNAddTwoStates(2, 9);
  -                  }
  -                  else if ((0x3ff400000000000L & l) != 0L)
  -                     jjstateSet[jjnewStateCnt++] = 1;
  -                  if ((0x3ff000000000000L & l) != 0L)
  -                  {
  -                     if (kind > 27)
  -                        kind = 27;
  -                     jjCheckNAddStates(0, 2);
  -                  }
  -                  break;
  -               case 1:
  -                  if ((0xf000afee00000000L & l) == 0L)
  -                     break;
  -                  if (kind > 22)
  -                     kind = 22;
  -                  jjCheckNAdd(2);
  -                  break;
  -               case 2:
  -                  if ((0xf3ffefee00000000L & l) == 0L)
  -                     break;
  -                  if (kind > 22)
  -                     kind = 22;
  -                  jjCheckNAdd(2);
  -                  break;
  -               case 4:
  -                  jjAddStates(3, 5);
  -                  break;
  -               case 8:
  -                  if ((0xf000afee00000000L & l) == 0L)
  -                     break;
  -                  if (kind > 22)
  -                     kind = 22;
  -                  jjCheckNAddTwoStates(2, 9);
  -                  break;
  -               case 9:
  -                  if ((0xf3ffafee00000000L & l) == 0L)
  -                     break;
  -                  if (kind > 23)
  -                     kind = 23;
  -                  jjCheckNAdd(9);
  -                  break;
  -               case 10:
  -                  if ((0x3ff000000000000L & l) == 0L)
  -                     break;
  -                  if (kind > 27)
  -                     kind = 27;
  -                  jjCheckNAddStates(0, 2);
  -                  break;
  -               case 11:
  -                  if ((0x3ff000000000000L & l) != 0L)
  -                     jjCheckNAddTwoStates(11, 12);
  -                  break;
  -               case 12:
  -                  if ((0xf000afee00000000L & l) == 0L)
  -                     break;
  -                  if (kind > 23)
  -                     kind = 23;
  -                  jjCheckNAdd(9);
  -                  break;
  -               case 13:
  -                  if ((0x3ff000000000000L & l) == 0L)
  -                     break;
  -                  if (kind > 27)
  -                     kind = 27;
  -                  jjCheckNAdd(13);
  -                  break;
  -               default : break;
  -            }
  -         } while(i != startsAt);
  -      }
  -      else if (curChar < 128)
  -      {
  -         long l = 1L << (curChar & 077);
  -         MatchLoop: do
  -         {
  -            switch(jjstateSet[--i])
  -            {
  -               case 14:
  -                  if ((0x7ffffffffffffffeL & l) != 0L)
  -                  {
  -                     if (kind > 23)
  -                        kind = 23;
  -                     jjCheckNAdd(9);
  -                  }
  -                  if ((0x7ffffffffffffffeL & l) != 0L)
  -                  {
  -                     if (kind > 22)
  -                        kind = 22;
  -                     jjCheckNAdd(2);
  -                  }
  -                  break;
  -               case 0:
  -                  if ((0x7ffffffffffffffeL & l) != 0L)
  -                  {
  -                     if (kind > 22)
  -                        kind = 22;
  -                     jjCheckNAddTwoStates(2, 9);
  -                  }
  -                  else if (curChar == 64)
  -                     jjCheckNAddStates(3, 5);
  -                  break;
  -               case 1:
  -                  if ((0x7ffffffffffffffeL & l) == 0L)
  -                     break;
  -                  if (kind > 22)
  -                     kind = 22;
  -                  jjCheckNAdd(2);
  -                  break;
  -               case 2:
  -                  if ((0x7ffffffffffffffeL & l) == 0L)
  -                     break;
  -                  if (kind > 22)
  -                     kind = 22;
  -                  jjCheckNAdd(2);
  -                  break;
  -               case 3:
  -               case 5:
  -                  if (curChar == 64)
  -                     jjCheckNAddStates(3, 5);
  -                  break;
  -               case 4:
  -                  if ((0xfffffffffffffffeL & l) != 0L)
  -                     jjCheckNAddStates(3, 5);
  -                  break;
  -               case 6:
  -                  if (curChar == 64)
  -                     jjstateSet[jjnewStateCnt++] = 5;
  -                  break;
  -               case 7:
  -                  if (curChar == 64 && kind > 24)
  -                     kind = 24;
  -                  break;
  -               case 8:
  -                  if ((0x7ffffffffffffffeL & l) == 0L)
  -                     break;
  -                  if (kind > 22)
  -                     kind = 22;
  -                  jjCheckNAddTwoStates(2, 9);
  -                  break;
  -               case 9:
  -               case 12:
  -                  if ((0x7ffffffffffffffeL & l) == 0L)
  -                     break;
  -                  if (kind > 23)
  -                     kind = 23;
  -                  jjCheckNAdd(9);
  -                  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 14:
  -                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
  -                  {
  -                     if (kind > 22)
  -                        kind = 22;
  -                     jjCheckNAdd(2);
  -                  }
  -                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
  -                  {
  -                     if (kind > 23)
  -                        kind = 23;
  -                     jjCheckNAdd(9);
  -                  }
  -                  break;
  -               case 0:
  -                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
  -                     break;
  -                  if (kind > 22)
  -                     kind = 22;
  -                  jjCheckNAddTwoStates(2, 9);
  -                  break;
  -               case 1:
  -                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
  -                     break;
  -                  if (kind > 22)
  -                     kind = 22;
  -                  jjCheckNAdd(2);
  -                  break;
  -               case 2:
  -                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
  -                     break;
  -                  if (kind > 22)
  -                     kind = 22;
  -                  jjCheckNAdd(2);
  -                  break;
  -               case 4:
  -                  if (jjCanMove_1(hiByte, i1, i2, l1, l2))
  -                     jjAddStates(3, 5);
  -                  break;
  -               case 9:
  -               case 12:
  -                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
  -                     break;
  -                  if (kind > 23)
  -                     kind = 23;
  -                  jjCheckNAdd(9);
  -                  break;
  -               default : break;
  -            }
  -         } while(i != startsAt);
  -      }
  -      if (kind != 0x7fffffff)
  -      {
  -         jjmatchedKind = kind;
  -         jjmatchedPos = curPos;
  -         kind = 0x7fffffff;
  -      }
  -      ++curPos;
  -      if ((i = jjnewStateCnt) == (startsAt = 14 - (jjnewStateCnt = startsAt)))
  -         return curPos;
  -      try { curChar = input_stream.readChar(); }
  -      catch(java.io.IOException e) { return curPos; }
  -   }
  -}
  -private final int jjMoveStringLiteralDfa0_1()
  -{
  -   switch(curChar)
  -   {
  -      default :
  -         return 1;
  -   }
  -}
  +};
  +private final int jjMoveNfa_0(int startState, int curPos)
  +{
  +   int[] nextStates;
  +   int startsAt = 0;
  +   jjnewStateCnt = 14;
  +   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 14:
  +                  if ((0x3ff600000000000L & l) != 0L)
  +                  {
  +                     if (kind > 22)
  +                        kind = 22;
  +                     jjCheckNAdd(2);
  +                  }
  +                  if ((0x3ff200000000000L & l) != 0L)
  +                  {
  +                     if (kind > 23)
  +                        kind = 23;
  +                     jjCheckNAdd(9);
  +                  }
  +                  break;
  +               case 0:
  +                  if ((0x3ff400000000000L & l) != 0L)
  +                     jjstateSet[jjnewStateCnt++] = 1;
  +                  else if (curChar == 45)
  +                  {
  +                     if (kind > 22)
  +                        kind = 22;
  +                     jjCheckNAddTwoStates(2, 9);
  +                  }
  +                  if ((0x3ff000000000000L & l) != 0L)
  +                  {
  +                     if (kind > 27)
  +                        kind = 27;
  +                     jjCheckNAddStates(0, 2);
  +                  }
  +                  break;
  +               case 1:
  +                  if (curChar != 45)
  +                     break;
  +                  if (kind > 22)
  +                     kind = 22;
  +                  jjCheckNAdd(2);
  +                  break;
  +               case 2:
  +                  if ((0x3ff600000000000L & l) == 0L)
  +                     break;
  +                  if (kind > 22)
  +                     kind = 22;
  +                  jjCheckNAdd(2);
  +                  break;
  +               case 4:
  +                  jjAddStates(3, 5);
  +                  break;
  +               case 8:
  +                  if (curChar != 45)
  +                     break;
  +                  if (kind > 22)
  +                     kind = 22;
  +                  jjCheckNAddTwoStates(2, 9);
  +                  break;
  +               case 9:
  +                  if ((0x3ff200000000000L & l) == 0L)
  +                     break;
  +                  if (kind > 23)
  +                     kind = 23;
  +                  jjCheckNAdd(9);
  +                  break;
  +               case 10:
  +                  if ((0x3ff000000000000L & l) == 0L)
  +                     break;
  +                  if (kind > 27)
  +                     kind = 27;
  +                  jjCheckNAddStates(0, 2);
  +                  break;
  +               case 11:
  +                  if ((0x3ff000000000000L & l) != 0L)
  +                     jjCheckNAddTwoStates(11, 12);
  +                  break;
  +               case 12:
  +                  if (curChar != 45)
  +                     break;
  +                  if (kind > 23)
  +                     kind = 23;
  +                  jjCheckNAdd(9);
  +                  break;
  +               case 13:
  +                  if ((0x3ff000000000000L & l) == 0L)
  +                     break;
  +                  if (kind > 27)
  +                     kind = 27;
  +                  jjCheckNAdd(13);
  +                  break;
  +               default : break;
  +            }
  +         } while(i != startsAt);
  +      }
  +      else if (curChar < 128)
  +      {
  +         long l = 1L << (curChar & 077);
  +         MatchLoop: do
  +         {
  +            switch(jjstateSet[--i])
  +            {
  +               case 14:
  +                  if ((0x7fffffe87fffffeL & l) != 0L)
  +                  {
  +                     if (kind > 23)
  +                        kind = 23;
  +                     jjCheckNAdd(9);
  +                  }
  +                  if ((0x7fffffe87fffffeL & l) != 0L)
  +                  {
  +                     if (kind > 22)
  +                        kind = 22;
  +                     jjCheckNAdd(2);
  +                  }
  +                  break;
  +               case 0:
  +                  if ((0x7fffffe87fffffeL & l) != 0L)
  +                  {
  +                     if (kind > 22)
  +                        kind = 22;
  +                     jjCheckNAddTwoStates(2, 9);
  +                  }
  +                  else if (curChar == 64)
  +                     jjCheckNAddStates(3, 5);
  +                  break;
  +               case 1:
  +                  if ((0x7fffffe87fffffeL & l) == 0L)
  +                     break;
  +                  if (kind > 22)
  +                     kind = 22;
  +                  jjCheckNAdd(2);
  +                  break;
  +               case 2:
  +                  if ((0x7fffffe87fffffeL & l) == 0L)
  +                     break;
  +                  if (kind > 22)
  +                     kind = 22;
  +                  jjCheckNAdd(2);
  +                  break;
  +               case 3:
  +               case 5:
  +                  if (curChar == 64)
  +                     jjCheckNAddStates(3, 5);
  +                  break;
  +               case 4:
  +                  if ((0xfffffffffffffffeL & l) != 0L)
  +                     jjCheckNAddStates(3, 5);
  +                  break;
  +               case 6:
  +                  if (curChar == 64)
  +                     jjstateSet[jjnewStateCnt++] = 5;
  +                  break;
  +               case 7:
  +                  if (curChar == 64 && kind > 24)
  +                     kind = 24;
  +                  break;
  +               case 8:
  +                  if ((0x7fffffe87fffffeL & l) == 0L)
  +                     break;
  +                  if (kind > 22)
  +                     kind = 22;
  +                  jjCheckNAddTwoStates(2, 9);
  +                  break;
  +               case 9:
  +               case 12:
  +                  if ((0x7fffffe87fffffeL & l) == 0L)
  +                     break;
  +                  if (kind > 23)
  +                     kind = 23;
  +                  jjCheckNAdd(9);
  +                  break;
  +               default : break;
  +            }
  +         } while(i != startsAt);
  +      }
  +      else
  +      {
  +         int i2 = (curChar & 0xff) >> 6;
  +         long l2 = 1L << (curChar & 077);
  +         MatchLoop: do
  +         {
  +            switch(jjstateSet[--i])
  +            {
  +               case 4:
  +                  if ((jjbitVec0[i2] & l2) != 0L)
  +                     jjAddStates(3, 5);
  +                  break;
  +               default : break;
  +            }
  +         } while(i != startsAt);
  +      }
  +      if (kind != 0x7fffffff)
  +      {
  +         jjmatchedKind = kind;
  +         jjmatchedPos = curPos;
  +         kind = 0x7fffffff;
  +      }
  +      ++curPos;
  +      if ((i = jjnewStateCnt) == (startsAt = 14 - (jjnewStateCnt = startsAt)))
  +         return curPos;
  +      try { curChar = input_stream.readChar(); }
  +      catch(java.io.IOException e) { return curPos; }
  +   }
  +}
  +private final int jjMoveStringLiteralDfa0_1()
  +{
  +   switch(curChar)
  +   {
  +      default :
  +         return 1;
  +   }
  +}
   static final int[] jjnextStates = {
      11, 12, 13, 4, 6, 7, 
  -};
  -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 48:
  -         return ((jjbitVec3[i2] & l2) != 0L);
  -      case 49:
  -         return ((jjbitVec4[i2] & l2) != 0L);
  -      case 51:
  -         return ((jjbitVec5[i2] & l2) != 0L);
  -      case 61:
  -         return ((jjbitVec6[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 ((jjbitVec8[i2] & l2) != 0L);
  -      default : 
  -         if ((jjbitVec7[i1] & l1) != 0L)
  -            return true;
  -         return false;
  -   }
  -}
  -public static final String[] jjstrLiteralImages = {
  -"", null, null, null, null, null, "\141\143\143\145\163\163", 
  -"\141\165\164\150\157\162", "\142\162\141\156\143\150", "\142\162\141\156\143\150\145\163", 
  -"\143\157\155\155\145\156\164", "\144\141\164\145", "\144\145\163\143", "\145\170\160\141\156\144", 
  -"\150\145\141\144", "\154\157\143\153\163", "\154\157\147", "\156\145\170\164", 
  -"\163\164\141\164\145", "\163\164\162\151\143\164", "\163\171\155\142\157\154\163", 
  -"\164\145\170\164", null, null, null, null, null, null, "\73", "\72", "\56", };
  -public static final String[] lexStateNames = {
  -   "DEFAULT", 
  -   "PRE_DELTA", 
  -};
  +};
  +public static final String[] jjstrLiteralImages = {
  +"", null, null, null, null, null, "\141\143\143\145\163\163", 
  +"\141\165\164\150\157\162", "\142\162\141\156\143\150", "\142\162\141\156\143\150\145\163", 
  +"\143\157\155\155\145\156\164", "\144\141\164\145", "\144\145\163\143", "\145\170\160\141\156\144", 
  +"\150\145\141\144", "\154\157\143\153\163", "\154\157\147", "\156\145\170\164", 
  +"\163\164\141\164\145", "\163\164\162\151\143\164", "\163\171\155\142\157\154\163", 
  +"\164\145\170\164", null, null, null, null, null, null, "\73", "\72", "\56", };
  +public static final String[] lexStateNames = {
  +   "DEFAULT", 
  +   "PRE_DELTA", 
  +};
   public static final int[] jjnewLexState = {
      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
      -1, -1, -1, -1, -1, -1, 
  -};
  +};
   static final long[] jjtoToken = {
      0x79ffffc1L, 
  -};
  +};
   static final long[] jjtoSkip = {
      0x3eL, 
  -};
  -private JavaCharStream input_stream;
  -private final int[] jjrounds = new int[14];
  -private final int[] jjstateSet = new int[28];
  -protected char curChar;
  -public ArchiveParserTokenManager(JavaCharStream stream)
  -{
  -   if (JavaCharStream.staticFlag)
  -      throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
  -   input_stream = stream;
  -}
  -public ArchiveParserTokenManager(JavaCharStream stream, int lexState)
  -{
  -   this(stream);
  -   SwitchTo(lexState);
  -}
  -public void ReInit(JavaCharStream stream)
  -{
  -   jjmatchedPos = jjnewStateCnt = 0;
  -   curLexState = defaultLexState;
  -   input_stream = stream;
  -   ReInitRounds();
  -}
  -private final void ReInitRounds()
  -{
  -   int i;
  -   jjround = 0x80000001;
  -   for (i = 14; i-- > 0;)
  -      jjrounds[i] = 0x80000000;
  -}
  -public void ReInit(JavaCharStream 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;
  -}
  -
  -private final 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 final Token getNextToken() 
  -{
  -  int kind;
  -  Token specialToken = null;
  -  Token matchedToken;
  -  int curPos = 0;
  -
  +};
  +private SimpleCharStream input_stream;
  +private final int[] jjrounds = new int[14];
  +private final int[] jjstateSet = new int[28];
  +protected char curChar;
  +public ArchiveParserTokenManager(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 ArchiveParserTokenManager(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 = 14; 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;
  +}
  +
  +private final 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 final 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:
  -       try { input_stream.backup(0);
  -          while (curChar <= 32 && (0x100003600L & (1L << curChar)) != 0L)
  -             curChar = input_stream.BeginToken();
  -       }
  -       catch (java.io.IOException e1) { continue EOFLoop; }
  -       jjmatchedKind = 0x7fffffff;
  -       jjmatchedPos = 0;
  -       curPos = jjMoveStringLiteralDfa0_0();
  -       break;
  -     case 1:
  -       try { input_stream.backup(0);
  -          while (curChar <= 32 && (0x100003600L & (1L << curChar)) != 0L)
  -             curChar = input_stream.BeginToken();
  -       }
  -       catch (java.io.IOException e1) { continue EOFLoop; }
  -       jjmatchedKind = 0x7fffffff;
  -       jjmatchedPos = 0;
  -       curPos = jjMoveStringLiteralDfa0_1();
  -       break;
  -   }
  -     if (jjmatchedKind != 0x7fffffff)
  -     {
  -        if (jjmatchedPos + 1 < curPos)
  -           input_stream.backup(curPos - jjmatchedPos - 1);
  -        if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
  -        {
  -           matchedToken = jjFillToken();
  -       if (jjnewLexState[jjmatchedKind] != -1)
  -         curLexState = jjnewLexState[jjmatchedKind];
  -           return matchedToken;
  -        }
  -        else
  -        {
  -         if (jjnewLexState[jjmatchedKind] != -1)
  -           curLexState = jjnewLexState[jjmatchedKind];
  -           continue EOFLoop;
  -        }
  -     }
  -     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);
  -  }
  -}
  -
  -}
  +  for (;;)
  +  {   
  +   try   
  +   {     
  +      curChar = input_stream.BeginToken();
  +   }     
  +   catch(java.io.IOException e)
  +   {        
  +      jjmatchedKind = 0;
  +      matchedToken = jjFillToken();
  +      return matchedToken;
  +   }
  +
  +   switch(curLexState)
  +   {
  +     case 0:
  +       try { input_stream.backup(0);
  +          while (curChar <= 32 && (0x100003600L & (1L << curChar)) != 0L)
  +             curChar = input_stream.BeginToken();
  +       }
  +       catch (java.io.IOException e1) { continue EOFLoop; }
  +       jjmatchedKind = 0x7fffffff;
  +       jjmatchedPos = 0;
  +       curPos = jjMoveStringLiteralDfa0_0();
  +       break;
  +     case 1:
  +       try { input_stream.backup(0);
  +          while (curChar <= 32 && (0x100003600L & (1L << curChar)) != 0L)
  +             curChar = input_stream.BeginToken();
  +       }
  +       catch (java.io.IOException e1) { continue EOFLoop; }
  +       jjmatchedKind = 0x7fffffff;
  +       jjmatchedPos = 0;
  +       curPos = jjMoveStringLiteralDfa0_1();
  +       break;
  +   }
  +     if (jjmatchedKind != 0x7fffffff)
  +     {
  +        if (jjmatchedPos + 1 < curPos)
  +           input_stream.backup(curPos - jjmatchedPos - 1);
  +        if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
  +        {
  +           matchedToken = jjFillToken();
  +       if (jjnewLexState[jjmatchedKind] != -1)
  +         curLexState = jjnewLexState[jjmatchedKind];
  +           return matchedToken;
  +        }
  +        else
  +        {
  +         if (jjnewLexState[jjmatchedKind] != -1)
  +           curLexState = jjnewLexState[jjmatchedKind];
  +           continue EOFLoop;
  +        }
  +     }
  +     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.1                  jakarta-commons-sandbox/jrcs/src/java/org/apache/commons/jrcs/rcs/SimpleCharStream.java
  
  Index: SimpleCharStream.java
  ===================================================================
  /* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 2.1 */
  package org.apache.commons.jrcs.rcs;
  
  /**
   * An implementation of interface CharStream, where the stream is assumed to
   * contain only ASCII characters (without unicode processing).
   */
  
  public final class SimpleCharStream
  {
    public static final boolean staticFlag = false;
    int bufsize;
    int available;
    int tokenBegin;
    public int bufpos = -1;
    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[] buffer;
    private int maxNextCharInd = 0;
    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;
  
             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;
    }
  
    private final 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();
          }
          else
             maxNextCharInd += i;
          return;
       }
       catch(java.io.IOException e) {
          --bufpos;
          backup(0);
          if (tokenBegin == -1)
             tokenBegin = bufpos;
          throw e;
       }
    }
  
    public final char BeginToken() throws java.io.IOException
    {
       tokenBegin = -1;
       char c = readChar();
       tokenBegin = bufpos;
  
       return c;
    }
  
    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];
       }
  
       if (++bufpos >= maxNextCharInd)
          FillBuff();
  
       char c = buffer[bufpos];
  
       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 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 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()
    {
       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:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>