style: make item_index a truly different type from item_number

See previous commit.

* src/gram.h (item_index): Make it unsigned.
Fix remaiming issues.
This commit is contained in:
Akim Demaille
2020-05-25 07:34:11 +02:00
parent 6a1a681fd2
commit 518dc6ca26
5 changed files with 10 additions and 9 deletions

View File

@@ -60,10 +60,10 @@ closure_print (char const *title, item_index const *array, size_t size)
for (size_t i = 0; i < size; ++i)
{
fprintf (stderr, " %2d: .", array[i]);
item_index *rp;
for (rp = &ritem[array[i]]; *rp >= 0; ++rp)
item_number *rp;
for (rp = &ritem[array[i]]; 0 <= *rp; ++rp)
fprintf (stderr, " %s", symbols[*rp]->tag);
fprintf (stderr, " (rule %d)\n", -*rp - 1);
fprintf (stderr, " (rule %d)\n", item_number_as_rule_number (*rp));
}
fputs ("\n\n", stderr);
}

View File

@@ -111,14 +111,15 @@ extern int nsyms;
extern int ntokens;
extern int nvars;
/* elements of ritem */
/* Elements of ritem. */
typedef int item_number;
/* indices into ritem */
typedef int item_index;
# define ITEM_NUMBER_MAX INT_MAX
extern item_number *ritem;
extern int nritems;
/* Indices into ritem. */
typedef unsigned int item_index;
/* There is weird relationship between OT1H item_number and OTOH
symbol_number and rule_number: we store the latter in
item_number. symbol_number values are stored as-is, while

View File

@@ -1030,7 +1030,7 @@ ielr_split_states (bitsetv follow_kernel_items, bitsetv always_follows,
if (!node->state->consistent)
{
size_t i = 0;
item_number *itemset = node->state->items;
item_index *itemset = node->state->items;
for (size_t r = 0; r < node->state->reductions->num; ++r)
{
rule *this_rule = node->state->reductions->rules[r];

View File

@@ -57,7 +57,7 @@ static struct escape_buf escape_bufs[num_escape_bufs];
static void
print_core (FILE *out, int level, state *s)
{
item_number *sitems = s->items;
item_index *sitems = s->items;
size_t snritems = s->nitems;
/* Output all the items of a state, not only its kernel. */

View File

@@ -61,7 +61,7 @@ max_length (size_t *width, const char *str)
static void
print_core (FILE *out, state *s)
{
item_number *sitems = s->items;
item_index *sitems = s->items;
size_t snritems = s->nitems;
/* Output all the items of a state, not only its kernel. */
if (report_flag & report_itemsets)