3 symbol_t* symbol_new (gboolean terminal, gint value)
6 symbol = g_malloc (sizeof (symbol_t));
7 symbol->terminal = terminal;
12 rule_t* rule_new (symbol_t* left)
15 rule = g_malloc (sizeof (rule_t));
21 void rule_append (rule_t* rule, symbol_t* right)
23 rule->right = g_list_append (rule->right, right);
26 guint symbol_hash (gconstpointer data)
29 symbol = (symbol_t*) data;
30 return g_direct_hash (symbol->value);
33 gboolean symbol_equal (gconstpointer data1, gconstpointer data2)
37 symbol1 = (symbol_t*) data1;
38 symbol2 = (symbol_t*) data2;
39 return symbol1->value == symbol2->value &&
40 symbol1->terminal == symbol2->terminal;