summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/analysis/TreeDumpVisitor.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/analysis/TreeDumpVisitor.java')
-rw-r--r--src/cuchaz/enigma/analysis/TreeDumpVisitor.java550
1 files changed, 550 insertions, 0 deletions
diff --git a/src/cuchaz/enigma/analysis/TreeDumpVisitor.java b/src/cuchaz/enigma/analysis/TreeDumpVisitor.java
new file mode 100644
index 0000000..32607db
--- /dev/null
+++ b/src/cuchaz/enigma/analysis/TreeDumpVisitor.java
@@ -0,0 +1,550 @@
1package cuchaz.enigma.analysis;
2
3import com.strobel.componentmodel.Key;
4import com.strobel.decompiler.languages.java.ast.Annotation;
5import com.strobel.decompiler.languages.java.ast.AnonymousObjectCreationExpression;
6import com.strobel.decompiler.languages.java.ast.ArrayCreationExpression;
7import com.strobel.decompiler.languages.java.ast.ArrayInitializerExpression;
8import com.strobel.decompiler.languages.java.ast.ArraySpecifier;
9import com.strobel.decompiler.languages.java.ast.AssertStatement;
10import com.strobel.decompiler.languages.java.ast.AssignmentExpression;
11import com.strobel.decompiler.languages.java.ast.AstNode;
12import com.strobel.decompiler.languages.java.ast.BinaryOperatorExpression;
13import com.strobel.decompiler.languages.java.ast.BlockStatement;
14import com.strobel.decompiler.languages.java.ast.BreakStatement;
15import com.strobel.decompiler.languages.java.ast.CaseLabel;
16import com.strobel.decompiler.languages.java.ast.CastExpression;
17import com.strobel.decompiler.languages.java.ast.CatchClause;
18import com.strobel.decompiler.languages.java.ast.ClassOfExpression;
19import com.strobel.decompiler.languages.java.ast.Comment;
20import com.strobel.decompiler.languages.java.ast.CompilationUnit;
21import com.strobel.decompiler.languages.java.ast.ComposedType;
22import com.strobel.decompiler.languages.java.ast.ConditionalExpression;
23import com.strobel.decompiler.languages.java.ast.ConstructorDeclaration;
24import com.strobel.decompiler.languages.java.ast.ContinueStatement;
25import com.strobel.decompiler.languages.java.ast.DoWhileStatement;
26import com.strobel.decompiler.languages.java.ast.EmptyStatement;
27import com.strobel.decompiler.languages.java.ast.EnumValueDeclaration;
28import com.strobel.decompiler.languages.java.ast.ExpressionStatement;
29import com.strobel.decompiler.languages.java.ast.FieldDeclaration;
30import com.strobel.decompiler.languages.java.ast.ForEachStatement;
31import com.strobel.decompiler.languages.java.ast.ForStatement;
32import com.strobel.decompiler.languages.java.ast.GotoStatement;
33import com.strobel.decompiler.languages.java.ast.IAstVisitor;
34import com.strobel.decompiler.languages.java.ast.Identifier;
35import com.strobel.decompiler.languages.java.ast.IdentifierExpression;
36import com.strobel.decompiler.languages.java.ast.IfElseStatement;
37import com.strobel.decompiler.languages.java.ast.ImportDeclaration;
38import com.strobel.decompiler.languages.java.ast.IndexerExpression;
39import com.strobel.decompiler.languages.java.ast.InstanceInitializer;
40import com.strobel.decompiler.languages.java.ast.InstanceOfExpression;
41import com.strobel.decompiler.languages.java.ast.InvocationExpression;
42import com.strobel.decompiler.languages.java.ast.JavaTokenNode;
43import com.strobel.decompiler.languages.java.ast.Keys;
44import com.strobel.decompiler.languages.java.ast.LabelStatement;
45import com.strobel.decompiler.languages.java.ast.LabeledStatement;
46import com.strobel.decompiler.languages.java.ast.LambdaExpression;
47import com.strobel.decompiler.languages.java.ast.LocalTypeDeclarationStatement;
48import com.strobel.decompiler.languages.java.ast.MemberReferenceExpression;
49import com.strobel.decompiler.languages.java.ast.MethodDeclaration;
50import com.strobel.decompiler.languages.java.ast.MethodGroupExpression;
51import com.strobel.decompiler.languages.java.ast.NewLineNode;
52import com.strobel.decompiler.languages.java.ast.NullReferenceExpression;
53import com.strobel.decompiler.languages.java.ast.ObjectCreationExpression;
54import com.strobel.decompiler.languages.java.ast.PackageDeclaration;
55import com.strobel.decompiler.languages.java.ast.ParameterDeclaration;
56import com.strobel.decompiler.languages.java.ast.ParenthesizedExpression;
57import com.strobel.decompiler.languages.java.ast.PrimitiveExpression;
58import com.strobel.decompiler.languages.java.ast.ReturnStatement;
59import com.strobel.decompiler.languages.java.ast.SimpleType;
60import com.strobel.decompiler.languages.java.ast.SuperReferenceExpression;
61import com.strobel.decompiler.languages.java.ast.SwitchSection;
62import com.strobel.decompiler.languages.java.ast.SwitchStatement;
63import com.strobel.decompiler.languages.java.ast.SynchronizedStatement;
64import com.strobel.decompiler.languages.java.ast.TextNode;
65import com.strobel.decompiler.languages.java.ast.ThisReferenceExpression;
66import com.strobel.decompiler.languages.java.ast.ThrowStatement;
67import com.strobel.decompiler.languages.java.ast.TryCatchStatement;
68import com.strobel.decompiler.languages.java.ast.TypeDeclaration;
69import com.strobel.decompiler.languages.java.ast.TypeParameterDeclaration;
70import com.strobel.decompiler.languages.java.ast.TypeReferenceExpression;
71import com.strobel.decompiler.languages.java.ast.UnaryOperatorExpression;
72import com.strobel.decompiler.languages.java.ast.VariableDeclarationStatement;
73import com.strobel.decompiler.languages.java.ast.VariableInitializer;
74import com.strobel.decompiler.languages.java.ast.WhileStatement;
75import com.strobel.decompiler.languages.java.ast.WildcardType;
76import com.strobel.decompiler.patterns.Pattern;
77
78public class TreeDumpVisitor implements IAstVisitor<Void, Void>
79{
80 private Void recurse( AstNode node, Void ignored )
81 {
82 // show the tree
83 System.out.println( getIndent( node ) + node.getClass().getSimpleName() + dumpUserData( node ) + " " + node.getRegion() );
84
85 // recurse
86 for( final AstNode child : node.getChildren() )
87 {
88 child.acceptVisitor( this, ignored );
89 }
90 return null;
91 }
92
93 private String dumpUserData( AstNode node )
94 {
95 StringBuilder buf = new StringBuilder();
96 for( Key<?> key : Keys.ALL_KEYS )
97 {
98 Object val = node.getUserData( key );
99 if( val != null )
100 {
101 buf.append( String.format( " [%s=%s]", key, val ) );
102 }
103 }
104 return buf.toString();
105 }
106
107 private String getIndent( AstNode node )
108 {
109 StringBuilder buf = new StringBuilder();
110 int depth = getDepth( node );
111 for( int i = 0; i < depth; i++ )
112 {
113 buf.append( "\t" );
114 }
115 return buf.toString();
116 }
117
118 private int getDepth( AstNode node )
119 {
120 int depth = -1;
121 while( node != null )
122 {
123 depth++;
124 node = node.getParent();
125 }
126 return depth;
127 }
128
129 // OVERRIDES WE DON'T CARE ABOUT
130
131 @Override
132 public Void visitInvocationExpression( InvocationExpression node, Void ignored )
133 {
134 return recurse( node, ignored );
135 }
136
137 @Override
138 public Void visitMemberReferenceExpression( MemberReferenceExpression node, Void ignored )
139 {
140 return recurse( node, ignored );
141 }
142
143 @Override
144 public Void visitSimpleType( SimpleType node, Void ignored )
145 {
146 return recurse( node, ignored );
147 }
148
149 @Override
150 public Void visitMethodDeclaration( MethodDeclaration node, Void ignored )
151 {
152 return recurse( node, ignored );
153 }
154
155 @Override
156 public Void visitConstructorDeclaration( ConstructorDeclaration node, Void ignored )
157 {
158 return recurse( node, ignored );
159 }
160
161 @Override
162 public Void visitParameterDeclaration( ParameterDeclaration node, Void ignored )
163 {
164 return recurse( node, ignored );
165 }
166
167 @Override
168 public Void visitFieldDeclaration( FieldDeclaration node, Void ignored )
169 {
170 return recurse( node, ignored );
171 }
172
173 @Override
174 public Void visitTypeDeclaration( TypeDeclaration node, Void ignored )
175 {
176 return recurse( node, ignored );
177 }
178
179 @Override
180 public Void visitComment( Comment node, Void ignored )
181 {
182 return recurse( node, ignored );
183 }
184
185 @Override
186 public Void visitPatternPlaceholder( AstNode node, Pattern pattern, Void ignored )
187 {
188 return recurse( node, ignored );
189 }
190
191 @Override
192 public Void visitTypeReference( TypeReferenceExpression node, Void ignored )
193 {
194 return recurse( node, ignored );
195 }
196
197 @Override
198 public Void visitJavaTokenNode( JavaTokenNode node, Void ignored )
199 {
200 return recurse( node, ignored );
201 }
202
203 @Override
204 public Void visitIdentifier( Identifier node, Void ignored )
205 {
206 return recurse( node, ignored );
207 }
208
209 @Override
210 public Void visitNullReferenceExpression( NullReferenceExpression node, Void ignored )
211 {
212 return recurse( node, ignored );
213 }
214
215 @Override
216 public Void visitThisReferenceExpression( ThisReferenceExpression node, Void ignored )
217 {
218 return recurse( node, ignored );
219 }
220
221 @Override
222 public Void visitSuperReferenceExpression( SuperReferenceExpression node, Void ignored )
223 {
224 return recurse( node, ignored );
225 }
226
227 @Override
228 public Void visitClassOfExpression( ClassOfExpression node, Void ignored )
229 {
230 return recurse( node, ignored );
231 }
232
233 @Override
234 public Void visitBlockStatement( BlockStatement node, Void ignored )
235 {
236 return recurse( node, ignored );
237 }
238
239 @Override
240 public Void visitExpressionStatement( ExpressionStatement node, Void ignored )
241 {
242 return recurse( node, ignored );
243 }
244
245 @Override
246 public Void visitBreakStatement( BreakStatement node, Void ignored )
247 {
248 return recurse( node, ignored );
249 }
250
251 @Override
252 public Void visitContinueStatement( ContinueStatement node, Void ignored )
253 {
254 return recurse( node, ignored );
255 }
256
257 @Override
258 public Void visitDoWhileStatement( DoWhileStatement node, Void ignored )
259 {
260 return recurse( node, ignored );
261 }
262
263 @Override
264 public Void visitEmptyStatement( EmptyStatement node, Void ignored )
265 {
266 return recurse( node, ignored );
267 }
268
269 @Override
270 public Void visitIfElseStatement( IfElseStatement node, Void ignored )
271 {
272 return recurse( node, ignored );
273 }
274
275 @Override
276 public Void visitLabelStatement( LabelStatement node, Void ignored )
277 {
278 return recurse( node, ignored );
279 }
280
281 @Override
282 public Void visitLabeledStatement( LabeledStatement node, Void ignored )
283 {
284 return recurse( node, ignored );
285 }
286
287 @Override
288 public Void visitReturnStatement( ReturnStatement node, Void ignored )
289 {
290 return recurse( node, ignored );
291 }
292
293 @Override
294 public Void visitSwitchStatement( SwitchStatement node, Void ignored )
295 {
296 return recurse( node, ignored );
297 }
298
299 @Override
300 public Void visitSwitchSection( SwitchSection node, Void ignored )
301 {
302 return recurse( node, ignored );
303 }
304
305 @Override
306 public Void visitCaseLabel( CaseLabel node, Void ignored )
307 {
308 return recurse( node, ignored );
309 }
310
311 @Override
312 public Void visitThrowStatement( ThrowStatement node, Void ignored )
313 {
314 return recurse( node, ignored );
315 }
316
317 @Override
318 public Void visitCatchClause( CatchClause node, Void ignored )
319 {
320 return recurse( node, ignored );
321 }
322
323 @Override
324 public Void visitAnnotation( Annotation node, Void ignored )
325 {
326 return recurse( node, ignored );
327 }
328
329 @Override
330 public Void visitNewLine( NewLineNode node, Void ignored )
331 {
332 return recurse( node, ignored );
333 }
334
335 @Override
336 public Void visitVariableDeclaration( VariableDeclarationStatement node, Void ignored )
337 {
338 return recurse( node, ignored );
339 }
340
341 @Override
342 public Void visitVariableInitializer( VariableInitializer node, Void ignored )
343 {
344 return recurse( node, ignored );
345 }
346
347 @Override
348 public Void visitText( TextNode node, Void ignored )
349 {
350 return recurse( node, ignored );
351 }
352
353 @Override
354 public Void visitImportDeclaration( ImportDeclaration node, Void ignored )
355 {
356 return recurse( node, ignored );
357 }
358
359 @Override
360 public Void visitInitializerBlock( InstanceInitializer node, Void ignored )
361 {
362 return recurse( node, ignored );
363 }
364
365 @Override
366 public Void visitTypeParameterDeclaration( TypeParameterDeclaration node, Void ignored )
367 {
368 return recurse( node, ignored );
369 }
370
371 @Override
372 public Void visitCompilationUnit( CompilationUnit node, Void ignored )
373 {
374 return recurse( node, ignored );
375 }
376
377 @Override
378 public Void visitPackageDeclaration( PackageDeclaration node, Void ignored )
379 {
380 return recurse( node, ignored );
381 }
382
383 @Override
384 public Void visitArraySpecifier( ArraySpecifier node, Void ignored )
385 {
386 return recurse( node, ignored );
387 }
388
389 @Override
390 public Void visitComposedType( ComposedType node, Void ignored )
391 {
392 return recurse( node, ignored );
393 }
394
395 @Override
396 public Void visitWhileStatement( WhileStatement node, Void ignored )
397 {
398 return recurse( node, ignored );
399 }
400
401 @Override
402 public Void visitPrimitiveExpression( PrimitiveExpression node, Void ignored )
403 {
404 return recurse( node, ignored );
405 }
406
407 @Override
408 public Void visitCastExpression( CastExpression node, Void ignored )
409 {
410 return recurse( node, ignored );
411 }
412
413 @Override
414 public Void visitBinaryOperatorExpression( BinaryOperatorExpression node, Void ignored )
415 {
416 return recurse( node, ignored );
417 }
418
419 @Override
420 public Void visitInstanceOfExpression( InstanceOfExpression node, Void ignored )
421 {
422 return recurse( node, ignored );
423 }
424
425 @Override
426 public Void visitIndexerExpression( IndexerExpression node, Void ignored )
427 {
428 return recurse( node, ignored );
429 }
430
431 @Override
432 public Void visitIdentifierExpression( IdentifierExpression node, Void ignored )
433 {
434 return recurse( node, ignored );
435 }
436
437 @Override
438 public Void visitUnaryOperatorExpression( UnaryOperatorExpression node, Void ignored )
439 {
440 return recurse( node, ignored );
441 }
442
443 @Override
444 public Void visitConditionalExpression( ConditionalExpression node, Void ignored )
445 {
446 return recurse( node, ignored );
447 }
448
449 @Override
450 public Void visitArrayInitializerExpression( ArrayInitializerExpression node, Void ignored )
451 {
452 return recurse( node, ignored );
453 }
454
455 @Override
456 public Void visitObjectCreationExpression( ObjectCreationExpression node, Void ignored )
457 {
458 return recurse( node, ignored );
459 }
460
461 @Override
462 public Void visitArrayCreationExpression( ArrayCreationExpression node, Void ignored )
463 {
464 return recurse( node, ignored );
465 }
466
467 @Override
468 public Void visitAssignmentExpression( AssignmentExpression node, Void ignored )
469 {
470 return recurse( node, ignored );
471 }
472
473 @Override
474 public Void visitForStatement( ForStatement node, Void ignored )
475 {
476 return recurse( node, ignored );
477 }
478
479 @Override
480 public Void visitForEachStatement( ForEachStatement node, Void ignored )
481 {
482 return recurse( node, ignored );
483 }
484
485 @Override
486 public Void visitTryCatchStatement( TryCatchStatement node, Void ignored )
487 {
488 return recurse( node, ignored );
489 }
490
491 @Override
492 public Void visitGotoStatement( GotoStatement node, Void ignored )
493 {
494 return recurse( node, ignored );
495 }
496
497 @Override
498 public Void visitParenthesizedExpression( ParenthesizedExpression node, Void ignored )
499 {
500 return recurse( node, ignored );
501 }
502
503 @Override
504 public Void visitSynchronizedStatement( SynchronizedStatement node, Void ignored )
505 {
506 return recurse( node, ignored );
507 }
508
509 @Override
510 public Void visitAnonymousObjectCreationExpression( AnonymousObjectCreationExpression node, Void ignored )
511 {
512 return recurse( node, ignored );
513 }
514
515 @Override
516 public Void visitWildcardType( WildcardType node, Void ignored )
517 {
518 return recurse( node, ignored );
519 }
520
521 @Override
522 public Void visitMethodGroupExpression( MethodGroupExpression node, Void ignored )
523 {
524 return recurse( node, ignored );
525 }
526
527 @Override
528 public Void visitEnumValueDeclaration( EnumValueDeclaration node, Void ignored )
529 {
530 return recurse( node, ignored );
531 }
532
533 @Override
534 public Void visitAssertStatement( AssertStatement node, Void ignored )
535 {
536 return recurse( node, ignored );
537 }
538
539 @Override
540 public Void visitLambdaExpression( LambdaExpression node, Void ignored )
541 {
542 return recurse( node, ignored );
543 }
544
545 @Override
546 public Void visitLocalTypeDeclarationStatement( LocalTypeDeclarationStatement node, Void ignored )
547 {
548 return recurse( node, ignored );
549 }
550}