xref: /openbsd-src/gnu/usr.bin/perl/regexp.h (revision 62a742911104f98b9185b2c6b6007d9b1c36396c)
1 /*    regexp.h
2  */
3 
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 
11 
12 typedef struct regexp {
13 	char **startp;
14 	char **endp;
15 	SV *regstart;		/* Internal use only. */
16 	char *regstclass;
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 */
21 	U32 nparens;		/* number of parentheses */
22 	U32 lastparen;		/* last paren matched */
23 	char *precomp;		/* pre-compilation regular expression */
24 	char *subbase;		/* saved string so \digit works forever */
25 	char *subbeg;		/* same, but not responsible for allocation */
26 	char *subend;		/* end of subbase */
27 	U16 naughty;		/* how exponential is this pattern? */
28 	char reganch;		/* Internal use only. */
29 	char exec_tainted;	/* Tainted information used by regexec? */
30 	char program[1];	/* Unwarranted chumminess with compiler. */
31 } regexp;
32 
33 #define ROPT_ANCH	3
34 #define  ROPT_ANCH_BOL	 1
35 #define  ROPT_ANCH_GPOS	 2
36 #define ROPT_SKIP	4
37 #define ROPT_IMPLICIT	8
38