version 1.4, 2001/07/16 06:29:44 |
version 1.5, 2001/11/19 19:02:18 |
|
|
void |
void |
set_state_table() |
set_state_table() |
{ |
{ |
register core *sp; |
core *sp; |
|
|
state_table = NEW2(nstates, core *); |
state_table = NEW2(nstates, core *); |
for (sp = first_state; sp; sp = sp->next) |
for (sp = first_state; sp; sp = sp->next) |
|
|
void |
void |
set_accessing_symbol() |
set_accessing_symbol() |
{ |
{ |
register core *sp; |
core *sp; |
|
|
accessing_symbol = NEW2(nstates, short); |
accessing_symbol = NEW2(nstates, short); |
for (sp = first_state; sp; sp = sp->next) |
for (sp = first_state; sp; sp = sp->next) |
|
|
void |
void |
set_shift_table() |
set_shift_table() |
{ |
{ |
register shifts *sp; |
shifts *sp; |
|
|
shift_table = NEW2(nstates, shifts *); |
shift_table = NEW2(nstates, shifts *); |
for (sp = first_shift; sp; sp = sp->next) |
for (sp = first_shift; sp; sp = sp->next) |
|
|
void |
void |
set_reduction_table() |
set_reduction_table() |
{ |
{ |
register reductions *rp; |
reductions *rp; |
|
|
reduction_table = NEW2(nstates, reductions *); |
reduction_table = NEW2(nstates, reductions *); |
for (rp = first_reduction; rp; rp = rp->next) |
for (rp = first_reduction; rp; rp = rp->next) |
|
|
void |
void |
set_maxrhs() |
set_maxrhs() |
{ |
{ |
register short *itemp; |
short *itemp; |
register short *item_end; |
short *item_end; |
register int length; |
int length; |
register int max; |
int max; |
|
|
length = 0; |
length = 0; |
max = 0; |
max = 0; |
|
|
void |
void |
initialize_LA() |
initialize_LA() |
{ |
{ |
register int i, j, k; |
int i, j, k; |
register reductions *rp; |
reductions *rp; |
|
|
lookaheads = NEW2(nstates + 1, short); |
lookaheads = NEW2(nstates + 1, short); |
|
|
|
|
void |
void |
set_goto_map() |
set_goto_map() |
{ |
{ |
register shifts *sp; |
shifts *sp; |
register int i; |
int i; |
register int symbol; |
int symbol; |
register int k; |
int k; |
register short *temp_map; |
short *temp_map; |
register int state2; |
int state2; |
register int state1; |
int state1; |
|
|
goto_map = NEW2(nvars + 1, short) - ntokens; |
goto_map = NEW2(nvars + 1, short) - ntokens; |
temp_map = NEW2(nvars + 1, short) - ntokens; |
temp_map = NEW2(nvars + 1, short) - ntokens; |
|
|
int state; |
int state; |
int symbol; |
int symbol; |
{ |
{ |
register int high; |
int high; |
register int low; |
int low; |
register int middle; |
int middle; |
register int s; |
int s; |
|
|
low = goto_map[symbol]; |
low = goto_map[symbol]; |
high = goto_map[symbol + 1]; |
high = goto_map[symbol + 1]; |
|
|
void |
void |
initialize_F() |
initialize_F() |
{ |
{ |
register int i; |
int i; |
register int j; |
int j; |
register int k; |
int k; |
register shifts *sp; |
shifts *sp; |
register short *edge; |
short *edge; |
register unsigned *rowp; |
unsigned *rowp; |
register short *rp; |
short *rp; |
register short **reads; |
short **reads; |
register int nedges; |
int nedges; |
register int stateno; |
int stateno; |
register int symbol; |
int symbol; |
register int nwords; |
int nwords; |
|
|
nwords = ngotos * tokensetsize; |
nwords = ngotos * tokensetsize; |
F = NEW2(nwords, unsigned); |
F = NEW2(nwords, unsigned); |
|
|
void |
void |
build_relations() |
build_relations() |
{ |
{ |
register int i; |
int i; |
register int j; |
int j; |
register int k; |
int k; |
register short *rulep; |
short *rulep; |
register short *rp; |
short *rp; |
register shifts *sp; |
shifts *sp; |
register int length; |
int length; |
register int nedges; |
int nedges; |
register int done; |
int done; |
register int state1; |
int state1; |
register int stateno; |
int stateno; |
register int symbol1; |
int symbol1; |
register int symbol2; |
int symbol2; |
register short *shortp; |
short *shortp; |
register short *edge; |
short *edge; |
register short *states; |
short *states; |
register short **new_includes; |
short **new_includes; |
|
|
includes = NEW2(ngotos, short *); |
includes = NEW2(ngotos, short *); |
edge = NEW2(ngotos + 1, short); |
edge = NEW2(ngotos + 1, short); |
|
|
add_lookback_edge(stateno, ruleno, gotono) |
add_lookback_edge(stateno, ruleno, gotono) |
int stateno, ruleno, gotono; |
int stateno, ruleno, gotono; |
{ |
{ |
register int i, k; |
int i, k; |
register int found; |
int found; |
register shorts *sp; |
shorts *sp; |
|
|
i = lookaheads[stateno]; |
i = lookaheads[stateno]; |
k = lookaheads[stateno + 1]; |
k = lookaheads[stateno + 1]; |
|
|
short **R; |
short **R; |
int n; |
int n; |
{ |
{ |
register short **new_R; |
short **new_R; |
register short **temp_R; |
short **temp_R; |
register short *nedges; |
short *nedges; |
register short *sp; |
short *sp; |
register int i; |
int i; |
register int k; |
int k; |
|
|
nedges = NEW2(n, short); |
nedges = NEW2(n, short); |
|
|
|
|
void |
void |
compute_lookaheads() |
compute_lookaheads() |
{ |
{ |
register int i, n; |
int i, n; |
register unsigned *fp1, *fp2, *fp3; |
unsigned *fp1, *fp2, *fp3; |
register shorts *sp, *next; |
shorts *sp, *next; |
register unsigned *rowp; |
unsigned *rowp; |
|
|
rowp = LA; |
rowp = LA; |
n = lookaheads[nstates]; |
n = lookaheads[nstates]; |
|
|
digraph(relation) |
digraph(relation) |
short **relation; |
short **relation; |
{ |
{ |
register int i; |
int i; |
|
|
infinity = ngotos + 2; |
infinity = ngotos + 2; |
INDEX = NEW2(ngotos + 1, short); |
INDEX = NEW2(ngotos + 1, short); |
|
|
|
|
void |
void |
traverse(i) |
traverse(i) |
register int i; |
int i; |
{ |
{ |
register unsigned *fp1; |
unsigned *fp1; |
register unsigned *fp2; |
unsigned *fp2; |
register unsigned *fp3; |
unsigned *fp3; |
register int j; |
int j; |
register short *rp; |
short *rp; |
|
|
int height; |
int height; |
unsigned *base; |
unsigned *base; |