45 Iterable<? extends Tree> trees = task.parse(); |
45 Iterable<? extends Tree> trees = task.parse(); |
46 TreeScanner<Integer,Void> scanner = new MyScanner(); |
46 TreeScanner<Integer,Void> scanner = new MyScanner(); |
47 check(scanner, 6, scanner.scan(trees, null)); |
47 check(scanner, 6, scanner.scan(trees, null)); |
48 |
48 |
49 CountNodes nodeCounter = new CountNodes(); |
49 CountNodes nodeCounter = new CountNodes(); |
50 // 383 nodes with the regular parser; 384 nodes with EndPosParser |
50 // 359 nodes with the regular parser; 360 nodes with EndPosParser |
51 // We automatically swith to EndPosParser when calling JavacTask.parse() |
51 // We automatically switch to EndPosParser when calling JavacTask.parse() |
52 check(nodeCounter, 384, nodeCounter.scan(trees, null)); |
52 check(nodeCounter, 360, nodeCounter.scan(trees, null)); |
53 |
53 |
54 CountIdentifiers idCounter = new CountIdentifiers(); |
54 CountIdentifiers idCounter = new CountIdentifiers(); |
55 check(idCounter, 106, idCounter.scan(trees, null)); |
55 check(idCounter, 107, idCounter.scan(trees, null)); |
56 } |
56 } |
57 |
57 |
58 private static void check(TreeScanner<?,?> scanner, int expect, int found) { |
58 private static void check(TreeScanner<?,?> scanner, int expect, int found) { |
59 if (found != expect) |
59 if (found != expect) |
60 throw new AssertionError(scanner.getClass().getName() + ": expected: " + expect + " found: " + found); |
60 throw new AssertionError(scanner.getClass().getName() + ": expected: " + expect + " found: " + found); |
71 public Integer reduce(Integer i1, Integer i2) { |
71 public Integer reduce(Integer i1, Integer i2) { |
72 return (i1 == null ? 0 : i1) + (i2 == null ? 0 : i2); |
72 return (i1 == null ? 0 : i1) + (i2 == null ? 0 : i2); |
73 } |
73 } |
74 } |
74 } |
75 |
75 |
76 // example from TreeScanner javadoc |
|
77 static class CountNodes extends TreeScanner<Integer,Void> { |
76 static class CountNodes extends TreeScanner<Integer,Void> { |
78 @Override |
77 @Override |
79 public Integer scan(Tree node, Void p) { |
78 public Integer scan(Tree node, Void p) { |
|
79 if (node == null) |
|
80 return 0; |
80 Integer n = super.scan(node, p); |
81 Integer n = super.scan(node, p); |
81 return (n == null ? 0 : n) + 1; |
82 return (n == null ? 0 : n) + 1; |
82 } |
83 } |
83 @Override |
84 @Override |
84 public Integer reduce(Integer r1, Integer r2) { |
85 public Integer reduce(Integer r1, Integer r2) { |