Blame


1 b2cfc4e2 2003-09-30 devnull /*
2 b2cfc4e2 2003-09-30 devnull * substitution list
3 b2cfc4e2 2003-09-30 devnull */
4 b2cfc4e2 2003-09-30 devnull #define uchar __reuchar
5 b2cfc4e2 2003-09-30 devnull typedef unsigned char uchar;
6 b2cfc4e2 2003-09-30 devnull #define nelem(x) (sizeof(x)/sizeof((x)[0]))
7 b2cfc4e2 2003-09-30 devnull
8 b2cfc4e2 2003-09-30 devnull #define NSUBEXP 32
9 b2cfc4e2 2003-09-30 devnull typedef struct Resublist Resublist;
10 b2cfc4e2 2003-09-30 devnull struct Resublist
11 b2cfc4e2 2003-09-30 devnull {
12 b2cfc4e2 2003-09-30 devnull Resub m[NSUBEXP];
13 b2cfc4e2 2003-09-30 devnull };
14 b2cfc4e2 2003-09-30 devnull
15 b2cfc4e2 2003-09-30 devnull /* max character classes per program */
16 b2cfc4e2 2003-09-30 devnull extern Reprog RePrOg;
17 b2cfc4e2 2003-09-30 devnull #define NCLASS (sizeof(RePrOg.class)/sizeof(Reclass))
18 b2cfc4e2 2003-09-30 devnull
19 b2cfc4e2 2003-09-30 devnull /* max rune ranges per character class */
20 b2cfc4e2 2003-09-30 devnull #define NCCRUNE (sizeof(Reclass)/sizeof(Rune))
21 b2cfc4e2 2003-09-30 devnull
22 b2cfc4e2 2003-09-30 devnull /*
23 b2cfc4e2 2003-09-30 devnull * Actions and Tokens (Reinst types)
24 b2cfc4e2 2003-09-30 devnull *
25 b2cfc4e2 2003-09-30 devnull * 02xx are operators, value == precedence
26 b2cfc4e2 2003-09-30 devnull * 03xx are tokens, i.e. operands for operators
27 b2cfc4e2 2003-09-30 devnull */
28 b2cfc4e2 2003-09-30 devnull #define RUNE 0177
29 b2cfc4e2 2003-09-30 devnull #define OPERATOR 0200 /* Bitmask of all operators */
30 b2cfc4e2 2003-09-30 devnull #define START 0200 /* Start, used for marker on stack */
31 b2cfc4e2 2003-09-30 devnull #define RBRA 0201 /* Right bracket, ) */
32 b2cfc4e2 2003-09-30 devnull #define LBRA 0202 /* Left bracket, ( */
33 b2cfc4e2 2003-09-30 devnull #define OR 0203 /* Alternation, | */
34 b2cfc4e2 2003-09-30 devnull #define CAT 0204 /* Concatentation, implicit operator */
35 b2cfc4e2 2003-09-30 devnull #define STAR 0205 /* Closure, * */
36 b2cfc4e2 2003-09-30 devnull #define PLUS 0206 /* a+ == aa* */
37 b2cfc4e2 2003-09-30 devnull #define QUEST 0207 /* a? == a|nothing, i.e. 0 or 1 a's */
38 b2cfc4e2 2003-09-30 devnull #define ANY 0300 /* Any character except newline, . */
39 b2cfc4e2 2003-09-30 devnull #define ANYNL 0301 /* Any character including newline, . */
40 b2cfc4e2 2003-09-30 devnull #define NOP 0302 /* No operation, internal use only */
41 b2cfc4e2 2003-09-30 devnull #define BOL 0303 /* Beginning of line, ^ */
42 b2cfc4e2 2003-09-30 devnull #define EOL 0304 /* End of line, $ */
43 b2cfc4e2 2003-09-30 devnull #define CCLASS 0305 /* Character class, [] */
44 b2cfc4e2 2003-09-30 devnull #define NCCLASS 0306 /* Negated character class, [] */
45 b2cfc4e2 2003-09-30 devnull #define END 0377 /* Terminate: match found */
46 b2cfc4e2 2003-09-30 devnull
47 b2cfc4e2 2003-09-30 devnull /*
48 b2cfc4e2 2003-09-30 devnull * regexec execution lists
49 b2cfc4e2 2003-09-30 devnull */
50 b2cfc4e2 2003-09-30 devnull #define LISTSIZE 10
51 b2cfc4e2 2003-09-30 devnull #define BIGLISTSIZE (10*LISTSIZE)
52 b2cfc4e2 2003-09-30 devnull typedef struct Relist Relist;
53 b2cfc4e2 2003-09-30 devnull struct Relist
54 b2cfc4e2 2003-09-30 devnull {
55 b2cfc4e2 2003-09-30 devnull Reinst* inst; /* Reinstruction of the thread */
56 b2cfc4e2 2003-09-30 devnull Resublist se; /* matched subexpressions in this thread */
57 b2cfc4e2 2003-09-30 devnull };
58 b2cfc4e2 2003-09-30 devnull typedef struct Reljunk Reljunk;
59 b2cfc4e2 2003-09-30 devnull struct Reljunk
60 b2cfc4e2 2003-09-30 devnull {
61 b2cfc4e2 2003-09-30 devnull Relist* relist[2];
62 b2cfc4e2 2003-09-30 devnull Relist* reliste[2];
63 b2cfc4e2 2003-09-30 devnull int starttype;
64 b2cfc4e2 2003-09-30 devnull Rune startchar;
65 b2cfc4e2 2003-09-30 devnull char* starts;
66 b2cfc4e2 2003-09-30 devnull char* eol;
67 b2cfc4e2 2003-09-30 devnull Rune* rstarts;
68 b2cfc4e2 2003-09-30 devnull Rune* reol;
69 b2cfc4e2 2003-09-30 devnull };
70 b2cfc4e2 2003-09-30 devnull
71 6d08a0f5 2007-12-07 rsc extern Relist* _renewthread(Relist*, Reinst*, int, Resublist*);
72 b2cfc4e2 2003-09-30 devnull extern void _renewmatch(Resub*, int, Resublist*);
73 6d08a0f5 2007-12-07 rsc extern Relist* _renewemptythread(Relist*, Reinst*, int, char*);
74 6d08a0f5 2007-12-07 rsc extern Relist* _rrenewemptythread(Relist*, Reinst*, int, Rune*);