Index: pkg/dart_scanner/lib/src/characters.dart |
diff --git a/pkg/dart_scanner/lib/src/characters.dart b/pkg/dart_scanner/lib/src/characters.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..60fe4e16ef8810c850517c1e19c6f0c0de1469ac |
--- /dev/null |
+++ b/pkg/dart_scanner/lib/src/characters.dart |
@@ -0,0 +1,143 @@ |
+// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+library characters; |
+ |
+const int $EOF = 0; |
+const int $STX = 2; |
+const int $BS = 8; |
+const int $TAB = 9; |
+const int $LF = 10; |
+const int $VTAB = 11; |
+const int $FF = 12; |
+const int $CR = 13; |
+const int $SPACE = 32; |
+const int $BANG = 33; |
+const int $DQ = 34; |
+const int $HASH = 35; |
+const int $$ = 36; |
+const int $PERCENT = 37; |
+const int $AMPERSAND = 38; |
+const int $SQ = 39; |
+const int $OPEN_PAREN = 40; |
+const int $CLOSE_PAREN = 41; |
+const int $STAR = 42; |
+const int $PLUS = 43; |
+const int $COMMA = 44; |
+const int $MINUS = 45; |
+const int $PERIOD = 46; |
+const int $SLASH = 47; |
+const int $0 = 48; |
+const int $1 = 49; |
+const int $2 = 50; |
+const int $3 = 51; |
+const int $4 = 52; |
+const int $5 = 53; |
+const int $6 = 54; |
+const int $7 = 55; |
+const int $8 = 56; |
+const int $9 = 57; |
+const int $COLON = 58; |
+const int $SEMICOLON = 59; |
+const int $LT = 60; |
+const int $EQ = 61; |
+const int $GT = 62; |
+const int $QUESTION = 63; |
+const int $AT = 64; |
+const int $A = 65; |
+const int $B = 66; |
+const int $C = 67; |
+const int $D = 68; |
+const int $E = 69; |
+const int $F = 70; |
+const int $G = 71; |
+const int $H = 72; |
+const int $I = 73; |
+const int $J = 74; |
+const int $K = 75; |
+const int $L = 76; |
+const int $M = 77; |
+const int $N = 78; |
+const int $O = 79; |
+const int $P = 80; |
+const int $Q = 81; |
+const int $R = 82; |
+const int $S = 83; |
+const int $T = 84; |
+const int $U = 85; |
+const int $V = 86; |
+const int $W = 87; |
+const int $X = 88; |
+const int $Y = 89; |
+const int $Z = 90; |
+const int $OPEN_SQUARE_BRACKET = 91; |
+const int $BACKSLASH = 92; |
+const int $CLOSE_SQUARE_BRACKET = 93; |
+const int $CARET = 94; |
+const int $_ = 95; |
+const int $BACKPING = 96; |
+const int $a = 97; |
+const int $b = 98; |
+const int $c = 99; |
+const int $d = 100; |
+const int $e = 101; |
+const int $f = 102; |
+const int $g = 103; |
+const int $h = 104; |
+const int $i = 105; |
+const int $j = 106; |
+const int $k = 107; |
+const int $l = 108; |
+const int $m = 109; |
+const int $n = 110; |
+const int $o = 111; |
+const int $p = 112; |
+const int $q = 113; |
+const int $r = 114; |
+const int $s = 115; |
+const int $t = 116; |
+const int $u = 117; |
+const int $v = 118; |
+const int $w = 119; |
+const int $x = 120; |
+const int $y = 121; |
+const int $z = 122; |
+const int $OPEN_CURLY_BRACKET = 123; |
+const int $BAR = 124; |
+const int $CLOSE_CURLY_BRACKET = 125; |
+const int $TILDE = 126; |
+const int $DEL = 127; |
+const int $NBSP = 160; |
+const int $LS = 0x2028; |
+const int $PS = 0x2029; |
+ |
+const int $FIRST_SURROGATE = 0xd800; |
+const int $LAST_SURROGATE = 0xdfff; |
+const int $LAST_CODE_POINT = 0x10ffff; |
+ |
+bool isHexDigit(int characterCode) { |
+ if (characterCode <= $9) return $0 <= characterCode; |
+ characterCode |= $a ^ $A; |
+ return ($a <= characterCode && characterCode <= $f); |
+} |
+ |
+int hexDigitValue(int hexDigit) { |
+ assert(isHexDigit(hexDigit)); |
+ // hexDigit is one of '0'..'9', 'A'..'F' and 'a'..'f'. |
+ if (hexDigit <= $9) return hexDigit - $0; |
+ return (hexDigit | ($a ^ $A)) - ($a - 10); |
+} |
+ |
+bool isUnicodeScalarValue(int value) { |
+ return value < $FIRST_SURROGATE || |
+ (value > $LAST_SURROGATE && value <= $LAST_CODE_POINT); |
+} |
+ |
+bool isUtf16LeadSurrogate(int value) { |
+ return value >= 0xd800 && value <= 0xdbff; |
+} |
+ |
+bool isUtf16TrailSurrogate(int value) { |
+ return value >= 0xdc00 && value <= 0xdfff; |
+} |