[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
14-bitset-execute.patch
From: |
Akim Demaille |
Subject: |
14-bitset-execute.patch |
Date: |
Sun, 30 Jun 2002 19:27:34 +0200 |
Index: ChangeLog
from Akim Demaille <address@hidden>
* src/closure.c (print_firsts, print_fderives, closure):
Use BITSET_EXECUTE.
* src/lalr.c (lookaheads_print): Likewise.
* src/state.c (state_rule_lookaheads_print): Likewise.
* src/print_graph.c (print_core): Likewise.
* src/print.c (print_reductions): Likewise.
* src/output.c (action_row): Likewise.
Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
Index: src/closure.c
--- src/closure.c Sat, 29 Jun 2002 15:49:57 +0200 akim
+++ src/closure.c Sat, 29 Jun 2002 21:07:15 +0200 akim
@@ -69,16 +69,17 @@
static void
print_firsts (void)
{
- int i, j;
+ symbol_number_t i, j;
fprintf (stderr, "FIRSTS\n");
for (i = ntokens; i < nsyms; i++)
{
fprintf (stderr, "\t%s firsts\n", symbol_tag_get (symbols[i]));
- for (j = 0; j < nvars; j++)
- if (bitset_test (FIRSTS (i), j))
- fprintf (stderr, "\t\t%s\n",
- symbol_tag_get (symbols[j + ntokens]));
+ BITSET_EXECUTE (FIRSTS (i), 0, j,
+ {
+ fprintf (stderr, "\t\t%s\n",
+ symbol_tag_get (symbols[j + ntokens]));
+ });
}
fprintf (stderr, "\n\n");
}
@@ -94,15 +95,14 @@
for (i = ntokens; i < nsyms; i++)
{
fprintf (stderr, "\t%s derives\n", symbol_tag_get (symbols[i]));
- for (r = 0; r < nrules + 1; r++)
- if (bitset_test (FDERIVES (i), r))
- {
- item_number_t *rhsp = NULL;
- fprintf (stderr, "\t\t%d:", r - 1);
- for (rhsp = rules[r].rhs; *rhsp >= 0; ++rhsp)
- fprintf (stderr, " %s", symbol_tag_get (symbols[*rhsp]));
- fputc ('\n', stderr);
- }
+ BITSET_EXECUTE (FDERIVES (i), 0, r,
+ {
+ item_number_t *rhsp = NULL;
+ fprintf (stderr, "\t\t%d:", r - 1);
+ for (rhsp = rules[r].rhs; *rhsp >= 0; ++rhsp)
+ fprintf (stderr, " %s", symbol_tag_get (symbols[*rhsp]));
+ fputc ('\n', stderr);
+ });
}
fprintf (stderr, "\n\n");
}
@@ -209,19 +209,18 @@
nritemset = 0;
c = 0;
- for (ruleno = 0; ruleno < nrules + 1; ++ruleno)
- if (bitset_test (ruleset, ruleno))
+ BITSET_EXECUTE (ruleset, 0, ruleno,
+ {
+ item_number_t itemno = rules[ruleno].rhs - ritem;
+ while (c < n && core[c] < itemno)
{
- item_number_t itemno = rules[ruleno].rhs - ritem;
- while (c < n && core[c] < itemno)
- {
- itemset[nritemset] = core[c];
- nritemset++;
- c++;
- }
- itemset[nritemset] = itemno;
+ itemset[nritemset] = core[c];
nritemset++;
+ c++;
}
+ itemset[nritemset] = itemno;
+ nritemset++;
+ });
while (c < n)
{
Index: src/lalr.c
--- src/lalr.c Sat, 29 Jun 2002 19:01:05 +0200 akim
+++ src/lalr.c Sat, 29 Jun 2002 21:07:01 +0200 akim
@@ -424,11 +424,12 @@
i, states[i]->nlookaheads);
for (j = 0; j < states[i]->nlookaheads; ++j)
- for (k = 0; k < ntokens; ++k)
- if (bitset_test (states[i]->lookaheads[j], k))
- fprintf (out, " on %d (%s) -> rule %d\n",
- k, symbol_tag_get (symbols[k]),
- states[i]->lookaheads_rule[j]->number - 1);
+ BITSET_EXECUTE (states[i]->lookaheads[j], 0, k,
+ {
+ fprintf (out, " on %d (%s) -> rule %d\n",
+ k, symbol_tag_get (symbols[k]),
+ states[i]->lookaheads_rule[j]->number - 1);
+ });
}
fprintf (out, "Lookaheads: END\n");
}
Index: src/output.c
--- src/output.c Sat, 29 Jun 2002 15:49:57 +0200 akim
+++ src/output.c Sat, 29 Jun 2002 20:52:59 +0200 akim
@@ -447,41 +447,34 @@
for (i = state->nlookaheads - 1; i >= 0; --i)
/* and find each token which the rule finds acceptable
to come next */
- for (j = 0; j < ntokens; j++)
+ BITSET_EXECUTE (state->lookaheads[i], 0, j,
+ {
/* and record this rule as the rule to use if that
token follows. */
- if (bitset_test (state->lookaheads[i], j))
- {
- if (actrow[j] != 0)
- conflicted = conflrow[j] = 1;
- actrow[j] = -state->lookaheads_rule[i]->number;
- }
+ if (actrow[j] != 0)
+ conflicted = conflrow[j] = 1;
+ actrow[j] = -state->lookaheads_rule[i]->number;
+ });
}
/* Now see which tokens are allowed for shifts in this state. For
them, record the shift as the thing to do. So shift is preferred
to reduce. */
- for (i = 0; i < shiftp->nshifts; i++)
- {
- symbol_number_t symbol;
- state_number_t shift_state = shiftp->shifts[i];
- if (!shift_state)
- continue;
+ for (i = 0; i < shiftp->nshifts && SHIFT_IS_SHIFT (shiftp, i); i++)
+ if (!SHIFT_IS_DISABLED (shiftp, i))
+ {
+ symbol_number_t symbol = SHIFT_SYMBOL (shiftp, i);
+ state_number_t shift_state = shiftp->shifts[i];
- symbol = states[shift_state]->accessing_symbol;
+ if (actrow[symbol] != 0)
+ conflicted = conflrow[symbol] = 1;
+ actrow[symbol] = state_number_as_int (shift_state);
- if (ISVAR (symbol))
- break;
-
- if (actrow[symbol] != 0)
- conflicted = conflrow[symbol] = 1;
- actrow[symbol] = state_number_as_int (shift_state);
-
- /* Do not use any default reduction if there is a shift for
- error */
- if (symbol == errtoken->number)
- nodefault = 1;
- }
+ /* Do not use any default reduction if there is a shift for
+ error */
+ if (symbol == errtoken->number)
+ nodefault = 1;
+ }
/* See which tokens are an explicit error in this state (due to
%nonassoc). For them, record SHRT_MIN as the action. */
Index: src/print.c
--- src/print.c Sat, 29 Jun 2002 15:49:57 +0200 akim
+++ src/print.c Sat, 29 Jun 2002 21:06:50 +0200 akim
@@ -208,13 +208,13 @@
bitset_and (lookaheadset, state->lookaheads[0], shiftset);
- for (i = 0; i < ntokens; i++)
- if (bitset_test (lookaheadset, i))
- fprintf (out, _(" %-4s\t[reduce using rule %d (%s)]\n"),
- symbol_tag_get (symbols[i]),
- default_rule->number - 1,
- symbol_tag_get_n (default_rule->lhs, 1));
-
+ BITSET_EXECUTE (lookaheadset, 0, i,
+ {
+ fprintf (out, _(" %-4s\t[reduce using rule %d (%s)]\n"),
+ symbol_tag_get (symbols[i]),
+ default_rule->number - 1,
+ symbol_tag_get_n (default_rule->lhs, 1));
+ });
fprintf (out, _(" $default\treduce using rule %d (%s)\n\n"),
default_rule->number - 1,
symbol_tag_get (default_rule->lhs));
@@ -229,13 +229,9 @@
for (i = 0; i < state->nlookaheads; ++i)
{
int count = 0;
- int j;
bitset_andn (lookaheadset, state->lookaheads[i], shiftset);
-
- for (j = 0; j < ntokens; j++)
- if (bitset_test (lookaheadset, j))
- count++;
+ count = bitset_count (lookaheadset);
if (count > cmax)
{
Index: src/print_graph.c
--- src/print_graph.c Sat, 29 Jun 2002 20:47:30 +0200 akim
+++ src/print_graph.c Sat, 29 Jun 2002 21:06:50 +0200 akim
@@ -93,20 +93,23 @@
int nlookaheads = 0;
/* Look for lookaheads corresponding to this rule. */
for (j = 0; j < state->nlookaheads; ++j)
- for (k = 0; k < ntokens; ++k)
- if (bitset_test (state->lookaheads[j], k)
- && state->lookaheads_rule[j]->number == rule)
+ BITSET_EXECUTE (state->lookaheads[j], 0, k,
+ {
+ if (state->lookaheads_rule[j]->number == rule)
nlookaheads++;
+ });
+
if (nlookaheads)
{
obstack_sgrow (oout, " [");
for (j = 0; j < state->nlookaheads; ++j)
- for (k = 0; k < ntokens; ++k)
- if (bitset_test (state->lookaheads[j], k)
- && state->lookaheads_rule[j]->number == rule)
+ BITSET_EXECUTE (state->lookaheads[j], 0, k,
+ {
+ if (state->lookaheads_rule[j]->number == rule)
obstack_fgrow2 (oout, "%s%s",
symbol_tag_get (symbols[k]),
--nlookaheads ? ", " : "");
+ });
obstack_sgrow (oout, "]");
}
}
Index: src/state.c
--- src/state.c Sat, 29 Jun 2002 16:31:51 +0200 akim
+++ src/state.c Sat, 29 Jun 2002 21:06:29 +0200 akim
@@ -198,22 +198,24 @@
int nlookaheads = 0;
/* Count the number of lookaheads corresponding to this rule. */
for (j = 0; j < state->nlookaheads; ++j)
- for (k = 0; k < ntokens; ++k)
- if (bitset_test (state->lookaheads[j], k)
- && state->lookaheads_rule[j]->number == rule->number)
+ BITSET_EXECUTE (state->lookaheads[j], 0, k,
+ {
+ if (state->lookaheads_rule[j]->number == rule->number)
nlookaheads++;
+ });
/* Print them if there are. */
if (nlookaheads)
{
fprintf (out, " [");
for (j = 0; j < state->nlookaheads; ++j)
- for (k = 0; k < ntokens; ++k)
- if (bitset_test (state->lookaheads[j], k)
- && state->lookaheads_rule[j]->number == rule->number)
+ BITSET_EXECUTE (state->lookaheads[j], 0, k,
+ {
+ if (state->lookaheads_rule[j]->number == rule->number)
fprintf (out, "%s%s",
symbol_tag_get (symbols[k]),
--nlookaheads ? ", " : "");
+ });
fprintf (out, "]");
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- 14-bitset-execute.patch,
Akim Demaille <=