This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl 5.000
[perl5.git] / regexp.h
CommitLineData
a0d0e21e
LW
1/* regexp.h
2 */
3
378cc40b
LW
4/*
5 * Definitions etc. for regexp(3) routines.
6 *
7 * Caveat: this is V8 regexp(3) [actually, a reimplementation thereof],
8 * not the System V one.
9 */
10
378cc40b 11
378cc40b 12typedef struct regexp {
fe14fcc3
LW
13 char **startp;
14 char **endp;
79072805 15 SV *regstart; /* Internal use only. */
378cc40b 16 char *regstclass;
79072805
LW
17 SV *regmust; /* Internal use only. */
18 I32 regback; /* Can regmust locate first try? */
19 I32 minlen; /* mininum possible length of $& */
20 I32 prelen; /* length of precomp */
a0d0e21e
LW
21 U32 nparens; /* number of parentheses */
22 U32 lastparen; /* last paren matched */
378cc40b
LW
23 char *precomp; /* pre-compilation regular expression */
24 char *subbase; /* saved string so \digit works forever */
9ef589d8 25 char *subbeg; /* same, but not responsible for allocation */
00bf170e 26 char *subend; /* end of subbase */
a0d0e21e 27 U16 naughty; /* how exponential is this pattern? */
378cc40b
LW
28 char reganch; /* Internal use only. */
29 char do_folding; /* do case-insensitive match? */
378cc40b
LW
30 char program[1]; /* Unwarranted chumminess with compiler. */
31} regexp;
32
9ef589d8
LW
33#define ROPT_ANCH 1
34#define ROPT_SKIP 2
55204971 35#define ROPT_IMPLICIT 4