diff options
Diffstat (limited to 'yacc/verbose.c')
-rw-r--r-- | yacc/verbose.c | 270 |
1 files changed, 135 insertions, 135 deletions
diff --git a/yacc/verbose.c b/yacc/verbose.c index d8e60d0fd..2d79c9a5c 100644 --- a/yacc/verbose.c +++ b/yacc/verbose.c @@ -42,16 +42,16 @@ void verbose(void) if (null_rules == 0) no_space(); fprintf(verbose_file, "\f\n"); for (i = 0; i < nstates; i++) - print_state(i); + print_state(i); FREE(null_rules); if (nunused) - log_unused(); + log_unused(); if (SRtotal || RRtotal) - log_conflicts(); + log_conflicts(); fprintf(verbose_file, "\n\n%d terminals, %d nonterminals\n", ntokens, - nvars); + nvars); fprintf(verbose_file, "%d grammar rules, %d states\n", nrules - 2, nstates); } @@ -64,13 +64,13 @@ void log_unused(void) fprintf(verbose_file, "\n\nRules never reduced:\n"); for (i = 3; i < nrules; ++i) { - if (!rules_used[i]) - { - fprintf(verbose_file, "\t%s :", symbol_name[rlhs[i]]); - for (p = ritem + rrhs[i]; *p >= 0; ++p) - fprintf(verbose_file, " %s", symbol_name[*p]); - fprintf(verbose_file, " (%d)\n", i - 2); - } + if (!rules_used[i]) + { + fprintf(verbose_file, "\t%s :", symbol_name[rlhs[i]]); + for (p = ritem + rrhs[i]; *p >= 0; ++p) + fprintf(verbose_file, " %s", symbol_name[*p]); + fprintf(verbose_file, " (%d)\n", i - 2); + } } } @@ -82,23 +82,23 @@ void log_conflicts(void) fprintf(verbose_file, "\n\n"); for (i = 0; i < nstates; i++) { - if (SRconflicts[i] || RRconflicts[i]) - { - fprintf(verbose_file, "State %d contains ", i); - if (SRconflicts[i] == 1) - fprintf(verbose_file, "1 shift/reduce conflict"); - else if (SRconflicts[i] > 1) - fprintf(verbose_file, "%d shift/reduce conflicts", - SRconflicts[i]); - if (SRconflicts[i] && RRconflicts[i]) - fprintf(verbose_file, ", "); - if (RRconflicts[i] == 1) - fprintf(verbose_file, "1 reduce/reduce conflict"); - else if (RRconflicts[i] > 1) - fprintf(verbose_file, "%d reduce/reduce conflicts", - RRconflicts[i]); - fprintf(verbose_file, ".\n"); - } + if (SRconflicts[i] || RRconflicts[i]) + { + fprintf(verbose_file, "State %d contains ", i); + if (SRconflicts[i] == 1) + fprintf(verbose_file, "1 shift/reduce conflict"); + else if (SRconflicts[i] > 1) + fprintf(verbose_file, "%d shift/reduce conflicts", + SRconflicts[i]); + if (SRconflicts[i] && RRconflicts[i]) + fprintf(verbose_file, ", "); + if (RRconflicts[i] == 1) + fprintf(verbose_file, "1 reduce/reduce conflict"); + else if (RRconflicts[i] > 1) + fprintf(verbose_file, "%d reduce/reduce conflicts", + RRconflicts[i]); + fprintf(verbose_file, ".\n"); + } } } @@ -106,9 +106,9 @@ void log_conflicts(void) void print_state(int state) { if (state) - fprintf(verbose_file, "\n\n"); + fprintf(verbose_file, "\n\n"); if (SRconflicts[state] || RRconflicts[state]) - print_conflicts(state); + print_conflicts(state); fprintf(verbose_file, "state %d\n", state); print_core(state); print_nulls(state); @@ -126,41 +126,41 @@ void print_conflicts(int state) number = 0; for (p = parser[state]; p; p = p->next) { - if (p->suppressed == 2) - continue; - - if (p->symbol != symbol) - { - symbol = p->symbol; - number = p->number; - if (p->action_code == SHIFT) - act = SHIFT; - else - act = REDUCE; - } - else if (p->suppressed == 1) - { - if (state == final_state && symbol == 0) - { - fprintf(verbose_file, "%d: shift/reduce conflict \ + if (p->suppressed == 2) + continue; + + if (p->symbol != symbol) + { + symbol = p->symbol; + number = p->number; + if (p->action_code == SHIFT) + act = SHIFT; + else + act = REDUCE; + } + else if (p->suppressed == 1) + { + if (state == final_state && symbol == 0) + { + fprintf(verbose_file, "%d: shift/reduce conflict \ (accept, reduce %d) on $end\n", state, p->number - 2); - } - else - { - if (act == SHIFT) - { - fprintf(verbose_file, "%d: shift/reduce conflict \ + } + else + { + if (act == SHIFT) + { + fprintf(verbose_file, "%d: shift/reduce conflict \ (shift %d, reduce %d) on %s\n", state, number, p->number - 2, - symbol_name[symbol]); - } - else - { - fprintf(verbose_file, "%d: reduce/reduce conflict \ + symbol_name[symbol]); + } + else + { + fprintf(verbose_file, "%d: reduce/reduce conflict \ (reduce %d, reduce %d) on %s\n", state, number - 2, p->number - 2, - symbol_name[symbol]); - } - } - } + symbol_name[symbol]); + } + } + } } } @@ -179,23 +179,23 @@ void print_core(int state) for (i = 0; i < k; i++) { - sp1 = sp = ritem + statep->items[i]; + sp1 = sp = ritem + statep->items[i]; - while (*sp >= 0) ++sp; - rule = -(*sp); - fprintf(verbose_file, "\t%s : ", symbol_name[rlhs[rule]]); + while (*sp >= 0) ++sp; + rule = -(*sp); + fprintf(verbose_file, "\t%s : ", symbol_name[rlhs[rule]]); for (sp = ritem + rrhs[rule]; sp < sp1; sp++) - fprintf(verbose_file, "%s ", symbol_name[*sp]); + fprintf(verbose_file, "%s ", symbol_name[*sp]); - putc('.', verbose_file); + putc('.', verbose_file); - while (*sp >= 0) - { - fprintf(verbose_file, " %s", symbol_name[*sp]); - sp++; - } - fprintf(verbose_file, " (%d)\n", -2 - *sp); + while (*sp >= 0) + { + fprintf(verbose_file, " %s", symbol_name[*sp]); + sp++; + } + fprintf(verbose_file, " (%d)\n", -2 - *sp); } } @@ -208,36 +208,36 @@ void print_nulls(int state) nnulls = 0; for (p = parser[state]; p; p = p->next) { - if (p->action_code == REDUCE && - (p->suppressed == 0 || p->suppressed == 1)) - { - i = p->number; - if (rrhs[i] + 1 == rrhs[i+1]) - { - for (j = 0; j < nnulls && i > null_rules[j]; ++j) - continue; - - if (j == nnulls) - { - ++nnulls; - null_rules[j] = i; - } - else if (i != null_rules[j]) - { - ++nnulls; - for (k = nnulls - 1; k > j; --k) - null_rules[k] = null_rules[k-1]; - null_rules[j] = i; - } - } - } + if (p->action_code == REDUCE && + (p->suppressed == 0 || p->suppressed == 1)) + { + i = p->number; + if (rrhs[i] + 1 == rrhs[i+1]) + { + for (j = 0; j < nnulls && i > null_rules[j]; ++j) + continue; + + if (j == nnulls) + { + ++nnulls; + null_rules[j] = i; + } + else if (i != null_rules[j]) + { + ++nnulls; + for (k = nnulls - 1; k > j; --k) + null_rules[k] = null_rules[k-1]; + null_rules[j] = i; + } + } + } } for (i = 0; i < nnulls; ++i) { - j = null_rules[i]; - fprintf(verbose_file, "\t%s : . (%d)\n", symbol_name[rlhs[j]], - j - 2); + j = null_rules[i]; + fprintf(verbose_file, "\t%s : . (%d)\n", symbol_name[rlhs[j]], + j - 2); } fprintf(verbose_file, "\n"); } @@ -250,21 +250,21 @@ void print_actions(int stateno) register int as; if (stateno == final_state) - fprintf(verbose_file, "\t$end accept\n"); + fprintf(verbose_file, "\t$end accept\n"); p = parser[stateno]; if (p) { - print_shifts(p); - print_reductions(p, defred[stateno]); + print_shifts(p); + print_reductions(p, defred[stateno]); } sp = shift_table[stateno]; if (sp && sp->nshifts > 0) { - as = accessing_symbol[sp->shift[sp->nshifts - 1]]; - if (ISVAR(as)) - print_gotos(stateno); + as = accessing_symbol[sp->shift[sp->nshifts - 1]]; + if (ISVAR(as)) + print_gotos(stateno); } } @@ -277,18 +277,18 @@ void print_shifts(register action *p) count = 0; for (q = p; q; q = q->next) { - if (q->suppressed < 2 && q->action_code == SHIFT) - ++count; + if (q->suppressed < 2 && q->action_code == SHIFT) + ++count; } if (count > 0) { - for (; p; p = p->next) - { - if (p->action_code == SHIFT && p->suppressed == 0) - fprintf(verbose_file, "\t%s shift %d\n", - symbol_name[p->symbol], p->number); - } + for (; p; p = p->next) + { + if (p->action_code == SHIFT && p->suppressed == 0) + fprintf(verbose_file, "\t%s shift %d\n", + symbol_name[p->symbol], p->number); + } } } @@ -301,30 +301,30 @@ void print_reductions(register action *p, register int defred) anyreds = 0; for (q = p; q ; q = q->next) { - if (q->action_code == REDUCE && q->suppressed < 2) - { - anyreds = 1; - break; - } + if (q->action_code == REDUCE && q->suppressed < 2) + { + anyreds = 1; + break; + } } if (anyreds == 0) - fprintf(verbose_file, "\t. error\n"); + fprintf(verbose_file, "\t. error\n"); else { - for (; p; p = p->next) - { - if (p->action_code == REDUCE && p->number != defred) - { - k = p->number - 2; - if (p->suppressed == 0) - fprintf(verbose_file, "\t%s reduce %d\n", - symbol_name[p->symbol], k); - } - } + for (; p; p = p->next) + { + if (p->action_code == REDUCE && p->number != defred) + { + k = p->number - 2; + if (p->suppressed == 0) + fprintf(verbose_file, "\t%s reduce %d\n", + symbol_name[p->symbol], k); + } + } if (defred > 0) - fprintf(verbose_file, "\t. reduce %d\n", defred - 2); + fprintf(verbose_file, "\t. reduce %d\n", defred - 2); } } @@ -341,10 +341,10 @@ void print_gotos(int stateno) to_state = sp->shift; for (i = 0; i < sp->nshifts; ++i) { - k = to_state[i]; - as = accessing_symbol[k]; - if (ISVAR(as)) - fprintf(verbose_file, "\t%s goto %d\n", symbol_name[as], k); + k = to_state[i]; + as = accessing_symbol[k]; + if (ISVAR(as)) + fprintf(verbose_file, "\t%s goto %d\n", symbol_name[as], k); } } |