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

Unified Diff: pkg/front_end/lib/src/fasta/scanner/string_scanner.dart

Issue 2794833003: Use SubStringScanner to scan generic comments. (Closed)
Patch Set: Created 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/front_end/lib/src/fasta/parser/parser.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/front_end/lib/src/fasta/scanner/string_scanner.dart
diff --git a/pkg/front_end/lib/src/fasta/scanner/string_scanner.dart b/pkg/front_end/lib/src/fasta/scanner/string_scanner.dart
index af35b011fcf60e5618ef3e6f6ef87ce94da9ca3d..9799ae087a6303df66daf614ead82fa8d4a3cd60 100644
--- a/pkg/front_end/lib/src/fasta/scanner/string_scanner.dart
+++ b/pkg/front_end/lib/src/fasta/scanner/string_scanner.dart
@@ -5,9 +5,7 @@
library dart2js.scanner.string_scanner;
import 'array_based_scanner.dart' show ArrayBasedScanner;
-
import 'precedence.dart' show PrecedenceInfo;
-
import 'token.dart' show CommentToken, DartDocToken, StringToken;
/**
@@ -19,54 +17,79 @@ class StringScanner extends ArrayBasedScanner {
String string;
/** The current offset in [string]. */
+ @override
int scanOffset = -1;
StringScanner(String string, {bool includeComments: false})
: string = ensureZeroTermination(string),
super(includeComments);
- static String ensureZeroTermination(String string) {
ahe 2017/04/04 08:17:00 Please revert unrelated formatting changes.
- return (string.isEmpty || string.codeUnitAt(string.length - 1) != 0)
- // TODO(lry): abort instead of copying the array, or warn?
- ? string + '\x00'
- : string;
- }
-
- int advance() => string.codeUnitAt(++scanOffset);
- int peek() => string.codeUnitAt(scanOffset + 1);
-
+ @override
int get stringOffset => scanOffset;
- int currentAsUnicode(int next) => next;
+ @override
+ int advance() => string.codeUnitAt(++scanOffset);
- void handleUnicode(int startScanOffset) {}
+ @override
+ bool atEndOfFile() => scanOffset >= string.length - 1;
@override
- StringToken createSubstringToken(
+ CommentToken createCommentToken(
PrecedenceInfo info, int start, bool asciiOnly,
[int extraOffset = 0]) {
- return new StringToken.fromSubstring(
+ return new CommentToken.fromSubstring(
info, string, start, scanOffset + extraOffset, tokenStart,
canonicalize: true);
}
@override
- CommentToken createCommentToken(
+ DartDocToken createDartDocToken(
PrecedenceInfo info, int start, bool asciiOnly,
[int extraOffset = 0]) {
- return new CommentToken.fromSubstring(
+ return new DartDocToken.fromSubstring(
info, string, start, scanOffset + extraOffset, tokenStart,
canonicalize: true);
}
@override
- DartDocToken createDartDocToken(
+ StringToken createSubstringToken(
PrecedenceInfo info, int start, bool asciiOnly,
[int extraOffset = 0]) {
- return new DartDocToken.fromSubstring(
+ return new StringToken.fromSubstring(
info, string, start, scanOffset + extraOffset, tokenStart,
canonicalize: true);
}
- bool atEndOfFile() => scanOffset >= string.length - 1;
+ @override
+ int currentAsUnicode(int next) => next;
+
+ @override
+ void handleUnicode(int startScanOffset) {}
+
+ @override
+ int peek() => string.codeUnitAt(scanOffset + 1);
+
+ static String ensureZeroTermination(String string) {
+ return (string.isEmpty || string.codeUnitAt(string.length - 1) != 0)
+ // TODO(lry): abort instead of copying the array, or warn?
+ ? string + '\x00'
+ : string;
+ }
+}
+
+/**
+ * Scanner that creates tokens for a part of a larger [String], where the part
+ * starts at the [baseOffset].
+ */
+class SubStringScanner extends StringScanner {
+ final int baseOffset;
+
+ SubStringScanner(this.baseOffset, String string,
+ {bool includeComments: false})
+ : super(string, includeComments: includeComments);
+
+ @override
+ void beginToken() {
+ tokenStart = baseOffset + stringOffset;
+ }
}
« no previous file with comments | « pkg/front_end/lib/src/fasta/parser/parser.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698