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) 05/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 74