diff options
author | Ted Unangst <tedu@cvs.openbsd.org> | 2014-03-08 00:44:15 +0000 |
---|---|---|
committer | Ted Unangst <tedu@cvs.openbsd.org> | 2014-03-08 00:44:15 +0000 |
commit | 62f9ad33b2527827b58cd2fdec0816670e07030c (patch) | |
tree | 6c611882d33c75040379e624f297c3208663058f /usr.bin | |
parent | e66ce43ac02a62c3d6414ffa2786c4c57a37a450 (diff) |
reindent
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/yacc/closure.c | 336 |
1 files changed, 158 insertions, 178 deletions
diff --git a/usr.bin/yacc/closure.c b/usr.bin/yacc/closure.c index 016e5c4b5d1..44205154f04 100644 --- a/usr.bin/yacc/closure.c +++ b/usr.bin/yacc/closure.c @@ -1,4 +1,4 @@ -/* $OpenBSD: closure.c,v 1.11 2014/01/08 21:40:25 millert Exp $ */ +/* $OpenBSD: closure.c,v 1.12 2014/03/08 00:44:14 tedu Exp $ */ /* $NetBSD: closure.c,v 1.4 1996/03/19 03:21:29 jtc Exp $ */ /* @@ -46,36 +46,33 @@ static unsigned *EFF; void set_EFF(void) { - unsigned *row; - int symbol; - short *sp; - int rowsize; - int i; - int rule; - - rowsize = WORDSIZE(nvars); - EFF = NEW2(nvars * rowsize, unsigned); - - row = EFF; - for (i = start_symbol; i < nsyms; i++) - { - sp = derives[i]; - for (rule = *sp; rule > 0; rule = *++sp) - { - symbol = ritem[rrhs[rule]]; - if (ISVAR(symbol)) - { - symbol -= start_symbol; - SETBIT(row, symbol); - } + unsigned *row; + int symbol; + short *sp; + int rowsize; + int i; + int rule; + + rowsize = WORDSIZE(nvars); + EFF = NEW2(nvars * rowsize, unsigned); + + row = EFF; + for (i = start_symbol; i < nsyms; i++) { + sp = derives[i]; + for (rule = *sp; rule > 0; rule = *++sp) { + symbol = ritem[rrhs[rule]]; + if (ISVAR(symbol)) { + symbol -= start_symbol; + SETBIT(row, symbol); + } + } + row += rowsize; } - row += rowsize; - } - reflexive_transitive_closure(EFF, nvars); + reflexive_transitive_closure(EFF, nvars); #ifdef DEBUG - print_EFF(); + print_EFF(); #endif } @@ -83,118 +80,107 @@ set_EFF(void) void set_first_derives(void) { - unsigned *rrow; - unsigned *vrow; - int j; - unsigned k; - unsigned cword = 0; - short *rp; - - int rule; - int i; - int rulesetsize; - int varsetsize; - - rulesetsize = WORDSIZE(nrules); - varsetsize = WORDSIZE(nvars); - first_derives = NEW2(nvars * rulesetsize, unsigned) - ntokens * rulesetsize; - - set_EFF(); - - rrow = first_derives + ntokens * rulesetsize; - for (i = start_symbol; i < nsyms; i++) - { - vrow = EFF + ((i - ntokens) * varsetsize); - k = BITS_PER_WORD; - for (j = start_symbol; j < nsyms; k++, j++) - { - if (k >= BITS_PER_WORD) - { - cword = *vrow++; - k = 0; - } - - if (cword & (1 << k)) - { - rp = derives[j]; - while ((rule = *rp++) >= 0) - { - SETBIT(rrow, rule); + unsigned *rrow; + unsigned *vrow; + int j; + unsigned k; + unsigned cword = 0; + short *rp; + + int rule; + int i; + int rulesetsize; + int varsetsize; + + rulesetsize = WORDSIZE(nrules); + varsetsize = WORDSIZE(nvars); + first_derives = NEW2(nvars * rulesetsize, unsigned) - ntokens * rulesetsize; + + set_EFF(); + + rrow = first_derives + ntokens * rulesetsize; + for (i = start_symbol; i < nsyms; i++) { + vrow = EFF + ((i - ntokens) * varsetsize); + k = BITS_PER_WORD; + for (j = start_symbol; j < nsyms; k++, j++) { + if (k >= BITS_PER_WORD) { + cword = *vrow++; + k = 0; + } + + if (cword & (1 << k)) { + rp = derives[j]; + while ((rule = *rp++) >= 0) { + SETBIT(rrow, rule); + } + } } - } - } - vrow += varsetsize; - rrow += rulesetsize; - } + vrow += varsetsize; + rrow += rulesetsize; + } #ifdef DEBUG - print_first_derives(); + print_first_derives(); #endif - free(EFF); + free(EFF); } void closure(short *nucleus, int n) { - int ruleno; - unsigned word; - unsigned i; - short *csp; - unsigned *dsp; - unsigned *rsp; - int rulesetsize; - - short *csend; - unsigned *rsend; - int symbol; - int itemno; - - rulesetsize = WORDSIZE(nrules); - rsend = ruleset + rulesetsize; - memset(ruleset, 0, rulesetsize * sizeof(*ruleset)); - - csend = nucleus + n; - for (csp = nucleus; csp < csend; ++csp) - { - symbol = ritem[*csp]; - if (ISVAR(symbol)) - { - dsp = first_derives + symbol * rulesetsize; - rsp = ruleset; - while (rsp < rsend) - *rsp++ |= *dsp++; + int ruleno; + unsigned word; + unsigned i; + short *csp; + unsigned *dsp; + unsigned *rsp; + int rulesetsize; + + short *csend; + unsigned *rsend; + int symbol; + int itemno; + + rulesetsize = WORDSIZE(nrules); + rsend = ruleset + rulesetsize; + memset(ruleset, 0, rulesetsize * sizeof(*ruleset)); + + csend = nucleus + n; + for (csp = nucleus; csp < csend; ++csp) { + symbol = ritem[*csp]; + if (ISVAR(symbol)) { + dsp = first_derives + symbol * rulesetsize; + rsp = ruleset; + while (rsp < rsend) + *rsp++ |= *dsp++; + } } - } - - ruleno = 0; - itemsetend = itemset; - csp = nucleus; - for (rsp = ruleset; rsp < rsend; ++rsp) - { - word = *rsp; - if (word) - { - for (i = 0; i < BITS_PER_WORD; ++i) - { - if (word & (1 << i)) - { - itemno = rrhs[ruleno+i]; - while (csp < csend && *csp < itemno) - *itemsetend++ = *csp++; - *itemsetend++ = itemno; - while (csp < csend && *csp == itemno) - ++csp; + + ruleno = 0; + itemsetend = itemset; + csp = nucleus; + for (rsp = ruleset; rsp < rsend; ++rsp) { + word = *rsp; + if (word) { + for (i = 0; i < BITS_PER_WORD; ++i) { + if (word & (1 << i)) { + itemno = rrhs[ruleno+i]; + while (csp < csend && *csp < itemno) + *itemsetend++ = *csp++; + *itemsetend++ = itemno; + while (csp < csend && *csp == itemno) + ++csp; + } + } } - } + ruleno += BITS_PER_WORD; } - ruleno += BITS_PER_WORD; - } - while (csp < csend) - *itemsetend++ = *csp++; + while (csp < csend) + *itemsetend++ = *csp++; #ifdef DEBUG print_closure(n); @@ -206,9 +192,9 @@ closure(short *nucleus, int n) void finalize_closure(void) { - free(itemset); - free(ruleset); - free(first_derives + ntokens * WORDSIZE(nrules)); + free(itemset); + free(ruleset); + free(first_derives + ntokens * WORDSIZE(nrules)); } @@ -217,74 +203,68 @@ finalize_closure(void) void print_closure(int n) { - short *isp; + short *isp; - printf("\n\nn = %d\n\n", n); - for (isp = itemset; isp < itemsetend; isp++) - printf(" %d\n", *isp); + printf("\n\nn = %d\n\n", n); + for (isp = itemset; isp < itemsetend; isp++) + printf(" %d\n", *isp); } void print_EFF(void) { - int i, j; - unsigned *rowp; - unsigned word; - unsigned k; - - printf("\n\nEpsilon Free Firsts\n"); - - for (i = start_symbol; i < nsyms; i++) - { - printf("\n%s", symbol_name[i]); - rowp = EFF + ((i - start_symbol) * WORDSIZE(nvars)); - word = *rowp++; - - k = BITS_PER_WORD; - for (j = 0; j < nvars; k++, j++) - { - if (k >= BITS_PER_WORD) - { + int i, j; + unsigned *rowp; + unsigned word; + unsigned k; + + printf("\n\nEpsilon Free Firsts\n"); + + for (i = start_symbol; i < nsyms; i++) { + printf("\n%s", symbol_name[i]); + rowp = EFF + ((i - start_symbol) * WORDSIZE(nvars)); word = *rowp++; - k = 0; - } - if (word & (1 << k)) - printf(" %s", symbol_name[start_symbol + j]); + k = BITS_PER_WORD; + for (j = 0; j < nvars; k++, j++) { + if (k >= BITS_PER_WORD) { + word = *rowp++; + k = 0; + } + + if (word & (1 << k)) + printf(" %s", symbol_name[start_symbol + j]); + } } - } } void print_first_derives(void) { - int i; - int j; - unsigned *rp; - unsigned cword = 0; - unsigned k; - - printf("\n\n\nFirst Derives\n"); - - for (i = start_symbol; i < nsyms; i++) - { - printf("\n%s derives\n", symbol_name[i]); - rp = first_derives + i * WORDSIZE(nrules); - k = BITS_PER_WORD; - for (j = 0; j <= nrules; k++, j++) - { - if (k >= BITS_PER_WORD) - { - cword = *rp++; - k = 0; - } - - if (cword & (1 << k)) - printf(" %d\n", j); + int i; + int j; + unsigned *rp; + unsigned cword = 0; + unsigned k; + + printf("\n\n\nFirst Derives\n"); + + for (i = start_symbol; i < nsyms; i++) { + printf("\n%s derives\n", symbol_name[i]); + rp = first_derives + i * WORDSIZE(nrules); + k = BITS_PER_WORD; + for (j = 0; j <= nrules; k++, j++) { + if (k >= BITS_PER_WORD) { + cword = *rp++; + k = 0; + } + + if (cword & (1 << k)) + printf(" %d\n", j); + } } - } - fflush(stdout); + fflush(stdout); } #endif |