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.
562 lines
14 KiB
562 lines
14 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
//
|
|
// 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
|