5 #include <glib-object.h>
7 #define GRAMMAR_TYPE (grammar_get_type ())
8 #define GRAMMAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
9 GRAMMAR_TYPE, Grammar))
10 #define GRAMMAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \
11 GRAMMAR_TYPE, GrammarClass))
12 #define IS_GRAMMAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
14 #define IS_GRAMMAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
16 #define GRAMMAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \
17 GRAMMAR_TYPE, GrammarClass))
20 typedef gint (*nextcb) (gpointer, gpointer*);
28 typedef struct _rule rule_t;
39 GType grammar_get_type ();
41 symbol_t* symbol_new (gboolean, GQuark);
42 symbol_t* symbol_copy (symbol_t*);
43 guint symbol_hash (gconstpointer);
44 gboolean symbol_equal (gconstpointer, gconstpointer);
47 rule_t* rule_copy (rule_t*);
48 symbol_t* rule_pop (rule_t*);
49 void rule_append (rule_t*, symbol_t*);
50 void rule_delete (rule_t*);
53 rule_t* grammar_rule_new (Grammar*, symbol_t*);
54 GList* grammar_get_rules (Grammar*, symbol_t*);
55 GList* grammar_get_rule (rule_t*);