1 8 package org.codehaus.aspectwerkz.annotation.expression; 9 10 import org.codehaus.aspectwerkz.annotation.expression.ast.ASTAnnotation; 11 import org.codehaus.aspectwerkz.annotation.expression.ast.ASTArray; 12 import org.codehaus.aspectwerkz.annotation.expression.ast.ASTBoolean; 13 import org.codehaus.aspectwerkz.annotation.expression.ast.ASTChar; 14 import org.codehaus.aspectwerkz.annotation.expression.ast.ASTFloat; 15 import org.codehaus.aspectwerkz.annotation.expression.ast.ASTHex; 16 import org.codehaus.aspectwerkz.annotation.expression.ast.ASTIdentifier; 17 import org.codehaus.aspectwerkz.annotation.expression.ast.ASTInteger; 18 import org.codehaus.aspectwerkz.annotation.expression.ast.ASTKeyValuePair; 19 import org.codehaus.aspectwerkz.annotation.expression.ast.ASTOct; 20 import org.codehaus.aspectwerkz.annotation.expression.ast.ASTRoot; 21 import org.codehaus.aspectwerkz.annotation.expression.ast.ASTString; 22 import org.codehaus.aspectwerkz.annotation.expression.ast.AnnotationParserVisitor; 23 import org.codehaus.aspectwerkz.annotation.expression.ast.SimpleNode; 24 25 28 public class DumpVisitor implements AnnotationParserVisitor { 29 private ASTRoot m_root; 30 31 private int indent = 0; 32 33 private DumpVisitor(final ASTRoot root) { 34 m_root = root; 35 } 36 37 public static void dumpAST(final ASTRoot root) { 38 DumpVisitor dumper = new DumpVisitor(root); 39 dumper.visit(dumper.m_root, null); 40 } 41 42 public Object visit(SimpleNode node, Object data) { 43 System.out.println(indentString() + node); 44 ++indent; 45 int nr = node.jjtGetNumChildren(); 46 for (int i = 0; i < nr; i++) { 47 data = node.jjtGetChild(i).jjtAccept(this, data); 48 } 49 --indent; 50 return data; 51 } 52 53 public Object visit(ASTRoot node, Object data) { 54 System.out.println(indentString() + node); 55 ++indent; 56 int nr = node.jjtGetNumChildren(); 57 for (int i = 0; i < nr; i++) { 58 data = node.jjtGetChild(i).jjtAccept(this, data); 59 } 60 --indent; 61 return data; 62 } 63 64 public Object visit(ASTAnnotation node, Object data) { 65 System.out.println(indentString() + node); 66 ++indent; 67 int nr = node.jjtGetNumChildren(); 68 for (int i = 0; i < nr; i++) { 69 data = node.jjtGetChild(i).jjtAccept(this, data); 70 } 71 --indent; 72 return data; 73 } 74 75 public Object visit(ASTKeyValuePair node, Object data) { 76 System.out.println(indentString() + node); 77 ++indent; 78 int nr = node.jjtGetNumChildren(); 79 for (int i = 0; i < nr; i++) { 80 data = node.jjtGetChild(i).jjtAccept(this, data); 81 } 82 --indent; 83 return data; 84 } 85 86 public Object visit(ASTArray node, Object data) { 87 System.out.println(indentString() + node); 88 ++indent; 89 int nr = node.jjtGetNumChildren(); 90 for (int i = 0; i < nr; i++) { 91 data = node.jjtGetChild(i).jjtAccept(this, data); 92 } 93 --indent; 94 return data; 95 } 96 97 public Object visit(ASTIdentifier node, Object data) { 98 System.out.println(indentString() + node); 99 return data; 100 } 101 102 public Object visit(ASTBoolean node, Object data) { 103 System.out.println(indentString() + node); 104 return data; 105 } 106 107 public Object visit(ASTChar node, Object data) { 108 System.out.println(indentString() + node); 109 return data; 110 } 111 112 public Object visit(ASTString node, Object data) { 113 System.out.println(indentString() + node); 114 return data; 115 } 116 117 public Object visit(ASTInteger node, Object data) { 118 System.out.println(indentString() + node); 119 return data; 120 } 121 122 public Object visit(ASTFloat node, Object data) { 123 System.out.println(indentString() + node); 124 return data; 125 } 126 127 public Object visit(ASTHex node, Object data) { 128 System.out.println(indentString() + node); 129 return data; 130 } 131 132 public Object visit(ASTOct node, Object data) { 133 System.out.println(indentString() + node); 134 return data; 135 } 136 137 private String indentString() { 138 StringBuffer sb = new StringBuffer (); 139 for (int i = 0; i < indent; ++i) { 140 sb.append(" "); 141 } 142 return sb.toString(); 143 } 144 } | Popular Tags |