mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-19 09:13:04 +00:00
* 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:
@@ -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>
|
2001-12-05 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
* src/lalr.c (transpose): Free the memory allocated to the
|
* src/lalr.c (transpose): Free the memory allocated to the
|
||||||
|
|||||||
34
src/gram.c
34
src/gram.c
@@ -53,6 +53,11 @@ int pure_parser;
|
|||||||
|
|
||||||
int error_token_number;
|
int error_token_number;
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------.
|
||||||
|
| Dump RITEM for traces. |
|
||||||
|
`------------------------*/
|
||||||
|
|
||||||
void
|
void
|
||||||
ritem_print (FILE *out)
|
ritem_print (FILE *out)
|
||||||
{
|
{
|
||||||
@@ -65,3 +70,32 @@ ritem_print (FILE *out)
|
|||||||
fprintf (out, " (rule %d)\n", -ritem[i]);
|
fprintf (out, " (rule %d)\n", -ritem[i]);
|
||||||
fputs ("\n\n", out);
|
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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -150,5 +150,9 @@ extern int error_token_number;
|
|||||||
|
|
||||||
|
|
||||||
/* Dump RITEM for traces. */
|
/* 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_ */
|
#endif /* !GRAM_H_ */
|
||||||
|
|||||||
33
src/lalr.c
33
src/lalr.c
@@ -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
|
static void
|
||||||
initialize_LA (void)
|
initialize_LA (void)
|
||||||
{
|
{
|
||||||
@@ -497,7 +466,7 @@ static void
|
|||||||
build_relations (void)
|
build_relations (void)
|
||||||
{
|
{
|
||||||
short *edge = XCALLOC (short, ngotos + 1);
|
short *edge = XCALLOC (short, ngotos + 1);
|
||||||
short *states = XCALLOC (short, maxrhs () + 1);
|
short *states = XCALLOC (short, ritem_longest_rhs () + 1);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
includes = XCALLOC (short *, ngotos);
|
includes = XCALLOC (short *, ngotos);
|
||||||
|
|||||||
Reference in New Issue
Block a user