diff options
Diffstat (limited to 'Parser/grammar.c')
-rw-r--r-- | Parser/grammar.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/Parser/grammar.c b/Parser/grammar.c index 84223c6..75fd5b9 100644 --- a/Parser/grammar.c +++ b/Parser/grammar.c @@ -28,6 +28,23 @@ newgrammar(int start) return g; } +void +freegrammar(grammar *g) +{ + int i; + for (i = 0; i < g->g_ndfas; i++) { + free(g->g_dfa[i].d_name); + for (int j = 0; j < g->g_dfa[i].d_nstates; j++) + PyObject_FREE(g->g_dfa[i].d_state[j].s_arc); + PyObject_FREE(g->g_dfa[i].d_state); + } + PyObject_FREE(g->g_dfa); + for (i = 0; i < g->g_ll.ll_nlabels; i++) + free(g->g_ll.ll_label[i].lb_str); + PyObject_FREE(g->g_ll.ll_label); + PyObject_FREE(g); +} + dfa * adddfa(grammar *g, int type, const char *name) { |