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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
#pragma src "/sys/src/libregexp"
#pragma lib "libregexp.a"
enum
{
OANY = 0,
OBOL,
OCLASS,
OEOL,
OJMP,
ONOTNL,
ORUNE,
OSAVE,
OSPLIT,
OUNSAVE,
};
typedef struct Resub Resub;
typedef struct Reinst Reinst;
typedef struct Reprog Reprog;
typedef struct Rethread Rethread;
#pragma incomplete Reinst
#pragma incomplete Rethread
struct Resub
{
union
{
char *sp;
Rune *rsp;
};
union
{
char *ep;
Rune *rep;
};
};
struct Reprog
{
Reinst *startinst;
Rethread *threads;
Rethread **thrpool;
char *regstr;
int len;
int nthr;
};
Reprog* regcomp(char*);
Reprog* regcomplit(char*);
Reprog* regcompnl(char*);
void regerror(char*);
int regexec(Reprog*, char*, Resub*, int);
void regsub(char*, char*, int, Resub*, int);
int rregexec(Reprog*, Rune*, Resub*, int);
void rregsub(Rune*, Rune*, int, Resub*, int);
int reprogfmt(Fmt *);
|