1990-10-14 13:07:46 +01:00
|
|
|
/* Parser interface */
|
|
|
|
|
|
|
|
#define MAXSTACK 100
|
|
|
|
|
|
|
|
typedef struct _stackentry {
|
|
|
|
int s_state; /* State in current DFA */
|
|
|
|
dfa *s_dfa; /* Current DFA */
|
1990-12-20 16:06:42 +01:00
|
|
|
struct _node *s_parent; /* Where to add next node */
|
1990-10-14 13:07:46 +01:00
|
|
|
} stackentry;
|
|
|
|
|
|
|
|
typedef struct _stack {
|
|
|
|
stackentry *s_top; /* Top entry */
|
|
|
|
stackentry s_base[MAXSTACK];/* Array of stack entries */
|
|
|
|
/* NB The stack grows down */
|
|
|
|
} stack;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
struct _stack p_stack; /* Stack of parser states */
|
|
|
|
struct _grammar *p_grammar; /* Grammar to use */
|
|
|
|
struct _node *p_tree; /* Top of parse tree */
|
|
|
|
} parser_state;
|
|
|
|
|
|
|
|
parser_state *newparser PROTO((struct _grammar *g, int start));
|
|
|
|
void delparser PROTO((parser_state *ps));
|
1990-12-20 16:06:42 +01:00
|
|
|
int addtoken PROTO((parser_state *ps, int type, char *str, int lineno));
|
|
|
|
void addaccelerators PROTO((grammar *g));
|