xref: /original-bsd/usr.bin/ex/ex_re.h (revision edc2ab72)
1 /*-
2  * Copyright (c) 1980, 1993
3  *	The Regents of the University of California.  All rights reserved.
4  *
5  * %sccs.include.proprietary.c%
6  *
7  *	@(#)ex_re.h	8.1 (Berkeley) 06/09/93
8  */
9 
10 /*
11  * Regular expression definitions.
12  * The regular expressions in ex are similar to those in ed,
13  * with the addition of the word boundaries from Toronto ed
14  * and allowing character classes to have [a-b] as in the shell.
15  * The numbers for the nodes below are spaced further apart then
16  * necessary because I at one time partially put in + and | (one or
17  * more and alternation.)
18  */
19 struct	regexp {
20 	char	Expbuf[ESIZE + 2];
21 	bool	Circfl;
22 	short	Nbra;
23 };
24 
25 /*
26  * There are three regular expressions here, the previous (in re),
27  * the previous substitute (in subre) and the previous scanning (in scanre).
28  * It would be possible to get rid of "re" by making it a stack parameter
29  * to the appropriate routines.
30  */
31 var struct	regexp re;		/* Last re */
32 var struct	regexp scanre;		/* Last scanning re */
33 var struct	regexp subre;		/* Last substitute re */
34 
35 /*
36  * Defining circfl and expbuf like this saves us from having to change
37  * old code in the ex_re.c stuff.
38  */
39 #define	expbuf	re.Expbuf
40 #define	circfl	re.Circfl
41 #define	nbra	re.Nbra
42 
43 /*
44  * Since the phototypesetter v7-epsilon
45  * C compiler doesn't have structure assignment...
46  */
47 #define	savere(a)	copy(&a, &re, sizeof (struct regexp))
48 #define	resre(a)	copy(&re, &a, sizeof (struct regexp))
49 
50 /*
51  * Definitions for substitute
52  */
53 var char	*braslist[NBRA];	/* Starts of \(\)'ed text in lhs */
54 var char	*braelist[NBRA];	/* Ends... */
55 var char	rhsbuf[RHSSIZE];	/* Rhs of last substitute */
56 
57 /*
58  * Definitions of codes for the compiled re's.
59  * The re algorithm is described in a paper
60  * by K. Thompson in the CACM about 10 years ago
61  * and is the same as in ed.
62  */
63 #define	STAR	1
64 
65 #define	CBRA	1
66 #define	CDOT	4
67 #define	CCL	8
68 #define	NCCL	12
69 #define	CDOL	16
70 #define	CEOFC	17
71 #define	CKET	18
72 #define	CCHR	20
73 #define	CBRC	24
74 #define	CLET	25
75