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

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

Issue 2664593002: Port parser and scanner fixes from rasta branch. (Closed)
Patch Set: Rebased on ef8ec26cf36d1f07b4fdf5d605003210826ae1c2. Created 3 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
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.md file. 3 // BSD-style license that can be found in the LICENSE.md file.
4 4
5 library fasta.scanner; 5 library fasta.scanner;
6 6
7 import 'dart:convert' show
8 UNICODE_REPLACEMENT_CHARACTER_RUNE;
9
7 import 'scanner/token.dart' show 10 import 'scanner/token.dart' show
8 Token; 11 Token;
9 12
10 import 'scanner/utf8_bytes_scanner.dart' show 13 import 'scanner/utf8_bytes_scanner.dart' show
11 Utf8BytesScanner; 14 Utf8BytesScanner;
12 15
13 import 'scanner/recover.dart' show 16 import 'scanner/recover.dart' show
14 defaultRecoveryStrategy; 17 defaultRecoveryStrategy;
15 18
16 export 'scanner/token.dart' show 19 export 'scanner/token.dart' show
17 BeginGroupToken, 20 BeginGroupToken,
18 ErrorToken,
19 KeywordToken, 21 KeywordToken,
20 StringToken, 22 StringToken,
21 SymbolToken, 23 SymbolToken,
22 Token, 24 Token,
23 isBinaryOperator, 25 isBinaryOperator,
24 isMinusOperator, 26 isMinusOperator,
25 isTernaryOperator, 27 isTernaryOperator,
26 isUnaryOperator, 28 isUnaryOperator,
27 isUserDefinableOperator; 29 isUserDefinableOperator;
28 30
31 export 'scanner/error_token.dart' show
32 ErrorToken,
33 buildUnexpectedCharacterToken;
34
29 export 'scanner/token_constants.dart' show 35 export 'scanner/token_constants.dart' show
30 EOF_TOKEN; 36 EOF_TOKEN;
31 37
32 export 'scanner/utf8_bytes_scanner.dart' show 38 export 'scanner/utf8_bytes_scanner.dart' show
33 Utf8BytesScanner; 39 Utf8BytesScanner;
34 40
35 export 'scanner/string_scanner.dart' show 41 export 'scanner/string_scanner.dart' show
36 StringScanner; 42 StringScanner;
37 43
38 export 'scanner/keyword.dart' show 44 export 'scanner/keyword.dart' show
39 Keyword; 45 Keyword;
40 46
47 const int unicodeReplacementCharacter = UNICODE_REPLACEMENT_CHARACTER_RUNE;
48
41 typedef Token Recover(List<int> bytes, Token tokens, List<int> lineStarts); 49 typedef Token Recover(List<int> bytes, Token tokens, List<int> lineStarts);
42 50
43 abstract class Scanner { 51 abstract class Scanner {
44 /// Returns true if an error occured during [tokenize]. 52 /// Returns true if an error occured during [tokenize].
45 bool get hasErrors; 53 bool get hasErrors;
46 54
47 List<int> get lineStarts; 55 List<int> get lineStarts;
48 56
49 Token tokenize(); 57 Token tokenize();
50 } 58 }
(...skipping 12 matching lines...) Expand all
63 } 71 }
64 Scanner scanner = 72 Scanner scanner =
65 new Utf8BytesScanner(bytes, includeComments: includeComments); 73 new Utf8BytesScanner(bytes, includeComments: includeComments);
66 Token tokens = scanner.tokenize(); 74 Token tokens = scanner.tokenize();
67 if (scanner.hasErrors) { 75 if (scanner.hasErrors) {
68 recover ??= defaultRecoveryStrategy; 76 recover ??= defaultRecoveryStrategy;
69 tokens = recover(bytes, tokens, scanner.lineStarts); 77 tokens = recover(bytes, tokens, scanner.lineStarts);
70 } 78 }
71 return new ScannerResult(tokens, scanner.lineStarts); 79 return new ScannerResult(tokens, scanner.lineStarts);
72 } 80 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/parser/parser.dart ('k') | pkg/front_end/lib/src/fasta/scanner/abstract_scanner.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698