diff options
Diffstat (limited to 'yacc/mkpar.c')
-rw-r--r-- | yacc/mkpar.c | 244 |
1 files changed, 122 insertions, 122 deletions
diff --git a/yacc/mkpar.c b/yacc/mkpar.c index 8b46b01f8..0d70fb8fb 100644 --- a/yacc/mkpar.c +++ b/yacc/mkpar.c @@ -42,7 +42,7 @@ void make_parser(void) parser = NEW2(nstates, action *); for (i = 0; i < nstates; i++) - parser[i] = parse_actions(i); + parser[i] = parse_actions(i); find_final_state(); remove_conflicts(); @@ -76,23 +76,23 @@ get_shifts(int stateno) sp = shift_table[stateno]; if (sp) { - to_state = sp->shift; - for (i = sp->nshifts - 1; i >= 0; i--) - { - k = to_state[i]; - symbol = accessing_symbol[k]; - if (ISTOKEN(symbol)) - { - temp = NEW(action); - temp->next = actions; - temp->symbol = symbol; - temp->number = k; - temp->prec = symbol_prec[symbol]; - temp->action_code = SHIFT; - temp->assoc = symbol_assoc[symbol]; - actions = temp; - } - } + to_state = sp->shift; + for (i = sp->nshifts - 1; i >= 0; i--) + { + k = to_state[i]; + symbol = accessing_symbol[k]; + if (ISTOKEN(symbol)) + { + temp = NEW(action); + temp->next = actions; + temp->symbol = symbol; + temp->number = k; + temp->prec = symbol_prec[symbol]; + temp->action_code = SHIFT; + temp->assoc = symbol_assoc[symbol]; + actions = temp; + } + } } return (actions); } @@ -109,13 +109,13 @@ add_reductions(int stateno, register action *actions) n = lookaheads[stateno + 1]; for (i = m; i < n; i++) { - ruleno = LAruleno[i]; - rowp = LA + i * tokensetsize; - for (j = ntokens - 1; j >= 0; j--) - { - if (BIT(rowp, j)) - actions = add_reduce(actions, ruleno, j); - } + ruleno = LAruleno[i]; + rowp = LA + i * tokensetsize; + for (j = ntokens - 1; j >= 0; j--) + { + if (BIT(rowp, j)) + actions = add_reduce(actions, ruleno, j); + } } return (actions); } @@ -128,19 +128,19 @@ add_reduce(register action *actions, register int ruleno, register int symbol) prev = 0; for (next = actions; next && next->symbol < symbol; next = next->next) - prev = next; + prev = next; while (next && next->symbol == symbol && next->action_code == SHIFT) { - prev = next; - next = next->next; + prev = next; + next = next->next; } while (next && next->symbol == symbol && - next->action_code == REDUCE && next->number < ruleno) + next->action_code == REDUCE && next->number < ruleno) { - prev = next; - next = next->next; + prev = next; + next = next->next; } temp = NEW(action); @@ -152,9 +152,9 @@ add_reduce(register action *actions, register int ruleno, register int symbol) temp->assoc = rassoc[ruleno]; if (prev) - prev->next = temp; + prev->next = temp; else - actions = temp; + actions = temp; return (actions); } @@ -171,8 +171,8 @@ void find_final_state(void) goal = ritem[1]; for (i = p->nshifts - 1; i >= 0; --i) { - final_state = to_state[i]; - if (accessing_symbol[final_state] == goal) break; + final_state = to_state[i]; + if (accessing_symbol[final_state] == goal) break; } } @@ -186,26 +186,26 @@ void unused_rules(void) if (rules_used == 0) no_space(); for (i = 0; i < nrules; ++i) - rules_used[i] = 0; + rules_used[i] = 0; for (i = 0; i < nstates; ++i) { - for (p = parser[i]; p; p = p->next) - { - if (p->action_code == REDUCE && p->suppressed == 0) - rules_used[p->number] = 1; - } + for (p = parser[i]; p; p = p->next) + { + if (p->action_code == REDUCE && p->suppressed == 0) + rules_used[p->number] = 1; + } } nunused = 0; for (i = 3; i < nrules; ++i) - if (!rules_used[i]) ++nunused; + if (!rules_used[i]) ++nunused; if (nunused){ - if (nunused == 1) - fprintf(stderr, "1 rule never reduced\n"); - else - fprintf(stderr, "%d rules never reduced\n", nunused); + if (nunused == 1) + fprintf(stderr, "1 rule never reduced\n"); + else + fprintf(stderr, "%d rules never reduced\n", nunused); } } @@ -223,65 +223,65 @@ void remove_conflicts(void) pref = NULL; for (i = 0; i < nstates; i++) { - SRcount = 0; - RRcount = 0; - symbol = -1; - for (p = parser[i]; p; p = p->next) - { - if (p->symbol != symbol) - { - pref = p; - symbol = p->symbol; - } - else if (i == final_state && symbol == 0) - { - SRcount++; - p->suppressed = 1; - } - else if (pref->action_code == SHIFT) - { - if (pref->prec > 0 && p->prec > 0) - { - if (pref->prec < p->prec) - { - pref->suppressed = 2; - pref = p; - } - else if (pref->prec > p->prec) - { - p->suppressed = 2; - } - else if (pref->assoc == LEFT) - { - pref->suppressed = 2; - pref = p; - } - else if (pref->assoc == RIGHT) - { - p->suppressed = 2; - } - else - { - pref->suppressed = 2; - p->suppressed = 2; - } - } - else - { - SRcount++; - p->suppressed = 1; - } - } - else - { - RRcount++; - p->suppressed = 1; - } - } - SRtotal += SRcount; - RRtotal += RRcount; - SRconflicts[i] = SRcount; - RRconflicts[i] = RRcount; + SRcount = 0; + RRcount = 0; + symbol = -1; + for (p = parser[i]; p; p = p->next) + { + if (p->symbol != symbol) + { + pref = p; + symbol = p->symbol; + } + else if (i == final_state && symbol == 0) + { + SRcount++; + p->suppressed = 1; + } + else if (pref->action_code == SHIFT) + { + if (pref->prec > 0 && p->prec > 0) + { + if (pref->prec < p->prec) + { + pref->suppressed = 2; + pref = p; + } + else if (pref->prec > p->prec) + { + p->suppressed = 2; + } + else if (pref->assoc == LEFT) + { + pref->suppressed = 2; + pref = p; + } + else if (pref->assoc == RIGHT) + { + p->suppressed = 2; + } + else + { + pref->suppressed = 2; + p->suppressed = 2; + } + } + else + { + SRcount++; + p->suppressed = 1; + } + } + else + { + RRcount++; + p->suppressed = 1; + } + } + SRtotal += SRcount; + RRtotal += RRcount; + SRconflicts[i] = SRcount; + RRconflicts[i] = RRcount; } } @@ -289,17 +289,17 @@ void remove_conflicts(void) void total_conflicts(void) { if (SRtotal == 1) - fprintf(stderr, "1 shift/reduce conflict"); + fprintf(stderr, "1 shift/reduce conflict"); else if (SRtotal > 1) - fprintf(stderr, "%d shift/reduce conflicts", SRtotal); + fprintf(stderr, "%d shift/reduce conflicts", SRtotal); if (SRtotal && RRtotal) - fprintf(stderr, ", "); + fprintf(stderr, ", "); if (RRtotal == 1) - fprintf(stderr, "1 reduce/reduce conflict"); + fprintf(stderr, "1 reduce/reduce conflict"); else if (RRtotal > 1) - fprintf(stderr, "%d reduce/reduce conflicts", RRtotal); + fprintf(stderr, "%d reduce/reduce conflicts", RRtotal); fprintf(stderr, ".\n"); } @@ -315,20 +315,20 @@ sole_reduction(int stateno) ruleno = 0; for (p = parser[stateno]; p; p = p->next) { - if (p->action_code == SHIFT && p->suppressed == 0) - return (0); - else if (p->action_code == REDUCE && p->suppressed == 0) - { - if (ruleno > 0 && p->number != ruleno) - return (0); - if (p->symbol != 1) - ++count; - ruleno = p->number; - } + if (p->action_code == SHIFT && p->suppressed == 0) + return (0); + else if (p->action_code == REDUCE && p->suppressed == 0) + { + if (ruleno > 0 && p->number != ruleno) + return (0); + if (p->symbol != 1) + ++count; + ruleno = p->number; + } } if (count == 0) - return (0); + return (0); return (ruleno); } @@ -339,7 +339,7 @@ void defreds(void) defred = NEW2(nstates, short); for (i = 0; i < nstates; i++) - defred[i] = sole_reduction(i); + defred[i] = sole_reduction(i); } void free_action_row(register action *p) |