* 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> 2002-07-26 Akim Demaille <akim@epita.fr>
* src/reader.h, src/reader.c (gram_error): ... can't get * src/reader.h, src/reader.c (gram_error): ... can't get

View File

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

View File

@@ -332,3 +332,24 @@ Useless rules
]]) ]])
AT_CLEANUP 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