#include "bitset.h" /* Sigh... */
#define EMPTY 0 /* Label number 0 is by definition the empty label */
/* An arc from one state to another */
short a_lbl
; /* Label of this arc */
short a_arrow
; /* State where this arc goes to */
arc
*s_arc
; /* Array of arcs */
/* Optional accelerators */
int s_lower
; /* Lowest label index */
int s_upper
; /* Highest label index */
int *s_accel
; /* Accelerator */
int s_accept
; /* Nonzero for accepting state */
int d_type
; /* Non-terminal this represents */
char *d_name
; /* For printing */
int d_initial
; /* Initial state */
state
*d_state
; /* Array of states */
dfa
*g_dfa
; /* Array of DFAs */
int g_start
; /* Start symbol of the grammar */
int g_accel
; /* Set if accelerators present */
grammar
*newgrammar(int start
);
dfa
*adddfa(grammar
*g
, int type
, char *name
);
void addarc(dfa
*d
, int from
, int to
, int lbl
);
dfa
*PyGrammar_FindDFA(grammar
*g
, int type
);
int addlabel(labellist
*ll
, int type
, char *str
);
int findlabel(labellist
*ll
, int type
, char *str
);
char *PyGrammar_LabelRepr(label
*lb
);
void translatelabels(grammar
*g
);
void addfirstsets(grammar
*g
);
void PyGrammar_AddAccelerators(grammar
*g
);
void PyGrammar_RemoveAccelerators(grammar
*);
void printgrammar(grammar
*g
, FILE *fp
);
void printnonterminals(grammar
*g
, FILE *fp
);
#endif /* !Py_GRAMMAR_H */