1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
{*************************************************
* Perl-Compatible Regular Expressions *
*************************************************}
{ Copyright (c) 1997-2000 University of Cambridge }
{
* @file include/pcreposix.h
* @brief PCRE definitions
}
{ This is the header for the POSIX wrapper interface to the PCRE Perl-
Compatible Regular Expression library. It defines the things POSIX says should
be there. I hope. }
{ Have to include stdlib.h in order to ensure that size_t is defined. }
{ Options defined by POSIX. }
const
{ Ignore case }
REG_ICASE = $01;
{ Don't match newlines with wildcards }
REG_NEWLINE = $02;
{ Don't match BOL }
REG_NOTBOL = $04;
{ Don't match EOL }
REG_NOTEOL = $08;
{ These are not used by PCRE, but by defining them we make it easier
to slot PCRE into existing programs that make POSIX calls. }
{ UNUSED! }
REG_EXTENDED = 0;
{ UNUSED! }
REG_NOSUB = 0;
{ Error values. Not all these are relevant or used by the wrapper. }
type
pc_error = (
REG_ASSERT = 1, { internal error ? }
REG_BADBR, { invalid repeat counts in } {}
REG_BADPAT, { pattern error }
REG_BADRPT, { ? * + invalid }
REG_EBRACE, { unbalanced } {}
REG_EBRACK, { unbalanced [] }
REG_ECOLLATE, { collation error - not relevant }
REG_ECTYPE, { bad class }
REG_EESCAPE, { bad escape sequence }
REG_EMPTY, { empty expression }
REG_EPAREN, { unbalanced () }
REG_ERANGE, { bad range inside [] }
REG_ESIZE, { expression too big }
REG_ESPACE, { failed to get memory }
REG_ESUBREG, { bad back reference }
REG_INVARG, { bad argument }
REG_NOMATCH { match failed }
);
{ The structure representing a compiled regular expression. }
regex_t = record
re_pcre: Pointer;
re_nsub, re_erroffset: size_t;
end;
Pregex_t = ^regex_t;
{ The structure in which a captured offset is returned. }
regoff_t = Integer;
regmatch_t = record
rm_so, rm_eo: regoff_t;
end;
{ The functions }
{extern int regcomp(regex_t *, const char *, int);
extern int regexec(regex_t *, const char *, size_t, regmatch_t *, int);
extern size_t regerror(int, const regex_t *, char *, size_t);
extern void regfree(regex_t *);}
|