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.
 
 
 
 
 
 

562 lines
13 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