| #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 __STDC__ |
| int rexpr( char *expr, char *s ); |
| int match( NodePtr automaton, char *s ); |
| #else |
| int rexpr(); |
| int match(); |
| #endif |
| |
| |