CharInfo.cpp 4.0 KB

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