X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/8419d367e1c296fa98b42a35820147fe5588b125..e9f87b5b7df2e328d2e4196d276c0d96594c906b:/src/reader.c diff --git a/src/reader.c b/src/reader.c index 93bbe827..cf3e18f3 100644 --- a/src/reader.c +++ b/src/reader.c @@ -1154,10 +1154,7 @@ parse_braces (symbol_list *rule, int stack_offset) /* Above loop exits when C is '}'. */ if (--count) - { - obstack_1grow (&action_obstack, c); - c = getc (finput); - } + obstack_1grow (&action_obstack, c); } obstack_1grow (&action_obstack, '\0'); @@ -1357,6 +1354,11 @@ readgram (void) p = symbol_list_new (sdummy); /* Attach its lineno to that of the host rule. */ p->line = crule->line; + /* Move the action from the host rule to this one. */ + p->action = crule->action; + p->action_line = crule->action_line; + crule->action = NULL; + if (crule1) crule1->next = p; else @@ -1653,56 +1655,6 @@ packsymbols (void) } -/*---------------------------------------------------------------. -| Save the definition of token names in the `TOKENDEFS' muscle. | -`---------------------------------------------------------------*/ - -static void -symbols_save (void) -{ - struct obstack tokendefs; - bucket *bp; - obstack_init (&tokendefs); - - for (bp = firstsymbol; bp; bp = bp->next) - { - char *symbol = bp->tag; /* get symbol */ - - if (bp->value >= ntokens) - continue; - if (bp->user_token_number == SALIAS) - continue; - if ('\'' == *symbol) - continue; /* skip literal character */ - if (bp == errtoken) - continue; /* skip error token */ - if ('\"' == *symbol) - { - /* use literal string only if given a symbol with an alias */ - if (bp->alias) - symbol = bp->alias->tag; - else - continue; - } - - /* Don't #define nonliteral tokens whose names contain periods. */ - if (strchr (symbol, '.')) - continue; - - obstack_fgrow2 (&tokendefs, "# define %s\t%d\n", - symbol, bp->user_token_number); - if (semantic_parser) - /* FIXME: This is probably wrong, and should be just as - above. --akim. */ - obstack_fgrow2 (&tokendefs, "# define T%s\t%d\n", symbol, bp->value); - } - - obstack_1grow (&tokendefs, 0); - muscle_insert ("tokendef", xstrdup (obstack_finish (&tokendefs))); - obstack_free (&tokendefs, NULL); -} - - /*---------------------------------------------------------------. | Convert the rules into the representation using RRHS, RLHS and | | RITEMS. | @@ -1862,8 +1814,6 @@ reader (void) /* Assign the symbols their symbol numbers. Write #defines for the token symbols into FDEFINES if requested. */ packsymbols (); - /* Save them. */ - symbols_save (); /* Convert the grammar into the format described in gram.h. */ packgram ();