1 8 package org.codehaus.aspectwerkz.expression; 9 10 import org.codehaus.aspectwerkz.expression.ast.ASTAnd; 11 import org.codehaus.aspectwerkz.expression.ast.ASTAttribute; 12 import org.codehaus.aspectwerkz.expression.ast.ASTCall; 13 import org.codehaus.aspectwerkz.expression.ast.ASTCflow; 14 import org.codehaus.aspectwerkz.expression.ast.ASTCflowBelow; 15 import org.codehaus.aspectwerkz.expression.ast.ASTClassPattern; 16 import org.codehaus.aspectwerkz.expression.ast.ASTConstructorPattern; 17 import org.codehaus.aspectwerkz.expression.ast.ASTExecution; 18 import org.codehaus.aspectwerkz.expression.ast.ASTExpression; 19 import org.codehaus.aspectwerkz.expression.ast.ASTFieldPattern; 20 import org.codehaus.aspectwerkz.expression.ast.ASTGet; 21 import org.codehaus.aspectwerkz.expression.ast.ASTHandler; 22 import org.codehaus.aspectwerkz.expression.ast.ASTMethodPattern; 23 import org.codehaus.aspectwerkz.expression.ast.ASTModifier; 24 import org.codehaus.aspectwerkz.expression.ast.ASTNot; 25 import org.codehaus.aspectwerkz.expression.ast.ASTOr; 26 import org.codehaus.aspectwerkz.expression.ast.ASTParameter; 27 import org.codehaus.aspectwerkz.expression.ast.ASTPointcutReference; 28 import org.codehaus.aspectwerkz.expression.ast.ASTRoot; 29 import org.codehaus.aspectwerkz.expression.ast.ASTSet; 30 import org.codehaus.aspectwerkz.expression.ast.ASTStaticInitialization; 31 import org.codehaus.aspectwerkz.expression.ast.ASTWithin; 32 import org.codehaus.aspectwerkz.expression.ast.ASTWithinCode; 33 import org.codehaus.aspectwerkz.expression.ast.ExpressionParserVisitor; 34 import org.codehaus.aspectwerkz.expression.ast.SimpleNode; 35 import org.codehaus.aspectwerkz.expression.ast.ASTArgs; 36 import org.codehaus.aspectwerkz.expression.ast.ASTArgParameter; 37 import org.codehaus.aspectwerkz.expression.ast.ASTHasField; 38 import org.codehaus.aspectwerkz.expression.ast.ASTHasMethod; 39 import org.codehaus.aspectwerkz.expression.ast.ASTTarget; 40 import org.codehaus.aspectwerkz.expression.ast.ASTThis; 41 import org.codehaus.aspectwerkz.expression.ast.Node; 42 43 49 public class DumpVisitor implements ExpressionParserVisitor { 50 private Node m_root; 51 52 private int indent = 0; 53 54 private DumpVisitor(final Node root) { 55 m_root = root; 56 } 57 58 public static void dumpAST(final Node root) { 59 DumpVisitor dumper = new DumpVisitor(root); 60 dumper.visit((SimpleNode)dumper.m_root, null); 61 } 62 63 public Object visit(SimpleNode node, Object data) { 64 System.out.println(indentString() + node); 65 ++indent; 66 data = node.jjtGetChild(0).jjtAccept(this, data); 67 --indent; 68 return data; 69 } 70 71 public Object visit(ASTRoot node, Object data) { 72 System.out.println(indentString() + node); 73 ++indent; 74 data = node.jjtGetChild(0).jjtAccept(this, data); 75 --indent; 76 return data; 77 } 78 79 public Object visit(ASTExpression node, Object data) { 80 System.out.println(indentString() + node); 81 ++indent; 82 data = node.jjtGetChild(0).jjtAccept(this, data); 83 --indent; 84 return data; 85 } 86 87 public Object visit(ASTOr node, Object data) { 88 System.out.println(indentString() + node); 89 ++indent; 90 for (int i = 0; i < node.jjtGetNumChildren(); i++) { 91 data = node.jjtGetChild(i).jjtAccept(this, data); 92 } 93 --indent; 94 return data; 95 } 96 97 public Object visit(ASTAnd node, Object data) { 98 System.out.println(indentString() + node); 99 ++indent; 100 for (int i = 0; i < node.jjtGetNumChildren(); i++) { 101 data = node.jjtGetChild(i).jjtAccept(this, data); 102 } 103 --indent; 104 return data; 105 } 106 107 public Object visit(ASTNot node, Object data) { 108 System.out.println(indentString() + node); 109 ++indent; 110 data = node.jjtGetChild(0).jjtAccept(this, data); 111 --indent; 112 return data; 113 } 114 115 public Object visit(ASTExecution node, Object data) { 116 System.out.println(indentString() + node); 117 ++indent; 118 data = node.jjtGetChild(0).jjtAccept(this, data); 119 --indent; 120 return data; 121 } 122 123 public Object visit(ASTCall node, Object data) { 124 System.out.println(indentString() + node); 125 ++indent; 126 data = node.jjtGetChild(0).jjtAccept(this, data); 127 --indent; 128 return data; 129 } 130 131 public Object visit(ASTSet node, Object data) { 132 System.out.println(indentString() + node); 133 ++indent; 134 data = node.jjtGetChild(0).jjtAccept(this, data); 135 --indent; 136 return data; 137 } 138 139 public Object visit(ASTGet node, Object data) { 140 System.out.println(indentString() + node); 141 ++indent; 142 data = node.jjtGetChild(0).jjtAccept(this, data); 143 --indent; 144 return data; 145 } 146 147 public Object visit(ASTHandler node, Object data) { 148 System.out.println(indentString() + node); 149 ++indent; 150 data = node.jjtGetChild(0).jjtAccept(this, data); 151 --indent; 152 return data; 153 } 154 155 public Object visit(ASTWithin node, Object data) { 156 System.out.println(indentString() + node); 157 ++indent; 158 data = node.jjtGetChild(0).jjtAccept(this, data); 159 --indent; 160 return data; 161 } 162 163 public Object visit(ASTWithinCode node, Object data) { 164 System.out.println(indentString() + node); 165 ++indent; 166 data = node.jjtGetChild(0).jjtAccept(this, data); 167 --indent; 168 return data; 169 } 170 171 public Object visit(ASTStaticInitialization node, Object data) { 172 System.out.println(indentString() + node); 173 ++indent; 174 data = node.jjtGetChild(0).jjtAccept(this, data); 175 --indent; 176 return data; 177 } 178 179 public Object visit(ASTCflow node, Object data) { 180 System.out.println(indentString() + node); 181 ++indent; 182 data = node.jjtGetChild(0).jjtAccept(this, data); 183 --indent; 184 return data; 185 } 186 187 public Object visit(ASTCflowBelow node, Object data) { 188 System.out.println(indentString() + node); 189 ++indent; 190 data = node.jjtGetChild(0).jjtAccept(this, data); 191 --indent; 192 return data; 193 } 194 195 196 public Object visit(ASTHasMethod node, Object data) { 197 System.out.println(indentString() + node); 198 ++indent; 199 data = node.jjtGetChild(0).jjtAccept(this, data); 200 --indent; 201 return data; 202 } 203 204 205 public Object visit(ASTHasField node, Object data) { 206 System.out.println(indentString() + node); 207 ++indent; 208 data = node.jjtGetChild(0).jjtAccept(this, data); 209 --indent; 210 return data; 211 } 212 213 public Object visit(ASTTarget node, Object data) { 214 System.out.println(indentString() + node); 215 ++indent; 216 System.out.println(node.getIdentifier()); 217 --indent; 218 return data; 219 } 220 221 public Object visit(ASTThis node, Object data) { 222 System.out.println(indentString() + node); 223 ++indent; 224 System.out.println(node.getIdentifier()); 225 --indent; 226 return data; 227 } 228 229 public Object visit(ASTClassPattern node, Object data) { 230 System.out.println(indentString() + node); 231 ++indent; 232 int nr = node.jjtGetNumChildren(); 233 for (int i = 0; i < nr; i++) { 234 data = node.jjtGetChild(i).jjtAccept(this, data); 235 } 236 --indent; 237 return data; 238 } 239 240 public Object visit(ASTMethodPattern node, Object data) { 241 System.out.println(indentString() + node); 242 ++indent; 243 int nr = node.jjtGetNumChildren(); 244 for (int i = 0; i < nr; i++) { 245 data = node.jjtGetChild(i).jjtAccept(this, data); 246 } 247 --indent; 248 return data; 249 } 250 251 public Object visit(ASTConstructorPattern node, Object data) { 252 System.out.println(indentString() + node); 253 ++indent; 254 int nr = node.jjtGetNumChildren(); 255 for (int i = 0; i < nr; i++) { 256 data = node.jjtGetChild(i).jjtAccept(this, data); 257 } 258 --indent; 259 return data; 260 } 261 262 public Object visit(ASTFieldPattern node, Object data) { 263 System.out.println(indentString() + node); 264 ++indent; 265 int nr = node.jjtGetNumChildren(); 266 for (int i = 0; i < nr; i++) { 267 data = node.jjtGetChild(i).jjtAccept(this, data); 268 } 269 --indent; 270 return data; 271 } 272 273 public Object visit(ASTPointcutReference node, Object data) { 274 System.out.println(indentString() + node); 275 return data; 276 } 277 278 public Object visit(ASTParameter node, Object data) { 279 System.out.println(indentString() + node); 280 return data; 281 } 282 283 public Object visit(ASTArgs node, Object data) { 284 System.out.println(indentString() + node); 285 ++indent; 286 if (node.jjtGetNumChildren() > 0) { 287 data = node.jjtGetChild(0).jjtAccept(this, data); 288 } 289 --indent; 290 return data; 291 } 292 293 public Object visit(ASTArgParameter node, Object data) { 294 System.out.println(indentString() + node); 295 return data; 296 } 297 298 public Object visit(ASTAttribute node, Object data) { 299 System.out.println(indentString() + node); 300 return data; 301 } 302 303 public Object visit(ASTModifier node, Object data) { 304 System.out.println(indentString() + node); 305 return data; 306 } 307 308 private String indentString() { 309 StringBuffer sb = new StringBuffer (); 310 for (int i = 0; i < indent; ++i) { 311 sb.append(" "); 312 } 313 return sb.toString(); 314 } 315 } | Popular Tags |