Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

561 lines
13 KiB

  1. //+---------------------------------------------------------------------------
  2. //
  3. //
  4. // Lextable.hpp
  5. //
  6. // History:
  7. // created 7/99 aarayas
  8. //
  9. // �1999 Microsoft Corporation
  10. //----------------------------------------------------------------------------
  11. #ifndef _LEXTABLE_HPP_
  12. #define _LEXTABLE_HPP_
  13. #include <windows.h>
  14. /*************************************************
  15. Lexical Table definition
  16. *************************************************/
  17. #define Lex_UpperFlag 0x01 /* upper case */
  18. #define Lex_LowerFlag 0x02 /* lower case */
  19. #define Lex_DigitFlag 0x04 /* decimal digits */
  20. #define Lex_SpaceFlag 0x08 /* spacing characters */
  21. #define Lex_PunctFlag 0x10 /* punctuation characters */
  22. #define Lex_ControlFlag 0x20 /* control characters */
  23. #define Lex_LexiconFlag 0x40
  24. #define Lex_VowelFlag 0x80
  25. #define NTRANSTAB 256
  26. #define INUPPERPAGES(ch) (ch & 0xff00) // this is the same as ch > 0x00ff
  27. /*************************************************
  28. Lexical Table
  29. *************************************************/
  30. const BYTE rgFlags[NTRANSTAB] =
  31. {
  32. 0x00, // 00
  33. 0x20, // 01
  34. 0x20, // 02
  35. 0x20, // 03
  36. 0x20, // 04
  37. 0x20, // 05
  38. 0x20, // 06
  39. 0x20, // 07
  40. 0x20, // 08
  41. 0x28, // 09 X
  42. 0x28, // 0a X
  43. 0x28, // 0b X
  44. 0x28, // 0c X
  45. 0x28, // 0d X
  46. 0x20, // 0e
  47. 0x20, // 0f
  48. 0x20, // 10
  49. 0x20, // 11
  50. 0x20, // 12
  51. 0x20, // 13
  52. 0x20, // 14
  53. 0x20, // 15
  54. 0x20, // 16
  55. 0x20, // 17
  56. 0x20, // 18
  57. 0x20, // 19
  58. 0x20, // 1a
  59. 0x20, // 1b
  60. 0x20, // 1c
  61. 0x20, // 1d
  62. 0x20, // 1e
  63. 0x20, // 1f
  64. 0x08, // 20 X
  65. 0x10, // 21 P (!)
  66. 0x10, // 22 P (")
  67. 0x10, // 23 P (#)
  68. 0x10, // 24 P ($)
  69. 0x10, // 25 P (%)
  70. 0x10, // 26 P (&)
  71. 0x50, // 27 PE (')
  72. 0x10, // 28 P (()
  73. 0x10, // 29 P ())
  74. 0x10, // 2a P (*)
  75. 0x10, // 2b P (+)
  76. 0x10, // 2c P (,)
  77. 0x50, // 2d PE (-)
  78. 0x50, // 2e PE (.)
  79. 0x50, // 2f PE (/)
  80. 0x44, // 30 D E (0)
  81. 0x44, // 31 D E (1)
  82. 0x44, // 32 D E (2)
  83. 0x44, // 33 D E (3)
  84. 0x44, // 34 D E (4)
  85. 0x44, // 35 D E (5)
  86. 0x44, // 36 D E (6)
  87. 0x44, // 37 D E (7)
  88. 0x44, // 38 D E (8)
  89. 0x44, // 39 D E (9)
  90. 0x10, // 3a P (:)
  91. 0x10, // 3b P (;)
  92. 0x10, // 3c P (<)
  93. 0x10, // 3d P (=)
  94. 0x10, // 3e P (>)
  95. 0x10, // 3f P (?)
  96. 0x10, // 40 P (@)
  97. 0xc1, // 41 U EV (A)
  98. 0x41, // 42 U E (B)
  99. 0x41, // 43 U E (C)
  100. 0x41, // 44 U E (D)
  101. 0xc1, // 45 U EV (E)
  102. 0x41, // 46 U E (F)
  103. 0x41, // 47 U E (G)
  104. 0x41, // 48 U E (H)
  105. 0xc1, // 49 U EV (I)
  106. 0x41, // 4a U E (J)
  107. 0x41, // 4b U E (K)
  108. 0x41, // 4c U E (L)
  109. 0x41, // 4d U E (M)
  110. 0x41, // 4e U E (N)
  111. 0xc1, // 4f U EV (O)
  112. 0x41, // 50 U E (P)
  113. 0x41, // 51 U E (Q)
  114. 0x41, // 52 U E (R)
  115. 0x41, // 53 U E (S)
  116. 0x41, // 54 U E (T)
  117. 0xc1, // 55 U EV (U)
  118. 0x41, // 56 U E (V)
  119. 0x41, // 57 U E (W)
  120. 0x41, // 58 U E (X)
  121. 0x41, // 59 U E (Y)
  122. 0x41, // 5a U E (Z)
  123. 0x10, // 5b P ([)
  124. 0x10, // 5c P (\)
  125. 0x10, // 5d P (])
  126. 0x10, // 5e P (^)
  127. 0x10, // 5f P (_)
  128. 0x10, // 60 P (`)
  129. 0xc2, // 61 L EV (a)
  130. 0x42, // 62 L E (b)
  131. 0x42, // 63 L E (c)
  132. 0x42, // 64 L E (d)
  133. 0xc2, // 65 L EV (e)
  134. 0x42, // 66 L E (f)
  135. 0x42, // 67 L E (g)
  136. 0x42, // 68 L E (h)
  137. 0xc2, // 69 L EV (i)
  138. 0x42, // 6a L E (j)
  139. 0x42, // 6b L E (k)
  140. 0x42, // 6c L E (l)
  141. 0x42, // 6d L E (m)
  142. 0x42, // 6e L E (n)
  143. 0xc2, // 6f L EV (o)
  144. 0x42, // 70 L E (p)
  145. 0x42, // 71 L E (q)
  146. 0x42, // 72 L E (r)
  147. 0x42, // 73 L E (s)
  148. 0x42, // 74 L E (t)
  149. 0xc2, // 75 L EV (u)
  150. 0x42, // 76 L E (v)
  151. 0x42, // 77 L E (w)
  152. 0x42, // 78 L E (x)
  153. 0x42, // 79 L E (y)
  154. 0x42, // 7a L E (z)
  155. 0x10, // 7b P ({)
  156. 0x10, // 7c P (|)
  157. 0x10, // 7d P (})
  158. 0x10, // 7e P (~)
  159. 0x20, // 7f ()
  160. 0x10, // 80 P (�)
  161. 0x20, // 81 (�)
  162. 0x20, // 82 (�)
  163. 0x20, // 83 (�)
  164. 0x20, // 84 (�)
  165. 0x20, // 85 (�)
  166. 0x20, // 86 (�)
  167. 0x20, // 87 (�)
  168. 0x20, // 88 (�)
  169. 0x20, // 89 (�)
  170. 0x20, // 8a (�)
  171. 0x20, // 8b (�)
  172. 0x20, // 8c (�)
  173. 0x20, // 8d (�)
  174. 0x20, // 8e (�)
  175. 0x20, // 8f (�)
  176. 0x20, // 90 (�)
  177. 0x20, // 91 (�)
  178. 0x20, // 92 (�)
  179. 0x20, // 93 (�)
  180. 0x20, // 94 (�)
  181. 0x20, // 95 (�)
  182. 0x20, // 96 (�)
  183. 0x20, // 97 (�)
  184. 0x20, // 98 (�)
  185. 0x20, // 99 (�)
  186. 0x20, // 9a (�)
  187. 0x20, // 9b (�)
  188. 0x20, // 9c (�)
  189. 0x20, // 9d (�)
  190. 0x20, // 9e (�)
  191. 0x20, // 9f (�)
  192. 0x08, // a0 X (�)
  193. 0x10, // a1 P (�)
  194. 0x10, // a2 P (�)
  195. 0x10, // a3 P (�)
  196. 0x10, // a4 P (�)
  197. 0x10, // a5 P (�)
  198. 0x10, // a6 P (�)
  199. 0x10, // a7 P (�)
  200. 0x10, // a8 P (�)
  201. 0x10, // a9 P (�)
  202. 0x10, // aa P (�)
  203. 0x10, // ab P (�)
  204. 0x10, // ac P (�)
  205. 0x10, // ad P (�)
  206. 0x10, // ae P (�)
  207. 0x10, // af P (�)
  208. 0x10, // b0 P (�)
  209. 0x10, // b1 P (�)
  210. 0x54, // b2 D PE (�)
  211. 0x54, // b3 D PE (�)
  212. 0x10, // b4 P (�)
  213. 0x10, // b5 P (�)
  214. 0x10, // b6 P (�)
  215. 0x10, // b7 P (�)
  216. 0x10, // b8 P (�)
  217. 0x54, // b9 D PE (�)
  218. 0x10, // ba P (�)
  219. 0x10, // bb P (�)
  220. 0x54, // bc D PE (�)
  221. 0x54, // bd D PE (�)
  222. 0x54, // be D PE (�)
  223. 0x10, // bf P (�)
  224. 0xc1, // c0 U EV (�)
  225. 0xc1, // c1 U EV (�)
  226. 0xc1, // c2 U EV (�)
  227. 0xc1, // c3 U EV (�)
  228. 0xc1, // c4 U EV (�)
  229. 0xc1, // c5 U EV (�)
  230. 0x41, // c6 U E (�)
  231. 0x41, // c7 U E (�)
  232. 0xc1, // c8 U EV (�)
  233. 0xc1, // c9 U EV (�)
  234. 0xc1, // ca U EV (�)
  235. 0xc1, // cb U EV (�)
  236. 0xc1, // cc U EV (�)
  237. 0xc1, // cd U EV (�)
  238. 0xc1, // ce U EV (�)
  239. 0xc1, // cf U EV (�)
  240. 0x41, // d0 U E (�)
  241. 0x41, // d1 U E (�)
  242. 0xc1, // d2 U EV (�)
  243. 0xc1, // d3 U EV (�)
  244. 0xc1, // d4 U EV (�)
  245. 0xc1, // d5 U EV (�)
  246. 0xc1, // d6 U EV (�)
  247. 0x10, // d7 P (�)
  248. 0xc1, // d8 U EV (�)
  249. 0xc1, // d9 U EV (�)
  250. 0xc1, // da U EV (�)
  251. 0xc1, // db U EV (�)
  252. 0xc1, // dc U EV (�)
  253. 0x41, // dd U E (�)
  254. 0x41, // de U E (�)
  255. 0x42, // df L E (�)
  256. 0xc2, // e0 L EV (�)
  257. 0xc2, // e1 L EV (�)
  258. 0xc2, // e2 L EV (�)
  259. 0xc2, // e3 L EV (�)
  260. 0xc2, // e4 L EV (�)
  261. 0xc2, // e5 L EV (�)
  262. 0x42, // e6 L E (�)
  263. 0x42, // e7 L E (�)
  264. 0xc2, // e8 L EV (�)
  265. 0xc2, // e9 L EV (�)
  266. 0xc2, // ea L EV (�)
  267. 0xc2, // eb L EV (�)
  268. 0xc2, // ec L EV (�)
  269. 0xc2, // ed L EV (�)
  270. 0xc2, // ee L EV (�)
  271. 0xc2, // ef L EV (�)
  272. 0x42, // f0 L E (�)
  273. 0x42, // f1 L E (�)
  274. 0xc2, // f2 L EV (�)
  275. 0xc2, // f3 L EV (�)
  276. 0xc2, // f4 L EV (�)
  277. 0xc2, // f5 L EV (�)
  278. 0xc2, // f6 L EV (�)
  279. 0x10, // f7 P (�)
  280. 0xc2, // f8 L EV (�)
  281. 0xc2, // f9 L EV (�)
  282. 0xc2, // fa L EV (�)
  283. 0xc2, // fb L EV (�)
  284. 0xc2, // fc L EV (�)
  285. 0x42, // fd L E (�)
  286. 0x42, // fe L E (�)
  287. 0x42, // ff L E (�)
  288. };
  289. const BYTE rgPunctFlags[NTRANSTAB] =
  290. {
  291. 0x00, // 00
  292. 0x00, // 01
  293. 0x00, // 02
  294. 0x00, // 03
  295. 0x00, // 04
  296. 0x00, // 05
  297. 0x00, // 06
  298. 0x00, // 07
  299. 0x00, // 08
  300. 0x08, // 09 W
  301. 0x08, // 0a W
  302. 0x08, // 0b W
  303. 0x08, // 0c W
  304. 0x08, // 0d W
  305. 0x00, // 0e
  306. 0x00, // 0f
  307. 0x00, // 10
  308. 0x00, // 11
  309. 0x00, // 12
  310. 0x00, // 13
  311. 0x00, // 14
  312. 0x00, // 15
  313. 0x00, // 16
  314. 0x00, // 17
  315. 0x00, // 18
  316. 0x00, // 19
  317. 0x00, // 1a
  318. 0x00, // 1b
  319. 0x00, // 1c
  320. 0x00, // 1d
  321. 0x00, // 1e
  322. 0x00, // 1f
  323. 0x08, // 20 W
  324. 0x04, // 21 T (!)
  325. 0x05, // 22 L T (")
  326. 0x01, // 23 L (#)
  327. 0x01, // 24 L ($)
  328. 0x04, // 25 T (%)
  329. 0x00, // 26 (&)
  330. 0x05, // 27 L T (')
  331. 0x01, // 28 L (()
  332. 0x04, // 29 T ())
  333. 0x08, // 2a W (*)
  334. 0x00, // 2b (+)
  335. 0x04, // 2c T (,)
  336. 0x02, // 2d J (-)
  337. 0x04, // 2e T (.)
  338. 0x02, // 2f J (/)
  339. 0x00, // 30 (0)
  340. 0x00, // 31 (1)
  341. 0x00, // 32 (2)
  342. 0x00, // 33 (3)
  343. 0x00, // 34 (4)
  344. 0x00, // 35 (5)
  345. 0x00, // 36 (6)
  346. 0x00, // 37 (7)
  347. 0x00, // 38 (8)
  348. 0x00, // 39 (9)
  349. 0x04, // 3a T (:)
  350. 0x04, // 3b T (;)
  351. 0x09, // 3c L W (<)
  352. 0x08, // 3d W (=)
  353. 0x0c, // 3e TW (>)
  354. 0x04, // 3f T (?)
  355. 0x02, // 40 J (@)
  356. 0x00, // 41 (A)
  357. 0x00, // 42 (B)
  358. 0x00, // 43 (C)
  359. 0x00, // 44 (D)
  360. 0x00, // 45 (E)
  361. 0x00, // 46 (F)
  362. 0x00, // 47 (G)
  363. 0x00, // 48 (H)
  364. 0x00, // 49 (I)
  365. 0x00, // 4a (J)
  366. 0x00, // 4b (K)
  367. 0x00, // 4c (L)
  368. 0x00, // 4d (M)
  369. 0x00, // 4e (N)
  370. 0x00, // 4f (O)
  371. 0x00, // 50 (P)
  372. 0x00, // 51 (Q)
  373. 0x00, // 52 (R)
  374. 0x00, // 53 (S)
  375. 0x00, // 54 (T)
  376. 0x00, // 55 (U)
  377. 0x00, // 56 (V)
  378. 0x00, // 57 (W)
  379. 0x00, // 58 (X)
  380. 0x00, // 59 (Y)
  381. 0x00, // 5a (Z)
  382. 0x01, // 5b L ([)
  383. 0x02, // 5c J (\)
  384. 0x04, // 5d T (])
  385. 0x00, // 5e (^)
  386. 0x00, // 5f (_)
  387. 0x00, // 60 (`)
  388. 0x00, // 61 (a)
  389. 0x00, // 62 (b)
  390. 0x00, // 63 (c)
  391. 0x00, // 64 (d)
  392. 0x00, // 65 (e)
  393. 0x00, // 66 (f)
  394. 0x00, // 67 (g)
  395. 0x00, // 68 (h)
  396. 0x00, // 69 (i)
  397. 0x00, // 6a (j)
  398. 0x00, // 6b (k)
  399. 0x00, // 6c (l)
  400. 0x00, // 6d (m)
  401. 0x00, // 6e (n)
  402. 0x00, // 6f (o)
  403. 0x00, // 70 (p)
  404. 0x00, // 71 (q)
  405. 0x00, // 72 (r)
  406. 0x00, // 73 (s)
  407. 0x00, // 74 (t)
  408. 0x00, // 75 (u)
  409. 0x00, // 76 (v)
  410. 0x00, // 77 (w)
  411. 0x00, // 78 (x)
  412. 0x00, // 79 (y)
  413. 0x00, // 7a (z)
  414. 0x01, // 7b L ({)
  415. 0x00, // 7c (|)
  416. 0x04, // 7d T (})
  417. 0x00, // 7e (~)
  418. 0x00, // 7f ()
  419. 0x01, // 80 L (�)
  420. 0x00, // 81 (�)
  421. 0x00, // 82 (�)
  422. 0x00, // 83 (�)
  423. 0x00, // 84 (�)
  424. 0x00, // 85 (�)
  425. 0x00, // 86 (�)
  426. 0x00, // 87 (�)
  427. 0x00, // 88 (�)
  428. 0x00, // 89 (�)
  429. 0x00, // 8a (�)
  430. 0x00, // 8b (�)
  431. 0x00, // 8c (�)
  432. 0x00, // 8d (�)
  433. 0x00, // 8e (�)
  434. 0x00, // 8f (�)
  435. 0x00, // 90 (�)
  436. 0x00, // 91 (�)
  437. 0x00, // 92 (�)
  438. 0x00, // 93 (�)
  439. 0x00, // 94 (�)
  440. 0x00, // 95 (�)
  441. 0x00, // 96 (�)
  442. 0x00, // 97 (�)
  443. 0x00, // 98 (�)
  444. 0x00, // 99 (�)
  445. 0x00, // 9a (�)
  446. 0x00, // 9b (�)
  447. 0x00, // 9c (�)
  448. 0x00, // 9d (�)
  449. 0x00, // 9e (�)
  450. 0x00, // 9f (�)
  451. 0x08, // a0 W (�)
  452. 0x00, // a1 (�)
  453. 0x00, // a2 (�)
  454. 0x00, // a3 (�)
  455. 0x00, // a4 (�)
  456. 0x00, // a5 (�)
  457. 0x00, // a6 (�)
  458. 0x00, // a7 (�)
  459. 0x00, // a8 (�)
  460. 0x00, // a9 (�)
  461. 0x00, // aa (�)
  462. 0x00, // ab (�)
  463. 0x00, // ac (�)
  464. 0x00, // ad (�)
  465. 0x00, // ae (�)
  466. 0x00, // af (�)
  467. 0x00, // b0 (�)
  468. 0x00, // b1 (�)
  469. 0x00, // b2 (�)
  470. 0x00, // b3 (�)
  471. 0x00, // b4 (�)
  472. 0x00, // b5 (�)
  473. 0x00, // b6 (�)
  474. 0x00, // b7 (�)
  475. 0x00, // b8 (�)
  476. 0x00, // b9 (�)
  477. 0x00, // ba (�)
  478. 0x00, // bb (�)
  479. 0x00, // bc (�)
  480. 0x00, // bd (�)
  481. 0x00, // be (�)
  482. 0x00, // bf (�)
  483. 0x00, // c0 (�)
  484. 0x00, // c1 (�)
  485. 0x00, // c2 (�)
  486. 0x00, // c3 (�)
  487. 0x00, // c4 (�)
  488. 0x00, // c5 (�)
  489. 0x00, // c6 (�)
  490. 0x00, // c7 (�)
  491. 0x00, // c8 (�)
  492. 0x00, // c9 (�)
  493. 0x00, // ca (�)
  494. 0x00, // cb (�)
  495. 0x00, // cc (�)
  496. 0x00, // cd (�)
  497. 0x00, // ce (�)
  498. 0x00, // cf (�)
  499. 0x00, // d0 (�)
  500. 0x00, // d1 (�)
  501. 0x00, // d2 (�)
  502. 0x00, // d3 (�)
  503. 0x00, // d4 (�)
  504. 0x00, // d5 (�)
  505. 0x00, // d6 (�)
  506. 0x00, // d7 (�)
  507. 0x00, // d8 (�)
  508. 0x00, // d9 (�)
  509. 0x00, // da (�)
  510. 0x00, // db (�)
  511. 0x00, // dc (�)
  512. 0x00, // dd (�)
  513. 0x00, // de (�)
  514. 0x00, // df (�)
  515. 0x00, // e0 (�)
  516. 0x00, // e1 (�)
  517. 0x00, // e2 (�)
  518. 0x00, // e3 (�)
  519. 0x00, // e4 (�)
  520. 0x00, // e5 (�)
  521. 0x00, // e6 (�)
  522. 0x00, // e7 (�)
  523. 0x00, // e8 (�)
  524. 0x00, // e9 (�)
  525. 0x00, // ea (�)
  526. 0x00, // eb (�)
  527. 0x00, // ec (�)
  528. 0x00, // ed (�)
  529. 0x00, // ee (�)
  530. 0x00, // ef (�)
  531. 0x00, // f0 (�)
  532. 0x00, // f1 (�)
  533. 0x00, // f2 (�)
  534. 0x00, // f3 (�)
  535. 0x00, // f4 (�)
  536. 0x00, // f5 (�)
  537. 0x00, // f6 (�)
  538. 0x00, // f7 (�)
  539. 0x00, // f8 (�)
  540. 0x00, // f9 (�)
  541. 0x00, // fa (�)
  542. 0x00, // fb (�)
  543. 0x00, // fc (�)
  544. 0x00, // fd (�)
  545. 0x00, // fe (�)
  546. 0x00, // ff (�)
  547. };
  548. /*************************************************
  549. Functions definition - define lextable.cpp
  550. *************************************************/
  551. BOOL IsUpperPunctW(const WCHAR ch);
  552. BOOL IsUpperWordDelimW(WCHAR wc);
  553. BOOL TWB_IsCharPunctW(WCHAR ch);
  554. BOOL TWB_IsCharWordDelimW(WCHAR ch);
  555. bool IsThaiChar(const WCHAR ch);
  556. bool IsThaiNumeric(const WCHAR ch);
  557. #endif