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

Side by Side Diff: dart/frog/leg/scanner/parser.dart

Issue 9839004: Fix co19 crashes (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 9 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
« no previous file with comments | « dart/frog/leg/scanner/listener.dart ('k') | dart/frog/leg/scanner/scanner_task.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) 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 /** 5 /**
6 * An event generating parser of Dart programs. This parser expects 6 * An event generating parser of Dart programs. This parser expects
7 * all tokens in a linked list. 7 * all tokens in a linked list.
8 */ 8 */
9 class Parser { 9 class Parser {
10 final Listener listener; 10 final Listener listener;
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 mayParseFunctionExpressions = old; 428 mayParseFunctionExpressions = old;
429 listener.endInitializers(count, begin, token); 429 listener.endInitializers(count, begin, token);
430 return token; 430 return token;
431 } 431 }
432 432
433 Token parseScriptTags(Token token) { 433 Token parseScriptTags(Token token) {
434 Token begin = token; 434 Token begin = token;
435 listener.beginScriptTag(token); 435 listener.beginScriptTag(token);
436 token = parseIdentifier(token.next); 436 token = parseIdentifier(token.next);
437 token = expect('(', token); 437 token = expect('(', token);
438 token = parseLiteralString(token); 438 token = parseLiteralStringOrRecoverExpression(token);
439 bool hasPrefix = false; 439 bool hasPrefix = false;
440 if (optional(',', token)) { 440 if (optional(',', token)) {
441 hasPrefix = true; 441 hasPrefix = true;
442 token = parseIdentifier(token.next); 442 token = parseIdentifier(token.next);
443 token = expect(':', token); 443 token = expect(':', token);
444 token = parseLiteralString(token); 444 token = parseLiteralStringOrRecoverExpression(token);
445 } 445 }
446 token = expect(')', token); 446 token = expect(')', token);
447 listener.endScriptTag(hasPrefix, begin, token); 447 listener.endScriptTag(hasPrefix, begin, token);
448 return expectSemicolon(token); 448 return expectSemicolon(token);
449 } 449 }
450 450
451 Token parseLiteralStringOrRecoverExpression(Token token) {
452 if (token.kind === STRING_TOKEN) {
453 return parseLiteralString(token);
454 } else {
455 listener.recoverableError("unexpected", token: token);
456 return parseExpression(token);
457 }
458 }
459
451 Token expectSemicolon(Token token) { 460 Token expectSemicolon(Token token) {
452 return expect(';', token); 461 return expect(';', token);
453 } 462 }
454 463
455 Token parseModifier(Token token) { 464 Token parseModifier(Token token) {
456 assert(('final' === token.stringValue) || 465 assert(('final' === token.stringValue) ||
457 ('var' === token.stringValue) || 466 ('var' === token.stringValue) ||
458 ('const' === token.stringValue) || 467 ('const' === token.stringValue) ||
459 ('abstract' === token.stringValue) || 468 ('abstract' === token.stringValue) ||
460 ('static' === token.stringValue)); 469 ('static' === token.stringValue));
(...skipping 1118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1579 } 1588 }
1580 listener.handleContinueStatement(hasTarget, continueKeyword, token); 1589 listener.handleContinueStatement(hasTarget, continueKeyword, token);
1581 return expectSemicolon(token); 1590 return expectSemicolon(token);
1582 } 1591 }
1583 1592
1584 Token parseEmptyStatement(Token token) { 1593 Token parseEmptyStatement(Token token) {
1585 listener.handleEmptyStatement(token); 1594 listener.handleEmptyStatement(token);
1586 return expectSemicolon(token); 1595 return expectSemicolon(token);
1587 } 1596 }
1588 } 1597 }
OLDNEW
« no previous file with comments | « dart/frog/leg/scanner/listener.dart ('k') | dart/frog/leg/scanner/scanner_task.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698