1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| #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
|
|
|
|