From bcf07cb7070fab57727b274486dc7a331ff8ac2d Mon Sep 17 00:00:00 2001 From: "Joel E. Denny" Date: Wed, 16 Jul 2008 02:56:36 -0400 Subject: [PATCH] Fix untranslatable composition of sentences. Reported by Goran Uddeborg at . * THANKS (Goran Uddeborg): Add. * src/reduce.c (reduce_print): Report the number of nonterminals and rules useless in the grammar in separate sentences. * tests/reduce.at (Useless Rules): Update output. (Reduced Automaton): Likewise. (Underivable Rules): Likewise. (Empty Language): Likewise. --- ChangeLog | 13 +++++++++++++ THANKS | 1 + src/reduce.c | 34 ++++++++++++++++------------------ tests/reduce.at | 12 ++++++++---- 4 files changed, 38 insertions(+), 22 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8ac70e0e..9d5692cc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2008-07-16 Joel E. Denny + + Fix untranslatable composition of sentences. Reported by Goran + Uddeborg at + . + * THANKS (Goran Uddeborg): Add. + * src/reduce.c (reduce_print): Report the number of nonterminals and + rules useless in the grammar in separate sentences. + * tests/reduce.at (Useless Rules): Update output. + (Reduced Automaton): Likewise. + (Underivable Rules): Likewise. + (Empty Language): Likewise. + 2008-07-15 Joel E. Denny Fix some .gitignore and .cvsignore problems. diff --git a/THANKS b/THANKS index a54bf045..3842f6c3 100644 --- a/THANKS +++ b/THANKS @@ -33,6 +33,7 @@ Fabrice Bauzac noon@cote-dazur.com Florian Krohm florian@edamail.fishkill.ibm.com Frank Heckenbach frank@g-n-u.de Frans Englich frans.englich@telia.com +Goran Uddeborg goeran@uddeborg.se Guido Trentalancia trentalg@aston.ac.uk H. Merijn Brand h.m.brand@hccnet.nl Hans Aberg haberg@matematik.su.se diff --git a/src/reduce.c b/src/reduce.c index 1306374a..1f8fc347 100644 --- a/src/reduce.c +++ b/src/reduce.c @@ -382,26 +382,24 @@ reduce_output (FILE *out) static void reduce_print (void) { - fprintf (stderr, "%s: %s: ", grammar_file, _("warning")); - if (nuseless_nonterminals > 0) - fprintf (stderr, ngettext ("%d nonterminal", - "%d nonterminals", - nuseless_nonterminals), - nuseless_nonterminals); - - if (nuseless_nonterminals > 0 && nuseless_productions > 0) - fprintf (stderr, _(" and ")); - + { + fprintf (stderr, "%s: %s: ", grammar_file, _("warning")); + fprintf (stderr, ngettext ("%d nonterminal useless in grammar", + "%d nonterminals useless in grammar", + nuseless_nonterminals), + nuseless_nonterminals); + fprintf (stderr, "\n"); + } if (nuseless_productions > 0) - fprintf (stderr, ngettext ("%d rule", - "%d rules", - nuseless_productions), - nuseless_productions); - - if (nuseless_nonterminals > 0 || nuseless_productions > 0) - fprintf (stderr, _(" useless in grammar")); - fprintf (stderr, "\n"); + { + fprintf (stderr, "%s: %s: ", grammar_file, _("warning")); + fprintf (stderr, ngettext ("%d rule useless in grammar", + "%d rules useless in grammar", + nuseless_productions), + nuseless_productions); + fprintf (stderr, "\n"); + } } void diff --git a/tests/reduce.at b/tests/reduce.at index c7ca3266..55220c83 100644 --- a/tests/reduce.at +++ b/tests/reduce.at @@ -142,7 +142,8 @@ useless9: '9'; ]]) AT_BISON_CHECK([[input.y]], 0, [], -[[input.y: warning: 9 nonterminals and 9 rules useless in grammar +[[input.y: warning: 9 nonterminals useless in grammar +input.y: warning: 9 rules useless in grammar input.y:6.1-8: warning: nonterminal useless in grammar: useless1 input.y:7.1-8: warning: nonterminal useless in grammar: useless2 input.y:8.1-8: warning: nonterminal useless in grammar: useless3 @@ -237,7 +238,8 @@ non_productive: non_productive useless_token ]]) AT_BISON_CHECK([[not-reduced.y]], 0, [], -[[not-reduced.y: warning: 2 nonterminals and 3 rules useless in grammar +[[not-reduced.y: warning: 2 nonterminals useless in grammar +not-reduced.y: warning: 3 rules useless in grammar not-reduced.y:14.1-13: warning: nonterminal useless in grammar: not_reachable not-reduced.y:11.6-19: warning: nonterminal useless in grammar: non_productive not-reduced.y:11.6-57: warning: rule useless in grammar: exp: non_productive @@ -311,7 +313,8 @@ indirection: underivable; ]]) AT_BISON_CHECK([[input.y]], 0, [], -[[input.y: warning: 2 nonterminals and 3 rules useless in grammar +[[input.y: warning: 2 nonterminals useless in grammar +input.y: warning: 3 rules useless in grammar input.y:5.15-25: warning: nonterminal useless in grammar: underivable input.y:6.14-24: warning: nonterminal useless in grammar: indirection input.y:5.15-25: warning: rule useless in grammar: exp: underivable @@ -346,7 +349,8 @@ exp: exp; ]]) AT_BISON_CHECK([[input.y]], 1, [], -[[input.y: warning: 2 nonterminals and 2 rules useless in grammar +[[input.y: warning: 2 nonterminals useless in grammar +input.y: warning: 2 rules useless in grammar input.y:3.1-3: fatal error: start symbol exp does not derive any sentence ]]) -- 2.47.2