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