Pushing on lr1 stack is now public
authorThadeu Lima de Souza Cascardo <cascardo@dcc.ufmg.br>
Mon, 24 Oct 2005 00:03:50 +0000 (00:03 +0000)
committerThadeu Lima de Souza Cascardo <cascardo@dcc.ufmg.br>
Mon, 24 Oct 2005 00:03:50 +0000 (00:03 +0000)
LR(1) parser should have an arbritary initial state. Then, pushing to its
stack is now public.

git-archimport-id: cascardo@tlscascardo--private/libgrammatic--nogobject-lr1--0.1--patch-5

lr1.c
lr1.h

diff --git a/lr1.c b/lr1.c
index d7f2d98..c36c64d 100644 (file)
--- a/lr1.c
+++ b/lr1.c
@@ -67,7 +67,7 @@ void transition_delete (transition_t* transition)
   g_free (transition);
 }
 
   g_free (transition);
 }
 
-static void lr1_push (lr1_t* parser, gint st, gpointer attrib)
+void lr1_push (lr1_t* parser, gint st, gpointer attrib)
 {
   state_t* state;
   state = g_malloc (sizeof (state_t));
 {
   state_t* state;
   state = g_malloc (sizeof (state_t));
@@ -103,7 +103,6 @@ lr1_t* lr1_new (nextcb cb, gpointer data)
   parser->data = data;
 
   parser->stack = NULL;
   parser->data = data;
 
   parser->stack = NULL;
-  lr1_push (parser, 0, NULL);
   parser->table = g_hash_table_new_full (g_direct_hash, g_direct_equal,
                                         NULL, g_hash_table_destroy);
 
   parser->table = g_hash_table_new_full (g_direct_hash, g_direct_equal,
                                         NULL, g_hash_table_destroy);
 
diff --git a/lr1.h b/lr1.h
index 89de8ce..de4faa8 100644 (file)
--- a/lr1.h
+++ b/lr1.h
@@ -13,6 +13,7 @@ void transition_delete (transition_t*);
 lr1_t* lr1_new (nextcb, gpointer);
 void lr1_delete (lr1_t*);
 void lr1_add (lr1_t*, gint, symbol_t*, transition_t*);
 lr1_t* lr1_new (nextcb, gpointer);
 void lr1_delete (lr1_t*);
 void lr1_add (lr1_t*, gint, symbol_t*, transition_t*);
+void lr1_push (lr1_t*, gint, gpointer);
 gpointer lr1_build (lr1_t*);
 
 #endif
 gpointer lr1_build (lr1_t*);
 
 #endif