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

Unified Diff: pkg/analyzer/lib/src/dart/scanner/scanner.dart

Issue 2199323002: Initial implementation for lazy compound assignment operators (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 4 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
Index: pkg/analyzer/lib/src/dart/scanner/scanner.dart
diff --git a/pkg/analyzer/lib/src/dart/scanner/scanner.dart b/pkg/analyzer/lib/src/dart/scanner/scanner.dart
index 7814eb7fde0bbd75eccaceaea41adc547f4981c8..0e60a902392749047a3c0c4205bbc307c39cc936 100644
--- a/pkg/analyzer/lib/src/dart/scanner/scanner.dart
+++ b/pkg/analyzer/lib/src/dart/scanner/scanner.dart
@@ -10,6 +10,7 @@ import 'package:analyzer/src/dart/scanner/reader.dart';
import 'package:analyzer/src/generated/error.dart';
import 'package:analyzer/src/generated/java_engine.dart';
import 'package:analyzer/src/generated/source.dart';
+import 'package:charcode/ascii.dart';
/**
* A state in a state machine used to scan keywords.
@@ -57,7 +58,7 @@ class KeywordState {
* [character], or `null` if there is no valid state reachable from this state
* with such a transition.
*/
- KeywordState next(int character) => _table[character - 0x61];
+ KeywordState next(int character) => _table[character - $a];
/**
* Create the next state in the state machine where we have already recognized
@@ -69,7 +70,7 @@ class KeywordState {
int start, List<String> strings, int offset, int length) {
List<KeywordState> result = new List<KeywordState>(26);
assert(length != 0);
- int chunk = 0x0;
+ int chunk = $nul;
int chunkStart = -1;
bool isLeaf = false;
for (int i = offset; i < offset + length; i++) {
@@ -80,7 +81,7 @@ class KeywordState {
int c = strings[i].codeUnitAt(start);
if (chunk != c) {
if (chunkStart != -1) {
- result[chunk - 0x61] = _computeKeywordStateTable(
+ result[chunk - $a] = _computeKeywordStateTable(
start + 1, strings, chunkStart, i - chunkStart);
}
chunkStart = i;
@@ -89,8 +90,8 @@ class KeywordState {
}
}
if (chunkStart != -1) {
- assert(result[chunk - 0x61] == null);
- result[chunk - 0x61] = _computeKeywordStateTable(
+ assert(result[chunk - $a] == null);
+ result[chunk - $a] = _computeKeywordStateTable(
start + 1, strings, chunkStart, offset + length - chunkStart);
} else {
assert(length == 1);
@@ -207,6 +208,12 @@ class Scanner {
bool scanGenericMethodComments = false;
/**
+ * A flag indicating whether the lazy compound assignment operators '&&=' and
+ * '||=' are enabled.
+ */
+ bool scanLazyAssignmentOperators = false;
+
+ /**
* Initialize a newly created scanner to scan characters from the given
* [source]. The given character [_reader] will be used to read the characters
* in the source. The given [_errorListener] will be informed of any errors
@@ -260,175 +267,175 @@ class Scanner {
int bigSwitch(int next) {
_beginToken();
- if (next == 0xD) {
+ if (next == $cr) {
// '\r'
next = _reader.advance();
- if (next == 0xA) {
+ if (next == $lf) {
// '\n'
next = _reader.advance();
}
recordStartOfLine();
return next;
- } else if (next == 0xA) {
+ } else if (next == $lf) {
// '\n'
next = _reader.advance();
recordStartOfLine();
return next;
- } else if (next == 0x9 || next == 0x20) {
+ } else if (next == $tab || next == $space) {
// '\t' || ' '
return _reader.advance();
}
- if (next == 0x72) {
+ if (next == $r) {
// 'r'
int peek = _reader.peek();
- if (peek == 0x22 || peek == 0x27) {
+ if (peek == $double_quote || peek == $single_quote) {
// '"' || "'"
int start = _reader.offset;
return _tokenizeString(_reader.advance(), start, true);
}
}
- if (0x61 <= next && next <= 0x7A) {
+ if ($a <= next && next <= $z) {
// 'a'-'z'
return _tokenizeKeywordOrIdentifier(next, true);
}
- if ((0x41 <= next && next <= 0x5A) || next == 0x5F || next == 0x24) {
+ if (($A <= next && next <= $Z) || next == $_ || next == $$) {
// 'A'-'Z' || '_' || '$'
return _tokenizeIdentifier(next, _reader.offset, true);
}
- if (next == 0x3C) {
+ if (next == $lt) {
// '<'
return _tokenizeLessThan(next);
}
- if (next == 0x3E) {
+ if (next == $gt) {
// '>'
return _tokenizeGreaterThan(next);
}
- if (next == 0x3D) {
+ if (next == $equal) {
// '='
return _tokenizeEquals(next);
}
- if (next == 0x21) {
+ if (next == $exclamation) {
// '!'
return _tokenizeExclamation(next);
}
- if (next == 0x2B) {
+ if (next == $plus) {
// '+'
return _tokenizePlus(next);
}
- if (next == 0x2D) {
+ if (next == $minus) {
// '-'
return _tokenizeMinus(next);
}
- if (next == 0x2A) {
+ if (next == $asterisk) {
// '*'
return _tokenizeMultiply(next);
}
- if (next == 0x25) {
+ if (next == $percent) {
// '%'
return _tokenizePercent(next);
}
- if (next == 0x26) {
+ if (next == $ampersand) {
// '&'
return _tokenizeAmpersand(next);
}
- if (next == 0x7C) {
+ if (next == $bar) {
// '|'
return _tokenizeBar(next);
}
- if (next == 0x5E) {
+ if (next == $caret) {
// '^'
return _tokenizeCaret(next);
}
- if (next == 0x5B) {
+ if (next == $open_bracket) {
// '['
return _tokenizeOpenSquareBracket(next);
}
- if (next == 0x7E) {
+ if (next == $tilde) {
// '~'
return _tokenizeTilde(next);
}
- if (next == 0x5C) {
+ if (next == $backslash) {
// '\\'
_appendTokenOfType(TokenType.BACKSLASH);
return _reader.advance();
}
- if (next == 0x23) {
+ if (next == $hash) {
// '#'
return _tokenizeTag(next);
}
- if (next == 0x28) {
+ if (next == $open_paren) {
// '('
_appendBeginToken(TokenType.OPEN_PAREN);
return _reader.advance();
}
- if (next == 0x29) {
+ if (next == $close_paren) {
// ')'
_appendEndToken(TokenType.CLOSE_PAREN, TokenType.OPEN_PAREN);
return _reader.advance();
}
- if (next == 0x2C) {
+ if (next == $comma) {
// ','
_appendTokenOfType(TokenType.COMMA);
return _reader.advance();
}
- if (next == 0x3A) {
+ if (next == $colon) {
// ':'
_appendTokenOfType(TokenType.COLON);
return _reader.advance();
}
- if (next == 0x3B) {
+ if (next == $semicolon) {
// ';'
_appendTokenOfType(TokenType.SEMICOLON);
return _reader.advance();
}
- if (next == 0x3F) {
+ if (next == $question) {
// '?'
return _tokenizeQuestion();
}
- if (next == 0x5D) {
+ if (next == $close_bracket) {
// ']'
_appendEndToken(
TokenType.CLOSE_SQUARE_BRACKET, TokenType.OPEN_SQUARE_BRACKET);
return _reader.advance();
}
- if (next == 0x60) {
+ if (next == $backquote) {
// '`'
_appendTokenOfType(TokenType.BACKPING);
return _reader.advance();
}
- if (next == 0x7B) {
+ if (next == $lbrace) {
// '{'
_appendBeginToken(TokenType.OPEN_CURLY_BRACKET);
return _reader.advance();
}
- if (next == 0x7D) {
+ if (next == $rbrace) {
// '}'
_appendEndToken(
TokenType.CLOSE_CURLY_BRACKET, TokenType.OPEN_CURLY_BRACKET);
return _reader.advance();
}
- if (next == 0x2F) {
+ if (next == $slash) {
// '/'
return _tokenizeSlashOrComment(next);
}
- if (next == 0x40) {
+ if (next == $at) {
// '@'
_appendTokenOfType(TokenType.AT);
return _reader.advance();
}
- if (next == 0x22 || next == 0x27) {
+ if (next == $double_quote || next == $single_quote) {
// '"' || "'"
return _tokenizeString(next, _reader.offset, false);
}
- if (next == 0x2E) {
+ if (next == $dot) {
// '.'
return _tokenizeDotOrNumber(next);
}
- if (next == 0x30) {
+ if (next == $0) {
// '0'
return _tokenizeHexOrNumber(next);
}
- if (0x31 <= next && next <= 0x39) {
+ if ($1 <= next && next <= $9) {
// '1'-'9'
return _tokenizeNumber(next);
}
@@ -648,12 +655,12 @@ class Scanner {
TokenType _matchGenericMethodCommentType(String value) {
if (scanGenericMethodComments) {
// Match /*< and >*/
- if (StringUtilities.startsWith3(value, 0, 0x2F, 0x2A, 0x3C) &&
- StringUtilities.endsWith3(value, 0x3E, 0x2A, 0x2F)) {
+ if (StringUtilities.startsWith3(value, 0, $slash, $asterisk, $lt) &&
+ StringUtilities.endsWith3(value, $gt, $asterisk, $slash)) {
return TokenType.GENERIC_METHOD_TYPE_LIST;
}
// Match /*=
- if (StringUtilities.startsWith3(value, 0, 0x2F, 0x2A, 0x3D)) {
+ if (StringUtilities.startsWith3(value, 0, $slash, $asterisk, $equal)) {
return TokenType.GENERIC_METHOD_TYPE_ASSIGN;
}
}
@@ -694,12 +701,17 @@ class Scanner {
}
int _tokenizeAmpersand(int next) {
- // && &= &
+ // &&= && &= &
next = _reader.advance();
- if (next == 0x26) {
+ if (next == $ampersand) {
+ next = _reader.advance();
+ if (scanLazyAssignmentOperators && next == $equal) {
+ _appendTokenOfType(TokenType.AMPERSAND_AMPERSAND_EQ);
+ return _reader.advance();
+ }
_appendTokenOfType(TokenType.AMPERSAND_AMPERSAND);
- return _reader.advance();
- } else if (next == 0x3D) {
+ return next;
+ } else if (next == $equal) {
_appendTokenOfType(TokenType.AMPERSAND_EQ);
return _reader.advance();
} else {
@@ -709,12 +721,17 @@ class Scanner {
}
int _tokenizeBar(int next) {
- // | || |=
+ // ||= || |= |
next = _reader.advance();
- if (next == 0x7C) {
+ if (next == $bar) {
+ next = _reader.advance();
+ if (scanLazyAssignmentOperators && next == $equal) {
+ _appendTokenOfType(TokenType.BAR_BAR_EQ);
+ return _reader.advance();
+ }
_appendTokenOfType(TokenType.BAR_BAR);
- return _reader.advance();
- } else if (next == 0x3D) {
+ return next;
+ } else if (next == $equal) {
_appendTokenOfType(TokenType.BAR_EQ);
return _reader.advance();
} else {
@@ -724,16 +741,16 @@ class Scanner {
}
int _tokenizeCaret(int next) =>
- _select(0x3D, TokenType.CARET_EQ, TokenType.CARET);
+ _select($equal, TokenType.CARET_EQ, TokenType.CARET);
int _tokenizeDotOrNumber(int next) {
int start = _reader.offset;
next = _reader.advance();
- if (0x30 <= next && next <= 0x39) {
+ if ($0 <= next && next <= $9) {
return _tokenizeFractionPart(next, start);
- } else if (0x2E == next) {
+ } else if ($dot == next) {
return _select(
- 0x2E, TokenType.PERIOD_PERIOD_PERIOD, TokenType.PERIOD_PERIOD);
+ $dot, TokenType.PERIOD_PERIOD_PERIOD, TokenType.PERIOD_PERIOD);
} else {
_appendTokenOfType(TokenType.PERIOD);
return next;
@@ -743,10 +760,10 @@ class Scanner {
int _tokenizeEquals(int next) {
// = == =>
next = _reader.advance();
- if (next == 0x3D) {
+ if (next == $equal) {
_appendTokenOfType(TokenType.EQ_EQ);
return _reader.advance();
- } else if (next == 0x3E) {
+ } else if (next == $gt) {
_appendTokenOfType(TokenType.FUNCTION);
return _reader.advance();
}
@@ -757,7 +774,7 @@ class Scanner {
int _tokenizeExclamation(int next) {
// ! !=
next = _reader.advance();
- if (next == 0x3D) {
+ if (next == $equal) {
_appendTokenOfType(TokenType.BANG_EQ);
return _reader.advance();
}
@@ -766,12 +783,12 @@ class Scanner {
}
int _tokenizeExponent(int next) {
- if (next == 0x2B || next == 0x2D) {
+ if (next == $plus || next == $minus) {
next = _reader.advance();
}
bool hasDigits = false;
while (true) {
- if (0x30 <= next && next <= 0x39) {
+ if ($0 <= next && next <= $9) {
hasDigits = true;
} else {
if (!hasDigits) {
@@ -787,9 +804,9 @@ class Scanner {
bool done = false;
bool hasDigit = false;
LOOP: while (!done) {
- if (0x30 <= next && next <= 0x39) {
+ if ($0 <= next && next <= $9) {
hasDigit = true;
- } else if (0x65 == next || 0x45 == next) {
+ } else if ($e == next || $E == next) {
hasDigit = true;
next = _tokenizeExponent(_reader.advance());
done = true;
@@ -802,8 +819,8 @@ class Scanner {
}
if (!hasDigit) {
_appendStringToken(TokenType.INT, _reader.getString(start, -2));
- if (0x2E == next) {
- return _selectWithOffset(0x2E, TokenType.PERIOD_PERIOD_PERIOD,
+ if ($dot == next) {
+ return _selectWithOffset($dot, TokenType.PERIOD_PERIOD_PERIOD,
TokenType.PERIOD_PERIOD, _reader.offset - 1);
}
_appendTokenOfTypeWithOffset(TokenType.PERIOD, _reader.offset - 1);
@@ -817,12 +834,12 @@ class Scanner {
int _tokenizeGreaterThan(int next) {
// > >= >> >>=
next = _reader.advance();
- if (0x3D == next) {
+ if ($equal == next) {
_appendTokenOfType(TokenType.GT_EQ);
return _reader.advance();
- } else if (0x3E == next) {
+ } else if ($gt == next) {
next = _reader.advance();
- if (0x3D == next) {
+ if ($equal == next) {
_appendTokenOfType(TokenType.GT_GT_EQ);
return _reader.advance();
} else {
@@ -840,9 +857,9 @@ class Scanner {
bool hasDigits = false;
while (true) {
next = _reader.advance();
- if ((0x30 <= next && next <= 0x39) ||
- (0x41 <= next && next <= 0x46) ||
- (0x61 <= next && next <= 0x66)) {
+ if (($0 <= next && next <= $9) ||
+ ($A <= next && next <= $F) ||
+ ($a <= next && next <= $f)) {
hasDigits = true;
} else {
if (!hasDigits) {
@@ -857,7 +874,7 @@ class Scanner {
int _tokenizeHexOrNumber(int next) {
int x = _reader.peek();
- if (x == 0x78 || x == 0x58) {
+ if (x == $x || x == $X) {
_reader.advance();
return _tokenizeHex(x);
}
@@ -865,11 +882,11 @@ class Scanner {
}
int _tokenizeIdentifier(int next, int start, bool allowDollar) {
- while ((0x61 <= next && next <= 0x7A) ||
- (0x41 <= next && next <= 0x5A) ||
- (0x30 <= next && next <= 0x39) ||
- next == 0x5F ||
- (next == 0x24 && allowDollar)) {
+ while (($a <= next && next <= $z) ||
+ ($A <= next && next <= $Z) ||
+ ($0 <= next && next <= $9) ||
+ next == $_ ||
+ (next == $$ && allowDollar)) {
next = _reader.advance();
}
_appendStringToken(
@@ -881,7 +898,7 @@ class Scanner {
_appendBeginToken(TokenType.STRING_INTERPOLATION_EXPRESSION);
next = _reader.advance();
while (next != -1) {
- if (next == 0x7D) {
+ if (next == $rbrace) {
BeginToken begin =
_findTokenMatchingClosingBraceInInterpolationExpression();
if (begin == null) {
@@ -914,9 +931,9 @@ class Scanner {
int _tokenizeInterpolatedIdentifier(int next, int start) {
_appendStringTokenWithOffset(
TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 0);
- if ((0x41 <= next && next <= 0x5A) ||
- (0x61 <= next && next <= 0x7A) ||
- next == 0x5F) {
+ if (($A <= next && next <= $Z) ||
+ ($a <= next && next <= $z) ||
+ next == $_) {
_beginToken();
next = _tokenizeKeywordOrIdentifier(next, false);
}
@@ -927,17 +944,17 @@ class Scanner {
int _tokenizeKeywordOrIdentifier(int next, bool allowDollar) {
KeywordState state = KeywordState.KEYWORD_STATE;
int start = _reader.offset;
- while (state != null && 0x61 <= next && next <= 0x7A) {
+ while (state != null && $a <= next && next <= $z) {
state = state.next(next);
next = _reader.advance();
}
if (state == null || state.keyword() == null) {
return _tokenizeIdentifier(next, start, allowDollar);
}
- if ((0x41 <= next && next <= 0x5A) ||
- (0x30 <= next && next <= 0x39) ||
- next == 0x5F ||
- next == 0x24) {
+ if (($A <= next && next <= $Z) ||
+ ($0 <= next && next <= $9) ||
+ next == $_ ||
+ next == $$) {
return _tokenizeIdentifier(next, start, allowDollar);
} else if (next < 128) {
_appendKeywordToken(state.keyword());
@@ -950,11 +967,11 @@ class Scanner {
int _tokenizeLessThan(int next) {
// < <= << <<=
next = _reader.advance();
- if (0x3D == next) {
+ if ($equal == next) {
_appendTokenOfType(TokenType.LT_EQ);
return _reader.advance();
- } else if (0x3C == next) {
- return _select(0x3D, TokenType.LT_LT_EQ, TokenType.LT_LT);
+ } else if ($lt == next) {
+ return _select($equal, TokenType.LT_LT_EQ, TokenType.LT_LT);
} else {
_appendTokenOfType(TokenType.LT);
return next;
@@ -964,10 +981,10 @@ class Scanner {
int _tokenizeMinus(int next) {
// - -- -=
next = _reader.advance();
- if (next == 0x2D) {
+ if (next == $minus) {
_appendTokenOfType(TokenType.MINUS_MINUS);
return _reader.advance();
- } else if (next == 0x3D) {
+ } else if (next == $equal) {
_appendTokenOfType(TokenType.MINUS_EQ);
return _reader.advance();
} else {
@@ -985,9 +1002,9 @@ class Scanner {
_appendCommentToken(
TokenType.MULTI_LINE_COMMENT, _reader.getString(_tokenStart, 0));
return next;
- } else if (0x2A == next) {
+ } else if ($asterisk == next) {
next = _reader.advance();
- if (0x2F == next) {
+ if ($slash == next) {
--nesting;
if (0 == nesting) {
_appendCommentToken(TokenType.MULTI_LINE_COMMENT,
@@ -997,19 +1014,19 @@ class Scanner {
next = _reader.advance();
}
}
- } else if (0x2F == next) {
+ } else if ($slash == next) {
next = _reader.advance();
- if (0x2A == next) {
+ if ($asterisk == next) {
next = _reader.advance();
++nesting;
}
- } else if (next == 0xD) {
+ } else if (next == $cr) {
next = _reader.advance();
- if (next == 0xA) {
+ if (next == $lf) {
next = _reader.advance();
}
recordStartOfLine();
- } else if (next == 0xA) {
+ } else if (next == $lf) {
next = _reader.advance();
recordStartOfLine();
} else {
@@ -1024,13 +1041,13 @@ class Scanner {
while (next != quoteChar) {
if (next == -1) {
break outer;
- } else if (next == 0xD) {
+ } else if (next == $cr) {
next = _reader.advance();
- if (next == 0xA) {
+ if (next == $lf) {
next = _reader.advance();
}
recordStartOfLine();
- } else if (next == 0xA) {
+ } else if (next == $lf) {
next = _reader.advance();
recordStartOfLine();
} else {
@@ -1057,7 +1074,7 @@ class Scanner {
}
int next = _reader.advance();
while (next != -1) {
- if (next == 0x24) {
+ if (next == $$) {
_appendStringToken(TokenType.STRING, _reader.getString(start, -1));
next = _tokenizeStringInterpolation(start);
_beginToken();
@@ -1075,30 +1092,30 @@ class Scanner {
}
continue;
}
- if (next == 0x5C) {
+ if (next == $backslash) {
next = _reader.advance();
if (next == -1) {
break;
}
- if (next == 0xD) {
+ if (next == $cr) {
next = _reader.advance();
- if (next == 0xA) {
+ if (next == $lf) {
next = _reader.advance();
}
recordStartOfLine();
- } else if (next == 0xA) {
+ } else if (next == $lf) {
recordStartOfLine();
next = _reader.advance();
} else {
next = _reader.advance();
}
- } else if (next == 0xD) {
+ } else if (next == $cr) {
next = _reader.advance();
- if (next == 0xA) {
+ if (next == $lf) {
next = _reader.advance();
}
recordStartOfLine();
- } else if (next == 0xA) {
+ } else if (next == $lf) {
recordStartOfLine();
next = _reader.advance();
} else {
@@ -1115,17 +1132,17 @@ class Scanner {
}
int _tokenizeMultiply(int next) =>
- _select(0x3D, TokenType.STAR_EQ, TokenType.STAR);
+ _select($equal, TokenType.STAR_EQ, TokenType.STAR);
int _tokenizeNumber(int next) {
int start = _reader.offset;
while (true) {
next = _reader.advance();
- if (0x30 <= next && next <= 0x39) {
+ if ($0 <= next && next <= $9) {
continue;
- } else if (next == 0x2E) {
+ } else if (next == $dot) {
return _tokenizeFractionPart(_reader.advance(), start);
- } else if (next == 0x65 || next == 0x45) {
+ } else if (next == $e || next == $E) {
return _tokenizeFractionPart(next, start);
} else {
_appendStringToken(
@@ -1138,8 +1155,8 @@ class Scanner {
int _tokenizeOpenSquareBracket(int next) {
// [ [] []=
next = _reader.advance();
- if (next == 0x5D) {
- return _select(0x3D, TokenType.INDEX_EQ, TokenType.INDEX);
+ if (next == $close_bracket) {
+ return _select($equal, TokenType.INDEX_EQ, TokenType.INDEX);
} else {
_appendBeginToken(TokenType.OPEN_SQUARE_BRACKET);
return next;
@@ -1147,15 +1164,15 @@ class Scanner {
}
int _tokenizePercent(int next) =>
- _select(0x3D, TokenType.PERCENT_EQ, TokenType.PERCENT);
+ _select($equal, TokenType.PERCENT_EQ, TokenType.PERCENT);
int _tokenizePlus(int next) {
// + ++ +=
next = _reader.advance();
- if (0x2B == next) {
+ if ($plus == next) {
_appendTokenOfType(TokenType.PLUS_PLUS);
return _reader.advance();
- } else if (0x3D == next) {
+ } else if ($equal == next) {
_appendTokenOfType(TokenType.PLUS_EQ);
return _reader.advance();
} else {
@@ -1167,14 +1184,14 @@ class Scanner {
int _tokenizeQuestion() {
// ? ?. ?? ??=
int next = _reader.advance();
- if (next == 0x2E) {
+ if (next == $dot) {
// '.'
_appendTokenOfType(TokenType.QUESTION_PERIOD);
return _reader.advance();
- } else if (next == 0x3F) {
+ } else if (next == $question) {
// '?'
next = _reader.advance();
- if (next == 0x3D) {
+ if (next == $equal) {
// '='
_appendTokenOfType(TokenType.QUESTION_QUESTION_EQ);
return _reader.advance();
@@ -1195,7 +1212,7 @@ class Scanner {
_appendCommentToken(
TokenType.SINGLE_LINE_COMMENT, _reader.getString(_tokenStart, 0));
return next;
- } else if (0xA == next || 0xD == next) {
+ } else if ($lf == next || $cr == next) {
_appendCommentToken(
TokenType.SINGLE_LINE_COMMENT, _reader.getString(_tokenStart, -1));
return next;
@@ -1209,7 +1226,7 @@ class Scanner {
if (next == quoteChar) {
_appendStringToken(TokenType.STRING, _reader.getString(start, 0));
return _reader.advance();
- } else if (next == 0xD || next == 0xA) {
+ } else if (next == $cr || next == $lf) {
_reportError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL);
_appendStringToken(TokenType.STRING, _reader.getString(start, -1));
return _reader.advance();
@@ -1223,16 +1240,16 @@ class Scanner {
int _tokenizeSingleLineString(int next, int quoteChar, int start) {
while (next != quoteChar) {
- if (next == 0x5C) {
+ if (next == $backslash) {
next = _reader.advance();
- } else if (next == 0x24) {
+ } else if (next == $$) {
_appendStringToken(TokenType.STRING, _reader.getString(start, -1));
next = _tokenizeStringInterpolation(start);
_beginToken();
start = _reader.offset;
continue;
}
- if (next <= 0xD && (next == 0xA || next == 0xD || next == -1)) {
+ if (next <= $cr && (next == $lf || next == $cr || next == -1)) {
_reportError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL);
if (start == _reader.offset) {
_appendStringTokenWithOffset(TokenType.STRING, "", 1);
@@ -1251,11 +1268,11 @@ class Scanner {
int _tokenizeSlashOrComment(int next) {
next = _reader.advance();
- if (0x2A == next) {
+ if ($asterisk == next) {
return _tokenizeMultiLineComment(next);
- } else if (0x2F == next) {
+ } else if ($slash == next) {
return _tokenizeSingleLineComment(next);
- } else if (0x3D == next) {
+ } else if ($equal == next) {
_appendTokenOfType(TokenType.SLASH_EQ);
return _reader.advance();
} else {
@@ -1288,7 +1305,7 @@ class Scanner {
int _tokenizeStringInterpolation(int start) {
_beginToken();
int next = _reader.advance();
- if (next == 0x7B) {
+ if (next == $lbrace) {
return _tokenizeInterpolatedExpression(next, start);
} else {
return _tokenizeInterpolatedIdentifier(next, start);
@@ -1298,10 +1315,10 @@ class Scanner {
int _tokenizeTag(int next) {
// # or #!.*[\n\r]
if (_reader.offset == 0) {
- if (_reader.peek() == 0x21) {
+ if (_reader.peek() == $exclamation) {
do {
next = _reader.advance();
- } while (next != 0xA && next != 0xD && next > 0);
+ } while (next != $lf && next != $cr && next > 0);
_appendStringToken(
TokenType.SCRIPT_TAG, _reader.getString(_tokenStart, 0));
return next;
@@ -1314,8 +1331,8 @@ class Scanner {
int _tokenizeTilde(int next) {
// ~ ~/ ~/=
next = _reader.advance();
- if (next == 0x2F) {
- return _select(0x3D, TokenType.TILDE_SLASH_EQ, TokenType.TILDE_SLASH);
+ if (next == $slash) {
+ return _select($equal, TokenType.TILDE_SLASH_EQ, TokenType.TILDE_SLASH);
} else {
_appendTokenOfType(TokenType.TILDE);
return next;
@@ -1326,8 +1343,8 @@ class Scanner {
* Checks if [value] is a single-line or multi-line comment.
*/
static bool _isDocumentationComment(String value) {
- return StringUtilities.startsWith3(value, 0, 0x2F, 0x2F, 0x2F) ||
- StringUtilities.startsWith3(value, 0, 0x2F, 0x2A, 0x2A);
+ return StringUtilities.startsWith3(value, 0, $slash, $slash, $slash) ||
+ StringUtilities.startsWith3(value, 0, $slash, $asterisk, $asterisk);
}
}

Powered by Google App Engine
This is Rietveld 408576698