xref: /plan9/sys/src/cmd/upas/bayes/dfa.h (revision 4246b6162acdbb658503b8bdc98024362bfbf0fe)
1*4246b616SDavid du Colombier /*
2*4246b616SDavid du Colombier  * Deterministic regexp program.
3*4246b616SDavid du Colombier  */
4*4246b616SDavid du Colombier typedef struct Dreprog Dreprog;
5*4246b616SDavid du Colombier typedef struct Dreinst Dreinst;
6*4246b616SDavid du Colombier typedef struct Drecase Drecase;
7*4246b616SDavid du Colombier 
8*4246b616SDavid du Colombier struct Dreinst
9*4246b616SDavid du Colombier {
10*4246b616SDavid du Colombier 	int isfinal;
11*4246b616SDavid du Colombier 	int isloop;
12*4246b616SDavid du Colombier 	Drecase *c;
13*4246b616SDavid du Colombier 	int nc;
14*4246b616SDavid du Colombier };
15*4246b616SDavid du Colombier 
16*4246b616SDavid du Colombier struct Dreprog
17*4246b616SDavid du Colombier {
18*4246b616SDavid du Colombier 	Dreinst *start[4];
19*4246b616SDavid du Colombier 	int ninst;
20*4246b616SDavid du Colombier 	Dreinst inst[1];
21*4246b616SDavid du Colombier };
22*4246b616SDavid du Colombier 
23*4246b616SDavid du Colombier struct Drecase
24*4246b616SDavid du Colombier {
25*4246b616SDavid du Colombier 	uint start;
26*4246b616SDavid du Colombier 	Dreinst *next;
27*4246b616SDavid du Colombier };
28*4246b616SDavid du Colombier 
29*4246b616SDavid du Colombier Dreprog* dregcvt(Reprog*);
30*4246b616SDavid du Colombier int dregexec(Dreprog*, char*, int);
31*4246b616SDavid du Colombier Dreprog* Breaddfa(Biobuf *b);
32*4246b616SDavid du Colombier void Bprintdfa(Biobuf*, Dreprog*);
33*4246b616SDavid du Colombier 
34