summaryrefslogtreecommitdiff
path: root/Parser/parser.h
blob: 16eee0e8fe5cfc6e00117973d765db42dc50b33e (plain)
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
/* Parser interface */

#define MAXSTACK 100

typedef struct _stackentry {
	int		 s_state;	/* State in current DFA */
	dfa		*s_dfa;		/* Current DFA */
	node		*s_parent;	/* Where to add next node */
} 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));
int addtoken PROTO((parser_state *ps, int type, char *str));