/* Allocate input grammar variables for Bison.
- Copyright (C) 1984, 1986, 1989, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1986, 1989, 2001, 2002, 2003, 2005, 2006 Free
+ Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
You should have received a copy of the GNU General Public License
along with Bison; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+#include <config.h>
#include "system.h"
#include <quotearg.h>
int max_user_token_number = 256;
-int glr_parser = 0;
-int pure_parser = 0;
-
-
/*--------------------------------------------------------------.
| Return true IFF the rule has a `number' smaller than NRULES. |
`--------------------------------------------------------------*/
bool
rule_useless_p (rule *r)
{
- return r->number >= nrules;
+ return !rule_useful_p (r);
}
bool
rule_never_reduced_p (rule *r)
{
- return !r->useful && r->number < nrules;
+ return !r->useful && rule_useful_p (r);
}
grammar_rules_partial_print (FILE *out, const char *title,
rule_filter filter)
{
- int r;
+ rule_number r;
bool first = true;
symbol *previous_lhs = NULL;
for (i = 0; i < nrules + nuseless_productions; i++)
{
rule *rule_i = &rules[i];
- item_number *r = NULL;
+ item_number *rp = NULL;
unsigned int rhs_itemno = rule_i->rhs - ritem;
- unsigned int rhs_count = 0;
+ unsigned int rhs_count = 0;
/* Find the last RHS index in ritems. */
- for (r = rule_i->rhs; *r >= 0; ++r)
+ for (rp = rule_i->rhs; *rp >= 0; ++rp)
++rhs_count;
fprintf (out, "%3d (%2d, %2d, %2d, %2u-%2u) %2d ->",
i,
rhs_itemno + rhs_count - 1,
rule_i->lhs->number);
/* Dumped the RHS. */
- for (r = rule_i->rhs; *r >= 0; r++)
- fprintf (out, " %3d", *r);
- fprintf (out, " [%d]\n", item_number_as_rule_number (*r));
+ for (rp = rule_i->rhs; *rp >= 0; rp++)
+ fprintf (out, " %3d", *rp);
+ fprintf (out, " [%d]\n", item_number_as_rule_number (*rp));
}
}
fprintf (out, "\n\n");
if (!rules[r].useful)
{
location_print (stderr, rules[r].location);
- fprintf (stderr, ": %s: %s: ",
- _("warning"), message);
+ fprintf (stderr, ": %s: %s: ", _("warning"), message);
rule_print (&rules[r], stderr);
}
}
void
grammar_free (void)
{
- free (ritem);
+ if (ritem)
+ free (ritem - 1);
free (rules);
free (token_translations);
/* Free the symbol table data structure. */