/* l2xirexp.h        Include file for regular expression code */

#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;

int rexpr();
int match();
int like_expr();