Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(165)

Side by Side Diff: dart/lib/compiler/implementation/tree/nodes.dart

Issue 10933093: Revert "Parse new library syntax." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 abstract class Visitor<R> { 5 abstract class Visitor<R> {
6 R visitBlock(Block node); 6 R visitBlock(Block node);
7 R visitBreakStatement(BreakStatement node); 7 R visitBreakStatement(BreakStatement node);
8 R visitCascade(Cascade node); 8 R visitCascade(Cascade node);
9 R visitCascadeReceiver(CascadeReceiver node); 9 R visitCascadeReceiver(CascadeReceiver node);
10 R visitCaseMatch(CaseMatch node); 10 R visitCaseMatch(CaseMatch node);
(...skipping 1575 matching lines...) Expand 10 before | Expand all | Expand 10 after
1586 visitChildren(Visitor visitor) { 1586 visitChildren(Visitor visitor) {
1587 tag.accept(visitor); 1587 tag.accept(visitor);
1588 argument.accept(visitor); 1588 argument.accept(visitor);
1589 if (prefixIdentifier !== null) prefixIdentifier.accept(visitor); 1589 if (prefixIdentifier !== null) prefixIdentifier.accept(visitor);
1590 if (prefix !== null) prefix.accept(visitor); 1590 if (prefix !== null) prefix.accept(visitor);
1591 } 1591 }
1592 1592
1593 Token getBeginToken() => beginToken; 1593 Token getBeginToken() => beginToken;
1594 1594
1595 Token getEndToken() => endToken; 1595 Token getEndToken() => endToken;
1596
1597 LibraryTag toLibraryTag() {
1598 if (isImport()) {
1599 Identifier prefixNode;
1600 if (prefix !== null) {
1601 SourceString source = prefix.dartString.source;
1602 Token token = new StringToken.fromSource(IDENTIFIER_INFO, source,
1603 prefix.token.charOffset);
1604 token.next = prefix.token.next;
1605 prefixNode = new Identifier(token);
1606 }
1607 return new Import(tag.token, argument, prefixNode, null);
1608 } else if (isLibrary()) {
1609 return new LibraryName(tag.token, argument);
1610 } else if (isSource()) {
1611 return new Part(tag.token, argument);
1612 } else {
1613 throw 'Unknown script tag ${tag.token.slowToString()}';
1614 }
1615 }
1616 }
1617
1618 class LibraryTag extends Node {
1619 bool get isLibraryName => false;
1620 bool get isImport => false;
1621 bool get isExport => false;
1622 bool get isPart => false;
1623 }
1624
1625 class LibraryName extends LibraryTag {
1626 final Expression name;
1627
1628 final Token libraryKeyword;
1629
1630 LibraryName(this.libraryKeyword, this.name);
1631
1632 bool get isLibraryName => true;
1633
1634 LibraryName asLibraryName() => this;
1635
1636 accept(Visitor visitor) => visitor.visitLibraryName(this);
1637
1638 visitChildren(Visitor visitor) => name.accept(visitor);
1639
1640 Token getBeginToken() => libraryKeyword;
1641
1642 Token getEndToken() => name.getEndToken().next;
1643 }
1644
1645 class Import extends LibraryTag {
1646 final LiteralString uri;
1647 final Identifier prefix;
1648 final NodeList combinators;
1649
1650 final Token importKeyword;
1651
1652 Import(this.importKeyword, this.uri, this.prefix, this.combinators);
1653
1654 bool get isImport => true;
1655
1656 Import asImport() => this;
1657
1658 accept(Visitor visitor) => visitor.visitImport(this);
1659
1660 visitChildren(Visitor visitor) {
1661 uri.accept(visitor);
1662 if (prefix !== null) prefix.accept(visitor);
1663 if (combinators !== null) combinators.accept(visitor);
1664 }
1665
1666 Token getBeginToken() => importKeyword;
1667
1668 Token getEndToken() {
1669 if (combinators !== null) return combinators.getEndToken().next;
1670 if (prefix !== null) return prefix.getEndToken().next;
1671 return uri.getEndToken().next;
1672 }
1673 }
1674
1675 class Export extends LibraryTag {
1676 final LiteralString uri;
1677 final NodeList combinators;
1678
1679 final Token exportKeyword;
1680
1681 Export(this.exportKeyword, this.uri, this.combinators);
1682
1683 bool get isExport => true;
1684
1685 Export asExport() => this;
1686
1687 accept(Visitor visitor) => visitor.visitExport(this);
1688
1689 visitChildren(Visitor visitor) {
1690 uri.accept(visitor);
1691 if (combinators !== null) combinators.accept(visitor);
1692 }
1693
1694 Token getBeginToken() => exportKeyword;
1695
1696 Token getEndToken() {
1697 if (combinators !== null) return combinators.getEndToken().next;
1698 return uri.getEndToken().next;
1699 }
1700 }
1701
1702 class Part extends LibraryTag {
1703 final LiteralString uri;
1704
1705 final Token partKeyword;
1706
1707 Part(this.partKeyword, this.uri);
1708
1709 bool get isPart => true;
1710
1711 Part asPart() => this;
1712
1713 accept(Visitor visitor) => visitor.visitPart(this);
1714
1715 visitChildren(Visitor visitor) => uri.accept(visitor);
1716
1717 Token getBeginToken() => partKeyword;
1718
1719 Token getEndToken() => uri.getEndToken().next;
1720 } 1596 }
1721 1597
1722 class Typedef extends Node { 1598 class Typedef extends Node {
1723 final TypeAnnotation returnType; 1599 final TypeAnnotation returnType;
1724 final Identifier name; 1600 final Identifier name;
1725 final NodeList typeParameters; 1601 final NodeList typeParameters;
1726 final NodeList formals; 1602 final NodeList formals;
1727 1603
1728 final Token typedefKeyword; 1604 final Token typedefKeyword;
1729 final Token endToken; 1605 final Token endToken;
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
1893 * argument). 1769 * argument).
1894 * 1770 *
1895 * TODO(ahe): This method is controversial, the team needs to discuss 1771 * TODO(ahe): This method is controversial, the team needs to discuss
1896 * if top-level methods are acceptable and what naming conventions to 1772 * if top-level methods are acceptable and what naming conventions to
1897 * use. 1773 * use.
1898 */ 1774 */
1899 initializerDo(Node node, f(Node node)) { 1775 initializerDo(Node node, f(Node node)) {
1900 SendSet send = node.asSendSet(); 1776 SendSet send = node.asSendSet();
1901 if (send !== null) return f(send.arguments.head); 1777 if (send !== null) return f(send.arguments.head);
1902 } 1778 }
OLDNEW
« no previous file with comments | « dart/lib/compiler/implementation/scanner/scanner_task.dart ('k') | dart/tests/co19/co19-dart2js.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698