diff options
author | Ted Unangst <tedu@cvs.openbsd.org> | 2014-03-13 00:59:35 +0000 |
---|---|---|
committer | Ted Unangst <tedu@cvs.openbsd.org> | 2014-03-13 00:59:35 +0000 |
commit | e6fd37871e59a0a101e0133296ad38b5b4f2964f (patch) | |
tree | 4c3b342ba24b55d7fb4627bb85a72726a944b5ee /usr.bin/yacc/mkpar.c | |
parent | 090c516fe4d02de24a483386db75fef232e02720 (diff) |
last bits of indentation and style
Diffstat (limited to 'usr.bin/yacc/mkpar.c')
-rw-r--r-- | usr.bin/yacc/mkpar.c | 478 |
1 files changed, 223 insertions, 255 deletions
diff --git a/usr.bin/yacc/mkpar.c b/usr.bin/yacc/mkpar.c index a08f25a5d5d..9b2373d9561 100644 --- a/usr.bin/yacc/mkpar.c +++ b/usr.bin/yacc/mkpar.c @@ -1,5 +1,5 @@ -/* $OpenBSD: mkpar.c,v 1.17 2014/01/13 23:14:18 millert Exp $ */ -/* $NetBSD: mkpar.c,v 1.4 1996/03/19 03:21:39 jtc Exp $ */ +/* $OpenBSD: mkpar.c,v 1.18 2014/03/13 00:59:34 tedu Exp $ */ +/* $NetBSD: mkpar.c,v 1.4 1996/03/19 03:21:39 jtc Exp $ */ /* * Copyright (c) 1989 The Regents of the University of California. @@ -67,336 +67,304 @@ void defreds(void); void make_parser(void) { - int i; - - parser = NEW2(nstates, action *); - for (i = 0; i < nstates; i++) - parser[i] = parse_actions(i); - - find_final_state(); - remove_conflicts(); - unused_rules(); - if (SRtotal + RRtotal > 0) total_conflicts(); - defreds(); + int i; + + parser = NEW2(nstates, action *); + for (i = 0; i < nstates; i++) + parser[i] = parse_actions(i); + + find_final_state(); + remove_conflicts(); + unused_rules(); + if (SRtotal + RRtotal > 0) + total_conflicts(); + defreds(); } action * parse_actions(int stateno) { - action *actions; + action *actions; - actions = get_shifts(stateno); - actions = add_reductions(stateno, actions); - return (actions); + actions = get_shifts(stateno); + actions = add_reductions(stateno, actions); + return (actions); } action * get_shifts(int stateno) { - action *actions, *temp; - shifts *sp; - short *to_state; - int i, k; - int symbol; - - actions = 0; - 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; - } + action *actions, *temp; + shifts *sp; + short *to_state; + int i, k; + int symbol; + + actions = 0; + 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; + } + } } - } - return (actions); + return (actions); } action * -add_reductions(int stateno, action *actions) +add_reductions(int stateno, action * actions) { - int i, j, m, n; - int ruleno, tokensetsize; - unsigned *rowp; - - tokensetsize = WORDSIZE(ntokens); - m = lookaheads[stateno]; - 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); + int i, j, m, n; + int ruleno, tokensetsize; + unsigned *rowp; + + tokensetsize = WORDSIZE(ntokens); + m = lookaheads[stateno]; + 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); + } } - } - return (actions); + return (actions); } action * -add_reduce(action *actions, int ruleno, int symbol) +add_reduce(action * actions, int ruleno, int symbol) { - action *temp, *prev, *next; - - prev = 0; - for (next = actions; next && next->symbol < symbol; next = next->next) - prev = next; - - while (next && next->symbol == symbol && next->action_code == SHIFT) - { - prev = next; - next = next->next; - } - - while (next && next->symbol == symbol && - next->action_code == REDUCE && next->number < ruleno) - { - prev = next; - next = next->next; - } - - temp = NEW(action); - temp->next = next; - temp->symbol = symbol; - temp->number = ruleno; - temp->prec = rprec[ruleno]; - temp->action_code = REDUCE; - temp->assoc = rassoc[ruleno]; - - if (prev) - prev->next = temp; - else - actions = temp; - - return (actions); + action *temp, *prev, *next; + + prev = 0; + for (next = actions; next && next->symbol < symbol; next = next->next) + prev = next; + + while (next && next->symbol == symbol && next->action_code == SHIFT) { + prev = next; + next = next->next; + } + + while (next && next->symbol == symbol && + next->action_code == REDUCE && next->number < ruleno) { + prev = next; + next = next->next; + } + + temp = NEW(action); + temp->next = next; + temp->symbol = symbol; + temp->number = ruleno; + temp->prec = rprec[ruleno]; + temp->action_code = REDUCE; + temp->assoc = rassoc[ruleno]; + + if (prev) + prev->next = temp; + else + actions = temp; + + return (actions); } void find_final_state(void) { - int goal, i; - short *to_state; - shifts *p; - - p = shift_table[0]; - to_state = p->shift; - goal = ritem[1]; - for (i = p->nshifts - 1; i >= 0; --i) - { - final_state = to_state[i]; - if (accessing_symbol[final_state] == goal) break; - } + int goal, i; + short *to_state; + shifts *p; + + p = shift_table[0]; + to_state = p->shift; + goal = ritem[1]; + for (i = p->nshifts - 1; i >= 0; --i) { + final_state = to_state[i]; + if (accessing_symbol[final_state] == goal) + break; + } } void unused_rules(void) { - int i; - action *p; - - rules_used = calloc(nrules, sizeof(short)); - if (rules_used == NULL) no_space(); - - 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; + int i; + action *p; + + rules_used = calloc(nrules, sizeof(short)); + if (rules_used == NULL) + no_space(); + + 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; + } } - } - nunused = 0; - for (i = 3; i < nrules; ++i) - if (!rules_used[i]) ++nunused; + nunused = 0; + for (i = 3; i < nrules; ++i) + if (!rules_used[i]) + ++nunused; - if (nunused) { - if (nunused == 1) - fprintf(stderr, "%s: 1 rule never reduced\n", __progname); - else - fprintf(stderr, "%s: %d rules never reduced\n", __progname, - nunused); - } + if (nunused) { + if (nunused == 1) + fprintf(stderr, "%s: 1 rule never reduced\n", __progname); + else + fprintf(stderr, "%s: %d rules never reduced\n", __progname, + nunused); + } } void remove_conflicts(void) { - int i; - int symbol; - action *p, *pref = NULL; - - SRtotal = 0; - RRtotal = 0; - SRconflicts = NEW2(nstates, short); - RRconflicts = NEW2(nstates, short); - 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; - } + int i; + int symbol; + action *p, *pref = NULL; + + SRtotal = 0; + RRtotal = 0; + SRconflicts = NEW2(nstates, short); + RRconflicts = NEW2(nstates, short); + 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; + } } - else - { - SRcount++; - p->suppressed = 1; - } - } - else - { - RRcount++; - p->suppressed = 1; - } + SRtotal += SRcount; + RRtotal += RRcount; + SRconflicts[i] = SRcount; + RRconflicts[i] = RRcount; } - SRtotal += SRcount; - RRtotal += RRcount; - SRconflicts[i] = SRcount; - RRconflicts[i] = RRcount; - } } void total_conflicts(void) { - /* Warn if s/r != expect or if any r/r */ - if ((SRtotal != SRexpect) || RRtotal) - { - if (SRtotal == 1) - fprintf(stderr, "%s: %s finds 1 shift/reduce conflict\n", - input_file_name, __progname); - else if (SRtotal > 1) - fprintf(stderr, "%s: %s finds %d shift/reduce conflicts\n", - input_file_name, __progname, SRtotal); - } - - if (RRtotal == 1) - fprintf(stderr, "%s: %s finds 1 reduce/reduce conflict\n", - input_file_name, __progname); - else if (RRtotal > 1) - fprintf(stderr, "%s: %s finds %d reduce/reduce conflicts\n", - input_file_name, __progname, RRtotal); + /* Warn if s/r != expect or if any r/r */ + if ((SRtotal != SRexpect) || RRtotal) { + if (SRtotal == 1) + fprintf(stderr, "%s: %s finds 1 shift/reduce conflict\n", + input_file_name, __progname); + else if (SRtotal > 1) + fprintf(stderr, "%s: %s finds %d shift/reduce conflicts\n", + input_file_name, __progname, SRtotal); + } + if (RRtotal == 1) + fprintf(stderr, "%s: %s finds 1 reduce/reduce conflict\n", + input_file_name, __progname); + else if (RRtotal > 1) + fprintf(stderr, "%s: %s finds %d reduce/reduce conflicts\n", + input_file_name, __progname, RRtotal); } short sole_reduction(int stateno) { - int count; - short ruleno; - action *p; - - count = 0; - 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; + int count; + short ruleno; + action *p; + + count = 0; + 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 (count == 0) - return (0); - return (ruleno); + if (count == 0) + return (0); + return (ruleno); } void defreds(void) { - int i; + int i; - defred = NEW2(nstates, short); - for (i = 0; i < nstates; i++) - defred[i] = sole_reduction(i); + defred = NEW2(nstates, short); + for (i = 0; i < nstates; i++) + defred[i] = sole_reduction(i); } void -free_action_row(action *p) +free_action_row(action * p) { - action *q; - - while (p) - { - q = p->next; - free(p); - p = q; - } + action *q; + + while (p) { + q = p->next; + free(p); + p = q; + } } void free_parser(void) { - int i; + int i; - for (i = 0; i < nstates; i++) - free_action_row(parser[i]); + for (i = 0; i < nstates; i++) + free_action_row(parser[i]); - free(parser); + free(parser); } |