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

Side by Side Diff: pkg/front_end/lib/src/scanner/token.dart

Issue 2803563003: enhance analyzer to parse uppercase and built-in/pseudo keywords (Closed)
Patch Set: rebase Created 3 years, 8 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/front_end/lib/src/scanner/scanner.dart ('k') | pkg/front_end/test/token_test.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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 /** 5 /**
6 * Defines the tokens that are produced by the scanner, used by the parser, and 6 * Defines the tokens that are produced by the scanner, used by the parser, and
7 * referenced from the [AST structure](ast.dart). 7 * referenced from the [AST structure](ast.dart).
8 */ 8 */
9 import 'dart:collection'; 9 import 'dart:collection';
10 10
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 * 149 *
150 * Clients may not extend, implement or mix-in this class. 150 * Clients may not extend, implement or mix-in this class.
151 */ 151 */
152 abstract class Keyword { 152 abstract class Keyword {
153 static const Keyword ABSTRACT = fasta.Keyword.ABSTRACT; 153 static const Keyword ABSTRACT = fasta.Keyword.ABSTRACT;
154 154
155 static const Keyword AS = fasta.Keyword.AS; 155 static const Keyword AS = fasta.Keyword.AS;
156 156
157 static const Keyword ASSERT = fasta.Keyword.ASSERT; 157 static const Keyword ASSERT = fasta.Keyword.ASSERT;
158 158
159 static const Keyword ASYNC = fasta.Keyword.ASYNC;
160
161 static const Keyword AWAIT = fasta.Keyword.AWAIT;
162
159 static const Keyword BREAK = fasta.Keyword.BREAK; 163 static const Keyword BREAK = fasta.Keyword.BREAK;
160 164
161 static const Keyword CASE = fasta.Keyword.CASE; 165 static const Keyword CASE = fasta.Keyword.CASE;
162 166
163 static const Keyword CATCH = fasta.Keyword.CATCH; 167 static const Keyword CATCH = fasta.Keyword.CATCH;
164 168
165 static const Keyword CLASS = fasta.Keyword.CLASS; 169 static const Keyword CLASS = fasta.Keyword.CLASS;
166 170
167 static const Keyword CONST = fasta.Keyword.CONST; 171 static const Keyword CONST = fasta.Keyword.CONST;
168 172
(...skipping 22 matching lines...) Expand all
191 static const Keyword FACTORY = fasta.Keyword.FACTORY; 195 static const Keyword FACTORY = fasta.Keyword.FACTORY;
192 196
193 static const Keyword FALSE = fasta.Keyword.FALSE; 197 static const Keyword FALSE = fasta.Keyword.FALSE;
194 198
195 static const Keyword FINAL = fasta.Keyword.FINAL; 199 static const Keyword FINAL = fasta.Keyword.FINAL;
196 200
197 static const Keyword FINALLY = fasta.Keyword.FINALLY; 201 static const Keyword FINALLY = fasta.Keyword.FINALLY;
198 202
199 static const Keyword FOR = fasta.Keyword.FOR; 203 static const Keyword FOR = fasta.Keyword.FOR;
200 204
205 static const Keyword FUNCTION = fasta.Keyword.FUNCTION;
206
201 static const Keyword GET = fasta.Keyword.GET; 207 static const Keyword GET = fasta.Keyword.GET;
202 208
209 static const Keyword HIDE = fasta.Keyword.HIDE;
210
203 static const Keyword IF = fasta.Keyword.IF; 211 static const Keyword IF = fasta.Keyword.IF;
204 212
205 static const Keyword IMPLEMENTS = fasta.Keyword.IMPLEMENTS; 213 static const Keyword IMPLEMENTS = fasta.Keyword.IMPLEMENTS;
206 214
207 static const Keyword IMPORT = fasta.Keyword.IMPORT; 215 static const Keyword IMPORT = fasta.Keyword.IMPORT;
208 216
209 static const Keyword IN = fasta.Keyword.IN; 217 static const Keyword IN = fasta.Keyword.IN;
210 218
211 static const Keyword IS = fasta.Keyword.IS; 219 static const Keyword IS = fasta.Keyword.IS;
212 220
213 static const Keyword LIBRARY = fasta.Keyword.LIBRARY; 221 static const Keyword LIBRARY = fasta.Keyword.LIBRARY;
214 222
223 static const Keyword NATIVE = fasta.Keyword.NATIVE;
224
215 static const Keyword NEW = fasta.Keyword.NEW; 225 static const Keyword NEW = fasta.Keyword.NEW;
216 226
217 static const Keyword NULL = fasta.Keyword.NULL; 227 static const Keyword NULL = fasta.Keyword.NULL;
218 228
229 static const Keyword OF = fasta.Keyword.OF;
230
231 static const Keyword ON = fasta.Keyword.ON;
232
219 static const Keyword OPERATOR = fasta.Keyword.OPERATOR; 233 static const Keyword OPERATOR = fasta.Keyword.OPERATOR;
220 234
221 static const Keyword PART = fasta.Keyword.PART; 235 static const Keyword PART = fasta.Keyword.PART;
222 236
237 static const Keyword PATCH = fasta.Keyword.PATCH;
238
223 static const Keyword RETHROW = fasta.Keyword.RETHROW; 239 static const Keyword RETHROW = fasta.Keyword.RETHROW;
224 240
225 static const Keyword RETURN = fasta.Keyword.RETURN; 241 static const Keyword RETURN = fasta.Keyword.RETURN;
226 242
227 static const Keyword SET = fasta.Keyword.SET; 243 static const Keyword SET = fasta.Keyword.SET;
228 244
245 static const Keyword SHOW = fasta.Keyword.SHOW;
246
247 static const Keyword SOURCE = fasta.Keyword.SOURCE;
248
229 static const Keyword STATIC = fasta.Keyword.STATIC; 249 static const Keyword STATIC = fasta.Keyword.STATIC;
230 250
231 static const Keyword SUPER = fasta.Keyword.SUPER; 251 static const Keyword SUPER = fasta.Keyword.SUPER;
232 252
233 static const Keyword SWITCH = fasta.Keyword.SWITCH; 253 static const Keyword SWITCH = fasta.Keyword.SWITCH;
234 254
255 static const Keyword SYNC = fasta.Keyword.SYNC;
256
235 static const Keyword THIS = fasta.Keyword.THIS; 257 static const Keyword THIS = fasta.Keyword.THIS;
236 258
237 static const Keyword THROW = fasta.Keyword.THROW; 259 static const Keyword THROW = fasta.Keyword.THROW;
238 260
239 static const Keyword TRUE = fasta.Keyword.TRUE; 261 static const Keyword TRUE = fasta.Keyword.TRUE;
240 262
241 static const Keyword TRY = fasta.Keyword.TRY; 263 static const Keyword TRY = fasta.Keyword.TRY;
242 264
243 static const Keyword TYPEDEF = fasta.Keyword.TYPEDEF; 265 static const Keyword TYPEDEF = fasta.Keyword.TYPEDEF;
244 266
245 static const Keyword VAR = fasta.Keyword.VAR; 267 static const Keyword VAR = fasta.Keyword.VAR;
246 268
247 static const Keyword VOID = fasta.Keyword.VOID; 269 static const Keyword VOID = fasta.Keyword.VOID;
248 270
249 static const Keyword WHILE = fasta.Keyword.WHILE; 271 static const Keyword WHILE = fasta.Keyword.WHILE;
250 272
251 static const Keyword WITH = fasta.Keyword.WITH; 273 static const Keyword WITH = fasta.Keyword.WITH;
252 274
275 static const Keyword YIELD = fasta.Keyword.YIELD;
276
253 static const List<Keyword> values = const <Keyword>[ 277 static const List<Keyword> values = const <Keyword>[
254 ABSTRACT, 278 ABSTRACT,
255 AS, 279 AS,
256 ASSERT, 280 ASSERT,
281 ASYNC,
282 AWAIT,
257 BREAK, 283 BREAK,
258 CASE, 284 CASE,
259 CATCH, 285 CATCH,
260 CLASS, 286 CLASS,
261 CONST, 287 CONST,
262 CONTINUE, 288 CONTINUE,
263 COVARIANT, 289 COVARIANT,
264 DEFAULT, 290 DEFAULT,
265 DEFERRED, 291 DEFERRED,
266 DO, 292 DO,
267 DYNAMIC, 293 DYNAMIC,
268 ELSE, 294 ELSE,
269 ENUM, 295 ENUM,
270 EXPORT, 296 EXPORT,
271 EXTENDS, 297 EXTENDS,
272 EXTERNAL, 298 EXTERNAL,
273 FACTORY, 299 FACTORY,
274 FALSE, 300 FALSE,
275 FINAL, 301 FINAL,
276 FINALLY, 302 FINALLY,
277 FOR, 303 FOR,
304 FUNCTION,
278 GET, 305 GET,
306 HIDE,
279 IF, 307 IF,
280 IMPLEMENTS, 308 IMPLEMENTS,
281 IMPORT, 309 IMPORT,
282 IN, 310 IN,
283 IS, 311 IS,
284 LIBRARY, 312 LIBRARY,
313 NATIVE,
285 NEW, 314 NEW,
286 NULL, 315 NULL,
316 OF,
317 ON,
287 OPERATOR, 318 OPERATOR,
288 PART, 319 PART,
320 PATCH,
289 RETHROW, 321 RETHROW,
290 RETURN, 322 RETURN,
291 SET, 323 SET,
324 SHOW,
325 SOURCE,
292 STATIC, 326 STATIC,
293 SUPER, 327 SUPER,
294 SWITCH, 328 SWITCH,
329 SYNC,
295 THIS, 330 THIS,
296 THROW, 331 THROW,
297 TRUE, 332 TRUE,
298 TRY, 333 TRY,
299 TYPEDEF, 334 TYPEDEF,
300 VAR, 335 VAR,
301 VOID, 336 VOID,
302 WHILE, 337 WHILE,
303 WITH, 338 WITH,
339 YIELD,
304 ]; 340 ];
305 341
306 /** 342 /**
307 * A table mapping the lexemes of keywords to the corresponding keyword. 343 * A table mapping the lexemes of keywords to the corresponding keyword.
308 */ 344 */
309 static final Map<String, Keyword> keywords = _createKeywordMap(); 345 static final Map<String, Keyword> keywords = _createKeywordMap();
310 346
311 final fasta.PrecedenceInfo info; 347 final fasta.PrecedenceInfo info;
312 348
313 /** 349 /**
(...skipping 13 matching lines...) Expand all
327 final String syntax; 363 final String syntax;
328 364
329 /** 365 /**
330 * Initialize a newly created keyword. 366 * Initialize a newly created keyword.
331 */ 367 */
332 const Keyword(this.syntax, 368 const Keyword(this.syntax,
333 {this.isBuiltIn: false, 369 {this.isBuiltIn: false,
334 this.isPseudo: false, 370 this.isPseudo: false,
335 this.info: fasta.KEYWORD_INFO}); 371 this.info: fasta.KEYWORD_INFO});
336 372
373 bool get isBuiltInOrPseudo => isBuiltIn || isPseudo;
374
337 /** 375 /**
338 * A flag indicating whether the keyword is "built-in" identifier. 376 * A flag indicating whether the keyword is "built-in" identifier.
339 * This method exists for backward compatibility and will be removed. 377 * This method exists for backward compatibility and will be removed.
340 * Use [isBuiltIn] instead. 378 * Use [isBuiltIn] instead.
341 */ 379 */
342 @deprecated 380 @deprecated
343 bool get isPseudoKeyword => isBuiltIn; // TODO (danrubel): remove this 381 bool get isPseudoKeyword => isBuiltIn; // TODO (danrubel): remove this
344 382
345 /** 383 /**
346 * The name of the keyword type. 384 * The name of the keyword type.
(...skipping 869 matching lines...) Expand 10 before | Expand all | Expand 10 after
1216 1254
1217 void set precedingComments(CommentToken comment) { 1255 void set precedingComments(CommentToken comment) {
1218 _precedingComment = comment; 1256 _precedingComment = comment;
1219 _setCommentParent(_precedingComment); 1257 _setCommentParent(_precedingComment);
1220 } 1258 }
1221 1259
1222 @override 1260 @override
1223 Token copy() => 1261 Token copy() =>
1224 new TokenWithComment(type, offset, copyComments(precedingComments)); 1262 new TokenWithComment(type, offset, copyComments(precedingComments));
1225 } 1263 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/scanner/scanner.dart ('k') | pkg/front_end/test/token_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698