#include "symtab.h"
#include "gram.h"
#include "reader.h"
-#include "types.h"
#include "LR0.h"
#include "complain.h"
#include "lalr.h"
#include "derives.h"
#include "getargs.h"
+goto_number_t *goto_map = NULL;
+static goto_number_t ngotos = 0;
+state_number_t *from_state = NULL;
+state_number_t *to_state = NULL;
+
+/* Linked list of goto numbers. */
+typedef struct goto_list_s
+{
+ struct goto_list_s *next;
+ goto_number_t value;
+} goto_list_t;
+
+
rule_t **LArule = NULL;
bitsetv LA = NULL;
size_t nLA;
-static int ngotos;
-short *goto_map = NULL;
-state_number_t *from_state = NULL;
-state_number_t *to_state = NULL;
/* And for the famous F variable, which name is so descriptive that a
comment is hardly needed. <grin>. */
static bitsetv F = NULL;
-static short **includes;
-static shorts **lookback;
+static goto_number_t **includes;
+static goto_list_t **lookback;
LA = bitsetv_create (nLA, ntokens, BITSET_FIXED);
LArule = XCALLOC (rule_t *, nLA);
- lookback = XCALLOC (shorts *, nLA);
+ lookback = XCALLOC (goto_list_t *, nLA);
np = LArule;
for (i = 0; i < nstates; i++)
set_goto_map (void)
{
state_number_t state;
- short *temp_map;
+ goto_number_t *temp_map;
- goto_map = XCALLOC (short, nvars + 1) - ntokens;
- temp_map = XCALLOC (short, nvars + 1) - ntokens;
+ goto_map = XCALLOC (goto_number_t, nvars + 1) - ntokens;
+ temp_map = XCALLOC (goto_number_t, nvars + 1) - ntokens;
ngotos = 0;
for (state = 0; state < nstates; ++state)
int i;
for (i = sp->num - 1; i >= 0 && TRANSITION_IS_GOTO (sp, i); --i)
{
- if (ngotos == SHRT_MAX)
- fatal (_("too many gotos (max %d)"), SHRT_MAX);
+ if (ngotos == GOTO_NUMBER_MAX)
+ fatal (_("too many gotos (max %d)"), GOTO_NUMBER_MAX);
ngotos++;
goto_map[TRANSITION_SYMBOL (sp, i)]++;
static void
initialize_F (void)
{
- short **reads = XCALLOC (short *, ngotos);
- short *edge = XCALLOC (short, ngotos + 1);
+ goto_number_t **reads = XCALLOC (goto_number_t *, ngotos);
+ goto_number_t *edge = XCALLOC (goto_number_t, ngotos + 1);
int nedges = 0;
int i;
if (nedges)
{
- reads[i] = XCALLOC (short, nedges + 1);
+ reads[i] = XCALLOC (goto_number_t, nedges + 1);
memcpy (reads[i], edge, nedges * sizeof (edge[0]));
reads[i][nedges] = -1;
nedges = 0;
add_lookback_edge (state_t *state, rule_number_t ruleno, int gotono)
{
int i;
- shorts *sp;
+ goto_list_t *sp;
for (i = 0; i < state->nlookaheads; ++i)
if (state->lookaheads_rule[i]->number == ruleno)
assert (state->lookaheads_rule[i]->number == ruleno);
- sp = XCALLOC (shorts, 1);
+ sp = XCALLOC (goto_list_t, 1);
sp->next = lookback[(state->lookaheads - LA) + i];
sp->value = gotono;
lookback[(state->lookaheads - LA) + i] = sp;
static void
build_relations (void)
{
- short *edge = XCALLOC (short, ngotos + 1);
+ goto_number_t *edge = XCALLOC (goto_number_t, ngotos + 1);
state_number_t *states1 = XCALLOC (state_number_t, ritem_longest_rhs () + 1);
int i;
- includes = XCALLOC (short *, ngotos);
+ includes = XCALLOC (goto_number_t *, ngotos);
for (i = 0; i < ngotos; i++)
{
if (nedges)
{
int j;
- includes[i] = XCALLOC (short, nedges + 1);
+ includes[i] = XCALLOC (goto_number_t, nedges + 1);
for (j = 0; j < nedges; j++)
includes[i][j] = edge[j];
includes[i][nedges] = -1;
compute_lookaheads (void)
{
size_t i;
- shorts *sp;
+ goto_list_t *sp;
for (i = 0; i < nLA; i++)
for (sp = lookback[i]; sp; sp = sp->next)
/* Free LOOKBACK. */
for (i = 0; i < nLA; i++)
- LIST_FREE (shorts, lookback[i]);
+ LIST_FREE (goto_list_t, lookback[i]);
XFREE (lookback);
bitsetv_free (F);
/* Part of the bison parser generator,
- Copyright 1984, 1989, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
#include "system.h"
#include "getargs.h"
#include "symtab.h"
-#include "types.h"
#include "gram.h"
#include "reduce.h"
#include "nullable.h"
+/* Linked list of rule numbers. */
+typedef struct rule_list_s
+{
+ struct rule_list_s *next;
+ rule_number_t value;
+} rule_list_t;
+
char *nullable = NULL;
static void
rule_number_t ruleno;
symbol_number_t *s1;
symbol_number_t *s2;
- shorts *p;
+ rule_list_t *p;
symbol_number_t *squeue = XCALLOC (symbol_number_t, nvars);
short *rcount = XCALLOC (short, nrules + 1);
/* RITEM contains all the rules, including useless productions.
Hence we must allocate room for useless nonterminals too. */
- shorts **rsets = XCALLOC (shorts *, nvars) - ntokens;
+ rule_list_t **rsets = XCALLOC (rule_list_t *, nvars) - ntokens;
/* This is said to be more elements than we actually use.
Supposedly NRITEMS - NRULES is enough. But why take the risk? */
- shorts *relts = XCALLOC (shorts, nritems + nvars + 1);
+ rule_list_t *relts = XCALLOC (rule_list_t, nritems + nvars + 1);
if (trace_flag)
fprintf (stderr, "Entering set_nullable\n");
+++ /dev/null
-/* Define data type for representing bison's grammar input as it is parsed,
- Copyright 1984, 1989 Free Software Foundation, Inc.
-
-This file is part of Bison, the GNU Compiler Compiler.
-
-Bison 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.
-
-Bison 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 Bison; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-
-typedef
- struct shorts
- {
- struct shorts *next;
- short value;
- }
- shorts;