1*e5dd7070Spatrick //===--- CharInfo.cpp - Static Data for Classifying ASCII Characters ------===// 2*e5dd7070Spatrick // 3*e5dd7070Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*e5dd7070Spatrick // See https://llvm.org/LICENSE.txt for license information. 5*e5dd7070Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*e5dd7070Spatrick // 7*e5dd7070Spatrick //===----------------------------------------------------------------------===// 8*e5dd7070Spatrick 9*e5dd7070Spatrick #include "clang/Basic/CharInfo.h" 10*e5dd7070Spatrick 11*e5dd7070Spatrick using namespace clang::charinfo; 12*e5dd7070Spatrick 13*e5dd7070Spatrick // Statically initialize CharInfo table based on ASCII character set 14*e5dd7070Spatrick // Reference: FreeBSD 7.2 /usr/share/misc/ascii 15*e5dd7070Spatrick const uint16_t clang::charinfo::InfoTable[256] = { 16*e5dd7070Spatrick // 0 NUL 1 SOH 2 STX 3 ETX 17*e5dd7070Spatrick // 4 EOT 5 ENQ 6 ACK 7 BEL 18*e5dd7070Spatrick 0 , 0 , 0 , 0 , 19*e5dd7070Spatrick 0 , 0 , 0 , 0 , 20*e5dd7070Spatrick // 8 BS 9 HT 10 NL 11 VT 21*e5dd7070Spatrick //12 NP 13 CR 14 SO 15 SI 22*e5dd7070Spatrick 0 , CHAR_HORZ_WS, CHAR_VERT_WS, CHAR_HORZ_WS, 23*e5dd7070Spatrick CHAR_HORZ_WS, CHAR_VERT_WS, 0 , 0 , 24*e5dd7070Spatrick //16 DLE 17 DC1 18 DC2 19 DC3 25*e5dd7070Spatrick //20 DC4 21 NAK 22 SYN 23 ETB 26*e5dd7070Spatrick 0 , 0 , 0 , 0 , 27*e5dd7070Spatrick 0 , 0 , 0 , 0 , 28*e5dd7070Spatrick //24 CAN 25 EM 26 SUB 27 ESC 29*e5dd7070Spatrick //28 FS 29 GS 30 RS 31 US 30*e5dd7070Spatrick 0 , 0 , 0 , 0 , 31*e5dd7070Spatrick 0 , 0 , 0 , 0 , 32*e5dd7070Spatrick //32 SP 33 ! 34 " 35 # 33*e5dd7070Spatrick //36 $ 37 % 38 & 39 ' 34*e5dd7070Spatrick CHAR_SPACE , CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL , 35*e5dd7070Spatrick CHAR_PUNCT , CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL , 36*e5dd7070Spatrick //40 ( 41 ) 42 * 43 + 37*e5dd7070Spatrick //44 , 45 - 46 . 47 / 38*e5dd7070Spatrick CHAR_PUNCT , CHAR_PUNCT , CHAR_RAWDEL , CHAR_RAWDEL , 39*e5dd7070Spatrick CHAR_RAWDEL , CHAR_RAWDEL , CHAR_PERIOD , CHAR_RAWDEL , 40*e5dd7070Spatrick //48 0 49 1 50 2 51 3 41*e5dd7070Spatrick //52 4 53 5 54 6 55 7 42*e5dd7070Spatrick CHAR_DIGIT , CHAR_DIGIT , CHAR_DIGIT , CHAR_DIGIT , 43*e5dd7070Spatrick CHAR_DIGIT , CHAR_DIGIT , CHAR_DIGIT , CHAR_DIGIT , 44*e5dd7070Spatrick //56 8 57 9 58 : 59 ; 45*e5dd7070Spatrick //60 < 61 = 62 > 63 ? 46*e5dd7070Spatrick CHAR_DIGIT , CHAR_DIGIT , CHAR_RAWDEL , CHAR_RAWDEL , 47*e5dd7070Spatrick CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL , 48*e5dd7070Spatrick //64 @ 65 A 66 B 67 C 49*e5dd7070Spatrick //68 D 69 E 70 F 71 G 50*e5dd7070Spatrick CHAR_PUNCT , CHAR_XUPPER , CHAR_XUPPER , CHAR_XUPPER , 51*e5dd7070Spatrick CHAR_XUPPER , CHAR_XUPPER , CHAR_XUPPER , CHAR_UPPER , 52*e5dd7070Spatrick //72 H 73 I 74 J 75 K 53*e5dd7070Spatrick //76 L 77 M 78 N 79 O 54*e5dd7070Spatrick CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , 55*e5dd7070Spatrick CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , 56*e5dd7070Spatrick //80 P 81 Q 82 R 83 S 57*e5dd7070Spatrick //84 T 85 U 86 V 87 W 58*e5dd7070Spatrick CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , 59*e5dd7070Spatrick CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , 60*e5dd7070Spatrick //88 X 89 Y 90 Z 91 [ 61*e5dd7070Spatrick //92 \ 93 ] 94 ^ 95 _ 62*e5dd7070Spatrick CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , CHAR_RAWDEL , 63*e5dd7070Spatrick CHAR_PUNCT , CHAR_RAWDEL , CHAR_RAWDEL , CHAR_UNDER , 64*e5dd7070Spatrick //96 ` 97 a 98 b 99 c 65*e5dd7070Spatrick //100 d 101 e 102 f 103 g 66*e5dd7070Spatrick CHAR_PUNCT , CHAR_XLOWER , CHAR_XLOWER , CHAR_XLOWER , 67*e5dd7070Spatrick CHAR_XLOWER , CHAR_XLOWER , CHAR_XLOWER , CHAR_LOWER , 68*e5dd7070Spatrick //104 h 105 i 106 j 107 k 69*e5dd7070Spatrick //108 l 109 m 110 n 111 o 70*e5dd7070Spatrick CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , 71*e5dd7070Spatrick CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , 72*e5dd7070Spatrick //112 p 113 q 114 r 115 s 73*e5dd7070Spatrick //116 t 117 u 118 v 119 w 74*e5dd7070Spatrick CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , 75*e5dd7070Spatrick CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , 76*e5dd7070Spatrick //120 x 121 y 122 z 123 { 77*e5dd7070Spatrick //124 | 125 } 126 ~ 127 DEL 78*e5dd7070Spatrick CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , CHAR_RAWDEL , 79*e5dd7070Spatrick CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL , 0 80*e5dd7070Spatrick }; 81