xref: /PHP-7.1/ext/pcre/pcrelib/pcre_chartables.c (revision 23917b45)
1 /*************************************************
2 *      Perl-Compatible Regular Expressions       *
3 *************************************************/
4 
5 /* This file contains character tables that are used when no external tables
6 are passed to PCRE by the application that calls it. The tables are used only
7 for characters whose code values are less than 256.
8 
9 This is a default version of the tables that assumes ASCII encoding. A program
10 called dftables (which is distributed with PCRE) can be used to build
11 alternative versions of this file. This is necessary if you are running in an
12 EBCDIC environment, or if you want to default to a different encoding, for
13 example ISO-8859-1. When dftables is run, it creates these tables in the
14 current locale. If PCRE is configured with --enable-rebuild-chartables, this
15 happens automatically.
16 
17 The following #includes are present because without them gcc 4.x may remove the
18 array definition from the final binary if PCRE is built into a static library
19 and dead code stripping is activated. This leads to link errors. Pulling in the
20 header ensures that the array gets flagged as "someone outside this compilation
21 unit might reference this" and so it will always be supplied to the linker. */
22 
23 #include "config.h"
24 
25 #include "pcre_internal.h"
26 
27 const pcre_uint8 PRIV(default_tables)[] = {
28 
29 /* This table is a lower casing table. */
30 
31     0,  1,  2,  3,  4,  5,  6,  7,
32     8,  9, 10, 11, 12, 13, 14, 15,
33    16, 17, 18, 19, 20, 21, 22, 23,
34    24, 25, 26, 27, 28, 29, 30, 31,
35    32, 33, 34, 35, 36, 37, 38, 39,
36    40, 41, 42, 43, 44, 45, 46, 47,
37    48, 49, 50, 51, 52, 53, 54, 55,
38    56, 57, 58, 59, 60, 61, 62, 63,
39    64, 97, 98, 99,100,101,102,103,
40   104,105,106,107,108,109,110,111,
41   112,113,114,115,116,117,118,119,
42   120,121,122, 91, 92, 93, 94, 95,
43    96, 97, 98, 99,100,101,102,103,
44   104,105,106,107,108,109,110,111,
45   112,113,114,115,116,117,118,119,
46   120,121,122,123,124,125,126,127,
47   128,129,130,131,132,133,134,135,
48   136,137,138,139,140,141,142,143,
49   144,145,146,147,148,149,150,151,
50   152,153,154,155,156,157,158,159,
51   160,161,162,163,164,165,166,167,
52   168,169,170,171,172,173,174,175,
53   176,177,178,179,180,181,182,183,
54   184,185,186,187,188,189,190,191,
55   192,193,194,195,196,197,198,199,
56   200,201,202,203,204,205,206,207,
57   208,209,210,211,212,213,214,215,
58   216,217,218,219,220,221,222,223,
59   224,225,226,227,228,229,230,231,
60   232,233,234,235,236,237,238,239,
61   240,241,242,243,244,245,246,247,
62   248,249,250,251,252,253,254,255,
63 
64 /* This table is a case flipping table. */
65 
66     0,  1,  2,  3,  4,  5,  6,  7,
67     8,  9, 10, 11, 12, 13, 14, 15,
68    16, 17, 18, 19, 20, 21, 22, 23,
69    24, 25, 26, 27, 28, 29, 30, 31,
70    32, 33, 34, 35, 36, 37, 38, 39,
71    40, 41, 42, 43, 44, 45, 46, 47,
72    48, 49, 50, 51, 52, 53, 54, 55,
73    56, 57, 58, 59, 60, 61, 62, 63,
74    64, 97, 98, 99,100,101,102,103,
75   104,105,106,107,108,109,110,111,
76   112,113,114,115,116,117,118,119,
77   120,121,122, 91, 92, 93, 94, 95,
78    96, 65, 66, 67, 68, 69, 70, 71,
79    72, 73, 74, 75, 76, 77, 78, 79,
80    80, 81, 82, 83, 84, 85, 86, 87,
81    88, 89, 90,123,124,125,126,127,
82   128,129,130,131,132,133,134,135,
83   136,137,138,139,140,141,142,143,
84   144,145,146,147,148,149,150,151,
85   152,153,154,155,156,157,158,159,
86   160,161,162,163,164,165,166,167,
87   168,169,170,171,172,173,174,175,
88   176,177,178,179,180,181,182,183,
89   184,185,186,187,188,189,190,191,
90   192,193,194,195,196,197,198,199,
91   200,201,202,203,204,205,206,207,
92   208,209,210,211,212,213,214,215,
93   216,217,218,219,220,221,222,223,
94   224,225,226,227,228,229,230,231,
95   232,233,234,235,236,237,238,239,
96   240,241,242,243,244,245,246,247,
97   248,249,250,251,252,253,254,255,
98 
99 /* This table contains bit maps for various character classes. Each map is 32
100 bytes long and the bits run from the least significant end of each byte. The
101 classes that have their own maps are: space, xdigit, digit, upper, lower, word,
102 graph, print, punct, and cntrl. Other classes are built from combinations. */
103 
104   0x00,0x3e,0x00,0x00,0x01,0x00,0x00,0x00,
105   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
106   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
107   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
108 
109   0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x03,
110   0x7e,0x00,0x00,0x00,0x7e,0x00,0x00,0x00,
111   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
112   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
113 
114   0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x03,
115   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
116   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
117   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
118 
119   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
120   0xfe,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
121   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
122   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
123 
124   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
125   0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x07,
126   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
127   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
128 
129   0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x03,
130   0xfe,0xff,0xff,0x87,0xfe,0xff,0xff,0x07,
131   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
132   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
133 
134   0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
135   0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
136   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
137   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
138 
139   0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
140   0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
141   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
142   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
143 
144   0x00,0x00,0x00,0x00,0xfe,0xff,0x00,0xfc,
145   0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x78,
146   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
147   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
148 
149   0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
150   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
151   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
152   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
153 
154 /* This table identifies various classes of character by individual bits:
155   0x01   white space character
156   0x02   letter
157   0x04   decimal digit
158   0x08   hexadecimal digit
159   0x10   alphanumeric or '_'
160   0x80   regular expression metacharacter or binary zero
161 */
162 
163   0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*   0-  7 */
164   0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00, /*   8- 15 */
165   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  16- 23 */
166   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  24- 31 */
167   0x01,0x00,0x00,0x00,0x80,0x00,0x00,0x00, /*    - '  */
168   0x80,0x80,0x80,0x80,0x00,0x00,0x80,0x00, /*  ( - /  */
169   0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c, /*  0 - 7  */
170   0x1c,0x1c,0x00,0x00,0x00,0x00,0x00,0x80, /*  8 - ?  */
171   0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x12, /*  @ - G  */
172   0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /*  H - O  */
173   0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /*  P - W  */
174   0x12,0x12,0x12,0x80,0x80,0x00,0x80,0x10, /*  X - _  */
175   0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x12, /*  ` - g  */
176   0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /*  h - o  */
177   0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /*  p - w  */
178   0x12,0x12,0x12,0x80,0x80,0x00,0x00,0x00, /*  x -127 */
179   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 128-135 */
180   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 136-143 */
181   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 144-151 */
182   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 152-159 */
183   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 160-167 */
184   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 168-175 */
185   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 176-183 */
186   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 184-191 */
187   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 192-199 */
188   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 200-207 */
189   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 208-215 */
190   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 216-223 */
191   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 224-231 */
192   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 232-239 */
193   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 240-247 */
194   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/* 248-255 */
195 
196 /* End of pcre_chartables.c */
197