Chromium Code Reviews| 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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 42 | 42 |
| 43 T visitVariableUse(VariableUse node); | 43 T visitVariableUse(VariableUse node); |
| 44 T visitThis(This node); | 44 T visitThis(This node); |
| 45 T visitVariableDeclaration(VariableDeclaration node); | 45 T visitVariableDeclaration(VariableDeclaration node); |
| 46 T visitParameter(Parameter node); | 46 T visitParameter(Parameter node); |
| 47 T visitAccess(PropertyAccess node); | 47 T visitAccess(PropertyAccess node); |
| 48 | 48 |
| 49 T visitNamedFunction(NamedFunction node); | 49 T visitNamedFunction(NamedFunction node); |
| 50 T visitFun(Fun node); | 50 T visitFun(Fun node); |
| 51 | 51 |
| 52 T visitTokenExpression(TokenExpression node); | |
| 53 T visitTokenNumber(TokenNumber node); | |
| 54 T visitTokenString(TokenString node); | |
| 55 | |
| 52 T visitLiteralBool(LiteralBool node); | 56 T visitLiteralBool(LiteralBool node); |
| 53 T visitLiteralString(LiteralString node); | 57 T visitLiteralString(LiteralString node); |
| 54 T visitLiteralNumber(LiteralNumber node); | 58 T visitLiteralNumber(LiteralNumber node); |
| 55 T visitLiteralNull(LiteralNull node); | 59 T visitLiteralNull(LiteralNull node); |
| 56 | 60 |
| 61 T visitStringConcatenation(StringConcatenation node); | |
| 62 | |
| 57 T visitArrayInitializer(ArrayInitializer node); | 63 T visitArrayInitializer(ArrayInitializer node); |
| 58 T visitArrayHole(ArrayHole node); | 64 T visitArrayHole(ArrayHole node); |
| 59 T visitObjectInitializer(ObjectInitializer node); | 65 T visitObjectInitializer(ObjectInitializer node); |
| 60 T visitProperty(Property node); | 66 T visitProperty(Property node); |
| 61 T visitRegExpLiteral(RegExpLiteral node); | 67 T visitRegExpLiteral(RegExpLiteral node); |
| 62 | 68 |
| 63 T visitAwait(Await node); | 69 T visitAwait(Await node); |
| 64 | 70 |
| 65 T visitComment(Comment node); | 71 T visitComment(Comment node); |
| 66 | 72 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 132 | 138 |
| 133 T visitVariableUse(VariableUse node) => visitVariableReference(node); | 139 T visitVariableUse(VariableUse node) => visitVariableReference(node); |
| 134 T visitVariableDeclaration(VariableDeclaration node) | 140 T visitVariableDeclaration(VariableDeclaration node) |
| 135 => visitVariableReference(node); | 141 => visitVariableReference(node); |
| 136 T visitParameter(Parameter node) => visitVariableDeclaration(node); | 142 T visitParameter(Parameter node) => visitVariableDeclaration(node); |
| 137 T visitThis(This node) => visitParameter(node); | 143 T visitThis(This node) => visitParameter(node); |
| 138 | 144 |
| 139 T visitNamedFunction(NamedFunction node) => visitExpression(node); | 145 T visitNamedFunction(NamedFunction node) => visitExpression(node); |
| 140 T visitFun(Fun node) => visitExpression(node); | 146 T visitFun(Fun node) => visitExpression(node); |
| 141 | 147 |
| 148 T visitToken(Token node) => visitExpression(node); | |
| 149 | |
| 150 T visitTokenExpression(TokenExpression node) => visitExpression(node); | |
| 151 T visitTokenNumber(TokenNumber node) => visitToken(node); | |
| 152 T visitTokenString(TokenString node) => visitToken(node); | |
| 153 | |
| 142 T visitLiteral(Literal node) => visitExpression(node); | 154 T visitLiteral(Literal node) => visitExpression(node); |
| 143 | 155 |
| 144 T visitLiteralBool(LiteralBool node) => visitLiteral(node); | 156 T visitLiteralBool(LiteralBool node) => visitLiteral(node); |
| 145 T visitLiteralString(LiteralString node) => visitLiteral(node); | 157 T visitLiteralString(LiteralString node) => visitLiteral(node); |
| 146 T visitLiteralNumber(LiteralNumber node) => visitLiteral(node); | 158 T visitLiteralNumber(LiteralNumber node) => visitLiteral(node); |
| 147 T visitLiteralNull(LiteralNull node) => visitLiteral(node); | 159 T visitLiteralNull(LiteralNull node) => visitLiteral(node); |
| 148 | 160 |
| 161 T visitStringConcatenation(StringConcatenation node) => visitLiteral(node); | |
| 162 | |
| 149 T visitArrayInitializer(ArrayInitializer node) => visitExpression(node); | 163 T visitArrayInitializer(ArrayInitializer node) => visitExpression(node); |
| 150 T visitArrayHole(ArrayHole node) => visitExpression(node); | 164 T visitArrayHole(ArrayHole node) => visitExpression(node); |
| 151 T visitObjectInitializer(ObjectInitializer node) => visitExpression(node); | 165 T visitObjectInitializer(ObjectInitializer node) => visitExpression(node); |
| 152 T visitProperty(Property node) => visitNode(node); | 166 T visitProperty(Property node) => visitNode(node); |
| 153 T visitRegExpLiteral(RegExpLiteral node) => visitExpression(node); | 167 T visitRegExpLiteral(RegExpLiteral node) => visitExpression(node); |
| 154 | 168 |
| 155 T visitInterpolatedNode(InterpolatedNode node) => visitNode(node); | 169 T visitInterpolatedNode(InterpolatedNode node) => visitNode(node); |
| 156 | 170 |
| 157 T visitInterpolatedExpression(InterpolatedExpression node) | 171 T visitInterpolatedExpression(InterpolatedExpression node) |
| 158 => visitInterpolatedNode(node); | 172 => visitInterpolatedNode(node); |
| (...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 909 void visitChildren(NodeVisitor visitor) { | 923 void visitChildren(NodeVisitor visitor) { |
| 910 receiver.accept(visitor); | 924 receiver.accept(visitor); |
| 911 selector.accept(visitor); | 925 selector.accept(visitor); |
| 912 } | 926 } |
| 913 | 927 |
| 914 PropertyAccess _clone() => new PropertyAccess(receiver, selector); | 928 PropertyAccess _clone() => new PropertyAccess(receiver, selector); |
| 915 | 929 |
| 916 int get precedenceLevel => CALL; | 930 int get precedenceLevel => CALL; |
| 917 } | 931 } |
| 918 | 932 |
| 933 abstract class Token extends Literal { | |
|
sra1
2015/05/27 19:38:51
These are abstract classes that are overridden.
De
herhut
2015/06/09 11:10:00
Well, this is only one use (the current use) of th
| |
| 934 void visitChildren(NodeVisitor visitor) {} | |
| 935 | |
| 936 Token _clone() => this; | |
| 937 } | |
| 938 | |
| 939 abstract class TokenNumber extends Token { | |
| 940 accept(NodeVisitor visitor) => visitor.visitTokenNumber(this); | |
| 941 | |
| 942 int get value; | |
| 943 } | |
| 944 | |
| 945 abstract class TokenString extends Token { | |
| 946 accept(NodeVisitor visitor) => visitor.visitTokenString(this); | |
| 947 | |
| 948 String get value; | |
| 949 } | |
| 950 | |
| 951 abstract class TokenExpression extends Token { | |
|
sra1
2015/05/27 19:38:51
What is a TokenExpression?
DeferredExpression?
herhut
2015/06/09 11:10:00
Done.
| |
| 952 accept(NodeVisitor visitor) => visitor.visitTokenExpression(this); | |
| 953 | |
| 954 Expression get value; | |
|
sra1
2015/05/27 19:38:51
What is the precedence?
PRIMARY is almost certainl
herhut
2015/06/09 11:10:00
It actually was correct for the current usage but
| |
| 955 } | |
| 956 | |
| 919 abstract class Literal extends Expression { | 957 abstract class Literal extends Expression { |
| 920 void visitChildren(NodeVisitor visitor) {} | 958 void visitChildren(NodeVisitor visitor) {} |
| 921 | 959 |
| 922 int get precedenceLevel => PRIMARY; | 960 int get precedenceLevel => PRIMARY; |
| 923 } | 961 } |
| 924 | 962 |
| 925 class LiteralBool extends Literal { | 963 class LiteralBool extends Literal { |
| 926 final bool value; | 964 final bool value; |
| 927 | 965 |
| 928 LiteralBool(this.value); | 966 LiteralBool(this.value); |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 939 LiteralNull _clone() => new LiteralNull(); | 977 LiteralNull _clone() => new LiteralNull(); |
| 940 } | 978 } |
| 941 | 979 |
| 942 class LiteralString extends Literal { | 980 class LiteralString extends Literal { |
| 943 final String value; | 981 final String value; |
| 944 | 982 |
| 945 /** | 983 /** |
| 946 * Constructs a LiteralString from a string value. | 984 * Constructs a LiteralString from a string value. |
| 947 * | 985 * |
| 948 * The constructor does not add the required quotes. If [value] is not | 986 * The constructor does not add the required quotes. If [value] is not |
| 949 * surrounded by quotes and property escaped, the resulting object is invalid | 987 * surrounded by quotes and properly escaped, the resulting object is invalid |
| 950 * as a JS value. | 988 * as a JS value. |
| 951 * | 989 * |
| 952 * TODO(sra): Introduce variants for known valid strings that don't allocate a | 990 * TODO(sra): Introduce variants for known valid strings that don't allocate a |
| 953 * new string just to add quotes. | 991 * new string just to add quotes. |
| 954 */ | 992 */ |
| 955 LiteralString(this.value); | 993 LiteralString(this.value); |
| 956 | 994 |
| 957 accept(NodeVisitor visitor) => visitor.visitLiteralString(this); | 995 accept(NodeVisitor visitor) => visitor.visitLiteralString(this); |
| 958 LiteralString _clone() => new LiteralString(value); | 996 LiteralString _clone() => new LiteralString(value); |
| 959 } | 997 } |
| 960 | 998 |
| 999 class StringConcatenation extends Literal { | |
| 1000 final List<Literal> parts; | |
| 1001 | |
| 1002 /** | |
| 1003 * Constructs a StringConcatenation from a list of Literal elements. | |
| 1004 * The constructor does not add surrounding quotes to the resulting | |
| 1005 * concatenated string. | |
| 1006 */ | |
| 1007 StringConcatenation(this.parts); | |
| 1008 | |
| 1009 accept(NodeVisitor visitor) => visitor.visitStringConcatenation(this); | |
| 1010 | |
| 1011 void visitChildren(NodeVisitor visitor) { | |
| 1012 for (Literal part in parts) part.accept(visitor); | |
| 1013 } | |
| 1014 | |
| 1015 StringConcatenation _clone() => new StringConcatenation(this.parts); | |
| 1016 } | |
| 1017 | |
| 961 class LiteralNumber extends Literal { | 1018 class LiteralNumber extends Literal { |
| 962 final String value; // Must be a valid JavaScript number literal. | 1019 final String value; // Must be a valid JavaScript number literal. |
| 963 | 1020 |
| 964 LiteralNumber(this.value); | 1021 LiteralNumber(this.value); |
| 965 | 1022 |
| 966 accept(NodeVisitor visitor) => visitor.visitLiteralNumber(this); | 1023 accept(NodeVisitor visitor) => visitor.visitLiteralNumber(this); |
| 967 LiteralNumber _clone() => new LiteralNumber(value); | 1024 LiteralNumber _clone() => new LiteralNumber(value); |
| 968 } | 1025 } |
| 969 | 1026 |
| 970 class ArrayInitializer extends Expression { | 1027 class ArrayInitializer extends Expression { |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1154 class Await extends Expression { | 1211 class Await extends Expression { |
| 1155 /** The awaited expression. */ | 1212 /** The awaited expression. */ |
| 1156 final Expression expression; | 1213 final Expression expression; |
| 1157 | 1214 |
| 1158 Await(this.expression); | 1215 Await(this.expression); |
| 1159 | 1216 |
| 1160 int get precedenceLevel => UNARY; | 1217 int get precedenceLevel => UNARY; |
| 1161 accept(NodeVisitor visitor) => visitor.visitAwait(this); | 1218 accept(NodeVisitor visitor) => visitor.visitAwait(this); |
| 1162 void visitChildren(NodeVisitor visitor) => expression.accept(visitor); | 1219 void visitChildren(NodeVisitor visitor) => expression.accept(visitor); |
| 1163 Await _clone() => new Await(expression); | 1220 Await _clone() => new Await(expression); |
| 1164 | |
| 1165 } | 1221 } |
| 1166 | 1222 |
| 1167 /** | 1223 /** |
| 1168 * A comment. | 1224 * A comment. |
| 1169 * | 1225 * |
| 1170 * Extends [Statement] so we can add comments before statements in | 1226 * Extends [Statement] so we can add comments before statements in |
| 1171 * [Block] and [Program]. | 1227 * [Block] and [Program]. |
| 1172 */ | 1228 */ |
| 1173 class Comment extends Statement { | 1229 class Comment extends Statement { |
| 1174 final String comment; | 1230 final String comment; |
| 1175 | 1231 |
| 1176 Comment(this.comment); | 1232 Comment(this.comment); |
| 1177 | 1233 |
| 1178 accept(NodeVisitor visitor) => visitor.visitComment(this); | 1234 accept(NodeVisitor visitor) => visitor.visitComment(this); |
| 1179 Comment _clone() => new Comment(comment); | 1235 Comment _clone() => new Comment(comment); |
| 1180 | 1236 |
| 1181 void visitChildren(NodeVisitor visitor) {} | 1237 void visitChildren(NodeVisitor visitor) {} |
| 1182 } | 1238 } |
| OLD | NEW |