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