]> git.saurik.com Git - bison.git/commitdiff
* src/lalr.h, src/lalr.c (goto_number_t): New.
authorAkim Demaille <akim@epita.fr>
Wed, 3 Jul 2002 10:54:33 +0000 (10:54 +0000)
committerAkim Demaille <akim@epita.fr>
Wed, 3 Jul 2002 10:54:33 +0000 (10:54 +0000)
* src/lalr.c (goto_list_t): New.
Propagate them.
* src/nullable.c (rule_list_t): New.
Propagate.
* src/types.h: Remove.

ChangeLog
src/Makefile.am
src/derives.c
src/lalr.c
src/lalr.h
src/nullable.c
src/types.h [deleted file]

index 606481ab9d2288e43819efd3dc06a135fb45f0b1..26fa0e58d08ce1fa3b63274b85e39ba6ac758d63 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2002-07-03  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.h, src/lalr.c (goto_number_t): New.
+       * src/lalr.c (goto_list_t): New.
+       Propagate them.
+       * src/nullable.c (rule_list_t): New.
+       Propagate.
+       * src/types.h: Remove.
+
 2002-07-03  Akim Demaille  <akim@epita.fr>
 
        * src/closure.c (print_fderives): Use rule_rhs_print.
@@ -16,7 +25,6 @@
        * src/scan-skel.l: here.
        (<<EOF>>): Close yyout, and free its name.
 
-
 2002-07-03  Akim Demaille  <akim@epita.fr>
 
        Fix some memory leaks, and fix a bug: state 0 was examined twice.
index 7b67e8e3a15a2b0146f9c94b2efa5d03f9e15c12..c3edda8db64a969e53088ffbb913ea2647b0a9a2 100644 (file)
@@ -62,7 +62,6 @@ bison_SOURCES =                                 \
        symlist.c symlist.h                       \
        symtab.c symtab.h                         \
        system.h                                  \
-       types.h                                   \
        vcg.c vcg.h                               \
        vcg_defaults.h
 
index 87b15f2d07b9bec7684e06b1bb68fc5e50588d7e..456dfb2202e4e095488fe153c5149ec8353e79a4 100644 (file)
@@ -22,7 +22,6 @@
 #include "system.h"
 #include "getargs.h"
 #include "symtab.h"
-#include "types.h"
 #include "reader.h"
 #include "gram.h"
 #include "derives.h"
index d735921a1cb14637663493e510991077fd57cb67..d07f19bbda08f5c866db7946995e222a96417d3e 100644 (file)
@@ -32,7 +32,6 @@
 #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;
 
 
 
@@ -72,7 +80,7 @@ initialize_LA (void)
 
   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++)
@@ -86,10 +94,10 @@ static void
 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)
@@ -98,8 +106,8 @@ set_goto_map (void)
       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)]++;
@@ -178,8 +186,8 @@ map_goto (state_number_t state, symbol_number_t symbol)
 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;
@@ -204,7 +212,7 @@ initialize_F (void)
 
       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;
@@ -225,7 +233,7 @@ static void
 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)
@@ -233,7 +241,7 @@ add_lookback_edge (state_t *state, rule_number_t ruleno, int gotono)
 
   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;
@@ -244,11 +252,11 @@ add_lookback_edge (state_t *state, rule_number_t ruleno, int gotono)
 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++)
     {
@@ -295,7 +303,7 @@ build_relations (void)
       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;
@@ -328,7 +336,7 @@ static void
 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)
@@ -336,7 +344,7 @@ compute_lookaheads (void)
 
   /* 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);
index 3bece77cc0a8f315458d3bf907c16db60c1858e6..696bc98d15746a3e99d04ebc90dc272d851de2e0 100644 (file)
@@ -49,7 +49,10 @@ void lalr PARAMS ((void));
    together and GOTO_MAP[I - NTOKENS] is the index in FROM_STATE and
    TO_STATE of the first of them.  */
 
-extern short *goto_map;
+typedef short goto_number_t;
+# define GOTO_NUMBER_MAX ((goto_number_t) INT_MAX)
+
+extern goto_number_t *goto_map;
 extern state_number_t *from_state;
 extern state_number_t *to_state;
 
index b3686646c529294503f7e69e77c546ebd1fcec22..635ea61921a8b740b30c7a8e1d6a87cc7792a4fc 100644 (file)
@@ -1,5 +1,5 @@
 /* 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
@@ -49,16 +55,16 @@ set_nullable (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");
diff --git a/src/types.h b/src/types.h
deleted file mode 100644 (file)
index 04337a3..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/* 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;