mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
Remove uses of 'short int' and 'unsigned short int' in the parser generators.
* src/LR0.c (allocate_itemsets, new_itemsets, save_reductions): Use size_t, not int or short int, to count objects. * src/closure.c (nritemset, closure): Likewise. * src/closure.h (nritemset, closure): Likewise. * src/nullable.c (nullable_compute): Likewise. * src/print.c (print_core): Likewise. * src/print_graph.c (print_core): Likewise. * src/state.c (state_compare, state_hash): Likewise. * src/state.h (struct state): Likewise. * src/tables.c (default_goto, goto_actions): Likewise. * src/gram.h (rule_number, rule): Use int, not short int. * src/output.c (prepare_rules): Likewise. * src/state.h (state_number, STATE_NUMBER_MAXIMUM, transitions, errs, reductions): Likewise. * src/symtab.h (symbol_number, SYMBOL_NUMBER_MAXIMUM, struct symbol): Likewise. * src/tables.c (vector_number, tally, action_number, ACTION_NUMBER_MINIMUM): Likewise. * src/output.c (muscle_insert_short_int_table): Remove.
This commit is contained in:
35
ChangeLog
35
ChangeLog
@@ -1,3 +1,38 @@
|
||||
2004-12-17 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Remove uses of 'short int' and 'unsigned short int'. This raises
|
||||
some arbitrary limits. It uses more memory but nowadays that's
|
||||
not much of an issue.
|
||||
|
||||
This change does not affect the generated parsers; that's a different
|
||||
task, as some users will want to conserve memory there.
|
||||
|
||||
Ideally we should use size_t to represent all object counts, and
|
||||
something like ptrdiff_t to represent signed differences of object
|
||||
counts; but that will require more code-cleanup than I have the
|
||||
time to do right now.
|
||||
|
||||
* src/LR0.c (allocate_itemsets, new_itemsets, save_reductions):
|
||||
Use size_t, not int or short int, to count objects.
|
||||
* src/closure.c (nritemset, closure): Likewise.
|
||||
* src/closure.h (nritemset, closure): Likewise.
|
||||
* src/nullable.c (nullable_compute): Likewise.
|
||||
* src/print.c (print_core): Likewise.
|
||||
* src/print_graph.c (print_core): Likewise.
|
||||
* src/state.c (state_compare, state_hash): Likewise.
|
||||
* src/state.h (struct state): Likewise.
|
||||
* src/tables.c (default_goto, goto_actions): Likewise.
|
||||
|
||||
* src/gram.h (rule_number, rule): Use int, not short int.
|
||||
* src/output.c (prepare_rules): Likewise.
|
||||
* src/state.h (state_number, STATE_NUMBER_MAXIMUM, transitions,
|
||||
errs, reductions): Likewise.
|
||||
* src/symtab.h (symbol_number, SYMBOL_NUMBER_MAXIMUM, struct symbol):
|
||||
Likewise.
|
||||
* src/tables.c (vector_number, tally, action_number,
|
||||
ACTION_NUMBER_MINIMUM): Likewise.
|
||||
* src/output.c (muscle_insert_short_int_table): Remove.
|
||||
|
||||
2004-12-17 Akim Demaille <akim@epita.fr>
|
||||
|
||||
* data/lalr1.cc: Extensive Doxygenation.
|
||||
|
||||
10
src/LR0.c
10
src/LR0.c
@@ -105,9 +105,9 @@ allocate_itemsets (void)
|
||||
Note that useless productions (hence useless nonterminals) are
|
||||
browsed too, hence we need to allocate room for _all_ the
|
||||
symbols. */
|
||||
int count = 0;
|
||||
short int *symbol_count = xcalloc (nsyms + nuseless_nonterminals,
|
||||
sizeof *symbol_count);
|
||||
size_t count = 0;
|
||||
size_t *symbol_count = xcalloc (nsyms + nuseless_nonterminals,
|
||||
sizeof *symbol_count);
|
||||
|
||||
for (r = 0; r < nrules; ++r)
|
||||
for (rhsp = rules[r].rhs; *rhsp >= 0; ++rhsp)
|
||||
@@ -178,7 +178,7 @@ free_storage (void)
|
||||
static void
|
||||
new_itemsets (state *s)
|
||||
{
|
||||
int i;
|
||||
size_t i;
|
||||
|
||||
if (trace_flag & trace_automaton)
|
||||
fprintf (stderr, "Entering new_itemsets, state = %d\n", s->number);
|
||||
@@ -274,7 +274,7 @@ static void
|
||||
save_reductions (state *s)
|
||||
{
|
||||
int count = 0;
|
||||
int i;
|
||||
size_t i;
|
||||
|
||||
/* Find and count the active items that represent ends of rules. */
|
||||
for (i = 0; i < nritemset; ++i)
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
/* NITEMSET is the size of the array ITEMSET. */
|
||||
item_number *itemset;
|
||||
int nritemset;
|
||||
size_t nritemset;
|
||||
|
||||
static bitset ruleset;
|
||||
|
||||
@@ -193,10 +193,10 @@ new_closure (unsigned int n)
|
||||
|
||||
|
||||
void
|
||||
closure (item_number *core, int n)
|
||||
closure (item_number *core, size_t n)
|
||||
{
|
||||
/* Index over CORE. */
|
||||
int c;
|
||||
size_t c;
|
||||
|
||||
/* A bit index over RULESET. */
|
||||
rule_number ruleno;
|
||||
|
||||
@@ -46,7 +46,7 @@ void new_closure (unsigned int n);
|
||||
significant). CLOSURE places there the indices of all items which
|
||||
represent units of input that could arrive next. */
|
||||
|
||||
void closure (item_number *items, int n);
|
||||
void closure (item_number *items, size_t n);
|
||||
|
||||
|
||||
/* Frees ITEMSET, RULESET and internal data. */
|
||||
@@ -54,6 +54,6 @@ void closure (item_number *items, int n);
|
||||
void free_closure (void);
|
||||
|
||||
extern item_number *itemset;
|
||||
extern int nritemset;
|
||||
extern size_t nritemset;
|
||||
|
||||
#endif /* !CLOSURE_H_ */
|
||||
|
||||
@@ -139,7 +139,7 @@ item_number_as_symbol_number (item_number i)
|
||||
}
|
||||
|
||||
/* Rule numbers. */
|
||||
typedef short int rule_number;
|
||||
typedef int rule_number;
|
||||
extern rule_number nrules;
|
||||
|
||||
static inline item_number
|
||||
@@ -175,8 +175,8 @@ typedef struct
|
||||
/* This symbol provides both the associativity, and the precedence. */
|
||||
symbol *prec;
|
||||
|
||||
short int dprec;
|
||||
short int merger;
|
||||
int dprec;
|
||||
int merger;
|
||||
|
||||
/* This symbol was attached to the rule via %prec. */
|
||||
symbol *precsym;
|
||||
|
||||
@@ -62,7 +62,7 @@ nullable_compute (void)
|
||||
rule_list *p;
|
||||
|
||||
symbol_number *squeue = xnmalloc (nvars, sizeof *squeue);
|
||||
short int *rcount = xcalloc (nrules, sizeof *rcount);
|
||||
size_t *rcount = xcalloc (nrules, sizeof *rcount);
|
||||
/* RITEM contains all the rules, including useless productions.
|
||||
Hence we must allocate room for useless nonterminals too. */
|
||||
rule_list **rsets = xcalloc (nvars, sizeof *rsets);
|
||||
|
||||
@@ -106,7 +106,6 @@ Name (const char *name, \
|
||||
|
||||
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_unsigned_int_table, unsigned int)
|
||||
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_int_table, int)
|
||||
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_short_int_table, short int)
|
||||
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_base_table, base_number)
|
||||
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_rule_number_table, rule_number)
|
||||
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_symbol_number_table, symbol_number)
|
||||
@@ -217,8 +216,8 @@ prepare_rules (void)
|
||||
unsigned int *rline = xnmalloc (nrules, sizeof *rline);
|
||||
symbol_number *r1 = xnmalloc (nrules, sizeof *r1);
|
||||
unsigned int *r2 = xnmalloc (nrules, sizeof *r2);
|
||||
short int *dprec = xnmalloc (nrules, sizeof *dprec);
|
||||
short int *merger = xnmalloc (nrules, sizeof *merger);
|
||||
int *dprec = xnmalloc (nrules, sizeof *dprec);
|
||||
int *merger = xnmalloc (nrules, sizeof *merger);
|
||||
|
||||
for (r = 0; r < nrules; ++r)
|
||||
{
|
||||
@@ -249,8 +248,8 @@ prepare_rules (void)
|
||||
muscle_insert_unsigned_int_table ("rline", rline, 0, 0, nrules);
|
||||
muscle_insert_symbol_number_table ("r1", r1, 0, 0, nrules);
|
||||
muscle_insert_unsigned_int_table ("r2", r2, 0, 0, nrules);
|
||||
muscle_insert_short_int_table ("dprec", dprec, 0, 0, nrules);
|
||||
muscle_insert_short_int_table ("merger", merger, 0, 0, nrules);
|
||||
muscle_insert_int_table ("dprec", dprec, 0, 0, nrules);
|
||||
muscle_insert_int_table ("merger", merger, 0, 0, nrules);
|
||||
|
||||
MUSCLE_INSERT_INT ("rules_number", nrules);
|
||||
MUSCLE_INSERT_INT ("max_left_semantic_context", max_left_semantic_context);
|
||||
|
||||
@@ -71,9 +71,9 @@ max_length (size_t *width, const char *str)
|
||||
static void
|
||||
print_core (FILE *out, state *s)
|
||||
{
|
||||
int i;
|
||||
size_t i;
|
||||
item_number *sitems = s->items;
|
||||
int snritems = s->nitems;
|
||||
size_t snritems = s->nitems;
|
||||
symbol *previous_lhs = NULL;
|
||||
|
||||
/* Output all the items of a state, not only its kernel. */
|
||||
|
||||
@@ -49,9 +49,9 @@ static FILE *fgraph = NULL;
|
||||
static void
|
||||
print_core (struct obstack *oout, state *s)
|
||||
{
|
||||
int i;
|
||||
size_t i;
|
||||
item_number *sitems = s->items;
|
||||
int snritems = s->nitems;
|
||||
size_t snritems = s->nitems;
|
||||
|
||||
/* Output all the items of a state, not only its kernel. */
|
||||
if (report_flag & report_itemsets)
|
||||
|
||||
@@ -261,7 +261,7 @@ static struct hash_table *state_table = NULL;
|
||||
static inline bool
|
||||
state_compare (state const *s1, state const *s2)
|
||||
{
|
||||
int i;
|
||||
size_t i;
|
||||
|
||||
if (s1->nitems != s2->nitems)
|
||||
return false;
|
||||
@@ -284,7 +284,7 @@ state_hash (state const *s, size_t tablesize)
|
||||
{
|
||||
/* Add up the state's item numbers to get a hash key. */
|
||||
size_t key = 0;
|
||||
int i;
|
||||
size_t i;
|
||||
for (i = 0; i < s->nitems; ++i)
|
||||
key += s->items[i];
|
||||
return key % tablesize;
|
||||
|
||||
12
src/state.h
12
src/state.h
@@ -94,8 +94,8 @@
|
||||
| Numbering states. |
|
||||
`-------------------*/
|
||||
|
||||
typedef short int state_number;
|
||||
# define STATE_NUMBER_MAXIMUM SHRT_MAX
|
||||
typedef int state_number;
|
||||
# define STATE_NUMBER_MAXIMUM INT_MAX
|
||||
|
||||
/* Be ready to map a state_number to an int. */
|
||||
static inline int
|
||||
@@ -113,7 +113,7 @@ typedef struct state state;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
short int num;
|
||||
int num;
|
||||
state *states[1];
|
||||
} transitions;
|
||||
|
||||
@@ -171,7 +171,7 @@ struct state *transitions_to (transitions *shifts, symbol_number sym);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
short int num;
|
||||
int num;
|
||||
symbol *symbols[1];
|
||||
} errs;
|
||||
|
||||
@@ -184,7 +184,7 @@ errs *errs_new (int num, symbol **tokens);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
short int num;
|
||||
int num;
|
||||
bitset *look_ahead_tokens;
|
||||
rule *rules[1];
|
||||
} reductions;
|
||||
@@ -212,7 +212,7 @@ struct state
|
||||
|
||||
/* Its items. Must be last, since ITEMS can be arbitrarily large.
|
||||
*/
|
||||
unsigned short int nitems;
|
||||
size_t nitems;
|
||||
item_number items[1];
|
||||
};
|
||||
|
||||
|
||||
@@ -41,8 +41,8 @@ typedef enum
|
||||
|
||||
|
||||
/* Internal token numbers. */
|
||||
typedef short int symbol_number;
|
||||
#define SYMBOL_NUMBER_MAXIMUM SHRT_MAX
|
||||
typedef int symbol_number;
|
||||
#define SYMBOL_NUMBER_MAXIMUM INT_MAX
|
||||
|
||||
|
||||
typedef struct symbol symbol;
|
||||
@@ -68,7 +68,7 @@ struct symbol
|
||||
|
||||
symbol_number number;
|
||||
location prec_location;
|
||||
short int prec;
|
||||
int prec;
|
||||
assoc assoc;
|
||||
int user_token_number;
|
||||
|
||||
|
||||
14
src/tables.c
14
src/tables.c
@@ -42,7 +42,7 @@
|
||||
|
||||
Of course vector_number_t ought to be wide enough to contain
|
||||
state_number and symbol_number. */
|
||||
typedef short int vector_number;
|
||||
typedef int vector_number;
|
||||
|
||||
static inline vector_number
|
||||
state_number_to_vector_number (state_number s)
|
||||
@@ -84,7 +84,7 @@ int nvectors;
|
||||
static base_number **froms;
|
||||
static base_number **tos;
|
||||
static unsigned int **conflict_tos;
|
||||
static short int *tally;
|
||||
static int *tally;
|
||||
static base_number *width;
|
||||
|
||||
|
||||
@@ -94,8 +94,8 @@ static base_number *width;
|
||||
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 int action_number;
|
||||
#define ACTION_NUMBER_MINIMUM SHRT_MIN
|
||||
typedef int action_number;
|
||||
#define ACTION_NUMBER_MINIMUM INT_MIN
|
||||
|
||||
static action_number *actrow;
|
||||
|
||||
@@ -516,14 +516,14 @@ save_column (symbol_number sym, state_number default_state)
|
||||
`-------------------------------------------------------------*/
|
||||
|
||||
static state_number
|
||||
default_goto (symbol_number sym, short int state_count[])
|
||||
default_goto (symbol_number sym, size_t state_count[])
|
||||
{
|
||||
state_number s;
|
||||
goto_number i;
|
||||
goto_number m = goto_map[sym - ntokens];
|
||||
goto_number n = goto_map[sym - ntokens + 1];
|
||||
state_number default_state = -1;
|
||||
int max = 0;
|
||||
size_t max = 0;
|
||||
|
||||
if (m == n)
|
||||
return -1;
|
||||
@@ -558,7 +558,7 @@ static void
|
||||
goto_actions (void)
|
||||
{
|
||||
symbol_number i;
|
||||
short int *state_count = xnmalloc (nstates, sizeof *state_count);
|
||||
size_t *state_count = xnmalloc (nstates, sizeof *state_count);
|
||||
yydefgoto = xnmalloc (nvars, sizeof *yydefgoto);
|
||||
|
||||
/* For a given nterm I, STATE_COUNT[S] is the number of times there
|
||||
|
||||
Reference in New Issue
Block a user