22 |
#include "quotearg.h" |
#include "quotearg.h" |
23 |
#include "bitset.h" |
#include "bitset.h" |
24 |
#include "bitsetv.h" |
#include "bitsetv.h" |
25 |
|
#include "bitsetv-print.h" |
26 |
#include "getargs.h" |
#include "getargs.h" |
27 |
#include "symtab.h" |
#include "symtab.h" |
28 |
#include "gram.h" |
#include "gram.h" |
79 |
quotearg_style (escape_quoting_style, symbols[i]->tag)); |
quotearg_style (escape_quoting_style, symbols[i]->tag)); |
80 |
for (j = 0; j < nvars; j++) |
for (j = 0; j < nvars; j++) |
81 |
if (bitset_test (FIRSTS (i), j)) |
if (bitset_test (FIRSTS (i), j)) |
82 |
fprintf (stderr, "\t\t%d (%s)\n", |
fprintf (stderr, "\t\t%s\n", |
|
j + ntokens, |
|
83 |
quotearg_style (escape_quoting_style, |
quotearg_style (escape_quoting_style, |
84 |
symbols[j + ntokens]->tag)); |
symbols[j + ntokens]->tag)); |
85 |
} |
} |
111 |
} |
} |
112 |
fprintf (stderr, "\n\n"); |
fprintf (stderr, "\n\n"); |
113 |
} |
} |
|
|
|
|
/*--------------------------------------------------------. |
|
|
| Display the MATRIX array of SIZE bitsets of size SIZE. | |
|
|
`--------------------------------------------------------*/ |
|
|
|
|
|
static void |
|
|
bitmatrix_print (const char *title, bitsetv matrix) |
|
|
{ |
|
|
size_t i, j; |
|
|
size_t size = bitset_size (matrix[0]); |
|
|
|
|
|
/* Title. */ |
|
|
fprintf (stderr, "%s BEGIN\n", title); |
|
|
|
|
|
/* Column numbers. */ |
|
|
fputs (" ", stderr); |
|
|
for (i = 0; i < size; ++i) |
|
|
putc (i / 10 ? '0' + i / 10 : ' ', stderr); |
|
|
putc ('\n', stderr); |
|
|
fputs (" ", stderr); |
|
|
for (i = 0; i < size; ++i) |
|
|
fprintf (stderr, "%d", i % 10); |
|
|
putc ('\n', stderr); |
|
|
|
|
|
/* Bar. */ |
|
|
fputs (" .", stderr); |
|
|
for (i = 0; i < size; ++i) |
|
|
putc ('-', stderr); |
|
|
fputs (".\n", stderr); |
|
|
|
|
|
/* Contents. */ |
|
|
for (i = 0; i < size; ++i) |
|
|
{ |
|
|
fprintf (stderr, "%2d|", i); |
|
|
for (j = 0; j < size; ++j) |
|
|
fputs (bitset_test (matrix[i], j) ? "1" : " ", stderr); |
|
|
fputs ("|\n", stderr); |
|
|
} |
|
|
|
|
|
/* Bar. */ |
|
|
fputs (" `", stderr); |
|
|
for (i = 0; i < size; ++i) |
|
|
putc ('-', stderr); |
|
|
fputs ("'\n", stderr); |
|
|
|
|
|
/* End title. */ |
|
|
fprintf (stderr, "%s END\n\n", title); |
|
|
} |
|
114 |
|
|
115 |
/*------------------------------------------------------------------. |
/*------------------------------------------------------------------. |
116 |
| Set FIRSTS to be an NVARS array of NVARS bitsets indicating which | |
| Set FIRSTS to be an NVARS array of NVARS bitsets indicating which | |
139 |
} |
} |
140 |
|
|
141 |
if (trace_flag) |
if (trace_flag) |
142 |
bitmatrix_print ("RTC: Input", firsts); |
bitsetv_matrix_dump (stderr, "RTC: Firsts Input", firsts); |
143 |
bitsetv_reflexive_transitive_closure (firsts); |
bitsetv_reflexive_transitive_closure (firsts); |
144 |
if (trace_flag) |
if (trace_flag) |
145 |
bitmatrix_print ("RTC: Output", firsts); |
bitsetv_matrix_dump (stderr, "RTC: Firsts Output", firsts); |
146 |
|
|
147 |
if (trace_flag) |
if (trace_flag) |
148 |
print_firsts (); |
print_firsts (); |
178 |
|
|
179 |
bitsetv_free (firsts); |
bitsetv_free (firsts); |
180 |
} |
} |
181 |
|
|
182 |
|
|
183 |
|
|
184 |
void |
void |