Recursive Descent Parser is initialized with a start non-terminal symbol.
git-archimport-id: cascardo@tlscascardo--private/libgrammatic--dev--0.1--patch-1
#include "rdp.h"
#include <stdlib.h>
#include "rdp.h"
#include <stdlib.h>
-rdp_t* rdp_new (nextcb cb, gpointer data)
+rdp_t* rdp_new (nextcb cb, gpointer data, gint value)
parser = g_malloc (sizeof (rdp_t));
parser->cb = cb;
parser->data = data;
parser = g_malloc (sizeof (rdp_t));
parser->cb = cb;
parser->data = data;
+ parser->start = symbol_new (FALSE, value);
void rdp_delete (rdp_t* parser)
{
void rdp_delete (rdp_t* parser)
{
+ g_free (parser->start);
- if (rdp_step (parser, NULL, &attrib))
+ if (rdp_step (parser, parser->start, &attrib))
return attrib;
return NULL;
return attrib;
return NULL;
gpointer data;
GList* rules;
GList* buffer;
gpointer data;
GList* rules;
GList* buffer;
-rdp_t* rdp_new (nextcb, gpointer);
+rdp_t* rdp_new (nextcb, gpointer, gint);
void rdp_delete (rdp_t*);
gpointer rdp_build (rdp_t*);
void rdp_delete (rdp_t*);
gpointer rdp_build (rdp_t*);