Mercurial > hg > graal-compiler
comparison graal/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/impl/DefaultASTPrinter.java @ 16547:36bc37806c61
extract methods in DefaultASTPrinter
author | Christian Wirth <christian.wirth@oracle.com> |
---|---|
date | Thu, 17 Jul 2014 11:49:10 +0200 |
parents | 50d79ad439f1 |
children | e3c95cbbb50c |
comparison
equal
deleted
inserted
replaced
16546:d5e6c3793309 | 16547:36bc37806c61 |
---|---|
64 return; | 64 return; |
65 } | 65 } |
66 | 66 |
67 p.print(nodeName(node)); | 67 p.print(nodeName(node)); |
68 | 68 |
69 String sep = ""; | |
70 p.print("("); | 69 p.print("("); |
71 | 70 |
72 final SourceSection src = node.getSourceSection(); | 71 final SourceSection src = node.getSourceSection(); |
73 if (src != null) { | 72 if (src != null) { |
74 if (!(src instanceof NullSourceSection)) { | 73 if (!(src instanceof NullSourceSection)) { |
75 p.print(src.getSource().getName() + ":" + src.getStartLine()); | 74 p.print(src.getSource().getName() + ":" + src.getStartLine()); |
76 } | 75 } |
77 } | 76 } |
78 if (node instanceof SyntaxTagged) { | 77 if (node instanceof SyntaxTagged) { |
79 final SyntaxTagged taggedNode = (SyntaxTagged) node; | 78 printSyntaxTagged(p, (SyntaxTagged) node); |
80 p.print("["); | |
81 String prefix = ""; | |
82 for (SyntaxTag tag : taggedNode.getSyntaxTags()) { | |
83 p.print(prefix); | |
84 prefix = ","; | |
85 p.print(tag.toString()); | |
86 } | |
87 p.print("]"); | |
88 } | 79 } |
89 | 80 |
90 ArrayList<NodeField> childFields = new ArrayList<>(); | 81 ArrayList<NodeField> childFields = new ArrayList<>(); |
91 | 82 |
92 for (NodeField field : NodeClass.get(node.getClass()).getFields()) { | 83 for (NodeField field : NodeClass.get(node.getClass()).getFields()) { |
117 if (value == null) { | 108 if (value == null) { |
118 printNewLine(p, level); | 109 printNewLine(p, level); |
119 p.print(field.getName()); | 110 p.print(field.getName()); |
120 p.print(" = null "); | 111 p.print(" = null "); |
121 } else if (field.getKind() == NodeFieldKind.CHILD) { | 112 } else if (field.getKind() == NodeFieldKind.CHILD) { |
122 final Node valueNode = (Node) value; | 113 printChild(p, maxDepth, markNode, level, field, value); |
123 printNewLine(p, level, valueNode == markNode); | |
124 p.print(field.getName()); | |
125 p.print(" = "); | |
126 printTree(p, valueNode, maxDepth, markNode, level + 1); | |
127 } else if (field.getKind() == NodeFieldKind.CHILDREN) { | 114 } else if (field.getKind() == NodeFieldKind.CHILDREN) { |
128 printNewLine(p, level); | 115 printChildren(p, maxDepth, markNode, level, field, value); |
129 p.print(field.getName()); | |
130 Node[] children = (Node[]) value; | |
131 p.print(" = ["); | |
132 sep = ""; | |
133 for (Node child : children) { | |
134 p.print(sep); | |
135 sep = ", "; | |
136 printTree(p, child, maxDepth, markNode, level + 1); | |
137 } | |
138 p.print("]"); | |
139 } else { | 116 } else { |
140 printNewLine(p, level); | 117 printNewLine(p, level); |
141 p.print(field.getName()); | 118 p.print(field.getName()); |
142 } | 119 } |
143 } | 120 } |
144 printNewLine(p, level - 1); | 121 printNewLine(p, level - 1); |
145 p.print("}"); | 122 p.print("}"); |
146 } | 123 } |
147 } | 124 } |
125 } | |
126 | |
127 private static void printSyntaxTagged(PrintWriter p, final SyntaxTagged taggedNode) { | |
128 p.print("["); | |
129 String prefix = ""; | |
130 for (SyntaxTag tag : taggedNode.getSyntaxTags()) { | |
131 p.print(prefix); | |
132 prefix = ","; | |
133 p.print(tag.toString()); | |
134 } | |
135 p.print("]"); | |
136 } | |
137 | |
138 private static void printChildren(PrintWriter p, int maxDepth, Node markNode, int level, NodeField field, Object value) { | |
139 printNewLine(p, level); | |
140 p.print(field.getName()); | |
141 Node[] children = (Node[]) value; | |
142 p.print(" = ["); | |
143 String sep = ""; | |
144 for (Node child : children) { | |
145 p.print(sep); | |
146 sep = ", "; | |
147 printTree(p, child, maxDepth, markNode, level + 1); | |
148 } | |
149 p.print("]"); | |
150 } | |
151 | |
152 private static void printChild(PrintWriter p, int maxDepth, Node markNode, int level, NodeField field, Object value) { | |
153 final Node valueNode = (Node) value; | |
154 printNewLine(p, level, valueNode == markNode); | |
155 p.print(field.getName()); | |
156 p.print(" = "); | |
157 printTree(p, valueNode, maxDepth, markNode, level + 1); | |
148 } | 158 } |
149 | 159 |
150 private static void printNewLine(PrintWriter p, int level, boolean mark) { | 160 private static void printNewLine(PrintWriter p, int level, boolean mark) { |
151 p.println(); | 161 p.println(); |
152 for (int i = 0; i < level; i++) { | 162 for (int i = 0; i < level; i++) { |