Added some debugging
authorThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Wed, 27 Aug 2008 17:22:22 +0000 (14:22 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Wed, 27 Aug 2008 17:22:22 +0000 (14:22 -0300)
first.c
first.h
item.c
lr1_gen.c

diff --git a/first.c b/first.c
index da7d344..895ad2c 100644 (file)
--- a/first.c
+++ b/first.c
@@ -548,3 +548,27 @@ GList* first_rule (GHashTable* first, rule_t* rule)
   return l;
   
 }
   return l;
   
 }
+
+void first_print_symbol (gpointer key, gpointer val, gpointer data)
+{
+  symbol_t* symbol;
+  symbol = (symbol_t*) key;
+  fprintf (stdout, "%s\n", g_quark_to_string (symbol->value));
+}
+
+void first_print_set (gpointer key, gpointer val, gpointer data)
+{
+  symbol_t* symbol;
+  first_set_t* first_set;
+  symbol = (symbol_t*) key;
+  first_set = (first_set_t*) val;
+  fprintf (stdout, "FIRST of %s:\n", g_quark_to_string (symbol->value));
+  if (first_set->has_empty)
+    fprintf (stdout, "empty symbol\n");
+  g_hash_table_foreach (first_set->terminals, first_print_symbol, NULL);
+}
+
+void first_print (GHashTable* first)
+{
+  g_hash_table_foreach (first, first_print_set, NULL);
+}
diff --git a/first.h b/first.h
index 47a6200..17b1bb8 100644 (file)
--- a/first.h
+++ b/first.h
@@ -6,5 +6,6 @@
 GHashTable* grammar_first (grammar_t*);
 GList* first_get (GHashTable*, symbol_t*);
 GList* first_rule (GHashTable*, rule_t*);
 GHashTable* grammar_first (grammar_t*);
 GList* first_get (GHashTable*, symbol_t*);
 GList* first_rule (GHashTable*, rule_t*);
+void first_print (GHashTable*);
 
 #endif
 
 #endif
diff --git a/item.c b/item.c
index f1f61ce..8f4f4cf 100644 (file)
--- a/item.c
+++ b/item.c
@@ -347,13 +347,13 @@ GHashTable* item_collection_lookup (GHashTable* collection,
   return symbols;
 }
 
   return symbols;
 }
 
-#define HASH_ITEM_SET(item_set) (((GPOINTER_TO_INT(item_set) & 0x3f00) >> 8))
+#define HASH_ITEM_SET(item_set) (item_set)
 #ifdef DEBUG
 void item_collection_print_each (gpointer key, gpointer val, gpointer data)
 {
   GHashTable* item_set;
   item_set = (GHashTable*) key;
 #ifdef DEBUG
 void item_collection_print_each (gpointer key, gpointer val, gpointer data)
 {
   GHashTable* item_set;
   item_set = (GHashTable*) key;
-  fprintf (stdout, "Item %x:\n", HASH_ITEM_SET(key));
+  fprintf (stdout, "Item %p:\n", HASH_ITEM_SET(key));
   item_set_print (item_set);
   fprintf (stdout, "\n");
 }
   item_set_print (item_set);
   fprintf (stdout, "\n");
 }
@@ -362,7 +362,7 @@ void item_set_print_goto (gpointer key, gpointer val, gpointer data)
 {
   symbol_t* symbol;
   symbol = (symbol_t*) key;
 {
   symbol_t* symbol;
   symbol = (symbol_t*) key;
-  fprintf (stdout, "GOTO (%x, %s) =\t %x\n", HASH_ITEM_SET(data),
+  fprintf (stdout, "GOTO (%p, %s) =\t %p\n", HASH_ITEM_SET(data),
           g_quark_to_string (symbol->value), HASH_ITEM_SET(val));
 }
 
           g_quark_to_string (symbol->value), HASH_ITEM_SET(val));
 }
 
index 3ff7cbf..ff9658b 100644 (file)
--- a/lr1_gen.c
+++ b/lr1_gen.c
@@ -42,20 +42,23 @@ void lr1_gen_add (gpointer key, gpointer val, gpointer data)
          if (item->dot == NULL)
            {
 #ifdef DEBUG
          if (item->dot == NULL)
            {
 #ifdef DEBUG
-             printf ("ACCEPT: %x\n", key);
+             printf ("ACCEPT: %p\n", key);
 #endif
              transition = transition_accept_new ();
              lr1_add (data, key, symbol_new (TRUE, 0), transition);
            }
          else
            {
 #endif
              transition = transition_accept_new ();
              lr1_add (data, key, symbol_new (TRUE, 0), transition);
            }
          else
            {
+#ifdef DEBUG
+             printf ("START: %p\n", key);
+#endif
              lr1_push (data, key, NULL);
            }
        }
       else if (item->dot == NULL)
        {
 #ifdef DEBUG
              lr1_push (data, key, NULL);
            }
        }
       else if (item->dot == NULL)
        {
 #ifdef DEBUG
-         printf ("REDUCE: %x, %s\n", key,
+         printf ("REDUCE: %p, %s\n", key,
                  g_quark_to_string (item->lookahead->value));
 #endif
          transition = transition_reduce_new (item->left, item->right);
                  g_quark_to_string (item->lookahead->value));
 #endif
          transition = transition_reduce_new (item->left, item->right);
@@ -80,7 +83,7 @@ void lr1_gen_add (gpointer key, gpointer val, gpointer data)
       l = g_list_next (l);
 
 #ifdef DEBUG
       l = g_list_next (l);
 
 #ifdef DEBUG
-      printf ("SHIFT: %x, %s, %x\n", key,
+      printf ("SHIFT: %p, %s, %p\n", key,
              g_quark_to_string (symbol->value), l->data);
 #endif
       transition = transition_shift_new (l->data);
              g_quark_to_string (symbol->value), l->data);
 #endif
       transition = transition_shift_new (l->data);
@@ -104,6 +107,9 @@ lr1_t* lr1_gen (grammar_t* grammar, symbol_t* start, nextcb cb, gpointer data)
   lr1 = lr1_new (cb, data);
 
   first = grammar_first (grammar);
   lr1 = lr1_new (cb, data);
 
   first = grammar_first (grammar);
+#ifdef DEBUG
+  first_print (first);
+#endif
 
   collection = item_set_collection (grammar, first, start);
 
 
   collection = item_set_collection (grammar, first, start);