| // 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; | 
 | } |