From: Akim Demaille Date: Mon, 10 Dec 2001 09:09:00 +0000 (+0000) Subject: * src/LR0.c (augment_automaton): Now that all states have shifts, X-Git-Tag: before-m4-back-end~163 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/37c82725c8235e260f68f14308370be2d75f56dd * src/LR0.c (augment_automaton): Now that all states have shifts, merge the two cases addition shifts to the initial state. --- diff --git a/ChangeLog b/ChangeLog index 11d51ecc..a29c27e3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2001-12-10 Akim Demaille + + * src/LR0.c (augment_automaton): Now that all states have shifts, + merge the two cases addition shifts to the initial state. + + 2001-12-10 Akim Demaille * src/lalr.c (set_state_table): Move to... diff --git a/src/LR0.c b/src/LR0.c index ccd55f6a..9de75782 100644 --- a/src/LR0.c +++ b/src/LR0.c @@ -437,9 +437,9 @@ insert_accepting_state (void) static void augment_automaton (void) { - if (!first_shift->nshifts) + if (!first_state->shifts->nshifts) { - /* There are no shifts for any state. Make one shift, from the + /* The first state has no shifts. Make one shift, from the initial state to the next-to-final state. */ shifts *sp = shifts_new (1); @@ -454,7 +454,7 @@ augment_automaton (void) what will be the final state. */ insert_start_shifting_state (); } - else if (first_shift->number == 0) + else { state_t *statep = first_state->next; shifts *sp = first_shift; @@ -544,22 +544,6 @@ augment_automaton (void) insert_start_shifting_state (); } } - else - { - /* The initial state didn't even have any shifts. - Give it one shift, to the next-to-final state. */ - shifts *sp = shifts_new (1); - first_state->shifts = sp; - sp->shifts[0] = nstates; - - /* Patch sp into the chain of shifts at the beginning. */ - sp->next = first_shift; - first_shift = sp; - - /* Create the next-to-final state, with shift to - what will be the final state. */ - insert_start_shifting_state (); - } insert_eof_shifting_state (); insert_accepting_state ();