LLVM: lib/Support/regex2.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38#ifndef LLVM_SUPPORT_REGEX2_H
39#define LLVM_SUPPORT_REGEX2_H
40
42#include <stddef.h>
43
44
45
46
47#define MAGIC1 ((('r'^0200)<<8) | 'e')
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
70#define OPRMASK 0xf8000000LU
71#define OPDMASK 0x07ffffffLU
72#define OPSHIFT ((unsigned)27)
73#define OP(n) ((n)&OPRMASK)
74#define OPND(n) ((n)&OPDMASK)
75#define SOP(op, opnd) ((op)|(opnd))
76
77
78#define OEND (1LU<<OPSHIFT)
79#define OCHAR (2LU<<OPSHIFT)
80#define OBOL (3LU<<OPSHIFT)
81#define OEOL (4LU<<OPSHIFT)
82#define OANY (5LU<<OPSHIFT)
83#define OANYOF (6LU<<OPSHIFT)
84#define OBACK_ (7LU<<OPSHIFT)
85#define O_BACK (8LU<<OPSHIFT)
86#define OPLUS_ (9LU<<OPSHIFT)
87#define O_PLUS (10LU<<OPSHIFT)
88#define OQUEST_ (11LU<<OPSHIFT)
89#define O_QUEST (12LU<<OPSHIFT)
90#define OLPAREN (13LU<<OPSHIFT)
91#define ORPAREN (14LU<<OPSHIFT)
92#define OCH_ (15LU<<OPSHIFT)
93#define OOR1 (16LU<<OPSHIFT)
94#define OOR2 (17LU<<OPSHIFT)
95#define O_CH (18LU<<OPSHIFT)
96#define OBOW (19LU<<OPSHIFT)
97#define OEOW (20LU<<OPSHIFT)
98
99
100
101
102
103
104
105
106
107
108
109
110
111typedef struct {
118
119#define CHadd(cs, c) ((cs)->ptr[(uch)(c)] |= (cs)->mask, (cs)->hash += (c))
120#define CHsub(cs, c) ((cs)->ptr[(uch)(c)] &= ~(cs)->mask, (cs)->hash -= (c))
121#define CHIN(cs, c) ((cs)->ptr[(uch)(c)] & (cs)->mask)
122#define MCadd(p, cs, cp) mcadd(p, cs, cp)
123#define MCsub(p, cs, cp) mcsub(p, cs, cp)
124#define MCin(p, cs, cp) mcin(p, cs, cp)
125
126
128
129
130
131
134# define MAGIC2 ((('R'^0200)<<8)|'E')
145# define USEBOL 01
146# define USEEOL 02
147# define REGEX_BAD 04
157
159};
160
161
162#define OUT (CHAR_MAX+1)
163#define ISWORD(c) (isalnum(c&0xff) || (c) == '_')
164
165#endif