1 #define Atom 256 /* token Atom (an impossible char value) */ 2 #define Epsilon 257 /* epsilon arc (an impossible char value) */ 3 4 /* track field must be same for all node types */ 5 typedef struct _a { 6 struct _a *track; /* track mem allocation */ 7 int label; 8 struct _a *next; 9 struct _n *target; 10 } Arc, *ArcPtr; 11 12 typedef struct _n { 13 struct _n *track; 14 ArcPtr arcs, arctail; 15 } Node, *NodePtr; 16 17 typedef struct { 18 NodePtr left, 19 right; 20 } Graph, *GraphPtr; 21 22 #ifdef __USE_PROTOS 23 int rexpr( char *expr, char *s ); 24 int match( NodePtr automaton, char *s ); 25 #else 26 int rexpr(); 27 int match(); 28 #endif 29 30 31