Added some debugging
[cascardo/grammar.git] / bnf.c
diff --git a/bnf.c b/bnf.c
index 20e73ca..1e0ab1c 100644 (file)
--- a/bnf.c
+++ b/bnf.c
@@ -6,7 +6,16 @@
 #include <unistd.h>
 #include <stdlib.h>
 
-static gint scanner_next (scanner_t* scanner, GString** val)
+typedef enum
+  {
+    NONE = 0,
+    EQUAL = 1,
+    ID = 2,
+    STRING = 3,
+    EOL = 4
+  } token_t;
+
+static gint bnf_scanner_next (scanner_t* scanner, GString** val)
 {
 
   int state;
@@ -26,7 +35,7 @@ static gint scanner_next (scanner_t* scanner, GString** val)
 
       gchar c;
 
-      if (scanner->buffer->len == 0)
+      if (scanner->buffer->len == i)
        {
          int r;
          r = scanner->cb (scanner->data, buffer, 256);
@@ -250,7 +259,7 @@ grammar_t* grammar_load (char* filename)
   scanner = scanner_new (read, fd);
 
   grammar = grammar_new ();
-  parser = rdp_new (scanner_next, scanner, BNF_GRAMMAR, grammar);
+  parser = rdp_new (bnf_scanner_next, scanner, BNF_GRAMMAR, grammar);
 
   rule = grammar_rule_new (grammar, symbol_new (FALSE, BNF_GRAMMAR));
   rule_append (rule, symbol_new (FALSE, BNF_RULES));
@@ -282,7 +291,7 @@ grammar_t* grammar_load (char* filename)
 
   close (fd);
   scanner_delete (scanner);
-  rdp_delete (rdp);
+  rdp_delete (parser);
   grammar_delete (grammar);
 
   if (tree == NULL)
@@ -292,7 +301,7 @@ grammar_t* grammar_load (char* filename)
   else
     {
       grammar_t* gr;
-      gr = g_object_new (GRAMMAR_TYPE, NULL);
+      gr = grammar_new ();
       grammar_tree (gr, tree);
       return gr;
     }