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++) {