]> 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.
 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.
 
        * 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.
 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                                  \
        symlist.c symlist.h                       \
        symtab.c symtab.h                         \
        system.h                                  \
-       types.h                                   \
        vcg.c vcg.h                               \
        vcg_defaults.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 "system.h"
 #include "getargs.h"
 #include "symtab.h"
-#include "types.h"
 #include "reader.h"
 #include "gram.h"
 #include "derives.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 "symtab.h"
 #include "gram.h"
 #include "reader.h"
-#include "types.h"
 #include "LR0.h"
 #include "complain.h"
 #include "lalr.h"
 #include "LR0.h"
 #include "complain.h"
 #include "lalr.h"
 #include "derives.h"
 #include "getargs.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;
 
 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;
 
 
 /* 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);
 
   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++)
 
   np = LArule;
   for (i = 0; i < nstates; i++)
@@ -86,10 +94,10 @@ static void
 set_goto_map (void)
 {
   state_number_t state;
 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)
 
   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)
        {
       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)]++;
 
          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)
 {
 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;
   int nedges = 0;
 
   int i;
@@ -204,7 +212,7 @@ initialize_F (void)
 
       if (nedges)
        {
 
       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;
          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;
 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)
 
   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);
 
 
   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;
   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)
 {
 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;
 
   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++)
     {
 
   for (i = 0; i < ngotos; i++)
     {
@@ -295,7 +303,7 @@ build_relations (void)
       if (nedges)
        {
          int j;
       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;
          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;
 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)
 
   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++)
 
   /* 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);
 
   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.  */
 
    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;
 
 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,
 /* 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.
 
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 #include "system.h"
 #include "getargs.h"
 #include "symtab.h"
 #include "system.h"
 #include "getargs.h"
 #include "symtab.h"
-#include "types.h"
 #include "gram.h"
 #include "reduce.h"
 #include "nullable.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
 char *nullable = NULL;
 
 static void
@@ -49,16 +55,16 @@ set_nullable (void)
   rule_number_t ruleno;
   symbol_number_t *s1;
   symbol_number_t *s2;
   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.  */
 
   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?  */
   /* 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");
 
   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;