52 |
`-----------------*/ |
`-----------------*/ |
53 |
|
|
54 |
static void |
static void |
55 |
print_closure (int n) |
print_closure (const char *title, short *array, size_t size) |
56 |
{ |
{ |
57 |
int i; |
size_t i; |
58 |
fprintf (stderr, "n = %d\n", n); |
fprintf (stderr, "Closure: %s\n", title); |
59 |
for (i = 0; i < itemsetsize; ++i) |
for (i = 0; i < size; ++i) |
60 |
fprintf (stderr, " %d\n", itemset[i]); |
{ |
61 |
fprintf (stderr, "\n\n"); |
short *rp; |
62 |
|
fprintf (stderr, " %2d: .", array[i]); |
63 |
|
for (rp = &ritem[array[i]]; *rp > 0; ++rp) |
64 |
|
fprintf (stderr, " %s", tags[*rp]); |
65 |
|
fprintf (stderr, " (rule %d)\n", -*rp); |
66 |
|
} |
67 |
|
fputs ("\n\n", stderr); |
68 |
} |
} |
69 |
|
|
70 |
|
|
200 |
int ruleno; |
int ruleno; |
201 |
|
|
202 |
if (trace_flag) |
if (trace_flag) |
203 |
{ |
print_closure ("input", core, n); |
|
fprintf (stderr, "Entering closure (items = {"); |
|
|
for (c = 0; c < n; ++c) |
|
|
fprintf (stderr, " %d ", core[c]); |
|
|
fprintf (stderr, "})\n"); |
|
|
} |
|
204 |
|
|
205 |
if (n == 0) |
if (n == 0) |
206 |
{ |
{ |
242 |
} |
} |
243 |
|
|
244 |
if (trace_flag) |
if (trace_flag) |
245 |
print_closure (n); |
print_closure ("output", itemset, itemsetsize); |
246 |
} |
} |
247 |
|
|
248 |
|
|