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

68typedef unsigned long sop;

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 {

112 uch *ptr;

116 char *multis;

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')

135 sop *strip;

136 int csetsize;

137 int ncsets;

139 uch *setbits;

140 int cflags;

145# define USEBOL 01

146# define USEEOL 02

147# define REGEX_BAD 04

148 int nbol;

149 int neol;

152 char *must;

153 int mlen;

154 size_t nsub;

155 int backrefs;

157

159};

160

161

162#define OUT (CHAR_MAX+1)

163#define ISWORD(c) (isalnum(c&0xff) || (c) == '_')

164

165#endif