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 ();