Added file to compute LR(0) collection of item sets
[cascardo/grammar.git] / grammar.h
index 81ec41d..f945330 100644 (file)
--- a/grammar.h
+++ b/grammar.h
@@ -22,7 +22,7 @@ typedef gint (*nextcb) (gpointer, gpointer*);
 typedef struct
 {
   gboolean terminal;
-  gint value;
+  GQuark value;
 } symbol_t;
 
 typedef struct _rule rule_t;
@@ -38,10 +38,23 @@ typedef struct
 
 GType grammar_get_type ();
 
-symbol_t* symbol_new (gboolean, gint);
+symbol_t* symbol_new (gboolean, GQuark);
+symbol_t* symbol_copy (symbol_t*);
+guint symbol_hash (gconstpointer);
+gboolean symbol_equal (gconstpointer, gconstpointer);
+gint symbol_cmp (symbol_t*, symbol_t*);
+
+rule_t* rule_new ();
+rule_t* rule_copy (rule_t*);
+gint rule_cmp (rule_t*, rule_t*);
+gboolean rule_equal (gconstpointer, gconstpointer);
+guint rule_hash (gconstpointer);
+symbol_t* rule_pop (rule_t*);
+void rule_append (rule_t*, symbol_t*);
+void rule_delete (rule_t*);
+
 
 rule_t* grammar_rule_new (Grammar*, symbol_t*);
-void grammar_rule_append (rule_t*, symbol_t*);
 GList* grammar_get_rules (Grammar*, symbol_t*);
 GList* grammar_get_rule (rule_t*);