- if (symbols[i]->destructor)
- {
- symbol_t *symbol = symbols[i];
-
- /* Filename, lineno,
- Symbol-name, Symbol-number,
- destructor, typename. */
- fprintf (out, "%s[[[%s]], [[%d]], [[%s]], [[%d]], [[%s]], [[%s]]]",
- first ? "" : ",\n",
- infile, symbol->destructor_location.first_line,
- symbol_tag_get (symbol),
- symbol->number,
- symbol->destructor,
- symbol->type_name);
-
- first = 0;
- }
- fputs ("])\n\n", out);
-}
-
-
-static void
-save_column (int symbol, int default_state)
-{
- int i;
- short *sp;
- short *sp1;
- short *sp2;
- int count;
- int symno = symbol - ntokens + nstates;
-
- short begin = goto_map[symbol];
- short end = goto_map[symbol + 1];
-
- count = 0;
- for (i = begin; i < end; i++)
- if (to_state[i] != default_state)
- count++;
-
- if (count == 0)
- return;
-
- froms[symno] = sp1 = sp = XCALLOC (short, count);
- tos[symno] = sp2 = XCALLOC (short, count);
-
- for (i = begin; i < end; i++)
- if (to_state[i] != default_state)
- {
- *sp1++ = from_state[i];
- *sp2++ = to_state[i];
- }
-
- tally[symno] = count;
- width[symno] = sp1[-1] - sp[0] + 1;
-}
-
-static int
-default_goto (int symbol)
-{
- size_t i;
- size_t m = goto_map[symbol];
- size_t n = goto_map[symbol + 1];
- int default_state = -1;
- int max = 0;
-
- if (m == n)
- return -1;
-
- for (i = 0; i < nstates; i++)
- state_count[i] = 0;
-
- for (i = m; i < n; i++)
- state_count[to_state[i]]++;
-
- for (i = 0; i < nstates; i++)
- if (state_count[i] > max)
- {
- max = state_count[i];
- default_state = i;
- }
-
- return default_state;
-}
-
-
-/*-------------------------------------------------------------------.
-| Figure out what to do after reducing with each rule, depending on |
-| the saved state from before the beginning of parsing the data that |
-| matched this rule. |
-| |
-| The YYDEFGOTO table is output now. The detailed info is saved for |
-| putting into YYTABLE later. |
-`-------------------------------------------------------------------*/
-
-static void
-goto_actions (void)
-{
- int i;
- short *yydefgoto = XMALLOC (short, nsyms - ntokens);
-
- state_count = XCALLOC (short, nstates);
- for (i = ntokens; i < nsyms; ++i)