summaryrefslogtreecommitdiff
path: root/usr.bin/yacc/mkpar.c
diff options
context:
space:
mode:
authorTed Unangst <tedu@cvs.openbsd.org>2014-03-13 00:59:35 +0000
committerTed Unangst <tedu@cvs.openbsd.org>2014-03-13 00:59:35 +0000
commite6fd37871e59a0a101e0133296ad38b5b4f2964f (patch)
tree4c3b342ba24b55d7fb4627bb85a72726a944b5ee /usr.bin/yacc/mkpar.c
parent090c516fe4d02de24a483386db75fef232e02720 (diff)
last bits of indentation and style
Diffstat (limited to 'usr.bin/yacc/mkpar.c')
-rw-r--r--usr.bin/yacc/mkpar.c478
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);
}