projects
/
cascardo
/
grammar.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
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>
#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;
{
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 = g_malloc (sizeof (rdp_t));
parser->cb = cb;
parser->data = data;
+ parser->start = symbol_new (FALSE, value);
parser->rules = NULL;
parser->rules = NULL;
@@
-21,6
+22,7
@@
rdp_t* rdp_new (nextcb cb, gpointer data)
void rdp_delete (rdp_t* parser)
{
void rdp_delete (rdp_t* parser)
{
+ g_free (parser->start);
g_free (parser);
}
g_free (parser);
}
@@
-140,7
+142,7
@@
gpointer rdp_build (rdp_t* parser)
gpointer attrib;
gpointer attrib;
- if (rdp_step (parser,
NULL
, &attrib))
+ if (rdp_step (parser,
parser->start
, &attrib))
return attrib;
return NULL;
return attrib;
return NULL;