bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

FYI: 1.29b: translations


From: Akim Demaille
Subject: FYI: 1.29b: translations
Date: 22 Sep 2001 19:52:11 +0200
User-agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.4 (Artificial Intelligence)

Index: ChangeLog
from  Akim Demaille  <address@hidden>
        Remove `translations' as it is always set to true.

        * src/gram.h: Adjust.
        * src/reader.c (packsymbols, parse_token_decl): Adjust
        * src/print.c (print_grammar): Adjust.
        * src/output.c (output_token_translations): Adjust.
        * src/lex.c (lex): Adjust.
        * src/gram.c: Be sure the set pointers to NULL.
        (dummy): Rename as...
        (gram_free): this.

Index: src/gram.c
===================================================================
RCS file: /cvsroot/bison/bison/src/gram.c,v
retrieving revision 1.6
diff -u -u -r1.6 gram.c
--- src/gram.c 2000/11/07 16:28:46 1.6
+++ src/gram.c 2001/09/22 17:42:56
@@ -31,21 +31,19 @@
 int ntokens;
 int nvars;
 
-short *ritem;
-short *rlhs;
-short *rrhs;
-short *rprec;
-short *rprecsym;
-short *sprec;
-short *rassoc;
-short *sassoc;
-short *token_translations;
-short *rline;
+short *ritem = NULL;
+short *rlhs = NULL;
+short *rrhs = NULL;
+short *rprec = NULL;
+short *rprecsym = NULL;
+short *sprec = NULL;
+short *rassoc = NULL;
+short *sassoc = NULL;
+short *token_translations = NULL;
+short *rline = NULL;
 
 int start_symbol;
 
-int translations;
-
 int max_user_token_number;
 
 int semantic_parser;
@@ -54,10 +52,10 @@
 
 int error_token_number;
 
-/* This is to avoid linker problems which occur on VMS when using GCC,
-   when the file in question contains data definitions only.  */
+/* Free all the memory associated to these pointers. */
 
 void
-dummy (void)
+gram_free (void)
 {
+
 }
Index: src/gram.h
===================================================================
RCS file: /cvsroot/bison/bison/src/gram.h,v
retrieving revision 1.6
diff -u -u -r1.6 gram.h
--- src/gram.h 2000/11/07 16:28:46 1.6
+++ src/gram.h 2001/09/22 17:42:56
@@ -107,13 +107,9 @@
 
 /* token translation table: indexed by a token number as returned by
    the user's yylex routine, it yields the internal token number used
-   by the parser and throughout bison.  If translations is zero, the
-   translation table is not used because the two kinds of token
-   numbers are the same.  (It is noted in reader.c that "Nowadays
-   translations is always set to 1...") */
+   by the parser and throughout bison.  */
 
 extern short *token_translations;
-extern int translations;
 extern int max_user_token_number;
 
 /* SEMANTIC_PARSER is nonzero if the input file says to use the hairy
Index: src/lex.c
===================================================================
RCS file: /cvsroot/bison/bison/src/lex.c,v
retrieving revision 1.33.2.3
diff -u -u -r1.33.2.3 lex.c
--- src/lex.c 2001/09/17 22:20:08 1.33.2.3
+++ src/lex.c 2001/09/22 17:42:56
@@ -419,7 +419,6 @@
     case '\'':
       /* parse the literal token and compute character code in  code  */
 
-      translations = -1;
       {
        int code, discode;
 
@@ -447,7 +446,6 @@
     case '\"':
       /* parse the literal string token and treat as an identifier */
 
-      translations = -1;
       {
        int code;               /* ignored here */
 
Index: src/output.c
===================================================================
RCS file: /cvsroot/bison/bison/src/output.c,v
retrieving revision 1.39.2.1
diff -u -u -r1.39.2.1 output.c
--- src/output.c 2001/08/29 12:13:03 1.39.2.1
+++ src/output.c 2001/09/22 17:42:56
@@ -295,25 +295,17 @@
 \n\
 /* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */\n");
 
-  if (translations)
-    {
-      obstack_fgrow2 (&table_obstack,
+  obstack_fgrow2 (&table_obstack,
       "#define YYTRANSLATE(x) ((unsigned)(x) <= %d ? yytranslate[x] : %d)\
 \n\
 \n",
-              max_user_token_number, nsyms);
+                 max_user_token_number, nsyms);
 
-      output_short_or_char_table (&table_obstack,
+  output_short_or_char_table (&table_obstack,
             "YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX",
-                   ntokens < 127 ? "char" : "short",
-                   "yytranslate", token_translations,
-                   0, 1, max_user_token_number + 1);
-    }
-  else
-    {
-      obstack_sgrow (&table_obstack,
-                          "\n#define YYTRANSLATE(x) (x)\n");
-    }
+                             ntokens < 127 ? "char" : "short",
+                             "yytranslate", token_translations,
+                             0, 1, max_user_token_number + 1);
 }
 
 
Index: src/print.c
===================================================================
RCS file: /cvsroot/bison/bison/src/print.c,v
retrieving revision 1.17
diff -u -u -r1.17 print.c
--- src/print.c 2000/12/20 17:21:14 1.17
+++ src/print.c 2001/09/22 17:42:56
@@ -253,49 +253,26 @@
                 _("Terminals, with rules where they appear"));
   obstack_sgrow (&output_obstack, "\n\n");
   obstack_fgrow1 (&output_obstack, "%s (-1)\n", tags[0]);
-  if (translations)
-    {
-      for (i = 0; i <= max_user_token_number; i++)
-       if (token_translations[i] != 2)
-         {
-           buffer[0] = 0;
-           column = strlen (tags[token_translations[i]]);
-           obstack_sgrow (&output_obstack, tags[token_translations[i]]);
-           END_TEST (50);
-           sprintf (buffer, " (%d)", i);
 
-           for (j = 1; j <= nrules; j++)
-             for (rule = &ritem[rrhs[j]]; *rule > 0; rule++)
-               if (*rule == token_translations[i])
-                 {
-                   END_TEST (65);
-                   sprintf (buffer + strlen (buffer), " %d", j);
-                   break;
-                 }
-           obstack_fgrow1 (&output_obstack, "%s\n", buffer);
-         }
-    }
-  else
-    {
-      for (i = 1; i < ntokens; i++)
-       {
-         buffer[0] = 0;
-         column = strlen (tags[i]);
-         obstack_sgrow (&output_obstack, tags[i]);
-         END_TEST (50);
-         sprintf (buffer, " (%d)", i);
+  for (i = 0; i <= max_user_token_number; i++)
+    if (token_translations[i] != 2)
+      {
+       buffer[0] = 0;
+       column = strlen (tags[token_translations[i]]);
+       obstack_sgrow (&output_obstack, tags[token_translations[i]]);
+       END_TEST (50);
+       sprintf (buffer, " (%d)", i);
 
-         for (j = 1; j <= nrules; j++)
-           for (rule = &ritem[rrhs[j]]; *rule > 0; rule++)
-             if (*rule == i)
-               {
-                 END_TEST (65);
-                 sprintf (buffer + strlen (buffer), " %d", j);
-                 break;
-               }
-         obstack_fgrow1 (&output_obstack, "%s\n", buffer);
-       }
-    }
+       for (j = 1; j <= nrules; j++)
+         for (rule = &ritem[rrhs[j]]; *rule > 0; rule++)
+           if (*rule == token_translations[i])
+             {
+               END_TEST (65);
+               sprintf (buffer + strlen (buffer), " %d", j);
+               break;
+             }
+       obstack_fgrow1 (&output_obstack, "%s\n", buffer);
+      }
 
   obstack_sgrow (&output_obstack, "\n");
   obstack_sgrow (&output_obstack,
Index: src/reader.c
===================================================================
RCS file: /cvsroot/bison/bison/src/reader.c,v
retrieving revision 1.72.2.5
diff -u -u -r1.72.2.5 reader.c
--- src/reader.c 2001/09/18 11:37:11 1.72.2.5
+++ src/reader.c 2001/09/22 17:42:56
@@ -512,7 +512,6 @@
              /* symbol and symval combined are only one symbol */
              nsyms--;
            }
-         translations = 1;
          symbol = NULL;
        }
       else if (token == tok_identifier)
@@ -537,7 +536,6 @@
       else if (symbol && token == tok_number)
        {
          symbol->user_token_number = numval;
-         translations = 1;
        }
       else
        {
@@ -679,7 +677,6 @@
          if (prev == tok_identifier)
            {
              symval->user_token_number = numval;
-             translations = 1;
            }
          else
            {
@@ -736,7 +733,7 @@
 
   while (c != EOF)
     {
-      
+
       /* If C contains '/', it is output by copy_comment ().  */
       if (c != '/')
        {
@@ -744,7 +741,7 @@
          if (defines_flag)
            obstack_1grow (&defines_obstack, c);
        }
-      
+
       switch (c)
        {
        case '\n':
@@ -827,7 +824,6 @@
   char *typename = 0;
   int usrtoknum;
 
-  translations = 1;
   token = lex ();              /* fetch typename or first token */
   if (token == tok_typename)
     {
@@ -1657,9 +1653,10 @@
        continue;
 
       obstack_fgrow2 (oout, "# define\t%s\t%d\n",
-                     symbol,
-                     (translations ? bp->user_token_number : bp->value));
+                     symbol, bp->user_token_number);
       if (semantic_parser)
+       /* FIXME: This is certainly dead wrong, and should be just as
+          above. --akim.  */
        obstack_fgrow2 (oout, "# define\tT%s\t%d\n", symbol, bp->value);
     }
 
@@ -1676,9 +1673,9 @@
 static void
 packsymbols (void)
 {
-  bucket *bp;
+  bucket *bp = NULL;
   int tokno = 1;
-  int i;
+  int i, j;
   int last_user_token_number;
   static char DOLLAR[] = "$";
 
@@ -1744,7 +1741,7 @@
 
       if (bp->class == token_sym)
        {
-         if (translations && !(bp->user_token_number))
+         if (!bp->user_token_number)
            bp->user_token_number = ++last_user_token_number;
          if (bp->user_token_number > max_user_token_number)
            max_user_token_number = bp->user_token_number;
@@ -1757,30 +1754,25 @@
 
     }
 
-  if (translations)
-    {
-      int j;
+  token_translations = XCALLOC (short, max_user_token_number + 1);
 
-      token_translations = XCALLOC (short, max_user_token_number + 1);
+  /* initialize all entries for literal tokens to 2, the internal
+     token number for $undefined., which represents all invalid
+     inputs.  */
+  for (j = 0; j <= max_user_token_number; j++)
+    token_translations[j] = 2;
 
-      /* initialize all entries for literal tokens to 2, the internal
-         token number for $undefined., which represents all invalid
-         inputs.  */
-      for (j = 0; j <= max_user_token_number; j++)
-       token_translations[j] = 2;
-
-      for (bp = firstsymbol; bp; bp = bp->next)
-       {
-         if (bp->value >= ntokens)
-           continue;           /* non-terminal */
-         if (bp->user_token_number == SALIAS)
-           continue;
-         if (token_translations[bp->user_token_number] != 2)
-           complain (_("tokens %s and %s both assigned number %d"),
-                     tags[token_translations[bp->user_token_number]],
-                     bp->tag, bp->user_token_number);
-         token_translations[bp->user_token_number] = bp->value;
-       }
+  for (bp = firstsymbol; bp; bp = bp->next)
+    {
+      if (bp->value >= ntokens)
+       continue;               /* non-terminal */
+      if (bp->user_token_number == SALIAS)
+       continue;
+      if (token_translations[bp->user_token_number] != 2)
+       complain (_("tokens %s and %s both assigned number %d"),
+                 tags[token_translations[bp->user_token_number]],
+                 bp->tag, bp->user_token_number);
+      token_translations[bp->user_token_number] = bp->value;
     }
 
   error_token_number = errtoken->value;
@@ -1905,15 +1897,6 @@
 {
   start_flag = 0;
   startval = NULL;             /* start symbol not specified yet. */
-
-#if 0
-  /* initially assume token number translation not needed.  */
-  translations = 0;
-#endif
-  /* Nowadays translations is always set to 1, since we give `error' a
-     user-token-number to satisfy the Posix demand for YYERRCODE==256.
-   */
-  translations = 1;
 
   nsyms = 1;
   nvars = 0;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]