|
|
1.1 ! root 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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.