#define Atom 256 /* token Atom (an impossible char value) */ | |
#define Epsilon 257 /* epsilon arc (an impossible char value) */ | |
/* track field must be same for all node types */ | |
typedef struct _a { | |
struct _a *track; /* track mem allocation */ | |
int label; | |
struct _a *next; | |
struct _n *target; | |
} Arc, *ArcPtr; | |
typedef struct _n { | |
struct _n *track; | |
ArcPtr arcs, arctail; | |
} Node, *NodePtr; | |
typedef struct { | |
NodePtr left, | |
right; | |
} Graph, *GraphPtr; | |
#ifdef __USE_PROTOS | |
int rexpr( char *expr, char *s ); | |
int match( NodePtr automaton, char *s ); | |
#else | |
int rexpr(); | |
int match(); | |
#endif | |