| /************************************************* |
| * Perl-Compatible Regular Expressions * |
| * extended to UTF-16 for use in JavaScriptCore * |
| *************************************************/ |
| |
| /* |
| PCRE is a library of functions to support regular expressions whose syntax |
| and semantics are as close as possible to those of the Perl 5 language. |
| |
| Written by: Philip Hazel <ph10@cam.ac.uk> |
| |
| Copyright (c) 1997-2001 University of Cambridge |
| Copyright (C) 2004 Apple Computer, Inc. |
| |
| ----------------------------------------------------------------------------- |
| Permission is granted to anyone to use this software for any purpose on any |
| computer system, and to redistribute it freely, subject to the following |
| restrictions: |
| |
| 1. This software is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| |
| 2. The origin of this software must not be misrepresented, either by |
| explicit claim or by omission. |
| |
| 3. Altered versions must be plainly marked as such, and must not be |
| misrepresented as being the original software. |
| |
| 4. If PCRE is embedded in any software that is released under the GNU |
| General Purpose Licence (GPL), then the terms of that licence shall |
| supersede any condition above with which it is incompatible. |
| ----------------------------------------------------------------------------- |
| |
| See the file Tech.Notes for some information on the internals. |
| */ |
| |
| |
| /* This is a support program to generate the file chartables.c, containing |
| character tables of various kinds. They are built according to the default C |
| locale and used as the default tables by PCRE. Now that pcre_maketables is |
| a function visible to the outside world, we make use of its code from here in |
| order to be consistent. */ |
| |
| #include <ctype.h> |
| #include <stdio.h> |
| #include <string.h> |
| |
| #include "internal.h" |
| |
| #define DFTABLES /* maketables.c notices this */ |
| #include "maketables.c" |
| |
| |
| int main(void) |
| { |
| int i; |
| const unsigned char *tables = pcre_maketables(); |
| |
| printf( |
| "/*************************************************\n" |
| "* Perl-Compatible Regular Expressions *\n" |
| "*************************************************/\n\n" |
| "/* This file is automatically written by the dftables auxiliary \n" |
| "program. If you edit it by hand, you might like to edit the Makefile to \n" |
| "prevent its ever being regenerated.\n\n" |
| "This file is #included in the compilation of pcre.c to build the default\n" |
| "character tables which are used when no tables are passed to the compile\n" |
| "function. */\n\n" |
| "static const unsigned char pcre_default_tables[] = {\n\n" |
| "/* This table is a lower casing table. */\n\n"); |
| |
| printf(" "); |
| for (i = 0; i < (int)ICHAR_MAP_SIZE; i++) |
| { |
| if ((i & 7) == 0 && i != 0) printf("\n "); |
| printf("%3d", *tables++); |
| if (i != ICHAR_MAP_SIZE - 1) printf(","); |
| } |
| printf(",\n\n"); |
| |
| printf("/* This table is a case flipping table. */\n\n"); |
| |
| printf(" "); |
| for (i = 0; i < (int)ICHAR_MAP_SIZE; i++) |
| { |
| if ((i & 7) == 0 && i != 0) printf("\n "); |
| printf("%3d", *tables++); |
| if (i != ICHAR_MAP_SIZE - 1) printf(","); |
| } |
| printf(",\n\n"); |
| |
| printf( |
| "/* This table contains bit maps for various character classes.\n" |
| "Each map is 32 bytes long and the bits run from the least\n" |
| "significant end of each byte. The classes that have their own\n" |
| "maps are: space, xdigit, digit, upper, lower, word, graph\n" |
| "print, punct, and cntrl. Other classes are built from combinations. */\n\n"); |
| |
| printf(" "); |
| for (i = 0; i < cbit_length; i++) |
| { |
| if ((i & 7) == 0 && i != 0) |
| { |
| if ((i & 31) == 0) printf("\n"); |
| printf("\n "); |
| } |
| printf("0x%02x", *tables++); |
| if (i != cbit_length - 1) printf(","); |
| } |
| printf(",\n\n"); |
| |
| printf( |
| "/* This table identifies various classes of character by individual bits:\n" |
| " 0x%02x white space character\n" |
| " 0x%02x letter\n" |
| " 0x%02x decimal digit\n" |
| " 0x%02x hexadecimal digit\n" |
| " 0x%02x alphanumeric or '_'\n" |
| " 0x%02x regular expression metacharacter or binary zero\n*/\n\n", |
| ctype_space, ctype_letter, ctype_digit, ctype_xdigit, ctype_word, |
| ctype_meta); |
| |
| printf(" "); |
| for (i = 0; i < ICHAR_COUNT; i++) |
| { |
| if ((i & 7) == 0 && i != 0) |
| { |
| printf(" /* "); |
| if (isprint(i-8)) printf(" %c -", i-8); |
| else printf("%3d-", i-8); |
| if (isprint(i-1)) printf(" %c ", i-1); |
| else printf("%3d", i-1); |
| printf(" */\n "); |
| } |
| printf("0x%02x", *tables++); |
| if (i != ICHAR_COUNT - 1) printf(","); |
| } |
| |
| printf("};/* "); |
| if (isprint(i-8)) printf(" %c -", i-8); |
| else printf("%3d-", i-8); |
| if (isprint(i-1)) printf(" %c ", i-1); |
| else printf("%3d", i-1); |
| printf(" */\n\n/* End of chartables.c */\n"); |
| |
| return 0; |
| } |
| |
| /* End of dftables.c */ |