354 |
print_grammar (FILE *out) |
print_grammar (FILE *out) |
355 |
{ |
{ |
356 |
symbol_number_t i; |
symbol_number_t i; |
|
item_number_t *rule; |
|
357 |
char buffer[90]; |
char buffer[90]; |
358 |
int column = 0; |
int column = 0; |
359 |
|
|
365 |
if (token_translations[i] != undeftoken->number) |
if (token_translations[i] != undeftoken->number) |
366 |
{ |
{ |
367 |
const char *tag = symbol_tag_get (symbols[token_translations[i]]); |
const char *tag = symbol_tag_get (symbols[token_translations[i]]); |
368 |
int r; |
rule_number_t r; |
369 |
|
item_number_t *rhsp; |
370 |
|
|
371 |
buffer[0] = 0; |
buffer[0] = 0; |
372 |
column = strlen (tag); |
column = strlen (tag); |
373 |
fputs (tag, out); |
fputs (tag, out); |
375 |
sprintf (buffer, " (%d)", i); |
sprintf (buffer, " (%d)", i); |
376 |
|
|
377 |
for (r = 1; r < nrules + 1; r++) |
for (r = 1; r < nrules + 1; r++) |
378 |
for (rule = rules[r].rhs; *rule >= 0; rule++) |
for (rhsp = rules[r].rhs; *rhsp >= 0; rhsp++) |
379 |
if (item_number_as_symbol_number (*rule) == token_translations[i]) |
if (item_number_as_symbol_number (*rhsp) == token_translations[i]) |
380 |
{ |
{ |
381 |
END_TEST (65); |
END_TEST (65); |
382 |
sprintf (buffer + strlen (buffer), " %d", r - 1); |
sprintf (buffer + strlen (buffer), " %d", r - 1); |
391 |
for (i = ntokens; i < nsyms; i++) |
for (i = ntokens; i < nsyms; i++) |
392 |
{ |
{ |
393 |
int left_count = 0, right_count = 0; |
int left_count = 0, right_count = 0; |
394 |
int r; |
rule_number_t r; |
395 |
const char *tag = symbol_tag_get (symbols[i]); |
const char *tag = symbol_tag_get (symbols[i]); |
396 |
|
|
397 |
for (r = 1; r < nrules + 1; r++) |
for (r = 1; r < nrules + 1; r++) |
398 |
{ |
{ |
399 |
|
item_number_t *rhsp; |
400 |
if (rules[r].lhs->number == i) |
if (rules[r].lhs->number == i) |
401 |
left_count++; |
left_count++; |
402 |
for (rule = rules[r].rhs; *rule >= 0; rule++) |
for (rhsp = rules[r].rhs; *rhsp >= 0; rhsp++) |
403 |
if (item_number_as_symbol_number (*rule) == i) |
if (item_number_as_symbol_number (*rhsp) == i) |
404 |
{ |
{ |
405 |
right_count++; |
right_count++; |
406 |
break; |
break; |
434 |
sprintf (buffer + strlen (buffer), _(" on right:")); |
sprintf (buffer + strlen (buffer), _(" on right:")); |
435 |
for (r = 1; r < nrules + 1; r++) |
for (r = 1; r < nrules + 1; r++) |
436 |
{ |
{ |
437 |
for (rule = rules[r].rhs; *rule >= 0; rule++) |
item_number_t *rhsp; |
438 |
if (item_number_as_symbol_number (*rule) == i) |
for (rhsp = rules[r].rhs; *rhsp >= 0; rhsp++) |
439 |
|
if (item_number_as_symbol_number (*rhsp) == i) |
440 |
{ |
{ |
441 |
END_TEST (65); |
END_TEST (65); |
442 |
sprintf (buffer + strlen (buffer), " %d", r - 1); |
sprintf (buffer + strlen (buffer), " %d", r - 1); |