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 library fasta.scanner.abstract_scanner; | 5 library fasta.scanner.abstract_scanner; |
6 | 6 |
7 import 'dart:collection' show ListMixin; | 7 import 'dart:collection' show ListMixin; |
8 | 8 |
9 import 'dart:typed_data' show Uint16List, Uint32List; | 9 import 'dart:typed_data' show Uint16List, Uint32List; |
10 | 10 |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 * substring string [5,9). | 157 * substring string [5,9). |
158 * | 158 * |
159 * Note that [extraOffset] can only be used if the covered character(s) are | 159 * Note that [extraOffset] can only be used if the covered character(s) are |
160 * known to be ASCII. | 160 * known to be ASCII. |
161 */ | 161 */ |
162 void appendSubstringToken(TokenType type, int start, bool asciiOnly, | 162 void appendSubstringToken(TokenType type, int start, bool asciiOnly, |
163 [int extraOffset]); | 163 [int extraOffset]); |
164 | 164 |
165 /** | 165 /** |
166 * Appends a substring from the scan offset [start] to the current | 166 * Appends a substring from the scan offset [start] to the current |
167 * [scanOffset] plus [closingQuotes]. The closing quote(s) will be added | 167 * [scanOffset] plus [syntheticChars]. The additional char(s) will be added |
168 * to the unterminated string literal's lexeme but the returned | 168 * to the unterminated string literal's lexeme but the returned |
169 * token's length will *not* include those closing quotes | 169 * token's length will *not* include those additional char(s) |
170 * so as to be true to the original source. | 170 * so as to be true to the original source. |
171 */ | 171 */ |
172 void appendSyntheticSubstringToken( | 172 void appendSyntheticSubstringToken( |
173 TokenType type, int start, bool asciiOnly, String closingQuotes); | 173 TokenType type, int start, bool asciiOnly, String syntheticChars); |
174 | 174 |
175 /** Documentation in subclass [ArrayBasedScanner]. */ | 175 /** Documentation in subclass [ArrayBasedScanner]. */ |
176 void appendPrecedenceToken(TokenType type); | 176 void appendPrecedenceToken(TokenType type); |
177 | 177 |
178 /** Documentation in subclass [ArrayBasedScanner]. */ | 178 /** Documentation in subclass [ArrayBasedScanner]. */ |
179 int select(int choice, TokenType yes, TokenType no); | 179 int select(int choice, TokenType yes, TokenType no); |
180 | 180 |
181 /** Documentation in subclass [ArrayBasedScanner]. */ | 181 /** Documentation in subclass [ArrayBasedScanner]. */ |
182 void appendKeywordToken(Keyword keyword); | 182 void appendKeywordToken(Keyword keyword); |
183 | 183 |
(...skipping 535 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
719 next = advance(); | 719 next = advance(); |
720 if (identical(next, $PLUS) || identical(next, $MINUS)) { | 720 if (identical(next, $PLUS) || identical(next, $MINUS)) { |
721 next = advance(); | 721 next = advance(); |
722 } | 722 } |
723 bool hasExponentDigits = false; | 723 bool hasExponentDigits = false; |
724 while (true) { | 724 while (true) { |
725 if ($0 <= next && next <= $9) { | 725 if ($0 <= next && next <= $9) { |
726 hasExponentDigits = true; | 726 hasExponentDigits = true; |
727 } else { | 727 } else { |
728 if (!hasExponentDigits) { | 728 if (!hasExponentDigits) { |
729 unterminated('1e', shouldAdvance: false); | 729 appendSyntheticSubstringToken(TokenType.DOUBLE, start, true, '0'); |
| 730 appendErrorToken( |
| 731 new UnterminatedToken('1e', tokenStart, stringOffset)); |
730 return next; | 732 return next; |
731 } | 733 } |
732 break; | 734 break; |
733 } | 735 } |
734 next = advance(); | 736 next = advance(); |
735 } | 737 } |
736 | 738 |
737 done = true; | 739 done = true; |
738 continue LOOP; | 740 continue LOOP; |
739 } else { | 741 } else { |
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1319 switchToUint32(newLength); | 1321 switchToUint32(newLength); |
1320 } | 1322 } |
1321 } | 1323 } |
1322 | 1324 |
1323 void switchToUint32(int newLength) { | 1325 void switchToUint32(int newLength) { |
1324 final newArray = new Uint32List(newLength); | 1326 final newArray = new Uint32List(newLength); |
1325 newArray.setRange(0, arrayLength, array); | 1327 newArray.setRange(0, arrayLength, array); |
1326 array = newArray; | 1328 array = newArray; |
1327 } | 1329 } |
1328 } | 1330 } |
OLD | NEW |