* tests/reduce.at (Useless Terminals, Useless Nonterminals): New.

* src/reduce.c (reduce_grammar_tables): Do not free useless tags,
as all tags are free'ed afterwards.
From Enrico Scholz.
This commit is contained in:
Akim Demaille
2001-11-28 11:42:56 +00:00
parent e7d79012ae
commit 0aa2ac9063
7 changed files with 117 additions and 6 deletions

View File

@@ -1,3 +1,10 @@
2001-11-28 Akim Demaille <akim@epita.fr>
* tests/reduce.at (Useless Terminals, Useless Nonterminals): New.
* src/reduce.c (reduce_grammar_tables): Do not free useless tags,
as all tags are free'ed afterwards.
From Enrico Scholz.
2001-11-27 Akim Demaille <akim@epita.fr>
* src/system.h: Use intl/libgettext.h.

1
THANKS
View File

@@ -8,6 +8,7 @@ Alexander Belopolsky alexb@rentec.com
Daniel Hagerty hag@gnu.org
David J. MacKenzie djm@gnu.org
Dick Streefland dick.streefland@altium.nl
Enrico Scholz enrico.scholz@informatik.tu-chemnitz.de
Fabrice Bauzac noon@cote-dazur.com
Hans Aberg haberg@matematik.su.se
Jesse Thilo jthilo@gnu.org

View File

@@ -352,10 +352,6 @@ reduce_grammar_tables (void)
sprec[n] = sprec[i];
tags[n] = tags[i];
}
else
{
free (tags[i]);
}
}
/* Replace all symbol numbers in valid data structures. */

View File

@@ -25,7 +25,7 @@ MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE)
TESTSUITE_AT = \
testsuite.at \
output.at calc.at torture.at regression.at
output.at reduce.at calc.at torture.at regression.at
TESTSUITE = $(srcdir)/testsuite
AUTOTEST = $(AUTOM4TE) --language=autotest

View File

@@ -108,7 +108,7 @@ MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE)
TESTSUITE_AT = \
testsuite.at \
output.at calc.at torture.at regression.at
output.at reduce.at calc.at torture.at regression.at
TESTSUITE = $(srcdir)/testsuite

106
tests/reduce.at Normal file
View File

@@ -0,0 +1,106 @@
# Exercising Bison Grammar Reduction. -*- Autotest -*-
# Copyright 2001 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
AT_BANNER([[Grammar Reduction.]])
## ------------------- ##
## Useless Terminals. ##
## ------------------- ##
AT_SETUP([Useless Terminals])
AT_DATA([[input.y]],
[[%verbose
%output="input.c"
%token useless1
%token useless2
%token useless3
%token useless4
%token useless5
%token useless6
%token useless7
%token useless8
%token useless9
%token useful
%%
exp: useful;
]])
AT_CHECK([[bison input.y]])
AT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0,
[[Terminals which are not used:
useless1
useless2
useless3
useless4
useless5
useless6
useless7
useless8
useless9
]])
AT_CLEANUP
## ---------------------- ##
## Useless Nonterminals. ##
## ---------------------- ##
AT_SETUP([Useless Nonterminals])
AT_DATA([[input.y]],
[[%verbose
%output="input.c"
%nterm useless1
%nterm useless2
%nterm useless3
%nterm useless4
%nterm useless5
%nterm useless6
%nterm useless7
%nterm useless8
%nterm useless9
%token useful
%%
exp: useful;
]])
AT_CHECK([[bison input.y]])
AT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0,
[[Terminals which are not used:
useless1
useless2
useless3
useless4
useless5
useless6
useless7
useless8
useless9
]])
AT_CLEANUP

View File

@@ -26,6 +26,7 @@ AT_INIT
AT_TESTED([bison])
m4_include([output.at])
m4_include([reduce.at])
m4_include([calc.at])
m4_include([torture.at])
m4_include([regression.at])