aboutsummaryrefslogtreecommitdiff
path: root/lr0.c
diff options
context:
space:
mode:
Diffstat (limited to 'lr0.c')
-rw-r--r--lr0.c36
1 files changed, 19 insertions, 17 deletions
diff --git a/lr0.c b/lr0.c
index 0ac211fd8582..d16a3ed051fb 100644
--- a/lr0.c
+++ b/lr0.c
@@ -1,4 +1,4 @@
-/* $Id: lr0.c,v 1.19 2016/06/07 00:21:53 tom Exp $ */
+/* $Id: lr0.c,v 1.21 2021/05/20 23:57:23 tom Exp $ */
#include "defs.h"
@@ -16,7 +16,7 @@ static void save_shifts(void);
static void set_derives(void);
static void set_nullable(void);
-int nstates;
+Value_t nstates;
core *first_state;
shifts *first_shift;
reductions *first_reduction;
@@ -44,7 +44,6 @@ allocate_itemsets(void)
{
Value_t *itemp;
Value_t *item_end;
- int symbol;
int i;
int count;
int max;
@@ -56,7 +55,8 @@ allocate_itemsets(void)
item_end = ritem + nitems;
for (itemp = ritem; itemp < item_end; itemp++)
{
- symbol = *itemp;
+ int symbol = *itemp;
+
if (symbol >= 0)
{
count++;
@@ -94,7 +94,6 @@ static void
append_states(void)
{
int i;
- int j;
Value_t symbol;
#ifdef TRACE
@@ -102,8 +101,9 @@ append_states(void)
#endif
for (i = 1; i < nshifts; i++)
{
+ int j = i;
+
symbol = shift_symbol[i];
- j = i;
while (j > 0 && shift_symbol[j - 1] > symbol)
{
shift_symbol[j] = shift_symbol[j - 1];
@@ -161,10 +161,8 @@ get_state(int symbol)
{
int key;
Value_t *isp1;
- Value_t *isp2;
Value_t *iend;
core *sp;
- int found;
int n;
#ifdef TRACE
@@ -180,11 +178,14 @@ get_state(int symbol)
sp = state_set[key];
if (sp)
{
- found = 0;
+ int found = 0;
+
while (!found)
{
if (sp->nitems == n)
{
+ Value_t *isp2;
+
found = 1;
isp1 = kernel_base[symbol];
isp2 = sp->items;
@@ -252,7 +253,6 @@ new_itemsets(void)
int shiftcount;
Value_t *isp;
Value_t *ksp;
- Value_t symbol;
for (i = 0; i < nsyms; i++)
kernel_end[i] = 0;
@@ -261,8 +261,9 @@ new_itemsets(void)
isp = itemset;
while (isp < itemsetend)
{
- i = *isp++;
- symbol = ritem[i];
+ int j = *isp++;
+ Value_t symbol = ritem[j];
+
if (symbol > 0)
{
ksp = kernel_end[symbol];
@@ -272,7 +273,7 @@ new_itemsets(void)
ksp = kernel_base[symbol];
}
- *ksp++ = (Value_t)(i + 1);
+ *ksp++ = (Value_t)(j + 1);
kernel_end[symbol] = ksp;
}
}
@@ -435,16 +436,14 @@ save_reductions(void)
{
Value_t *isp;
Value_t *rp1;
- Value_t *rp2;
- int item;
Value_t count;
reductions *p;
- Value_t *rend;
count = 0;
for (isp = itemset; isp < itemsetend; isp++)
{
- item = ritem[*isp];
+ int item = ritem[*isp];
+
if (item < 0)
{
redset[count++] = (Value_t)-item;
@@ -453,6 +452,9 @@ save_reductions(void)
if (count)
{
+ Value_t *rp2;
+ Value_t *rend;
+
p = (reductions *)allocate((sizeof(reductions) +
(unsigned)(count - 1) *
sizeof(Value_t)));