| 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 part of js_ast; | 5 part of js_ast; |
| 6 | 6 |
| 7 abstract class NodeVisitor<T> { | 7 abstract class NodeVisitor<T> { |
| 8 T visitProgram(Program node); | 8 T visitProgram(Program node); |
| 9 | 9 |
| 10 T visitBlock(Block node); | 10 T visitBlock(Block node); |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 var context = new SimpleJavaScriptPrintingContext(); | 238 var context = new SimpleJavaScriptPrintingContext(); |
| 239 var opts = new JavaScriptPrintingOptions(allowKeywordsInProperties: true); | 239 var opts = new JavaScriptPrintingOptions(allowKeywordsInProperties: true); |
| 240 context.buffer.write('js_ast `'); | 240 context.buffer.write('js_ast `'); |
| 241 accept(new Printer(opts, context)); | 241 accept(new Printer(opts, context)); |
| 242 context.buffer.write('`'); | 242 context.buffer.write('`'); |
| 243 return context.getText(); | 243 return context.getText(); |
| 244 } | 244 } |
| 245 } | 245 } |
| 246 | 246 |
| 247 class Program extends Node { | 247 class Program extends Node { |
| 248 /// Script tag hash-bang, e.g. `#!/usr/bin/env node` |
| 249 final String scriptTag; |
| 250 |
| 251 /// Top-level statements in the program. |
| 248 final List<Statement> body; | 252 final List<Statement> body; |
| 249 Program(this.body); | 253 |
| 254 Program(this.body, {this.scriptTag}); |
| 250 | 255 |
| 251 accept(NodeVisitor visitor) => visitor.visitProgram(this); | 256 accept(NodeVisitor visitor) => visitor.visitProgram(this); |
| 252 void visitChildren(NodeVisitor visitor) { | 257 void visitChildren(NodeVisitor visitor) { |
| 253 for (Statement statement in body) statement.accept(visitor); | 258 for (Statement statement in body) statement.accept(visitor); |
| 254 } | 259 } |
| 255 Program _clone() => new Program(body); | 260 Program _clone() => new Program(body); |
| 256 } | 261 } |
| 257 | 262 |
| 258 abstract class Statement extends Node { | 263 abstract class Statement extends Node { |
| 259 Statement toStatement() => this; | 264 Statement toStatement() => this; |
| (...skipping 1269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1529 final Expression expression; | 1534 final Expression expression; |
| 1530 | 1535 |
| 1531 CommentExpression(this.comment, this.expression); | 1536 CommentExpression(this.comment, this.expression); |
| 1532 | 1537 |
| 1533 int get precedenceLevel => PRIMARY; | 1538 int get precedenceLevel => PRIMARY; |
| 1534 accept(NodeVisitor visitor) => visitor.visitCommentExpression(this); | 1539 accept(NodeVisitor visitor) => visitor.visitCommentExpression(this); |
| 1535 CommentExpression _clone() => new CommentExpression(comment, expression); | 1540 CommentExpression _clone() => new CommentExpression(comment, expression); |
| 1536 | 1541 |
| 1537 void visitChildren(NodeVisitor visitor) => expression.accept(visitor); | 1542 void visitChildren(NodeVisitor visitor) => expression.accept(visitor); |
| 1538 } | 1543 } |
| OLD | NEW |