X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fgrammar.git;a=blobdiff_plain;f=first.c;fp=first.c;h=0b25ecb02e40d7639062d43770793e04d3ba70c5;hp=040a04ca25f0182f9c4b5d0760aa3ea794bf9d1d;hb=9cb6535a17cf741a4a60bca597155d3a3ba6a44d;hpb=6f7cc1e9aa52e44311a4901f1e2103a6dd725765 diff --git a/first.c b/first.c index 040a04c..0b25ecb 100644 --- a/first.c +++ b/first.c @@ -372,12 +372,10 @@ void first_iterate (gpointer key, gpointer val, gpointer data) first_set->has_empty = TRUE; rule_delete (next_rule); } - else + else if (next_symbol->terminal == FALSE) { symbol_t* next_symbol; next_symbol = next_symbols->data; - /* TODO: Check this assertion is correct. */ - assert (next_symbol->terminal == FALSE); /* This is an indirect recursive rule. */ if (next_symbol->value == symbol->value) { @@ -392,6 +390,10 @@ void first_iterate (gpointer key, gpointer val, gpointer data) new_rules = g_list_prepend (new_rules, next_rule); } } + else + { + rule_delete (next_rule); + } next_rules = g_list_next (next_rules); } }