56 lines
822 B
C
56 lines
822 B
C
#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;
|
|
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 *);
|