bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Less shorts: gotos


From: Akim Demaille
Subject: Less shorts: gotos
Date: 03 Jul 2002 12:54:47 +0200
User-agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.4 (Honest Recruiter)

Index: ChangeLog
from  Akim Demaille  <address@hidden>

        * 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.

Index: src/Makefile.am
===================================================================
RCS file: /cvsroot/bison/bison/src/Makefile.am,v
retrieving revision 1.48
diff -u -u -r1.48 Makefile.am
--- src/Makefile.am 30 Jun 2002 17:31:51 -0000 1.48
+++ src/Makefile.am 3 Jul 2002 10:53:07 -0000
@@ -62,7 +62,6 @@
        symlist.c symlist.h                       \
        symtab.c symtab.h                         \
        system.h                                  \
-       types.h                                   \
        vcg.c vcg.h                               \
        vcg_defaults.h
 
Index: src/derives.c
===================================================================
RCS file: /cvsroot/bison/bison/src/derives.c,v
retrieving revision 1.33
diff -u -u -r1.33 derives.c
--- src/derives.c 3 Jul 2002 10:36:38 -0000 1.33
+++ src/derives.c 3 Jul 2002 10:53:07 -0000
@@ -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: src/lalr.c
===================================================================
RCS file: /cvsroot/bison/bison/src/lalr.c,v
retrieving revision 1.83
diff -u -u -r1.83 lalr.c
--- src/lalr.c 3 Jul 2002 06:51:43 -0000 1.83
+++ src/lalr.c 3 Jul 2002 10:53:07 -0000
@@ -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"
@@ -40,21 +39,30 @@
 #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 @@
 
   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 @@
 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 @@
       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 @@
 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 @@
 
       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 @@
 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 @@
 
   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 @@
 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 @@
       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 @@
 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 @@
 
   /* 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: src/lalr.h
===================================================================
RCS file: /cvsroot/bison/bison/src/lalr.h,v
retrieving revision 1.21
diff -u -u -r1.21 lalr.h
--- src/lalr.h 30 Jun 2002 17:33:37 -0000 1.21
+++ src/lalr.h 3 Jul 2002 10:53:07 -0000
@@ -49,7 +49,10 @@
    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: src/nullable.c
===================================================================
RCS file: /cvsroot/bison/bison/src/nullable.c,v
retrieving revision 1.31
diff -u -u -r1.31 nullable.c
--- src/nullable.c 30 Jun 2002 17:31:19 -0000 1.31
+++ src/nullable.c 3 Jul 2002 10:53:07 -0000
@@ -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.
 
@@ -26,11 +26,17 @@
 #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 @@
   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");
Index: src/types.h
===================================================================
RCS file: src/types.h
diff -N src/types.h
--- src/types.h 7 Nov 2000 16:28:47 -0000 1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -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;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]