//+--------------------------------------------------------------------------- // // // Lextable.hpp // // History: // created 7/99 aarayas // // 1999 Microsoft Corporation //---------------------------------------------------------------------------- #ifndef _LEXTABLE_HPP_ #define _LEXTABLE_HPP_ #include /************************************************* Lexical Table definition *************************************************/ #define Lex_UpperFlag 0x01 /* upper case */ #define Lex_LowerFlag 0x02 /* lower case */ #define Lex_DigitFlag 0x04 /* decimal digits */ #define Lex_SpaceFlag 0x08 /* spacing characters */ #define Lex_PunctFlag 0x10 /* punctuation characters */ #define Lex_ControlFlag 0x20 /* control characters */ #define Lex_LexiconFlag 0x40 #define Lex_VowelFlag 0x80 #define NTRANSTAB 256 #define INUPPERPAGES(ch) (ch & 0xff00) // this is the same as ch > 0x00ff /************************************************* Lexical Table *************************************************/ const BYTE rgFlags[NTRANSTAB] = { 0x00, // 00 0x20, // 01 0x20, // 02 0x20, // 03 0x20, // 04 0x20, // 05 0x20, // 06 0x20, // 07 0x20, // 08 0x28, // 09 X 0x28, // 0a X 0x28, // 0b X 0x28, // 0c X 0x28, // 0d X 0x20, // 0e 0x20, // 0f 0x20, // 10 0x20, // 11 0x20, // 12 0x20, // 13 0x20, // 14 0x20, // 15 0x20, // 16 0x20, // 17 0x20, // 18 0x20, // 19 0x20, // 1a 0x20, // 1b 0x20, // 1c 0x20, // 1d 0x20, // 1e 0x20, // 1f 0x08, // 20 X 0x10, // 21 P (!) 0x10, // 22 P (") 0x10, // 23 P (#) 0x10, // 24 P ($) 0x10, // 25 P (%) 0x10, // 26 P (&) 0x50, // 27 PE (') 0x10, // 28 P (() 0x10, // 29 P ()) 0x10, // 2a P (*) 0x10, // 2b P (+) 0x10, // 2c P (,) 0x50, // 2d PE (-) 0x50, // 2e PE (.) 0x50, // 2f PE (/) 0x44, // 30 D E (0) 0x44, // 31 D E (1) 0x44, // 32 D E (2) 0x44, // 33 D E (3) 0x44, // 34 D E (4) 0x44, // 35 D E (5) 0x44, // 36 D E (6) 0x44, // 37 D E (7) 0x44, // 38 D E (8) 0x44, // 39 D E (9) 0x10, // 3a P (:) 0x10, // 3b P (;) 0x10, // 3c P (<) 0x10, // 3d P (=) 0x10, // 3e P (>) 0x10, // 3f P (?) 0x10, // 40 P (@) 0xc1, // 41 U EV (A) 0x41, // 42 U E (B) 0x41, // 43 U E (C) 0x41, // 44 U E (D) 0xc1, // 45 U EV (E) 0x41, // 46 U E (F) 0x41, // 47 U E (G) 0x41, // 48 U E (H) 0xc1, // 49 U EV (I) 0x41, // 4a U E (J) 0x41, // 4b U E (K) 0x41, // 4c U E (L) 0x41, // 4d U E (M) 0x41, // 4e U E (N) 0xc1, // 4f U EV (O) 0x41, // 50 U E (P) 0x41, // 51 U E (Q) 0x41, // 52 U E (R) 0x41, // 53 U E (S) 0x41, // 54 U E (T) 0xc1, // 55 U EV (U) 0x41, // 56 U E (V) 0x41, // 57 U E (W) 0x41, // 58 U E (X) 0x41, // 59 U E (Y) 0x41, // 5a U E (Z) 0x10, // 5b P ([) 0x10, // 5c P (\) 0x10, // 5d P (]) 0x10, // 5e P (^) 0x10, // 5f P (_) 0x10, // 60 P (`) 0xc2, // 61 L EV (a) 0x42, // 62 L E (b) 0x42, // 63 L E (c) 0x42, // 64 L E (d) 0xc2, // 65 L EV (e) 0x42, // 66 L E (f) 0x42, // 67 L E (g) 0x42, // 68 L E (h) 0xc2, // 69 L EV (i) 0x42, // 6a L E (j) 0x42, // 6b L E (k) 0x42, // 6c L E (l) 0x42, // 6d L E (m) 0x42, // 6e L E (n) 0xc2, // 6f L EV (o) 0x42, // 70 L E (p) 0x42, // 71 L E (q) 0x42, // 72 L E (r) 0x42, // 73 L E (s) 0x42, // 74 L E (t) 0xc2, // 75 L EV (u) 0x42, // 76 L E (v) 0x42, // 77 L E (w) 0x42, // 78 L E (x) 0x42, // 79 L E (y) 0x42, // 7a L E (z) 0x10, // 7b P ({) 0x10, // 7c P (|) 0x10, // 7d P (}) 0x10, // 7e P (~) 0x20, // 7f () 0x10, // 80 P () 0x20, // 81 () 0x20, // 82 () 0x20, // 83 () 0x20, // 84 () 0x20, // 85 () 0x20, // 86 () 0x20, // 87 () 0x20, // 88 () 0x20, // 89 () 0x20, // 8a () 0x20, // 8b () 0x20, // 8c () 0x20, // 8d () 0x20, // 8e () 0x20, // 8f () 0x20, // 90 () 0x20, // 91 () 0x20, // 92 () 0x20, // 93 () 0x20, // 94 () 0x20, // 95 () 0x20, // 96 () 0x20, // 97 () 0x20, // 98 () 0x20, // 99 () 0x20, // 9a () 0x20, // 9b () 0x20, // 9c () 0x20, // 9d () 0x20, // 9e () 0x20, // 9f () 0x08, // a0 X () 0x10, // a1 P () 0x10, // a2 P () 0x10, // a3 P () 0x10, // a4 P () 0x10, // a5 P () 0x10, // a6 P () 0x10, // a7 P () 0x10, // a8 P () 0x10, // a9 P () 0x10, // aa P () 0x10, // ab P () 0x10, // ac P () 0x10, // ad P () 0x10, // ae P () 0x10, // af P () 0x10, // b0 P () 0x10, // b1 P () 0x54, // b2 D PE () 0x54, // b3 D PE () 0x10, // b4 P () 0x10, // b5 P () 0x10, // b6 P () 0x10, // b7 P () 0x10, // b8 P () 0x54, // b9 D PE () 0x10, // ba P () 0x10, // bb P () 0x54, // bc D PE () 0x54, // bd D PE () 0x54, // be D PE () 0x10, // bf P () 0xc1, // c0 U EV () 0xc1, // c1 U EV () 0xc1, // c2 U EV () 0xc1, // c3 U EV () 0xc1, // c4 U EV () 0xc1, // c5 U EV () 0x41, // c6 U E () 0x41, // c7 U E () 0xc1, // c8 U EV () 0xc1, // c9 U EV () 0xc1, // ca U EV () 0xc1, // cb U EV () 0xc1, // cc U EV () 0xc1, // cd U EV () 0xc1, // ce U EV () 0xc1, // cf U EV () 0x41, // d0 U E () 0x41, // d1 U E () 0xc1, // d2 U EV () 0xc1, // d3 U EV () 0xc1, // d4 U EV () 0xc1, // d5 U EV () 0xc1, // d6 U EV () 0x10, // d7 P () 0xc1, // d8 U EV () 0xc1, // d9 U EV () 0xc1, // da U EV () 0xc1, // db U EV () 0xc1, // dc U EV () 0x41, // dd U E () 0x41, // de U E () 0x42, // df L E () 0xc2, // e0 L EV () 0xc2, // e1 L EV () 0xc2, // e2 L EV () 0xc2, // e3 L EV () 0xc2, // e4 L EV () 0xc2, // e5 L EV () 0x42, // e6 L E () 0x42, // e7 L E () 0xc2, // e8 L EV () 0xc2, // e9 L EV () 0xc2, // ea L EV () 0xc2, // eb L EV () 0xc2, // ec L EV () 0xc2, // ed L EV () 0xc2, // ee L EV () 0xc2, // ef L EV () 0x42, // f0 L E () 0x42, // f1 L E () 0xc2, // f2 L EV () 0xc2, // f3 L EV () 0xc2, // f4 L EV () 0xc2, // f5 L EV () 0xc2, // f6 L EV () 0x10, // f7 P () 0xc2, // f8 L EV () 0xc2, // f9 L EV () 0xc2, // fa L EV () 0xc2, // fb L EV () 0xc2, // fc L EV () 0x42, // fd L E () 0x42, // fe L E () 0x42, // ff L E () }; const BYTE rgPunctFlags[NTRANSTAB] = { 0x00, // 00 0x00, // 01 0x00, // 02 0x00, // 03 0x00, // 04 0x00, // 05 0x00, // 06 0x00, // 07 0x00, // 08 0x08, // 09 W 0x08, // 0a W 0x08, // 0b W 0x08, // 0c W 0x08, // 0d W 0x00, // 0e 0x00, // 0f 0x00, // 10 0x00, // 11 0x00, // 12 0x00, // 13 0x00, // 14 0x00, // 15 0x00, // 16 0x00, // 17 0x00, // 18 0x00, // 19 0x00, // 1a 0x00, // 1b 0x00, // 1c 0x00, // 1d 0x00, // 1e 0x00, // 1f 0x08, // 20 W 0x04, // 21 T (!) 0x05, // 22 L T (") 0x01, // 23 L (#) 0x01, // 24 L ($) 0x04, // 25 T (%) 0x00, // 26 (&) 0x05, // 27 L T (') 0x01, // 28 L (() 0x04, // 29 T ()) 0x08, // 2a W (*) 0x00, // 2b (+) 0x04, // 2c T (,) 0x02, // 2d J (-) 0x04, // 2e T (.) 0x02, // 2f J (/) 0x00, // 30 (0) 0x00, // 31 (1) 0x00, // 32 (2) 0x00, // 33 (3) 0x00, // 34 (4) 0x00, // 35 (5) 0x00, // 36 (6) 0x00, // 37 (7) 0x00, // 38 (8) 0x00, // 39 (9) 0x04, // 3a T (:) 0x04, // 3b T (;) 0x09, // 3c L W (<) 0x08, // 3d W (=) 0x0c, // 3e TW (>) 0x04, // 3f T (?) 0x02, // 40 J (@) 0x00, // 41 (A) 0x00, // 42 (B) 0x00, // 43 (C) 0x00, // 44 (D) 0x00, // 45 (E) 0x00, // 46 (F) 0x00, // 47 (G) 0x00, // 48 (H) 0x00, // 49 (I) 0x00, // 4a (J) 0x00, // 4b (K) 0x00, // 4c (L) 0x00, // 4d (M) 0x00, // 4e (N) 0x00, // 4f (O) 0x00, // 50 (P) 0x00, // 51 (Q) 0x00, // 52 (R) 0x00, // 53 (S) 0x00, // 54 (T) 0x00, // 55 (U) 0x00, // 56 (V) 0x00, // 57 (W) 0x00, // 58 (X) 0x00, // 59 (Y) 0x00, // 5a (Z) 0x01, // 5b L ([) 0x02, // 5c J (\) 0x04, // 5d T (]) 0x00, // 5e (^) 0x00, // 5f (_) 0x00, // 60 (`) 0x00, // 61 (a) 0x00, // 62 (b) 0x00, // 63 (c) 0x00, // 64 (d) 0x00, // 65 (e) 0x00, // 66 (f) 0x00, // 67 (g) 0x00, // 68 (h) 0x00, // 69 (i) 0x00, // 6a (j) 0x00, // 6b (k) 0x00, // 6c (l) 0x00, // 6d (m) 0x00, // 6e (n) 0x00, // 6f (o) 0x00, // 70 (p) 0x00, // 71 (q) 0x00, // 72 (r) 0x00, // 73 (s) 0x00, // 74 (t) 0x00, // 75 (u) 0x00, // 76 (v) 0x00, // 77 (w) 0x00, // 78 (x) 0x00, // 79 (y) 0x00, // 7a (z) 0x01, // 7b L ({) 0x00, // 7c (|) 0x04, // 7d T (}) 0x00, // 7e (~) 0x00, // 7f () 0x01, // 80 L () 0x00, // 81 () 0x00, // 82 () 0x00, // 83 () 0x00, // 84 () 0x00, // 85 () 0x00, // 86 () 0x00, // 87 () 0x00, // 88 () 0x00, // 89 () 0x00, // 8a () 0x00, // 8b () 0x00, // 8c () 0x00, // 8d () 0x00, // 8e () 0x00, // 8f () 0x00, // 90 () 0x00, // 91 () 0x00, // 92 () 0x00, // 93 () 0x00, // 94 () 0x00, // 95 () 0x00, // 96 () 0x00, // 97 () 0x00, // 98 () 0x00, // 99 () 0x00, // 9a () 0x00, // 9b () 0x00, // 9c () 0x00, // 9d () 0x00, // 9e () 0x00, // 9f () 0x08, // a0 W () 0x00, // a1 () 0x00, // a2 () 0x00, // a3 () 0x00, // a4 () 0x00, // a5 () 0x00, // a6 () 0x00, // a7 () 0x00, // a8 () 0x00, // a9 () 0x00, // aa () 0x00, // ab () 0x00, // ac () 0x00, // ad () 0x00, // ae () 0x00, // af () 0x00, // b0 () 0x00, // b1 () 0x00, // b2 () 0x00, // b3 () 0x00, // b4 () 0x00, // b5 () 0x00, // b6 () 0x00, // b7 () 0x00, // b8 () 0x00, // b9 () 0x00, // ba () 0x00, // bb () 0x00, // bc () 0x00, // bd () 0x00, // be () 0x00, // bf () 0x00, // c0 () 0x00, // c1 () 0x00, // c2 () 0x00, // c3 () 0x00, // c4 () 0x00, // c5 () 0x00, // c6 () 0x00, // c7 () 0x00, // c8 () 0x00, // c9 () 0x00, // ca () 0x00, // cb () 0x00, // cc () 0x00, // cd () 0x00, // ce () 0x00, // cf () 0x00, // d0 () 0x00, // d1 () 0x00, // d2 () 0x00, // d3 () 0x00, // d4 () 0x00, // d5 () 0x00, // d6 () 0x00, // d7 () 0x00, // d8 () 0x00, // d9 () 0x00, // da () 0x00, // db () 0x00, // dc () 0x00, // dd () 0x00, // de () 0x00, // df () 0x00, // e0 () 0x00, // e1 () 0x00, // e2 () 0x00, // e3 () 0x00, // e4 () 0x00, // e5 () 0x00, // e6 () 0x00, // e7 () 0x00, // e8 () 0x00, // e9 () 0x00, // ea () 0x00, // eb () 0x00, // ec () 0x00, // ed () 0x00, // ee () 0x00, // ef () 0x00, // f0 () 0x00, // f1 () 0x00, // f2 () 0x00, // f3 () 0x00, // f4 () 0x00, // f5 () 0x00, // f6 () 0x00, // f7 () 0x00, // f8 () 0x00, // f9 () 0x00, // fa () 0x00, // fb () 0x00, // fc () 0x00, // fd () 0x00, // fe () 0x00, // ff () }; /************************************************* Functions definition - define lextable.cpp *************************************************/ BOOL IsUpperPunctW(const WCHAR ch); BOOL IsUpperWordDelimW(WCHAR wc); BOOL TWB_IsCharPunctW(WCHAR ch); BOOL TWB_IsCharWordDelimW(WCHAR ch); bool IsThaiChar(const WCHAR ch); bool IsThaiNumeric(const WCHAR ch); #endif