3 |
*************************************************/ |
*************************************************/ |
4 |
|
|
5 |
|
|
6 |
#define PCRE_VERSION "1.01 19-Nov-1997" |
#define PCRE_VERSION "1.08 27-Mar-1998" |
7 |
|
|
8 |
|
|
9 |
/* This is a library of functions to support regular expressions whose syntax |
/* This is a library of functions to support regular expressions whose syntax |
12 |
|
|
13 |
Written by: Philip Hazel <ph10@cam.ac.uk> |
Written by: Philip Hazel <ph10@cam.ac.uk> |
14 |
|
|
15 |
Copyright (c) 1997 University of Cambridge |
Copyright (c) 1998 University of Cambridge |
16 |
|
|
17 |
----------------------------------------------------------------------------- |
----------------------------------------------------------------------------- |
18 |
Permission is granted to anyone to use this software for any purpose on any |
Permission is granted to anyone to use this software for any purpose on any |
38 |
define a macro for memmove() if USE_BCOPY is defined. */ |
define a macro for memmove() if USE_BCOPY is defined. */ |
39 |
|
|
40 |
#ifdef USE_BCOPY |
#ifdef USE_BCOPY |
41 |
|
#undef memmove /* some systems may have a macro */ |
42 |
#define memmove(a, b, c) bcopy(b, a, c) |
#define memmove(a, b, c) bcopy(b, a, c) |
43 |
#endif |
#endif |
44 |
|
|
53 |
#include <string.h> |
#include <string.h> |
54 |
#include "pcre.h" |
#include "pcre.h" |
55 |
|
|
56 |
|
/* In case there is no definition of offsetof() provided - though any proper |
57 |
|
Standard C system should have one. */ |
58 |
|
|
59 |
|
#ifndef offsetof |
60 |
|
#define offsetof(p_type,field) ((size_t)&(((p_type *)0)->field)) |
61 |
|
#endif |
62 |
|
|
63 |
/* Private options flags start at the most significant end of the two bytes. |
/* Private options flags start at the most significant end of the two bytes. |
64 |
The public options defined in pcre.h start at the least significant end. Make |
The public options defined in pcre.h start at the least significant end. Make |
65 |
sure they don't overlap! */ |
sure they don't overlap! */ |
78 |
|
|
79 |
#define PUBLIC_OPTIONS \ |
#define PUBLIC_OPTIONS \ |
80 |
(PCRE_CASELESS|PCRE_EXTENDED|PCRE_ANCHORED|PCRE_MULTILINE| \ |
(PCRE_CASELESS|PCRE_EXTENDED|PCRE_ANCHORED|PCRE_MULTILINE| \ |
81 |
PCRE_DOTALL|PCRE_DOLLAR_ENDONLY|PCRE_EXTRA) |
PCRE_DOTALL|PCRE_DOLLAR_ENDONLY|PCRE_EXTRA|PCRE_UNGREEDY) |
82 |
|
|
83 |
#define PUBLIC_EXEC_OPTIONS \ |
#define PUBLIC_EXEC_OPTIONS \ |
84 |
(PCRE_CASELESS|PCRE_ANCHORED|PCRE_MULTILINE|PCRE_NOTBOL|PCRE_NOTEOL| \ |
(PCRE_CASELESS|PCRE_ANCHORED|PCRE_MULTILINE|PCRE_NOTBOL|PCRE_NOTEOL| \ |
116 |
|
|
117 |
/* Opcode table: OP_BRA must be last, as all values >= it are used for brackets |
/* Opcode table: OP_BRA must be last, as all values >= it are used for brackets |
118 |
that extract substrings. Starting from 1 (i.e. after OP_END), the values up to |
that extract substrings. Starting from 1 (i.e. after OP_END), the values up to |
119 |
OP_EOL must correspond in order to the list of escapes immediately above. */ |
OP_EOD must correspond in order to the list of escapes immediately above. */ |
120 |
|
|
121 |
enum { |
enum { |
122 |
OP_END, /* End of pattern */ |
OP_END, /* End of pattern */ |
133 |
OP_NOT_WORDCHAR, /* \W */ |
OP_NOT_WORDCHAR, /* \W */ |
134 |
OP_WORDCHAR, /* \w */ |
OP_WORDCHAR, /* \w */ |
135 |
OP_CUT, /* The analogue of Prolog's "cut" operation (extension) */ |
OP_CUT, /* The analogue of Prolog's "cut" operation (extension) */ |
136 |
OP_EOD, /* End of data: or \Z. This must always be the last |
OP_EOD, /* End of data: \Z. */ |
|
of the backslashed meta values. */ |
|
137 |
|
|
138 |
OP_CIRC, /* Start of line - varies with multiline switch */ |
OP_CIRC, /* Start of line - varies with multiline switch */ |
139 |
OP_DOLL, /* End of line - varies with multiline switch */ |
OP_DOLL, /* End of line - varies with multiline switch */ |
181 |
OP_CRMINRANGE, |
OP_CRMINRANGE, |
182 |
|
|
183 |
OP_CLASS, /* Match a character class */ |
OP_CLASS, /* Match a character class */ |
184 |
|
OP_NEGCLASS, /* Match a character class, specified negatively */ |
185 |
OP_REF, /* Match a back reference */ |
OP_REF, /* Match a back reference */ |
186 |
|
|
187 |
OP_ALT, /* Start of alternation */ |
OP_ALT, /* Start of alternation */ |