40 |
print_core (int state, struct obstack *node_obstack) |
print_core (int state, struct obstack *node_obstack) |
41 |
{ |
{ |
42 |
int i; |
int i; |
43 |
int k; |
core *statep = state_table[state].state; |
|
int rule; |
|
|
core *statep; |
|
|
short *sp; |
|
|
short *sp1; |
|
44 |
|
|
45 |
statep = state_table[state].state; |
if (!statep->nitems) |
|
k = statep->nitems; |
|
|
|
|
|
if (k == 0) |
|
46 |
return; |
return; |
47 |
|
|
48 |
for (i = 0; i < k; i++) |
for (i = 0; i < statep->nitems; i++) |
49 |
{ |
{ |
50 |
if (i) |
short *sp; |
51 |
obstack_1grow (node_obstack, '\n'); |
short *sp1; |
52 |
|
int rule; |
53 |
|
|
54 |
sp1 = sp = ritem + statep->items[i]; |
sp1 = sp = ritem + statep->items[i]; |
55 |
|
|
58 |
|
|
59 |
rule = -(*sp); |
rule = -(*sp); |
60 |
|
|
61 |
|
if (i) |
62 |
|
obstack_1grow (node_obstack, '\n'); |
63 |
obstack_fgrow1 (node_obstack, "%d: ", rule); |
obstack_fgrow1 (node_obstack, "%d: ", rule); |
64 |
obstack_fgrow1 (node_obstack, " %s -> ", |
obstack_fgrow1 (node_obstack, " %s -> ", |
65 |
tags[rule_table[rule].lhs]); |
tags[rule_table[rule].lhs]); |
69 |
|
|
70 |
obstack_1grow (node_obstack, '.'); |
obstack_1grow (node_obstack, '.'); |
71 |
|
|
72 |
while (*sp > 0) |
for (/* Nothing */; *sp > 0; ++sp) |
73 |
obstack_fgrow1 (node_obstack, " %s", tags[*sp++]); |
obstack_fgrow1 (node_obstack, " %s", tags[*sp]); |
74 |
} |
} |
75 |
} |
} |
76 |
|
|