Author: vgritsenko Date: Sat Mar 10 19:12:10 2007 New Revision: 516847 URL: http://svn.apache.org/viewvc?view=rev&rev=516847 Log: additional debug methods
Modified: jakarta/regexp/trunk/src/java/org/apache/regexp/REDebugCompiler.java Modified: jakarta/regexp/trunk/src/java/org/apache/regexp/REDebugCompiler.java URL: http://svn.apache.org/viewvc/jakarta/regexp/trunk/src/java/org/apache/regexp/REDebugCompiler.java?view=diff&rev=516847&r1=516846&r2=516847 ============================================================================== --- jakarta/regexp/trunk/src/java/org/apache/regexp/REDebugCompiler.java (original) +++ jakarta/regexp/trunk/src/java/org/apache/regexp/REDebugCompiler.java Sat Mar 10 19:12:10 2007 @@ -54,19 +54,20 @@ hashOpcode.put(new Integer(RE.OP_CLOSE), "OP_CLOSE"); hashOpcode.put(new Integer(RE.OP_BACKREF), "OP_BACKREF"); hashOpcode.put(new Integer(RE.OP_POSIXCLASS), "OP_POSIXCLASS"); - hashOpcode.put(new Integer(RE.OP_OPEN_CLUSTER), "OP_OPEN_CLUSTER"); - hashOpcode.put(new Integer(RE.OP_CLOSE_CLUSTER), "OP_CLOSE_CLUSTER"); + hashOpcode.put(new Integer(RE.OP_OPEN_CLUSTER), "OP_OPEN_CLUSTER"); + hashOpcode.put(new Integer(RE.OP_CLOSE_CLUSTER), "OP_CLOSE_CLUSTER"); } /** * Returns a descriptive string for an opcode. + * * @param opcode Opcode to convert to a string * @return Description of opcode */ String opcodeToString(char opcode) { // Get string for opcode - String ret =(String)hashOpcode.get(new Integer(opcode)); + String ret = (String) hashOpcode.get(new Integer(opcode)); // Just in case we have a corrupt program if (ret == null) @@ -78,6 +79,7 @@ /** * Return a string describing a (possibly unprintable) character. + * * @param c Character to convert to a printable representation * @return String representation of character */ @@ -86,7 +88,7 @@ // If it's unprintable, convert to '\###' if (c < ' ' || c > 127) { - return "\\" + (int)c; + return "\\" + (int) c; } // Return the character as a string @@ -101,47 +103,76 @@ String nodeToString(int node) { // Get opcode and opdata for node - char opcode = instruction[node + RE.offsetOpcode]; - int opdata = (int)instruction[node + RE.offsetOpdata]; + char opcode = instruction[node + RE.offsetOpcode]; + int opdata = (int) instruction[node + RE.offsetOpdata]; // Return opcode as a string and opdata value return opcodeToString(opcode) + ", opdata = " + opdata; } /** + * Adds a new node + * + * @param opcode Opcode for node + * @param opdata Opdata for node (only the low 16 bits are currently used) + * @return Index of new node in program + * / + int node(char opcode, int opdata) + { + System.out.println("====> Add " + opcode + " " + opdata); + PrintWriter writer = new PrintWriter(System.out); + dumpProgram(writer); + writer.flush(); + int r = super.node(opcode, opdata); + System.out.println("====< "); + dumpProgram(writer); + writer.flush(); + return r; + }/**/ + + /** * Inserts a node with a given opcode and opdata at insertAt. The node relative next * pointer is initialized to 0. + * * @param opcode Opcode for new node * @param opdata Opdata for new node (only the low 16 bits are currently used) - * @param insertAt Index at which to insert the new node in the program * / - void nodeInsert(char opcode, int opdata, int insertAt) { - System.out.println( "====> " + opcode + " " + opdata + " " + insertAt ); - PrintWriter writer = new PrintWriter( System.out ); - dumpProgram( writer ); - super.nodeInsert( opcode, opdata, insertAt ); - System.out.println( "====< " ); - dumpProgram( writer ); + * @param insertAt Index at which to insert the new node in the program + * / + void nodeInsert(char opcode, int opdata, int insertAt) + { + System.out.println("====> Ins " + opcode + " " + opdata + " " + insertAt); + PrintWriter writer = new PrintWriter(System.out); + dumpProgram(writer); + writer.flush(); + super.nodeInsert(opcode, opdata, insertAt); + System.out.println("====< "); + dumpProgram(writer); writer.flush(); }/**/ /** - * Appends a node to the end of a node chain - * @param node Start of node chain to traverse - * @param pointTo Node to have the tail of the chain point to * / - void setNextOfEnd(int node, int pointTo) { - System.out.println( "====> " + node + " " + pointTo ); - PrintWriter writer = new PrintWriter( System.out ); - dumpProgram( writer ); - super.setNextOfEnd( node, pointTo ); - System.out.println( "====< " ); - dumpProgram( writer ); + * Appends a node to the end of a node chain + * + * @param node Start of node chain to traverse + * @param pointTo Node to have the tail of the chain point to + * / + void setNextOfEnd(int node, int pointTo) + { + System.out.println("====> Link " + node + " " + pointTo); + PrintWriter writer = new PrintWriter(System.out); + dumpProgram(writer); + writer.flush(); + super.setNextOfEnd(node, pointTo); + System.out.println("====< "); + dumpProgram(writer); writer.flush(); }/**/ /** - * Dumps the current program to a PrintWriter + * Dumps the current program to a [EMAIL PROTECTED] PrintWriter}. + * * @param p PrintWriter for program dump output */ public void dumpProgram(PrintWriter p) @@ -218,5 +249,13 @@ // Print a newline p.println(""); } + } + + /** + * Dumps the current program to a [EMAIL PROTECTED] System#out}. + */ + public void dumpProgram() + { + dumpProgram(new PrintWriter(System.out)); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]