* src/reduce.c (reduce_grammar): When the language is empty,

complain about the start symbol, not the axiom.
Use its location.
* tests/reduce.at (Empty Language): New.
This commit is contained in:
Akim Demaille
2002-07-29 17:28:56 +00:00
parent fc5734fe23
commit 1bfb97dba5
3 changed files with 31 additions and 2 deletions

View File

@@ -1,3 +1,10 @@
2002-07-29 Akim Demaille <akim@epita.fr>
* src/reduce.c (reduce_grammar): When the language is empty,
complain about the start symbol, not the axiom.
Use its location.
* tests/reduce.at (Empty Language): New.
2002-07-26 Akim Demaille <akim@epita.fr>
* src/reader.h, src/reader.c (gram_error): ... can't get

View File

@@ -439,8 +439,9 @@ reduce_grammar (void)
reduce_print ();
if (!bitset_test (N, axiom->number - ntokens))
fatal (_("Start symbol %s does not derive any sentence"),
symbols[axiom->number]->tag);
fatal_at (startsymbol_location,
_("start symbol %s does not derive any sentence"),
startsymbol->tag);
/* First reduce the nonterminals, as they renumber themselves in the
whole grammar. If you change the order, nonterms would be

View File

@@ -332,3 +332,24 @@ Useless rules
]])
AT_CLEANUP
## ---------------- ##
## Empty Language. ##
## ---------------- ##
AT_SETUP([Empty Language])
AT_DATA([[input.y]],
[[%output="input.c"
%%
exp: exp;
]])
AT_CHECK([[bison input.y]], 1, [],
[[input.y: warning: 2 useless nonterminals and 2 useless rules
input.y:3.1-3: fatal error: start symbol exp does not derive any sentence
]])
AT_CLEANUP