home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2005 July / PCpro_2005_07.ISO / files / wintools / FullSync / FullSyncInstaller.exe / org / apache / regexp / REDebugCompiler.class (.txt) < prev    next >
Encoding:
Java Class File  |  2005-03-08  |  2.3 KB  |  97 lines

  1. package org.apache.regexp;
  2.  
  3. import java.io.PrintWriter;
  4. import java.util.Hashtable;
  5.  
  6. public class REDebugCompiler extends RECompiler {
  7.    static Hashtable hashOpcode = new Hashtable();
  8.  
  9.    String opcodeToString(char var1) {
  10.       String var2 = (String)hashOpcode.get(new Integer(var1));
  11.       if (var2 == null) {
  12.          var2 = "OP_????";
  13.       }
  14.  
  15.       return var2;
  16.    }
  17.  
  18.    String charToString(char var1) {
  19.       return var1 >= ' ' && var1 <= 127 ? String.valueOf(var1) : "\\" + var1;
  20.    }
  21.  
  22.    String nodeToString(int var1) {
  23.       char var2 = super.instruction[var1 + 0];
  24.       char var3 = super.instruction[var1 + 1];
  25.       return this.opcodeToString(var2) + ", opdata = " + var3;
  26.    }
  27.  
  28.    public void dumpProgram(PrintWriter var1) {
  29.       for(int var2 = 0; var2 < super.lenInstruction; var1.println("")) {
  30.          char var3 = super.instruction[var2 + 0];
  31.          char var4 = super.instruction[var2 + 1];
  32.          short var5 = (short)super.instruction[var2 + 2];
  33.          var1.print(var2 + ". " + this.nodeToString(var2) + ", next = ");
  34.          if (var5 == 0) {
  35.             var1.print("none");
  36.          } else {
  37.             var1.print(var2 + var5);
  38.          }
  39.  
  40.          var2 += 3;
  41.          if (var3 == '[') {
  42.             var1.print(", [");
  43.             char var6 = var4;
  44.  
  45.             for(int var7 = 0; var7 < var6; ++var7) {
  46.                char var8 = super.instruction[var2++];
  47.                char var9 = super.instruction[var2++];
  48.                if (var8 == var9) {
  49.                   var1.print(this.charToString(var8));
  50.                } else {
  51.                   var1.print(this.charToString(var8) + "-" + this.charToString(var9));
  52.                }
  53.             }
  54.  
  55.             var1.print("]");
  56.          }
  57.  
  58.          if (var3 == 'A') {
  59.             var1.print(", \"");
  60.             int var11 = var4;
  61.  
  62.             while(var11-- != 0) {
  63.                var1.print(this.charToString(super.instruction[var2++]));
  64.             }
  65.  
  66.             var1.print("\"");
  67.          }
  68.       }
  69.  
  70.    }
  71.  
  72.    static {
  73.       hashOpcode.put(new Integer(56), "OP_RELUCTANTSTAR");
  74.       hashOpcode.put(new Integer(61), "OP_RELUCTANTPLUS");
  75.       hashOpcode.put(new Integer(47), "OP_RELUCTANTMAYBE");
  76.       hashOpcode.put(new Integer(69), "OP_END");
  77.       hashOpcode.put(new Integer(94), "OP_BOL");
  78.       hashOpcode.put(new Integer(36), "OP_EOL");
  79.       hashOpcode.put(new Integer(46), "OP_ANY");
  80.       hashOpcode.put(new Integer(91), "OP_ANYOF");
  81.       hashOpcode.put(new Integer(124), "OP_BRANCH");
  82.       hashOpcode.put(new Integer(65), "OP_ATOM");
  83.       hashOpcode.put(new Integer(42), "OP_STAR");
  84.       hashOpcode.put(new Integer(43), "OP_PLUS");
  85.       hashOpcode.put(new Integer(63), "OP_MAYBE");
  86.       hashOpcode.put(new Integer(78), "OP_NOTHING");
  87.       hashOpcode.put(new Integer(71), "OP_GOTO");
  88.       hashOpcode.put(new Integer(92), "OP_ESCAPE");
  89.       hashOpcode.put(new Integer(40), "OP_OPEN");
  90.       hashOpcode.put(new Integer(41), "OP_CLOSE");
  91.       hashOpcode.put(new Integer(35), "OP_BACKREF");
  92.       hashOpcode.put(new Integer(80), "OP_POSIXCLASS");
  93.       hashOpcode.put(new Integer(60), "OP_OPEN_CLUSTER");
  94.       hashOpcode.put(new Integer(62), "OP_CLOSE_CLUSTER");
  95.    }
  96. }
  97.