Annotation of win32/pcre/pcre_tables.c, revision 1.1
1.1 ! misha 1: /*************************************************
! 2: * Perl-Compatible Regular Expressions *
! 3: *************************************************/
! 4:
! 5: /* PCRE is a library of functions to support regular expressions whose syntax
! 6: and semantics are as close as possible to those of the Perl 5 language.
! 7:
! 8: Written by Philip Hazel
! 9: Copyright (c) 1997-2008 University of Cambridge
! 10:
! 11: -----------------------------------------------------------------------------
! 12: Redistribution and use in source and binary forms, with or without
! 13: modification, are permitted provided that the following conditions are met:
! 14:
! 15: * Redistributions of source code must retain the above copyright notice,
! 16: this list of conditions and the following disclaimer.
! 17:
! 18: * Redistributions in binary form must reproduce the above copyright
! 19: notice, this list of conditions and the following disclaimer in the
! 20: documentation and/or other materials provided with the distribution.
! 21:
! 22: * Neither the name of the University of Cambridge nor the names of its
! 23: contributors may be used to endorse or promote products derived from
! 24: this software without specific prior written permission.
! 25:
! 26: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
! 27: AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
! 28: IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
! 29: ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
! 30: LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
! 31: CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
! 32: SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
! 33: INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
! 34: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
! 35: ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
! 36: POSSIBILITY OF SUCH DAMAGE.
! 37: -----------------------------------------------------------------------------
! 38: */
! 39:
! 40:
! 41: /* This module contains some fixed tables that are used by more than one of the
! 42: PCRE code modules. The tables are also #included by the pcretest program, which
! 43: uses macros to change their names from _pcre_xxx to xxxx, thereby avoiding name
! 44: clashes with the library. */
! 45:
! 46:
! 47: #ifdef HAVE_CONFIG_H
! 48: #include "config.h"
! 49: #endif
! 50:
! 51: #include "pcre_internal.h"
! 52:
! 53:
! 54: /* Table of sizes for the fixed-length opcodes. It's defined in a macro so that
! 55: the definition is next to the definition of the opcodes in pcre_internal.h. */
! 56:
! 57: const uschar _pcre_OP_lengths[] = { OP_LENGTHS };
! 58:
! 59:
! 60:
! 61: /*************************************************
! 62: * Tables for UTF-8 support *
! 63: *************************************************/
! 64:
! 65: /* These are the breakpoints for different numbers of bytes in a UTF-8
! 66: character. */
! 67:
! 68: #ifdef SUPPORT_UTF8
! 69:
! 70: const int _pcre_utf8_table1[] =
! 71: { 0x7f, 0x7ff, 0xffff, 0x1fffff, 0x3ffffff, 0x7fffffff};
! 72:
! 73: const int _pcre_utf8_table1_size = sizeof(_pcre_utf8_table1)/sizeof(int);
! 74:
! 75: /* These are the indicator bits and the mask for the data bits to set in the
! 76: first byte of a character, indexed by the number of additional bytes. */
! 77:
! 78: const int _pcre_utf8_table2[] = { 0, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc};
! 79: const int _pcre_utf8_table3[] = { 0xff, 0x1f, 0x0f, 0x07, 0x03, 0x01};
! 80:
! 81: /* Table of the number of extra bytes, indexed by the first byte masked with
! 82: 0x3f. The highest number for a valid UTF-8 first byte is in fact 0x3d. */
! 83:
! 84: const uschar _pcre_utf8_table4[] = {
! 85: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
! 86: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
! 87: 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
! 88: 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5 };
! 89:
! 90: /* The pcre_utt[] table below translates Unicode property names into type and
! 91: code values. It is searched by binary chop, so must be in collating sequence of
! 92: name. Originally, the table contained pointers to the name strings in the first
! 93: field of each entry. However, that leads to a large number of relocations when
! 94: a shared library is dynamically loaded. A significant reduction is made by
! 95: putting all the names into a single, large string and then using offsets in the
! 96: table itself. Maintenance is more error-prone, but frequent changes to this
! 97: data is unlikely. */
! 98:
! 99: const char _pcre_utt_names[] =
! 100: "Any\0"
! 101: "Arabic\0"
! 102: "Armenian\0"
! 103: "Balinese\0"
! 104: "Bengali\0"
! 105: "Bopomofo\0"
! 106: "Braille\0"
! 107: "Buginese\0"
! 108: "Buhid\0"
! 109: "C\0"
! 110: "Canadian_Aboriginal\0"
! 111: "Cc\0"
! 112: "Cf\0"
! 113: "Cherokee\0"
! 114: "Cn\0"
! 115: "Co\0"
! 116: "Common\0"
! 117: "Coptic\0"
! 118: "Cs\0"
! 119: "Cuneiform\0"
! 120: "Cypriot\0"
! 121: "Cyrillic\0"
! 122: "Deseret\0"
! 123: "Devanagari\0"
! 124: "Ethiopic\0"
! 125: "Georgian\0"
! 126: "Glagolitic\0"
! 127: "Gothic\0"
! 128: "Greek\0"
! 129: "Gujarati\0"
! 130: "Gurmukhi\0"
! 131: "Han\0"
! 132: "Hangul\0"
! 133: "Hanunoo\0"
! 134: "Hebrew\0"
! 135: "Hiragana\0"
! 136: "Inherited\0"
! 137: "Kannada\0"
! 138: "Katakana\0"
! 139: "Kharoshthi\0"
! 140: "Khmer\0"
! 141: "L\0"
! 142: "L&\0"
! 143: "Lao\0"
! 144: "Latin\0"
! 145: "Limbu\0"
! 146: "Linear_B\0"
! 147: "Ll\0"
! 148: "Lm\0"
! 149: "Lo\0"
! 150: "Lt\0"
! 151: "Lu\0"
! 152: "M\0"
! 153: "Malayalam\0"
! 154: "Mc\0"
! 155: "Me\0"
! 156: "Mn\0"
! 157: "Mongolian\0"
! 158: "Myanmar\0"
! 159: "N\0"
! 160: "Nd\0"
! 161: "New_Tai_Lue\0"
! 162: "Nko\0"
! 163: "Nl\0"
! 164: "No\0"
! 165: "Ogham\0"
! 166: "Old_Italic\0"
! 167: "Old_Persian\0"
! 168: "Oriya\0"
! 169: "Osmanya\0"
! 170: "P\0"
! 171: "Pc\0"
! 172: "Pd\0"
! 173: "Pe\0"
! 174: "Pf\0"
! 175: "Phags_Pa\0"
! 176: "Phoenician\0"
! 177: "Pi\0"
! 178: "Po\0"
! 179: "Ps\0"
! 180: "Runic\0"
! 181: "S\0"
! 182: "Sc\0"
! 183: "Shavian\0"
! 184: "Sinhala\0"
! 185: "Sk\0"
! 186: "Sm\0"
! 187: "So\0"
! 188: "Syloti_Nagri\0"
! 189: "Syriac\0"
! 190: "Tagalog\0"
! 191: "Tagbanwa\0"
! 192: "Tai_Le\0"
! 193: "Tamil\0"
! 194: "Telugu\0"
! 195: "Thaana\0"
! 196: "Thai\0"
! 197: "Tibetan\0"
! 198: "Tifinagh\0"
! 199: "Ugaritic\0"
! 200: "Yi\0"
! 201: "Z\0"
! 202: "Zl\0"
! 203: "Zp\0"
! 204: "Zs\0";
! 205:
! 206: const ucp_type_table _pcre_utt[] = {
! 207: { 0, PT_ANY, 0 },
! 208: { 4, PT_SC, ucp_Arabic },
! 209: { 11, PT_SC, ucp_Armenian },
! 210: { 20, PT_SC, ucp_Balinese },
! 211: { 29, PT_SC, ucp_Bengali },
! 212: { 37, PT_SC, ucp_Bopomofo },
! 213: { 46, PT_SC, ucp_Braille },
! 214: { 54, PT_SC, ucp_Buginese },
! 215: { 63, PT_SC, ucp_Buhid },
! 216: { 69, PT_GC, ucp_C },
! 217: { 71, PT_SC, ucp_Canadian_Aboriginal },
! 218: { 91, PT_PC, ucp_Cc },
! 219: { 94, PT_PC, ucp_Cf },
! 220: { 97, PT_SC, ucp_Cherokee },
! 221: { 106, PT_PC, ucp_Cn },
! 222: { 109, PT_PC, ucp_Co },
! 223: { 112, PT_SC, ucp_Common },
! 224: { 119, PT_SC, ucp_Coptic },
! 225: { 126, PT_PC, ucp_Cs },
! 226: { 129, PT_SC, ucp_Cuneiform },
! 227: { 139, PT_SC, ucp_Cypriot },
! 228: { 147, PT_SC, ucp_Cyrillic },
! 229: { 156, PT_SC, ucp_Deseret },
! 230: { 164, PT_SC, ucp_Devanagari },
! 231: { 175, PT_SC, ucp_Ethiopic },
! 232: { 184, PT_SC, ucp_Georgian },
! 233: { 193, PT_SC, ucp_Glagolitic },
! 234: { 204, PT_SC, ucp_Gothic },
! 235: { 211, PT_SC, ucp_Greek },
! 236: { 217, PT_SC, ucp_Gujarati },
! 237: { 226, PT_SC, ucp_Gurmukhi },
! 238: { 235, PT_SC, ucp_Han },
! 239: { 239, PT_SC, ucp_Hangul },
! 240: { 246, PT_SC, ucp_Hanunoo },
! 241: { 254, PT_SC, ucp_Hebrew },
! 242: { 261, PT_SC, ucp_Hiragana },
! 243: { 270, PT_SC, ucp_Inherited },
! 244: { 280, PT_SC, ucp_Kannada },
! 245: { 288, PT_SC, ucp_Katakana },
! 246: { 297, PT_SC, ucp_Kharoshthi },
! 247: { 308, PT_SC, ucp_Khmer },
! 248: { 314, PT_GC, ucp_L },
! 249: { 316, PT_LAMP, 0 },
! 250: { 319, PT_SC, ucp_Lao },
! 251: { 323, PT_SC, ucp_Latin },
! 252: { 329, PT_SC, ucp_Limbu },
! 253: { 335, PT_SC, ucp_Linear_B },
! 254: { 344, PT_PC, ucp_Ll },
! 255: { 347, PT_PC, ucp_Lm },
! 256: { 350, PT_PC, ucp_Lo },
! 257: { 353, PT_PC, ucp_Lt },
! 258: { 356, PT_PC, ucp_Lu },
! 259: { 359, PT_GC, ucp_M },
! 260: { 361, PT_SC, ucp_Malayalam },
! 261: { 371, PT_PC, ucp_Mc },
! 262: { 374, PT_PC, ucp_Me },
! 263: { 377, PT_PC, ucp_Mn },
! 264: { 380, PT_SC, ucp_Mongolian },
! 265: { 390, PT_SC, ucp_Myanmar },
! 266: { 398, PT_GC, ucp_N },
! 267: { 400, PT_PC, ucp_Nd },
! 268: { 403, PT_SC, ucp_New_Tai_Lue },
! 269: { 415, PT_SC, ucp_Nko },
! 270: { 419, PT_PC, ucp_Nl },
! 271: { 422, PT_PC, ucp_No },
! 272: { 425, PT_SC, ucp_Ogham },
! 273: { 431, PT_SC, ucp_Old_Italic },
! 274: { 442, PT_SC, ucp_Old_Persian },
! 275: { 454, PT_SC, ucp_Oriya },
! 276: { 460, PT_SC, ucp_Osmanya },
! 277: { 468, PT_GC, ucp_P },
! 278: { 470, PT_PC, ucp_Pc },
! 279: { 473, PT_PC, ucp_Pd },
! 280: { 476, PT_PC, ucp_Pe },
! 281: { 479, PT_PC, ucp_Pf },
! 282: { 482, PT_SC, ucp_Phags_Pa },
! 283: { 491, PT_SC, ucp_Phoenician },
! 284: { 502, PT_PC, ucp_Pi },
! 285: { 505, PT_PC, ucp_Po },
! 286: { 508, PT_PC, ucp_Ps },
! 287: { 511, PT_SC, ucp_Runic },
! 288: { 517, PT_GC, ucp_S },
! 289: { 519, PT_PC, ucp_Sc },
! 290: { 522, PT_SC, ucp_Shavian },
! 291: { 530, PT_SC, ucp_Sinhala },
! 292: { 538, PT_PC, ucp_Sk },
! 293: { 541, PT_PC, ucp_Sm },
! 294: { 544, PT_PC, ucp_So },
! 295: { 547, PT_SC, ucp_Syloti_Nagri },
! 296: { 560, PT_SC, ucp_Syriac },
! 297: { 567, PT_SC, ucp_Tagalog },
! 298: { 575, PT_SC, ucp_Tagbanwa },
! 299: { 584, PT_SC, ucp_Tai_Le },
! 300: { 591, PT_SC, ucp_Tamil },
! 301: { 597, PT_SC, ucp_Telugu },
! 302: { 604, PT_SC, ucp_Thaana },
! 303: { 611, PT_SC, ucp_Thai },
! 304: { 616, PT_SC, ucp_Tibetan },
! 305: { 624, PT_SC, ucp_Tifinagh },
! 306: { 633, PT_SC, ucp_Ugaritic },
! 307: { 642, PT_SC, ucp_Yi },
! 308: { 645, PT_GC, ucp_Z },
! 309: { 647, PT_PC, ucp_Zl },
! 310: { 650, PT_PC, ucp_Zp },
! 311: { 653, PT_PC, ucp_Zs }
! 312: };
! 313:
! 314: const int _pcre_utt_size = sizeof(_pcre_utt)/sizeof(ucp_type_table);
! 315:
! 316: #endif /* SUPPORT_UTF8 */
! 317:
! 318: /* End of pcre_tables.c */
E-mail: