]> git.saurik.com Git - bison.git/blobdiff - src/tables.c
(set_goto_map): Don't allow ngotos to equal
[bison.git] / src / tables.c
index 0b43ce1cd20643792248d21dc77715042a3fc2c9..d39e2d8a49faa7f2134263fefbe8f129a7681e9c 100644 (file)
@@ -1,6 +1,6 @@
 /* Output the generated parsing program for Bison.
 
 /* Output the generated parsing program for Bison.
 
-   Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003
+   Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004
    Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
    Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -42,7 +42,7 @@
 
    Of course vector_number_t ought to be wide enough to contain
    state_number and symbol_number.  */
 
    Of course vector_number_t ought to be wide enough to contain
    state_number and symbol_number.  */
-typedef short vector_number;
+typedef short int vector_number;
 
 static inline vector_number
 state_number_to_vector_number (state_number s)
 
 static inline vector_number
 state_number_to_vector_number (state_number s)
@@ -84,7 +84,7 @@ int nvectors;
 static base_number **froms = NULL;
 static base_number **tos = NULL;
 static unsigned int **conflict_tos = NULL;
 static base_number **froms = NULL;
 static base_number **tos = NULL;
 static unsigned int **conflict_tos = NULL;
-static short *tally = NULL;
+static short int *tally = NULL;
 static base_number *width = NULL;
 
 
 static base_number *width = NULL;
 
 
@@ -94,7 +94,7 @@ static base_number *width = NULL;
    If N = MIN, stands for `raise a syntax error'.
    If N > 0, stands for `shift SYMBOL and go to n'.
    If N < 0, stands for `reduce -N'.  */
    If N = MIN, stands for `raise a syntax error'.
    If N > 0, stands for `shift SYMBOL and go to n'.
    If N < 0, stands for `reduce -N'.  */
-typedef short action_number;
+typedef short int action_number;
 #define ACTION_NUMBER_MINIMUM SHRT_MIN
 
 static action_number *actrow = NULL;
 #define ACTION_NUMBER_MINIMUM SHRT_MIN
 
 static action_number *actrow = NULL;
@@ -183,7 +183,7 @@ conflict_row (state *s)
   int i, j;
   reductions *reds = s->reductions;
 
   int i, j;
   reductions *reds = s->reductions;
 
-  if (! glr_parser)
+  if (!nondeterministic_parser)
     return;
 
   for (j = 0; j < ntokens; j += 1)
     return;
 
   for (j = 0; j < ntokens; j += 1)
@@ -194,7 +194,7 @@ conflict_row (state *s)
        /* Find all reductions for token J, and record all that do not
           match ACTROW[J].  */
        for (i = 0; i < reds->num; i += 1)
        /* Find all reductions for token J, and record all that do not
           match ACTROW[J].  */
        for (i = 0; i < reds->num; i += 1)
-         if (bitset_test (reds->lookaheads[i], j)
+         if (bitset_test (reds->look_ahead_tokens[i], j)
              && (actrow[j]
                  != rule_number_as_item_number (reds->rules[i]->number)))
            {
              && (actrow[j]
                  != rule_number_as_item_number (reds->rules[i]->number)))
            {
@@ -215,8 +215,8 @@ conflict_row (state *s)
 
 
 /*------------------------------------------------------------------.
 
 
 /*------------------------------------------------------------------.
-| Decide what to do for each type of token if seen as the lookahead |
-| token in specified state.  The value returned is used as the      |
+| Decide what to do for each type of token if seen as the           |
+| look-ahead in specified state.  The value returned is used as the |
 | default action (yydefact) for the state.  In addition, ACTROW is  |
 | filled with what to do for each kind of token, index by symbol    |
 | number, with zero meaning do the default action.  The value       |
 | default action (yydefact) for the state.  In addition, ACTROW is  |
 | filled with what to do for each kind of token, index by symbol    |
 | number, with zero meaning do the default action.  The value       |
@@ -224,7 +224,7 @@ conflict_row (state *s)
 | situation is an error.  The parser recognizes this value         |
 | specially.                                                       |
 |                                                                   |
 | situation is an error.  The parser recognizes this value         |
 | specially.                                                       |
 |                                                                   |
-| This is where conflicts are resolved.  The loop over lookahead    |
+| This is where conflicts are resolved.  The loop over look-ahead   |
 | rules considered lower-numbered rules last, and the last rule     |
 | considered that likes a token gets to handle it.                  |
 |                                                                   |
 | rules considered lower-numbered rules last, and the last rule     |
 | considered that likes a token gets to handle it.                  |
 |                                                                   |
@@ -243,28 +243,31 @@ action_row (state *s)
   transitions *trans = s->transitions;
   errs *errp = s->errs;
   /* Set to nonzero to inhibit having any default reduction.  */
   transitions *trans = s->transitions;
   errs *errp = s->errs;
   /* Set to nonzero to inhibit having any default reduction.  */
-  int nodefault = 0;
-  int conflicted = 0;
+  bool nodefault = false;
+  bool conflicted = false;
 
   for (i = 0; i < ntokens; i++)
     actrow[i] = conflrow[i] = 0;
 
 
   for (i = 0; i < ntokens; i++)
     actrow[i] = conflrow[i] = 0;
 
-  if (reds->lookaheads)
+  if (reds->look_ahead_tokens)
     {
       int j;
       bitset_iterator biter;
       /* loop over all the rules available here which require
     {
       int j;
       bitset_iterator biter;
       /* loop over all the rules available here which require
-        lookahead (in reverse order to give precedence to the first
+        look-ahead (in reverse order to give precedence to the first
         rule) */
       for (i = reds->num - 1; i >= 0; --i)
        /* and find each token which the rule finds acceptable
           to come next */
         rule) */
       for (i = reds->num - 1; i >= 0; --i)
        /* and find each token which the rule finds acceptable
           to come next */
-       BITSET_FOR_EACH (biter, reds->lookaheads[i], j, 0)
+       BITSET_FOR_EACH (biter, reds->look_ahead_tokens[i], j, 0)
        {
          /* and record this rule as the rule to use if that
             token follows.  */
          if (actrow[j] != 0)
        {
          /* and record this rule as the rule to use if that
             token follows.  */
          if (actrow[j] != 0)
-           conflicted = conflrow[j] = 1;
+           {
+             conflicted = true;
+             conflrow[j] = 1;
+           }
          actrow[j] = rule_number_as_item_number (reds->rules[i]->number);
        }
     }
          actrow[j] = rule_number_as_item_number (reds->rules[i]->number);
        }
     }
@@ -278,13 +281,16 @@ action_row (state *s)
       state *shift_state = trans->states[i];
 
       if (actrow[sym] != 0)
       state *shift_state = trans->states[i];
 
       if (actrow[sym] != 0)
-       conflicted = conflrow[sym] = 1;
+       {
+         conflicted = true;
+         conflrow[sym] = 1;
+       }
       actrow[sym] = state_number_as_int (shift_state->number);
 
       /* Do not use any default reduction if there is a shift for
         error */
       if (sym == errtoken->number)
       actrow[sym] = state_number_as_int (shift_state->number);
 
       /* Do not use any default reduction if there is a shift for
         error */
       if (sym == errtoken->number)
-       nodefault = 1;
+       nodefault = true;
     }
 
   /* See which tokens are an explicit error in this state (due to
     }
 
   /* See which tokens are an explicit error in this state (due to
@@ -334,7 +340,7 @@ action_row (state *s)
              int j;
              for (j = 0; j < ntokens; j++)
                if (actrow[j] == rule_number_as_item_number (default_rule->number)
              int j;
              for (j = 0; j < ntokens; j++)
                if (actrow[j] == rule_number_as_item_number (default_rule->number)
-                   && ! (glr_parser && conflrow[j]))
+                   && ! (nondeterministic_parser && conflrow[j]))
                  actrow[j] = 0;
            }
        }
                  actrow[j] = 0;
            }
        }
@@ -381,7 +387,7 @@ save_row (state_number s)
   /* Allocate non defaulted actions.  */
   froms[s] = sp = CALLOC (sp1, count);
   tos[s] = CALLOC (sp2, count);
   /* Allocate non defaulted actions.  */
   froms[s] = sp = CALLOC (sp1, count);
   tos[s] = CALLOC (sp2, count);
-  conflict_tos[s] = glr_parser ? CALLOC (sp3, count) : NULL;
+  conflict_tos[s] = nondeterministic_parser ? CALLOC (sp3, count) : NULL;
 
   /* Store non defaulted actions.  */
   for (i = 0; i < ntokens; i++)
 
   /* Store non defaulted actions.  */
   for (i = 0; i < ntokens; i++)
@@ -389,7 +395,7 @@ save_row (state_number s)
       {
        *sp1++ = i;
        *sp2++ = actrow[i];
       {
        *sp1++ = i;
        *sp2++ = actrow[i];
-       if (glr_parser)
+       if (nondeterministic_parser)
          *sp3++ = conflrow[i];
       }
 
          *sp3++ = conflrow[i];
       }
 
@@ -400,7 +406,7 @@ save_row (state_number s)
 
 /*------------------------------------------------------------------.
 | Figure out the actions for the specified state, indexed by        |
 
 /*------------------------------------------------------------------.
 | Figure out the actions for the specified state, indexed by        |
-| lookahead token type.                                             |
+| look-ahead token type.                                            |
 |                                                                   |
 | The YYDEFACT table is output now.  The detailed info is saved for |
 | putting into YYTABLE later.                                       |
 |                                                                   |
 | The YYDEFACT table is output now.  The detailed info is saved for |
 | putting into YYTABLE later.                                       |
@@ -413,7 +419,7 @@ token_actions (void)
   symbol_number j;
   rule_number r;
 
   symbol_number j;
   rule_number r;
 
-  int nconflict = glr_parser ? conflicts_total_count () : 0;
+  int nconflict = nondeterministic_parser ? conflicts_total_count () : 0;
 
   CALLOC (yydefact, nstates);
 
 
   CALLOC (yydefact, nstates);
 
@@ -425,7 +431,7 @@ token_actions (void)
   conflict_list_cnt = 1;
 
   /* Find the rules which are reduced.  */
   conflict_list_cnt = 1;
 
   /* Find the rules which are reduced.  */
-  if (!glr_parser)
+  if (!nondeterministic_parser)
     for (r = 0; r < nrules; ++r)
       rules[r].useful = false;
 
     for (r = 0; r < nrules; ++r)
       rules[r].useful = false;
 
@@ -438,7 +444,7 @@ token_actions (void)
       /* Now that the parser was computed, we can find which rules are
         really reduced, and which are not because of SR or RR
         conflicts.  */
       /* Now that the parser was computed, we can find which rules are
         really reduced, and which are not because of SR or RR
         conflicts.  */
-      if (!glr_parser)
+      if (!nondeterministic_parser)
        {
          for (j = 0; j < ntokens; ++j)
            if (actrow[j] < 0 && actrow[j] != ACTION_NUMBER_MINIMUM)
        {
          for (j = 0; j < ntokens; ++j)
            if (actrow[j] < 0 && actrow[j] != ACTION_NUMBER_MINIMUM)
@@ -506,7 +512,7 @@ save_column (symbol_number sym, state_number default_state)
 `-------------------------------------------------------------*/
 
 static state_number
 `-------------------------------------------------------------*/
 
 static state_number
-default_goto (symbol_number sym, short state_count[])
+default_goto (symbol_number sym, short int state_count[])
 {
   state_number s;
   int i;
 {
   state_number s;
   int i;
@@ -548,7 +554,7 @@ static void
 goto_actions (void)
 {
   symbol_number i;
 goto_actions (void)
 {
   symbol_number i;
-  short *state_count = CALLOC (state_count, nstates);
+  short int *state_count = CALLOC (state_count, nstates);
   MALLOC (yydefgoto, nvars);
 
   /* For a given nterm I, STATE_COUNT[S] is the number of times there
   MALLOC (yydefgoto, nvars);
 
   /* For a given nterm I, STATE_COUNT[S] is the number of times there
@@ -663,13 +669,13 @@ pack_vector (vector_number vector)
   base_number *to = tos[i];
   unsigned int *conflict_to = conflict_tos[i];
 
   base_number *to = tos[i];
   unsigned int *conflict_to = conflict_tos[i];
 
-  if (! t)
+  if (!t)
     abort ();
 
   for (j = lowzero - from[0]; ; j++)
     {
       int k;
     abort ();
 
   for (j = lowzero - from[0]; ; j++)
     {
       int k;
-      int ok = 1;
+      bool ok = true;
 
       if (table_size <= j)
        abort ();
 
       if (table_size <= j)
        abort ();
@@ -681,12 +687,12 @@ pack_vector (vector_number vector)
            table_grow (loc);
 
          if (table[loc] != 0)
            table_grow (loc);
 
          if (table[loc] != 0)
-           ok = 0;
+           ok = false;
        }
 
       for (k = 0; ok && k < vector; k++)
        if (pos[k] == j)
        }
 
       for (k = 0; ok && k < vector; k++)
        if (pos[k] == j)
-         ok = 0;
+         ok = false;
 
       if (ok)
        {
 
       if (ok)
        {
@@ -694,7 +700,7 @@ pack_vector (vector_number vector)
            {
              loc = j + from[k];
              table[loc] = to[k];
            {
              loc = j + from[k];
              table[loc] = to[k];
-             if (glr_parser && conflict_to != NULL)
+             if (nondeterministic_parser && conflict_to != NULL)
                conflict_table[loc] = conflict_to[k];
              check[loc] = from[k];
            }
                conflict_table[loc] = conflict_to[k];
              check[loc] = from[k];
            }
@@ -829,7 +835,7 @@ tables_generate (void)
     {
       free (froms[i]);
       free (tos[i]);
     {
       free (froms[i]);
       free (tos[i]);
-      XFREE (conflict_tos[i]);
+      free (conflict_tos[i]);
     }
 
   free (froms);
     }
 
   free (froms);