Recursive parser have start symbol
[cascardo/grammar.git] / parser.h
1 #ifndef PARSER_H
2 #define PARSER_H
3
4 #include <glib.h>
5
6 typedef gint (*nextcb) (gpointer, gpointer*);
7
8 typedef struct
9 {
10   gboolean terminal;
11   gint value;
12 } symbol_t;
13
14 typedef struct
15 {
16   symbol_t* left;
17   GList* right;
18 } rule_t;
19
20 symbol_t* symbol_new (gboolean, gint);
21 rule_t* rule_new (symbol_t*);
22 void rule_append (rule_t*, symbol_t* right);
23
24 #endif