Recursive parser have start symbol
[cascardo/grammar.git] / rdp.c
diff --git a/rdp.c b/rdp.c
index a6fca7c..52245af 100644 (file)
--- a/rdp.c
+++ b/rdp.c
@@ -1,7 +1,7 @@
 #include "rdp.h"
 #include <stdlib.h>
 
-rdp_t* rdp_new (nextcb cb, gpointer data)
+rdp_t* rdp_new (nextcb cb, gpointer data, gint value)
 {
 
   rdp_t* parser;
@@ -9,6 +9,7 @@ rdp_t* rdp_new (nextcb cb, gpointer data)
   parser = g_malloc (sizeof (rdp_t));
   parser->cb = cb;
   parser->data = data;
+  parser->start = symbol_new (FALSE, value);
 
   parser->rules = NULL;
 
@@ -21,6 +22,7 @@ rdp_t* rdp_new (nextcb cb, gpointer data)
 void rdp_delete (rdp_t* parser)
 {
 
+  g_free (parser->start);
   g_free (parser);
 
 }
@@ -140,7 +142,7 @@ gpointer rdp_build (rdp_t* parser)
 
   gpointer attrib;
 
-  if (rdp_step (parser, NULL, &attrib))
+  if (rdp_step (parser, parser->start, &attrib))
     return attrib;
 
   return NULL;