Annotation of parser3/src/lib/pcre/dftables.c, revision 1.1
1.1 ! paf 1: /*************************************************
! 2: * Perl-Compatible Regular Expressions *
! 3: *************************************************/
! 4:
! 5: /*
! 6: PCRE is a library of functions to support regular expressions whose syntax
! 7: and semantics are as close as possible to those of the Perl 5 language.
! 8:
! 9: Written by: Philip Hazel <ph10@cam.ac.uk>
! 10:
! 11: Copyright (c) 1997-1999 University of Cambridge
! 12:
! 13: -----------------------------------------------------------------------------
! 14: Permission is granted to anyone to use this software for any purpose on any
! 15: computer system, and to redistribute it freely, subject to the following
! 16: restrictions:
! 17:
! 18: 1. This software is distributed in the hope that it will be useful,
! 19: but WITHOUT ANY WARRANTY; without even the implied warranty of
! 20: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
! 21:
! 22: 2. The origin of this software must not be misrepresented, either by
! 23: explicit claim or by omission.
! 24:
! 25: 3. Altered versions must be plainly marked as such, and must not be
! 26: misrepresented as being the original software.
! 27:
! 28: 4. If PCRE is embedded in any software that is released under the GNU
! 29: General Purpose Licence (GPL), then the terms of that licence shall
! 30: supersede any condition above with which it is incompatible.
! 31: -----------------------------------------------------------------------------
! 32:
! 33: See the file Tech.Notes for some information on the internals.
! 34: */
! 35:
! 36:
! 37: /* This is a support program to generate the file chartables.c, containing
! 38: character tables of various kinds. They are built according to the default C
! 39: locale and used as the default tables by PCRE. Now that pcre_maketables is
! 40: a function visible to the outside world, we make use of its code from here in
! 41: order to be consistent. */
! 42:
! 43: #include <ctype.h>
! 44: #include <stdio.h>
! 45: #include <string.h>
! 46:
! 47: #include "internal.h"
! 48:
! 49: #define DFTABLES /* maketables.c notices this */
! 50: #include "maketables.c"
! 51:
! 52:
! 53: int main(void)
! 54: {
! 55: int i;
! 56: unsigned const char *tables;
! 57: tables = pcre_maketables();
! 58:
! 59: printf(
! 60: "/*************************************************\n"
! 61: "* Perl-Compatible Regular Expressions *\n"
! 62: "*************************************************/\n\n"
! 63: "/* This file is automatically written by the dftables auxiliary \n"
! 64: "program. If you edit it by hand, you might like to edit the Makefile to \n"
! 65: "prevent its ever being regenerated.\n\n"
! 66: "This file is #included in the compilation of pcre.c to build the default\n"
! 67: "character tables which are used when no tables are passed to the compile\n"
! 68: "function. */\n\n"
! 69: "unsigned char pcre_default_tables[] = {\n\n"
! 70: "/* This table is a lower casing table. */\n\n");
! 71:
! 72: printf(" ");
! 73: for (i = 0; i < 256; i++)
! 74: {
! 75: if ((i & 7) == 0 && i != 0) printf("\n ");
! 76: printf("%3d", *tables++);
! 77: if (i != 255) printf(",");
! 78: }
! 79: printf(",\n\n");
! 80:
! 81: printf("/* This table is a case flipping table. */\n\n");
! 82:
! 83: printf(" ");
! 84: for (i = 0; i < 256; i++)
! 85: {
! 86: if ((i & 7) == 0 && i != 0) printf("\n ");
! 87: printf("%3d", *tables++);
! 88: if (i != 255) printf(",");
! 89: }
! 90: printf(",\n\n");
! 91:
! 92: printf(
! 93: "/* This table contains bit maps for digits, 'word' chars, and white\n"
! 94: "space. Each map is 32 bytes long and the bits run from the least\n"
! 95: "significant end of each byte. */\n\n");
! 96:
! 97: printf(" ");
! 98: for (i = 0; i < cbit_length; i++)
! 99: {
! 100: if ((i & 7) == 0 && i != 0)
! 101: {
! 102: if ((i & 31) == 0) printf("\n");
! 103: printf("\n ");
! 104: }
! 105: printf("0x%02x", *tables++);
! 106: if (i != cbit_length - 1) printf(",");
! 107: }
! 108: printf(" ,\n\n");
! 109:
! 110: printf(
! 111: "/* This table identifies various classes of character by individual bits:\n"
! 112: " 0x%02x white space character\n"
! 113: " 0x%02x letter\n"
! 114: " 0x%02x decimal digit\n"
! 115: " 0x%02x hexadecimal digit\n"
! 116: " 0x%02x alphanumeric or '_'\n"
! 117: " 0x%02x regular expression metacharacter or binary zero\n*/\n\n",
! 118: ctype_space, ctype_letter, ctype_digit, ctype_xdigit, ctype_word,
! 119: ctype_meta);
! 120:
! 121: printf(" ");
! 122: for (i = 0; i < 256; i++)
! 123: {
! 124: if ((i & 7) == 0 && i != 0)
! 125: {
! 126: printf(" /* ");
! 127: if (isprint(i-8)) printf(" %c -", i-8);
! 128: else printf("%3d-", i-8);
! 129: if (isprint(i-1)) printf(" %c ", i-1);
! 130: else printf("%3d", i-1);
! 131: printf(" */\n ");
! 132: }
! 133: printf("0x%02x", *tables++);
! 134: if (i != 255) printf(",");
! 135: }
! 136:
! 137: printf("};/* ");
! 138: if (isprint(i-8)) printf(" %c -", i-8);
! 139: else printf("%3d-", i-8);
! 140: if (isprint(i-1)) printf(" %c ", i-1);
! 141: else printf("%3d", i-1);
! 142: printf(" */\n\n/* End of chartables.c */\n");
! 143:
! 144: return 0;
! 145: }
! 146:
! 147: /* End of dftables.c */
E-mail: