From: Akim Demaille Date: Wed, 5 Dec 2001 09:29:02 +0000 (+0000) Subject: * src/lalr.c (maxrhs): Move to... X-Git-Tag: before-m4-back-end~208 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/c2713865e3d0b2321949749fe16152fe1e558c69?ds=inline * src/lalr.c (maxrhs): Move to... * src/gram.c, src/gram.h (ritem_longest_rhs): here. * src/lalr.c (build_relations): Adjust. --- diff --git a/ChangeLog b/ChangeLog index 954f35e0..b3143352 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2001-12-05 Akim Demaille + + * 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 * src/lalr.c (transpose): Free the memory allocated to the diff --git a/src/gram.c b/src/gram.c index 35302616..c45c84a0 100644 --- a/src/gram.c +++ b/src/gram.c @@ -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; +} diff --git a/src/gram.h b/src/gram.h index 516907c2..e26582fe 100644 --- a/src/gram.h +++ b/src/gram.h @@ -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_ */ diff --git a/src/lalr.c b/src/lalr.c index ad2623d6..674a121a 100644 --- a/src/lalr.c +++ b/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 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);