Changeset 10160 in webkit for trunk/JavaScriptCore/pcre/dftables.c
- Timestamp:
- Aug 12, 2005, 3:18:08 PM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/pcre/dftables.c
r10159 r10160 1 1 /************************************************* 2 2 * Perl-Compatible Regular Expressions * 3 * extended to UTF-16 for use in JavaScriptCore * 3 4 *************************************************/ 4 5 5 /* PCRE is a library of functions to support regular expressions whose syntax 6 /* 7 PCRE is a library of functions to support regular expressions whose syntax 6 8 and semantics are as close as possible to those of the Perl 5 language. 7 9 8 Written by Philip Hazel 9 Copyright (c) 1997-2005 University of Cambridge 10 Written by: Philip Hazel <[email protected]> 11 12 Copyright (c) 1997-2001 University of Cambridge 13 Copyright (C) 2004 Apple Computer, Inc. 10 14 11 15 ----------------------------------------------------------------------------- 12 Redistribution and use in source and binary forms, with or without 13 modification, are permitted provided that the following conditions are met: 16 Permission is granted to anyone to use this software for any purpose on any 17 computer system, and to redistribute it freely, subject to the following 18 restrictions: 14 19 15 * Redistributions of source code must retain the above copyright notice, 16 this list of conditions and the following disclaimer. 20 1. This software is distributed in the hope that it will be useful, 21 but WITHOUT ANY WARRANTY; without even the implied warranty of 22 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 23 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. 24 2. The origin of this software must not be misrepresented, either by 25 explicit claim or by omission. 21 26 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. 27 3. Altered versions must be plainly marked as such, and must not be 28 misrepresented as being the original software. 25 29 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. 30 4. If PCRE is embedded in any software that is released under the GNU 31 General Purpose Licence (GPL), then the terms of that licence shall 32 supersede any condition above with which it is incompatible. 37 33 ----------------------------------------------------------------------------- 34 35 See the file Tech.Notes for some information on the internals. 38 36 */ 39 37 40 38 41 /* This is a freestanding support program to generate a file containing default 42 character tables for PCRE. The tables are built according to the default C 43 locale. Now that pcre_maketables is a function visible to the outside world, we 44 make use of its code from here in order to be consistent. */ 39 /* This is a support program to generate the file chartables.c, containing 40 character tables of various kinds. They are built according to the default C 41 locale and used as the default tables by PCRE. Now that pcre_maketables is 42 a function visible to the outside world, we make use of its code from here in 43 order to be consistent. */ 45 44 46 45 #include <ctype.h> … … 48 47 #include <string.h> 49 48 50 #include " pcre_internal.h"49 #include "internal.h" 51 50 52 #define DFTABLES /* pcre_maketables.c notices this */53 #include " pcre_maketables.c"51 #define DFTABLES /* maketables.c notices this */ 52 #include "maketables.c" 54 53 55 54 56 int main( int argc, char **argv)55 int main(void) 57 56 { 58 57 int i; 59 FILE *f;60 58 const unsigned char *tables = pcre_maketables(); 61 const unsigned char *base_of_tables = tables;62 59 63 if (argc != 2) 64 { 65 fprintf(stderr, "dftables: one filename argument is required\n"); 66 return 1; 67 } 68 69 f = fopen(argv[1], "w"); 70 if (f == NULL) 71 { 72 fprintf(stderr, "dftables: failed to open %s for writing\n", argv[1]); 73 return 1; 74 } 75 76 /* There are two fprintf() calls here, because gcc in pedantic mode complains 77 about the very long string otherwise. */ 78 79 fprintf(f, 60 printf( 80 61 "/*************************************************\n" 81 62 "* Perl-Compatible Regular Expressions *\n" … … 83 64 "/* This file is automatically written by the dftables auxiliary \n" 84 65 "program. If you edit it by hand, you might like to edit the Makefile to \n" 85 "prevent its ever being regenerated.\n\n"); 86 fprintf(f, 87 "This file contains the default tables for characters with codes less than\n" 88 "128 (ASCII characters). These tables are used when no external tables are\n" 89 "passed to PCRE. */\n\n" 90 "const unsigned char _pcre_default_tables[] = {\n\n" 66 "prevent its ever being regenerated.\n\n" 67 "This file is #included in the compilation of pcre.c to build the default\n" 68 "character tables which are used when no tables are passed to the compile\n" 69 "function. */\n\n" 70 "static const unsigned char pcre_default_tables[] = {\n\n" 91 71 "/* This table is a lower casing table. */\n\n"); 92 72 93 fprintf(f," ");94 for (i = 0; i < 256; i++)73 printf(" "); 74 for (i = 0; i < (int)ICHAR_MAP_SIZE; i++) 95 75 { 96 if ((i & 7) == 0 && i != 0) fprintf(f,"\n ");97 fprintf(f,"%3d", *tables++);98 if (i != 255) fprintf(f,",");76 if ((i & 7) == 0 && i != 0) printf("\n "); 77 printf("%3d", *tables++); 78 if (i != ICHAR_MAP_SIZE - 1) printf(","); 99 79 } 100 fprintf(f,",\n\n");80 printf(",\n\n"); 101 81 102 fprintf(f,"/* This table is a case flipping table. */\n\n");82 printf("/* This table is a case flipping table. */\n\n"); 103 83 104 fprintf(f," ");105 for (i = 0; i < 256; i++)84 printf(" "); 85 for (i = 0; i < (int)ICHAR_MAP_SIZE; i++) 106 86 { 107 if ((i & 7) == 0 && i != 0) fprintf(f,"\n ");108 fprintf(f,"%3d", *tables++);109 if (i != 255) fprintf(f,",");87 if ((i & 7) == 0 && i != 0) printf("\n "); 88 printf("%3d", *tables++); 89 if (i != ICHAR_MAP_SIZE - 1) printf(","); 110 90 } 111 fprintf(f,",\n\n");91 printf(",\n\n"); 112 92 113 fprintf(f, 93 printf( 114 94 "/* This table contains bit maps for various character classes.\n" 115 95 "Each map is 32 bytes long and the bits run from the least\n" … … 118 98 "print, punct, and cntrl. Other classes are built from combinations. */\n\n"); 119 99 120 fprintf(f," ");100 printf(" "); 121 101 for (i = 0; i < cbit_length; i++) 122 102 { 123 103 if ((i & 7) == 0 && i != 0) 124 104 { 125 if ((i & 31) == 0) fprintf(f,"\n");126 fprintf(f,"\n ");105 if ((i & 31) == 0) printf("\n"); 106 printf("\n "); 127 107 } 128 fprintf(f,"0x%02x", *tables++);129 if (i != cbit_length - 1) fprintf(f,",");108 printf("0x%02x", *tables++); 109 if (i != cbit_length - 1) printf(","); 130 110 } 131 fprintf(f,",\n\n");111 printf(",\n\n"); 132 112 133 fprintf(f, 113 printf( 134 114 "/* This table identifies various classes of character by individual bits:\n" 135 115 " 0x%02x white space character\n" … … 142 122 ctype_meta); 143 123 144 fprintf(f," ");145 for (i = 0; i < 256; i++)124 printf(" "); 125 for (i = 0; i < ICHAR_COUNT; i++) 146 126 { 147 127 if ((i & 7) == 0 && i != 0) 148 128 { 149 fprintf(f," /* ");150 if (isprint(i-8)) fprintf(f," %c -", i-8);151 else fprintf(f,"%3d-", i-8);152 if (isprint(i-1)) fprintf(f," %c ", i-1);153 else fprintf(f,"%3d", i-1);154 fprintf(f," */\n ");129 printf(" /* "); 130 if (isprint(i-8)) printf(" %c -", i-8); 131 else printf("%3d-", i-8); 132 if (isprint(i-1)) printf(" %c ", i-1); 133 else printf("%3d", i-1); 134 printf(" */\n "); 155 135 } 156 fprintf(f,"0x%02x", *tables++);157 if (i != 255) fprintf(f,",");136 printf("0x%02x", *tables++); 137 if (i != ICHAR_COUNT - 1) printf(","); 158 138 } 159 139 160 fprintf(f,"};/* ");161 if (isprint(i-8)) fprintf(f," %c -", i-8);162 else fprintf(f,"%3d-", i-8);163 if (isprint(i-1)) fprintf(f," %c ", i-1);164 else fprintf(f,"%3d", i-1);165 fprintf(f," */\n\n/* End of chartables.c */\n");140 printf("};/* "); 141 if (isprint(i-8)) printf(" %c -", i-8); 142 else printf("%3d-", i-8); 143 if (isprint(i-1)) printf(" %c ", i-1); 144 else printf("%3d", i-1); 145 printf(" */\n\n/* End of chartables.c */\n"); 166 146 167 fclose(f);168 free((void *)base_of_tables);169 147 return 0; 170 148 }
Note:
See TracChangeset
for help on using the changeset viewer.