* src/lalr.c (maxrhs): Move to...

* src/gram.c, src/gram.h (ritem_longest_rhs): here.
* src/lalr.c (build_relations): Adjust.
This commit is contained in:
Akim Demaille
2001-12-05 09:29:02 +00:00
parent 9887c18aca
commit c2713865e3
4 changed files with 46 additions and 33 deletions

View File

@@ -1,3 +1,9 @@
2001-12-05 Akim Demaille <akim@epita.fr>
* src/lalr.c (maxrhs): Move to...
* src/gram.c, src/gram.h (ritem_longest_rhs): here.
* src/lalr.c (build_relations): Adjust.
2001-12-05 Akim Demaille <akim@epita.fr>
* src/lalr.c (transpose): Free the memory allocated to the

View File

@@ -53,6 +53,11 @@ int pure_parser;
int error_token_number;
/*------------------------.
| Dump RITEM for traces. |
`------------------------*/
void
ritem_print (FILE *out)
{
@@ -65,3 +70,32 @@ ritem_print (FILE *out)
fprintf (out, " (rule %d)\n", -ritem[i]);
fputs ("\n\n", out);
}
/*------------------------------------------.
| Return the size of the longest rule RHS. |
`------------------------------------------*/
size_t
ritem_longest_rhs (void)
{
short *itemp;
int length;
int max;
length = 0;
max = 0;
for (itemp = ritem; *itemp; itemp++)
if (*itemp > 0)
{
length++;
}
else
{
if (length > max)
max = length;
length = 0;
}
return max;
}

View File

@@ -150,5 +150,9 @@ extern int error_token_number;
/* Dump RITEM for traces. */
void ritem_print (FILE *out);
void ritem_print PARAMS ((FILE *out));
/* Return the size of the longest rule RHS. */
size_t ritem_longest_rhs PARAMS ((void));
#endif /* !GRAM_H_ */

View File

@@ -194,37 +194,6 @@ set_state_table (void)
}
/*------------------------------------------.
| Return the size of the longest rule RHS. |
`------------------------------------------*/
static size_t
maxrhs (void)
{
short *itemp;
int length;
int max;
length = 0;
max = 0;
for (itemp = ritem; *itemp; itemp++)
{
if (*itemp > 0)
{
length++;
}
else
{
if (length > max)
max = length;
length = 0;
}
}
return max;
}
static void
initialize_LA (void)
{
@@ -497,7 +466,7 @@ static void
build_relations (void)
{
short *edge = XCALLOC (short, ngotos + 1);
short *states = XCALLOC (short, maxrhs () + 1);
short *states = XCALLOC (short, ritem_longest_rhs () + 1);
int i;
includes = XCALLOC (short *, ngotos);