Explorar o código

The former version gave a fatal error message at the first undefined
nonterminal. The new version checks all nonterminals

ceriel %!s(int64=40) %!d(string=hai) anos
pai
achega
bdc67c3332
Modificáronse 1 ficheiros con 2 adicións e 2 borrados
  1. 2 2
      util/LLgen/src/reach.c

+ 2 - 2
util/LLgen/src/reach.c

@@ -58,7 +58,7 @@ co_reach() {
 	for (p = nonterms; p < maxnt; p++) {
 		if (! p->n_rule) {
 			f_input = p->n_string;
-			fatal(p->n_lineno,"nonterminal %s not defined",
+			error(p->n_lineno,"nonterminal %s not defined",
 				(min_nt_ent + (p - nonterms))->h_name);
 		}
 	}
@@ -93,7 +93,7 @@ reachable(p) register p_nont p; {
 		/*
 		 * Now walk its grammar rule
 		 */
-		reachwalk(p->n_rule);
+		if (p->n_rule) reachwalk(p->n_rule);
 	}
 }