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

Side by Side Diff: pkg/analyzer/lib/src/dart/ast/token.dart

Issue 1693083004: Move scanner out of generated and clean up imports (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: clean up Created 4 years, 10 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
« no previous file with comments | « pkg/analyzer/lib/src/dart/ast/ast.dart ('k') | pkg/analyzer/lib/src/dart/ast/utilities.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 library analyzer.src.dart.ast.token; 5 library analyzer.src.dart.ast.token;
6 6
7 import 'package:analyzer/dart/ast/token.dart'; 7 import 'package:analyzer/dart/ast/token.dart';
8 import 'package:analyzer/src/generated/java_engine.dart'; 8 import 'package:analyzer/src/generated/java_engine.dart';
9 9
10 /** 10 /**
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 /** 44 /**
45 * Initialize a newly created token to have the given [type] at the given 45 * Initialize a newly created token to have the given [type] at the given
46 * [offset] and to be preceded by the comments reachable from the given 46 * [offset] and to be preceded by the comments reachable from the given
47 * [comment]. 47 * [comment].
48 */ 48 */
49 BeginTokenWithComment(TokenType type, int offset, this._precedingComment) 49 BeginTokenWithComment(TokenType type, int offset, this._precedingComment)
50 : super(type, offset) { 50 : super(type, offset) {
51 _setCommentParent(_precedingComment); 51 _setCommentParent(_precedingComment);
52 } 52 }
53 53
54 @override
54 CommentToken get precedingComments => _precedingComment; 55 CommentToken get precedingComments => _precedingComment;
55 56
56 void set precedingComments(CommentToken comment) { 57 void set precedingComments(CommentToken comment) {
57 _precedingComment = comment; 58 _precedingComment = comment;
58 _setCommentParent(_precedingComment); 59 _setCommentParent(_precedingComment);
59 } 60 }
60 61
61 @override 62 @override
62 void applyDelta(int delta) { 63 void applyDelta(int delta) {
63 super.applyDelta(delta); 64 super.applyDelta(delta);
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 /** 158 /**
158 * Initialize a newly created token to to represent the given [keyword] at the 159 * Initialize a newly created token to to represent the given [keyword] at the
159 * given [offset] and to be preceded by the comments reachable from the given 160 * given [offset] and to be preceded by the comments reachable from the given
160 * [comment]. 161 * [comment].
161 */ 162 */
162 KeywordTokenWithComment(Keyword keyword, int offset, this._precedingComment) 163 KeywordTokenWithComment(Keyword keyword, int offset, this._precedingComment)
163 : super(keyword, offset) { 164 : super(keyword, offset) {
164 _setCommentParent(_precedingComment); 165 _setCommentParent(_precedingComment);
165 } 166 }
166 167
168 @override
167 CommentToken get precedingComments => _precedingComment; 169 CommentToken get precedingComments => _precedingComment;
168 170
169 void set precedingComments(CommentToken comment) { 171 void set precedingComments(CommentToken comment) {
170 _precedingComment = comment; 172 _precedingComment = comment;
171 _setCommentParent(_precedingComment); 173 _setCommentParent(_precedingComment);
172 } 174 }
173 175
174 @override 176 @override
175 void applyDelta(int delta) { 177 void applyDelta(int delta) {
176 super.applyDelta(delta); 178 super.applyDelta(delta);
(...skipping 10 matching lines...) Expand all
187 } 189 }
188 190
189 /** 191 /**
190 * A token that was scanned from the input. Each token knows which tokens 192 * A token that was scanned from the input. Each token knows which tokens
191 * precede and follow it, acting as a link in a doubly linked list of tokens. 193 * precede and follow it, acting as a link in a doubly linked list of tokens.
192 */ 194 */
193 class SimpleToken implements Token { 195 class SimpleToken implements Token {
194 /** 196 /**
195 * The type of the token. 197 * The type of the token.
196 */ 198 */
199 @override
197 final TokenType type; 200 final TokenType type;
198 201
199 /** 202 /**
200 * The offset from the beginning of the file to the first character in the 203 * The offset from the beginning of the file to the first character in the
201 * token. 204 * token.
202 */ 205 */
206 @override
203 int offset = 0; 207 int offset = 0;
204 208
205 /** 209 /**
206 * The previous token in the token stream. 210 * The previous token in the token stream.
207 */ 211 */
212 @override
208 Token previous; 213 Token previous;
209 214
210 /** 215 /**
211 * The next token in the token stream. 216 * The next token in the token stream.
212 */ 217 */
213 Token _next; 218 Token _next;
214 219
215 /** 220 /**
216 * Initialize a newly created token to have the given [type] and [offset]. 221 * Initialize a newly created token to have the given [type] and [offset].
217 */ 222 */
218 SimpleToken(this.type, this.offset); 223 SimpleToken(this.type, this.offset);
219 224
220 /** 225 @override
221 * Return the offset from the beginning of the file to the character after the
222 * last character of the token.
223 */
224 int get end => offset + length; 226 int get end => offset + length;
225 227
226 /** 228 @override
227 * Return `true` if this token represents an operator.
228 */
229 bool get isOperator => type.isOperator; 229 bool get isOperator => type.isOperator;
230 230
231 /** 231 @override
232 * Return `true` if this token is a synthetic token. A synthetic token is a
233 * token that was introduced by the parser in order to recover from an error
234 * in the code.
235 */
236 bool get isSynthetic => length == 0; 232 bool get isSynthetic => length == 0;
237 233
238 /** 234 @override
239 * Return `true` if this token represents an operator that can be defined by
240 * users.
241 */
242 bool get isUserDefinableOperator => type.isUserDefinableOperator; 235 bool get isUserDefinableOperator => type.isUserDefinableOperator;
243 236
244 /** 237 @override
245 * Return the number of characters in the node's source range.
246 */
247 int get length => lexeme.length; 238 int get length => lexeme.length;
248 239
249 /** 240 @override
250 * Return the lexeme that represents this token.
251 */
252 String get lexeme => type.lexeme; 241 String get lexeme => type.lexeme;
253 242
254 /** 243 @override
255 * Return the next token in the token stream.
256 */
257 Token get next => _next; 244 Token get next => _next;
258 245
259 /** 246 @override
260 * Return the first comment in the list of comments that precede this token,
261 * or `null` if there are no comments preceding this token. Additional
262 * comments can be reached by following the token stream using [next] until
263 * `null` is returned.
264 *
265 * For example, if the original contents were `/* one */ /* two */ id`, then
266 * the first preceding comment token will have a lexeme of `/* one */` and
267 * the next comment token will have a lexeme of `/* two */`.
268 */
269 CommentToken get precedingComments => null; 247 CommentToken get precedingComments => null;
270 248
271 /** 249 @override
272 * Apply (add) the given [delta] to this token's offset.
273 */
274 void applyDelta(int delta) { 250 void applyDelta(int delta) {
275 offset += delta; 251 offset += delta;
276 } 252 }
277 253
278 /** 254 @override
279 * Return a newly created token that is a copy of this token but that is not a
280 * part of any token stream.
281 */
282 Token copy() => new Token(type, offset); 255 Token copy() => new Token(type, offset);
283 256
284 /** 257 @override
285 * Copy a linked list of comment tokens identical to the given comment tokens.
286 */
287 Token copyComments(Token token) { 258 Token copyComments(Token token) {
288 if (token == null) { 259 if (token == null) {
289 return null; 260 return null;
290 } 261 }
291 Token head = token.copy(); 262 Token head = token.copy();
292 Token tail = head; 263 Token tail = head;
293 token = token.next; 264 token = token.next;
294 while (token != null) { 265 while (token != null) {
295 tail = tail.setNext(token.copy()); 266 tail = tail.setNext(token.copy());
296 token = token.next; 267 token = token.next;
297 } 268 }
298 return head; 269 return head;
299 } 270 }
300 271
301 /** 272 @override
302 * Return `true` if this token has any one of the given [types].
303 */
304 bool matchesAny(List<TokenType> types) { 273 bool matchesAny(List<TokenType> types) {
305 for (TokenType type in types) { 274 for (TokenType type in types) {
306 if (this.type == type) { 275 if (this.type == type) {
307 return true; 276 return true;
308 } 277 }
309 } 278 }
310 return false; 279 return false;
311 } 280 }
312 281
313 /** 282 @override
314 * Set the next token in the token stream to the given [token]. This has the
315 * side-effect of setting this token to be the previous token for the given
316 * token. Return the token that was passed in.
317 */
318 Token setNext(Token token) { 283 Token setNext(Token token) {
319 _next = token; 284 _next = token;
320 token.previous = this; 285 token.previous = this;
321 return token; 286 return token;
322 } 287 }
323 288
324 /** 289 @override
325 * Set the next token in the token stream to the given token without changing
326 * which token is the previous token for the given token. Return the token
327 * that was passed in.
328 */
329 Token setNextWithoutSettingPrevious(Token token) { 290 Token setNextWithoutSettingPrevious(Token token) {
330 _next = token; 291 _next = token;
331 return token; 292 return token;
332 } 293 }
333 294
334 @override 295 @override
335 String toString() => lexeme; 296 String toString() => lexeme;
336 297
337 /** 298 @override
338 * Return the value of this token. For keyword tokens, this is the keyword
339 * associated with the token, for other tokens it is the lexeme associated
340 * with the token.
341 */
342 Object value() => type.lexeme; 299 Object value() => type.lexeme;
343 300
344 /** 301 /**
345 * Sets the `parent` property to `this` for the given [comment] and all the 302 * Sets the `parent` property to `this` for the given [comment] and all the
346 * next tokens. 303 * next tokens.
347 */ 304 */
348 void _setCommentParent(CommentToken comment) { 305 void _setCommentParent(CommentToken comment) {
349 while (comment != null) { 306 while (comment != null) {
350 comment.parent = this; 307 comment.parent = this;
351 comment = comment.next; 308 comment = comment.next;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 * Initialize a newly created token to have the given [type] at the given 350 * Initialize a newly created token to have the given [type] at the given
394 * [offset] and to be preceded by the comments reachable from the given 351 * [offset] and to be preceded by the comments reachable from the given
395 * [comment]. 352 * [comment].
396 */ 353 */
397 StringTokenWithComment( 354 StringTokenWithComment(
398 TokenType type, String value, int offset, this._precedingComment) 355 TokenType type, String value, int offset, this._precedingComment)
399 : super(type, value, offset) { 356 : super(type, value, offset) {
400 _setCommentParent(_precedingComment); 357 _setCommentParent(_precedingComment);
401 } 358 }
402 359
360 @override
403 CommentToken get precedingComments => _precedingComment; 361 CommentToken get precedingComments => _precedingComment;
404 362
405 void set precedingComments(CommentToken comment) { 363 void set precedingComments(CommentToken comment) {
406 _precedingComment = comment; 364 _precedingComment = comment;
407 _setCommentParent(_precedingComment); 365 _setCommentParent(_precedingComment);
408 } 366 }
409 367
410 @override 368 @override
411 void applyDelta(int delta) { 369 void applyDelta(int delta) {
412 super.applyDelta(delta); 370 super.applyDelta(delta);
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 /** 534 /**
577 * Initialize a newly created token to have the given [type] at the given 535 * Initialize a newly created token to have the given [type] at the given
578 * [offset] and to be preceded by the comments reachable from the given 536 * [offset] and to be preceded by the comments reachable from the given
579 * [comment]. 537 * [comment].
580 */ 538 */
581 TokenWithComment(TokenType type, int offset, this._precedingComment) 539 TokenWithComment(TokenType type, int offset, this._precedingComment)
582 : super(type, offset) { 540 : super(type, offset) {
583 _setCommentParent(_precedingComment); 541 _setCommentParent(_precedingComment);
584 } 542 }
585 543
544 @override
586 CommentToken get precedingComments => _precedingComment; 545 CommentToken get precedingComments => _precedingComment;
587 546
588 void set precedingComments(CommentToken comment) { 547 void set precedingComments(CommentToken comment) {
589 _precedingComment = comment; 548 _precedingComment = comment;
590 _setCommentParent(_precedingComment); 549 _setCommentParent(_precedingComment);
591 } 550 }
592 551
593 @override 552 @override
594 Token copy() => new TokenWithComment(type, offset, precedingComments); 553 Token copy() => new TokenWithComment(type, offset, precedingComments);
595 } 554 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/dart/ast/ast.dart ('k') | pkg/analyzer/lib/src/dart/ast/utilities.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698