Annotation of parser3/src/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 = pcre_maketables();
        !            57: 
        !            58: printf(
        !            59:   "/*************************************************\n"
        !            60:   "*      Perl-Compatible Regular Expressions       *\n"
        !            61:   "*************************************************/\n\n"
        !            62:   "/* This file is automatically written by the dftables auxiliary \n"
        !            63:   "program. If you edit it by hand, you might like to edit the Makefile to \n"
        !            64:   "prevent its ever being regenerated.\n\n"
        !            65:   "This file is #included in the compilation of pcre.c to build the default\n"
        !            66:   "character tables which are used when no tables are passed to the compile\n"
        !            67:   "function. */\n\n"
        !            68:   "static unsigned char pcre_default_tables[] = {\n\n"
        !            69:   "/* This table is a lower casing table. */\n\n");
        !            70: 
        !            71: printf("  ");
        !            72: for (i = 0; i < 256; i++)
        !            73:   {
        !            74:   if ((i & 7) == 0 && i != 0) printf("\n  ");
        !            75:   printf("%3d", *tables++);
        !            76:   if (i != 255) printf(",");
        !            77:   }
        !            78: printf(",\n\n");
        !            79: 
        !            80: printf("/* This table is a case flipping table. */\n\n");
        !            81: 
        !            82: printf("  ");
        !            83: for (i = 0; i < 256; i++)
        !            84:   {
        !            85:   if ((i & 7) == 0 && i != 0) printf("\n  ");
        !            86:   printf("%3d", *tables++);
        !            87:   if (i != 255) printf(",");
        !            88:   }
        !            89: printf(",\n\n");
        !            90: 
        !            91: printf(
        !            92:   "/* This table contains bit maps for digits, 'word' chars, and white\n"
        !            93:   "space. Each map is 32 bytes long and the bits run from the least\n"
        !            94:   "significant end of each byte. */\n\n");
        !            95: 
        !            96: printf("  ");
        !            97: for (i = 0; i < cbit_length; i++)
        !            98:   {
        !            99:   if ((i & 7) == 0 && i != 0)
        !           100:     {
        !           101:     if ((i & 31) == 0) printf("\n");
        !           102:     printf("\n  ");
        !           103:     }
        !           104:   printf("0x%02x", *tables++);
        !           105:   if (i != cbit_length - 1) printf(",");
        !           106:   }
        !           107: printf(" ,\n\n");
        !           108: 
        !           109: printf(
        !           110:   "/* This table identifies various classes of character by individual bits:\n"
        !           111:   "  0x%02x   white space character\n"
        !           112:   "  0x%02x   letter\n"
        !           113:   "  0x%02x   decimal digit\n"
        !           114:   "  0x%02x   hexadecimal digit\n"
        !           115:   "  0x%02x   alphanumeric or '_'\n"
        !           116:   "  0x%02x   regular expression metacharacter or binary zero\n*/\n\n",
        !           117:   ctype_space, ctype_letter, ctype_digit, ctype_xdigit, ctype_word,
        !           118:   ctype_meta);
        !           119: 
        !           120: printf("  ");
        !           121: for (i = 0; i < 256; i++)
        !           122:   {
        !           123:   if ((i & 7) == 0 && i != 0)
        !           124:     {
        !           125:     printf(" /* ");
        !           126:     if (isprint(i-8)) printf(" %c -", i-8);
        !           127:       else printf("%3d-", i-8);
        !           128:     if (isprint(i-1)) printf(" %c ", i-1);
        !           129:       else printf("%3d", i-1);
        !           130:     printf(" */\n  ");
        !           131:     }
        !           132:   printf("0x%02x", *tables++);
        !           133:   if (i != 255) printf(",");
        !           134:   }
        !           135: 
        !           136: printf("};/* ");
        !           137: if (isprint(i-8)) printf(" %c -", i-8);
        !           138:   else printf("%3d-", i-8);
        !           139: if (isprint(i-1)) printf(" %c ", i-1);
        !           140:   else printf("%3d", i-1);
        !           141: printf(" */\n\n/* End of chartables.c */\n");
        !           142: 
        !           143: return 0;
        !           144: }
        !           145: 
        !           146: /* End of dftables.c */

E-mail: