mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-18 08:43:03 +00:00
* src/closure.c (set_fderives): De-obfuscate.
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
2001-12-05 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
|
* src/closure.c (set_fderives): De-obfuscate.
|
||||||
|
|
||||||
|
|
||||||
2001-12-05 Akim Demaille <akim@epita.fr>
|
2001-12-05 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
* src/closure.c (print_firsts, print_fderives): De-obfuscate.
|
* src/closure.c (print_firsts, print_fderives): De-obfuscate.
|
||||||
|
|||||||
@@ -128,10 +128,7 @@ set_firsts (void)
|
|||||||
{
|
{
|
||||||
int symbol = ritem[rule_table[derives[i][j]].rhs];
|
int symbol = ritem[rule_table[derives[i][j]].rhs];
|
||||||
if (ISVAR (symbol))
|
if (ISVAR (symbol))
|
||||||
{
|
SETBIT (FIRSTS (i - ntokens), symbol - ntokens);
|
||||||
symbol -= ntokens;
|
|
||||||
SETBIT (FIRSTS (i - ntokens), symbol);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RTC (firsts, nvars);
|
RTC (firsts, nvars);
|
||||||
@@ -153,46 +150,17 @@ set_firsts (void)
|
|||||||
static void
|
static void
|
||||||
set_fderives (void)
|
set_fderives (void)
|
||||||
{
|
{
|
||||||
unsigned *rrow;
|
int i, j, k;
|
||||||
unsigned *vrow;
|
|
||||||
int j;
|
|
||||||
unsigned cword;
|
|
||||||
short *rp;
|
|
||||||
int b;
|
|
||||||
|
|
||||||
int ruleno;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
fderives = XCALLOC (unsigned, nvars * rulesetsize) - ntokens * rulesetsize;
|
fderives = XCALLOC (unsigned, nvars * rulesetsize) - ntokens * rulesetsize;
|
||||||
|
|
||||||
set_firsts ();
|
set_firsts ();
|
||||||
|
|
||||||
rrow = FDERIVES (ntokens);
|
for (i = ntokens; i < nsyms; ++i)
|
||||||
|
for (j = ntokens; j < nsyms; ++j)
|
||||||
for (i = ntokens; i < nsyms; i++)
|
if (BITISSET (FIRSTS (i - ntokens), j - ntokens))
|
||||||
{
|
for (k = 0; derives[j][k] > 0; ++k)
|
||||||
vrow = FIRSTS (i - ntokens);
|
SETBIT (FDERIVES (i), derives[j][k]);
|
||||||
cword = *vrow++;
|
|
||||||
b = 0;
|
|
||||||
for (j = ntokens; j < nsyms; j++)
|
|
||||||
{
|
|
||||||
if (cword & (1 << b))
|
|
||||||
{
|
|
||||||
rp = derives[j];
|
|
||||||
while ((ruleno = *rp++) > 0)
|
|
||||||
SETBIT (rrow, ruleno);
|
|
||||||
}
|
|
||||||
|
|
||||||
b++;
|
|
||||||
if (b >= BITS_PER_WORD && j + 1 < nsyms)
|
|
||||||
{
|
|
||||||
cword = *vrow++;
|
|
||||||
b = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
rrow += rulesetsize;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (trace_flag)
|
if (trace_flag)
|
||||||
print_fderives ();
|
print_fderives ();
|
||||||
|
|||||||
Reference in New Issue
Block a user