Provide functions to retrieve rules from Grammar
[cascardo/grammar.git] / grammar.c
index 72248e0..9795468 100644 (file)
--- a/grammar.c
+++ b/grammar.c
@@ -124,6 +124,7 @@ rule_t* grammar_rule_new (Grammar* grammar, symbol_t* left)
                                     left, NULL, (gpointer*)&l))
     {
       l = g_malloc (sizeof (GList**));
+      *l = NULL;
       g_hash_table_insert (grammar->grammar, left, l);
     }
 
@@ -139,3 +140,19 @@ void grammar_rule_append (rule_t* rule, symbol_t* right)
 {
   rule_append (rule, right);
 }
+
+GList* grammar_get_rules (Grammar* grammar, symbol_t* left)
+{
+  GList** l;
+  if (!g_hash_table_lookup_extended (grammar->grammar,
+                                    left, NULL, (gpointer*)&l))
+    {
+      return NULL;
+    }
+  return g_list_first (*l);
+}
+
+GList* grammar_get_rule (rule_t* rule)
+{
+  return rule->right;
+}