|
|
//+---------------------------------------------------------------------------
//
//
// Lextable.hpp
//
// History:
// created 7/99 aarayas
//
// �1999 Microsoft Corporation
//----------------------------------------------------------------------------
#ifndef _LEXTABLE_HPP_
#define _LEXTABLE_HPP_
#include <windows.h>
/*************************************************
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
|