26 |
#include "bitset.h" |
#include "bitset.h" |
27 |
#include "quotearg.h" |
#include "quotearg.h" |
28 |
#include "symtab.h" |
#include "symtab.h" |
29 |
|
#include "gram.h" |
30 |
#include "getargs.h" |
#include "getargs.h" |
31 |
#include "reader.h" |
#include "reader.h" |
32 |
#include "gram.h" |
#include "gram.h" |
52 |
static state_t *last_state = NULL; |
static state_t *last_state = NULL; |
53 |
|
|
54 |
static int nshifts; |
static int nshifts; |
55 |
static short *shift_symbol = NULL; |
static token_number_t *shift_symbol = NULL; |
56 |
|
|
57 |
static short *redset = NULL; |
static short *redset = NULL; |
58 |
static short *shiftset = NULL; |
static short *shiftset = NULL; |
117 |
shiftset = XCALLOC (short, nsyms); |
shiftset = XCALLOC (short, nsyms); |
118 |
redset = XCALLOC (short, nrules + 1); |
redset = XCALLOC (short, nrules + 1); |
119 |
state_hash = XCALLOC (state_t *, STATE_HASH_SIZE); |
state_hash = XCALLOC (state_t *, STATE_HASH_SIZE); |
120 |
shift_symbol = XCALLOC (short, nsyms); |
shift_symbol = XCALLOC (token_number_t, nsyms); |
121 |
} |
} |
122 |
|
|
123 |
|
|
162 |
nshifts = 0; |
nshifts = 0; |
163 |
|
|
164 |
for (i = 0; i < nritemset; ++i) |
for (i = 0; i < nritemset; ++i) |
165 |
{ |
if (ritem[itemset[i]] >= 0) |
166 |
int symbol = ritem[itemset[i]]; |
{ |
167 |
if (symbol >= 0) |
token_number_t symbol |
168 |
{ |
= item_number_as_token_number (ritem[itemset[i]]); |
169 |
if (!kernel_size[symbol]) |
if (!kernel_size[symbol]) |
170 |
{ |
{ |
171 |
shift_symbol[nshifts] = symbol; |
shift_symbol[nshifts] = symbol; |
172 |
nshifts++; |
nshifts++; |
173 |
} |
} |
174 |
|
|
175 |
kernel_base[symbol][kernel_size[symbol]] = itemset[i] + 1; |
kernel_base[symbol][kernel_size[symbol]] = itemset[i] + 1; |
176 |
kernel_size[symbol]++; |
kernel_size[symbol]++; |
177 |
} |
} |
|
} |
|
178 |
} |
} |
179 |
|
|
180 |
|
|
185 |
`-----------------------------------------------------------------*/ |
`-----------------------------------------------------------------*/ |
186 |
|
|
187 |
static state_t * |
static state_t * |
188 |
new_state (int symbol) |
new_state (token_number_t symbol) |
189 |
{ |
{ |
190 |
state_t *p; |
state_t *p; |
191 |
|
|
229 |
`--------------------------------------------------------------*/ |
`--------------------------------------------------------------*/ |
230 |
|
|
231 |
static int |
static int |
232 |
get_state (int symbol) |
get_state (token_number_t symbol) |
233 |
{ |
{ |
234 |
int key; |
int key; |
235 |
int i; |
int i; |
298 |
{ |
{ |
299 |
int i; |
int i; |
300 |
int j; |
int j; |
301 |
int symbol; |
token_number_t symbol; |
302 |
|
|
303 |
if (trace_flag) |
if (trace_flag) |
304 |
fprintf (stderr, "Entering append_states, state = %d\n", |
fprintf (stderr, "Entering append_states, state = %d\n", |