OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import '../tokens/token.dart' show BeginGroupToken, Token; | 5 import '../tokens/token.dart' show BeginGroupToken, Token; |
6 import '../util/util.dart'; | 6 import '../util/util.dart'; |
7 import 'nodes.dart'; | 7 import 'nodes.dart'; |
8 | 8 |
9 /** | 9 /** |
10 * Pretty-prints Node tree in XML-like format. | 10 * Pretty-prints Node tree in XML-like format. |
(...skipping 29 matching lines...) Expand all Loading... |
40 node.visitChildren(this); | 40 node.visitChildren(this); |
41 closeNode(); | 41 closeNode(); |
42 } | 42 } |
43 | 43 |
44 visitAssert(Assert node) { | 44 visitAssert(Assert node) { |
45 visitNodeWithChildren(node, "Assert"); | 45 visitNodeWithChildren(node, "Assert"); |
46 } | 46 } |
47 | 47 |
48 visitAsyncModifier(AsyncModifier node) { | 48 visitAsyncModifier(AsyncModifier node) { |
49 openAndCloseNode(node, "AsyncModifier", | 49 openAndCloseNode(node, "AsyncModifier", |
50 {'asyncToken': node.asyncToken, | 50 {'asyncToken': node.asyncToken, 'starToken': node.starToken}); |
51 'starToken': node.starToken}); | |
52 } | 51 } |
53 | 52 |
54 visitBlock(Block node) { | 53 visitBlock(Block node) { |
55 visitNodeWithChildren(node, "Block"); | 54 visitNodeWithChildren(node, "Block"); |
56 } | 55 } |
57 | 56 |
58 visitBreakStatement(BreakStatement node) { | 57 visitBreakStatement(BreakStatement node) { |
59 visitNodeWithChildren(node, "BreakStatement"); | 58 visitNodeWithChildren(node, "BreakStatement"); |
60 } | 59 } |
61 | 60 |
62 visitCascade(Cascade node) { | 61 visitCascade(Cascade node) { |
63 visitNodeWithChildren(node, "Cascade"); | 62 visitNodeWithChildren(node, "Cascade"); |
64 } | 63 } |
65 | 64 |
66 visitCascadeReceiver(CascadeReceiver node) { | 65 visitCascadeReceiver(CascadeReceiver node) { |
67 visitNodeWithChildren(node, "CascadeReceiver"); | 66 visitNodeWithChildren(node, "CascadeReceiver"); |
68 } | 67 } |
69 | 68 |
70 visitCaseMatch(CaseMatch node) { | 69 visitCaseMatch(CaseMatch node) { |
71 visitNodeWithChildren(node, "CaseMatch"); | 70 visitNodeWithChildren(node, "CaseMatch"); |
72 } | 71 } |
73 | 72 |
74 visitCatchBlock(CatchBlock node) { | 73 visitCatchBlock(CatchBlock node) { |
75 visitNodeWithChildren(node, "CatchBlock"); | 74 visitNodeWithChildren(node, "CatchBlock"); |
76 } | 75 } |
77 | 76 |
78 visitClassNode(ClassNode node) { | 77 visitClassNode(ClassNode node) { |
79 openNode(node, "ClassNode", { | 78 openNode(node, "ClassNode", |
80 "extendsKeyword" : tokenToStringOrNull(node.extendsKeyword) | 79 {"extendsKeyword": tokenToStringOrNull(node.extendsKeyword)}); |
81 }); | |
82 visitChildNode(node.name, "name"); | 80 visitChildNode(node.name, "name"); |
83 visitChildNode(node.superclass, "superclass"); | 81 visitChildNode(node.superclass, "superclass"); |
84 visitChildNode(node.interfaces, "interfaces"); | 82 visitChildNode(node.interfaces, "interfaces"); |
85 visitChildNode(node.typeParameters, "typeParameters"); | 83 visitChildNode(node.typeParameters, "typeParameters"); |
86 closeNode(); | 84 closeNode(); |
87 } | 85 } |
88 | 86 |
89 visitConditional(Conditional node) { | 87 visitConditional(Conditional node) { |
90 visitNodeWithChildren(node, "Conditional"); | 88 visitNodeWithChildren(node, "Conditional"); |
91 } | 89 } |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 openNode(node, "ForIn"); | 130 openNode(node, "ForIn"); |
133 node.visitChildren(this); | 131 node.visitChildren(this); |
134 closeNode(); | 132 closeNode(); |
135 } | 133 } |
136 | 134 |
137 visitFunctionDeclaration(FunctionDeclaration node) { | 135 visitFunctionDeclaration(FunctionDeclaration node) { |
138 visitNodeWithChildren(node, "FunctionDeclaration"); | 136 visitNodeWithChildren(node, "FunctionDeclaration"); |
139 } | 137 } |
140 | 138 |
141 visitFunctionExpression(FunctionExpression node) { | 139 visitFunctionExpression(FunctionExpression node) { |
142 openNode(node, "FunctionExpression", { | 140 openNode(node, "FunctionExpression", |
143 "getOrSet" : tokenToStringOrNull(node.getOrSet) | 141 {"getOrSet": tokenToStringOrNull(node.getOrSet)}); |
144 }); | |
145 visitChildNode(node.modifiers, "modifiers"); | 142 visitChildNode(node.modifiers, "modifiers"); |
146 visitChildNode(node.returnType, "returnType"); | 143 visitChildNode(node.returnType, "returnType"); |
147 visitChildNode(node.name, "name"); | 144 visitChildNode(node.name, "name"); |
148 visitChildNode(node.parameters, "parameters"); | 145 visitChildNode(node.parameters, "parameters"); |
149 visitChildNode(node.initializers, "initializers"); | 146 visitChildNode(node.initializers, "initializers"); |
150 visitChildNode(node.body, "body"); | 147 visitChildNode(node.body, "body"); |
151 closeNode(); | 148 closeNode(); |
152 } | 149 } |
153 | 150 |
154 visitIdentifier(Identifier node) { | 151 visitIdentifier(Identifier node) { |
155 openAndCloseNode(node, "Identifier", {"token" : node.token}); | 152 openAndCloseNode(node, "Identifier", {"token": node.token}); |
156 } | 153 } |
157 | 154 |
158 visitIf(If node) { | 155 visitIf(If node) { |
159 visitNodeWithChildren(node, "If"); | 156 visitNodeWithChildren(node, "If"); |
160 } | 157 } |
161 | 158 |
162 visitLabel(Label node) { | 159 visitLabel(Label node) { |
163 visitNodeWithChildren(node, "Label"); | 160 visitNodeWithChildren(node, "Label"); |
164 } | 161 } |
165 | 162 |
166 visitLabeledStatement(LabeledStatement node) { | 163 visitLabeledStatement(LabeledStatement node) { |
167 visitNodeWithChildren(node, "LabeledStatement"); | 164 visitNodeWithChildren(node, "LabeledStatement"); |
168 } | 165 } |
169 | 166 |
170 // Custom. | 167 // Custom. |
171 printLiteral(Literal node, String type) { | 168 printLiteral(Literal node, String type) { |
172 openAndCloseNode(node, type, {"value" : node.value.toString()}); | 169 openAndCloseNode(node, type, {"value": node.value.toString()}); |
173 } | 170 } |
174 | 171 |
175 visitLiteralBool(LiteralBool node) { | 172 visitLiteralBool(LiteralBool node) { |
176 printLiteral(node, "LiteralBool"); | 173 printLiteral(node, "LiteralBool"); |
177 } | 174 } |
178 | 175 |
179 visitLiteralDouble(LiteralDouble node) { | 176 visitLiteralDouble(LiteralDouble node) { |
180 printLiteral(node, "LiteralDouble"); | 177 printLiteral(node, "LiteralDouble"); |
181 } | 178 } |
182 | 179 |
183 visitLiteralInt(LiteralInt node) { | 180 visitLiteralInt(LiteralInt node) { |
184 printLiteral(node, "LiteralInt"); | 181 printLiteral(node, "LiteralInt"); |
185 } | 182 } |
186 | 183 |
187 /** Returns token string value or [:null:] if token is [:null:]. */ | 184 /** Returns token string value or [:null:] if token is [:null:]. */ |
188 tokenToStringOrNull(Token token) => token == null ? null : token.stringValue; | 185 tokenToStringOrNull(Token token) => token == null ? null : token.stringValue; |
189 | 186 |
190 visitLiteralList(LiteralList node) { | 187 visitLiteralList(LiteralList node) { |
191 openNode(node, "LiteralList", { | 188 openNode(node, "LiteralList", |
192 "constKeyword" : tokenToStringOrNull(node.constKeyword) | 189 {"constKeyword": tokenToStringOrNull(node.constKeyword)}); |
193 }); | |
194 visitChildNode(node.typeArguments, "typeArguments"); | 190 visitChildNode(node.typeArguments, "typeArguments"); |
195 visitChildNode(node.elements, "elements"); | 191 visitChildNode(node.elements, "elements"); |
196 closeNode(); | 192 closeNode(); |
197 } | 193 } |
198 | 194 |
199 visitLiteralMap(LiteralMap node) { | 195 visitLiteralMap(LiteralMap node) { |
200 visitNodeWithChildren(node, "LiteralMap"); | 196 visitNodeWithChildren(node, "LiteralMap"); |
201 } | 197 } |
202 | 198 |
203 visitLiteralMapEntry(LiteralMapEntry node) { | 199 visitLiteralMapEntry(LiteralMapEntry node) { |
204 visitNodeWithChildren(node, "LiteralMapEntry"); | 200 visitNodeWithChildren(node, "LiteralMapEntry"); |
205 } | 201 } |
206 | 202 |
207 visitLiteralNull(LiteralNull node) { | 203 visitLiteralNull(LiteralNull node) { |
208 printLiteral(node, "LiteralNull"); | 204 printLiteral(node, "LiteralNull"); |
209 } | 205 } |
210 | 206 |
211 visitLiteralString(LiteralString node) { | 207 visitLiteralString(LiteralString node) { |
212 openAndCloseNode(node, "LiteralString", | 208 openAndCloseNode(node, "LiteralString", {"value": node.token}); |
213 {"value" : node.token}); | |
214 } | 209 } |
215 | 210 |
216 visitMixinApplication(MixinApplication node) { | 211 visitMixinApplication(MixinApplication node) { |
217 visitNodeWithChildren(node, "MixinApplication"); | 212 visitNodeWithChildren(node, "MixinApplication"); |
218 } | 213 } |
219 | 214 |
220 visitModifiers(Modifiers node) { | 215 visitModifiers(Modifiers node) { |
221 visitNodeWithChildren(node, "Modifiers"); | 216 visitNodeWithChildren(node, "Modifiers"); |
222 } | 217 } |
223 | 218 |
224 visitNamedArgument(NamedArgument node) { | 219 visitNamedArgument(NamedArgument node) { |
225 visitNodeWithChildren(node, "NamedArgument"); | 220 visitNodeWithChildren(node, "NamedArgument"); |
226 } | 221 } |
227 | 222 |
228 visitNamedMixinApplication(NamedMixinApplication node) { | 223 visitNamedMixinApplication(NamedMixinApplication node) { |
229 visitNodeWithChildren(node, "NamedMixinApplication"); | 224 visitNodeWithChildren(node, "NamedMixinApplication"); |
230 } | 225 } |
231 | 226 |
232 visitNewExpression(NewExpression node) { | 227 visitNewExpression(NewExpression node) { |
233 visitNodeWithChildren(node, "NewExpression"); | 228 visitNodeWithChildren(node, "NewExpression"); |
234 } | 229 } |
235 | 230 |
236 visitNodeList(NodeList node) { | 231 visitNodeList(NodeList node) { |
237 var params = { "delimiter" : node.delimiter }; | 232 var params = {"delimiter": node.delimiter}; |
238 if (node.isEmpty) { | 233 if (node.isEmpty) { |
239 openAndCloseNode(node, "NodeList", params); | 234 openAndCloseNode(node, "NodeList", params); |
240 } else { | 235 } else { |
241 openNode(node, "NodeList", params); | 236 openNode(node, "NodeList", params); |
242 node.visitChildren(this); | 237 node.visitChildren(this); |
243 closeNode(); | 238 closeNode(); |
244 } | 239 } |
245 } | 240 } |
246 | 241 |
247 visitOperator(Operator node) { | 242 visitOperator(Operator node) { |
248 openAndCloseNode(node, "Operator", {"value" : node.token}); | 243 openAndCloseNode(node, "Operator", {"value": node.token}); |
249 } | 244 } |
250 | 245 |
251 visitParenthesizedExpression(ParenthesizedExpression node) { | 246 visitParenthesizedExpression(ParenthesizedExpression node) { |
252 visitNodeWithChildren(node, "ParenthesizedExpression"); | 247 visitNodeWithChildren(node, "ParenthesizedExpression"); |
253 } | 248 } |
254 | 249 |
255 visitRedirectingFactoryBody(RedirectingFactoryBody node) { | 250 visitRedirectingFactoryBody(RedirectingFactoryBody node) { |
256 openNode(node, "RedirectingFactoryBody"); | 251 openNode(node, "RedirectingFactoryBody"); |
257 visitChildNode(node.constructorReference, "constructorReference"); | 252 visitChildNode(node.constructorReference, "constructorReference"); |
258 closeNode(); | 253 closeNode(); |
(...skipping 21 matching lines...) Expand all Loading... |
280 sb.write("<$fieldName>\n"); | 275 sb.write("<$fieldName>\n"); |
281 pushTag(fieldName); | 276 pushTag(fieldName); |
282 node.accept(this); | 277 node.accept(this); |
283 popTag(); | 278 popTag(); |
284 addCurrentIndent(); | 279 addCurrentIndent(); |
285 sb.write("</$fieldName>\n"); | 280 sb.write("</$fieldName>\n"); |
286 } | 281 } |
287 | 282 |
288 openSendNodeWithFields(Send node, String type) { | 283 openSendNodeWithFields(Send node, String type) { |
289 openNode(node, type, { | 284 openNode(node, type, { |
290 "isPrefix" : "${node.isPrefix}", | 285 "isPrefix": "${node.isPrefix}", |
291 "isPostfix" : "${node.isPostfix}", | 286 "isPostfix": "${node.isPostfix}", |
292 "isIndex" : "${node.isIndex}" | 287 "isIndex": "${node.isIndex}" |
293 }); | 288 }); |
294 visitChildNode(node.receiver, "receiver"); | 289 visitChildNode(node.receiver, "receiver"); |
295 visitChildNode(node.selector, "selector"); | 290 visitChildNode(node.selector, "selector"); |
296 visitChildNode(node.argumentsNode, "argumentsNode"); | 291 visitChildNode(node.argumentsNode, "argumentsNode"); |
297 } | 292 } |
298 | 293 |
299 visitSend(Send node) { | 294 visitSend(Send node) { |
300 openSendNodeWithFields(node, "Send"); | 295 openSendNodeWithFields(node, "Send"); |
301 closeNode(); | 296 closeNode(); |
302 } | 297 } |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 visitChildNode(node.modifiers, "modifiers"); | 364 visitChildNode(node.modifiers, "modifiers"); |
370 visitChildNode(node.definitions, "definitions"); | 365 visitChildNode(node.definitions, "definitions"); |
371 closeNode(); | 366 closeNode(); |
372 } | 367 } |
373 | 368 |
374 visitWhile(While node) { | 369 visitWhile(While node) { |
375 visitNodeWithChildren(node, "While"); | 370 visitNodeWithChildren(node, "While"); |
376 } | 371 } |
377 | 372 |
378 visitMetadata(Metadata node) { | 373 visitMetadata(Metadata node) { |
379 openNode(node, "Metadata", { | 374 openNode(node, "Metadata", {"token": node.token}); |
380 "token": node.token | |
381 }); | |
382 visitChildNode(node.expression, "expression"); | 375 visitChildNode(node.expression, "expression"); |
383 closeNode(); | 376 closeNode(); |
384 } | 377 } |
385 | 378 |
386 visitCombinator(Combinator node) { | 379 visitCombinator(Combinator node) { |
387 openNode(node, "Combinator", {"isShow" : "${node.isShow}", | 380 openNode(node, "Combinator", |
388 "isHide" : "${node.isHide}"}); | 381 {"isShow": "${node.isShow}", "isHide": "${node.isHide}"}); |
389 closeNode(); | 382 closeNode(); |
390 } | 383 } |
391 | 384 |
392 visitExport(Export node) { | 385 visitExport(Export node) { |
393 openNode(node, "Export"); | 386 openNode(node, "Export"); |
394 visitChildNode(node.uri, "uri"); | 387 visitChildNode(node.uri, "uri"); |
395 if (node.conditionalUris != null) { | 388 if (node.conditionalUris != null) { |
396 visitChildNode(node.conditionalUris, "conditionalUris"); | 389 visitChildNode(node.conditionalUris, "conditionalUris"); |
397 } | 390 } |
398 visitChildNode(node.combinators, "combinators"); | 391 visitChildNode(node.combinators, "combinators"); |
399 closeNode(); | 392 closeNode(); |
400 } | 393 } |
401 | 394 |
402 visitImport(Import node) { | 395 visitImport(Import node) { |
403 openNode(node, "Import", { | 396 openNode(node, "Import", {"isDeferred": "${node.isDeferred}"}); |
404 "isDeferred" : "${node.isDeferred}"}); | |
405 visitChildNode(node.uri, "uri"); | 397 visitChildNode(node.uri, "uri"); |
406 if (node.conditionalUris != null) { | 398 if (node.conditionalUris != null) { |
407 visitChildNode(node.conditionalUris, "conditionalUris"); | 399 visitChildNode(node.conditionalUris, "conditionalUris"); |
408 } | 400 } |
409 visitChildNode(node.combinators, "combinators"); | 401 visitChildNode(node.combinators, "combinators"); |
410 if (node.prefix != null) { | 402 if (node.prefix != null) { |
411 visitChildNode(node.prefix, "prefix"); | 403 visitChildNode(node.prefix, "prefix"); |
412 } | 404 } |
413 closeNode(); | 405 closeNode(); |
414 } | 406 } |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
472 } | 464 } |
473 | 465 |
474 visitGotoStatement(GotoStatement node) { | 466 visitGotoStatement(GotoStatement node) { |
475 unimplemented('visitNode', node: node); | 467 unimplemented('visitNode', node: node); |
476 } | 468 } |
477 | 469 |
478 unimplemented(String message, {Node node}) { | 470 unimplemented(String message, {Node node}) { |
479 throw message; | 471 throw message; |
480 } | 472 } |
481 } | 473 } |
OLD | NEW |