]> git.saurik.com Git - bison.git/commitdiff
(<INITIAL>{int}): Use set_errno and get_errno instead of errno.
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 11 Dec 2002 06:48:18 +0000 (06:48 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 11 Dec 2002 06:48:18 +0000 (06:48 +0000)
(<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>\\x[0-9abcdefABCDEF]+): Likewise.
(handle_action_dollar, handle_action_at): Likewise.
(obstack_for_string): Renamed from string_obstack.

src/scan-gram.l

index a96b18b9ba8af7cc4b8646e838e329abacb07294..41aefd620440633787aba050e6f15c91d12a5439 100644 (file)
 
 %{
 #include "system.h"
 
 %{
 #include "system.h"
-#include "mbswidth.h"
+
+#include <mbswidth.h>
+#include <get-errno.h>
+#include <quote.h>
+
 #include "complain.h"
 #include "files.h"
 #include "complain.h"
 #include "files.h"
-#include "quote.h"
-#include "struniq.h"
 #include "getargs.h"
 #include "gram.h"
 #include "reader.h"
 #include "getargs.h"
 #include "gram.h"
 #include "reader.h"
+#include "uniqstr.h"
 
 #define YY_USER_INIT                                   \
   do                                                   \
 
 #define YY_USER_INIT                                   \
   do                                                   \
 /* Location of scanner cursor.  */
 boundary scanner_cursor;
 
 /* Location of scanner cursor.  */
 boundary scanner_cursor;
 
-static void adjust_location (location_t *, char const *, size_t);
+static void adjust_location (location *, char const *, size_t);
 #define YY_USER_ACTION  adjust_location (loc, yytext, yyleng);
 
 static size_t no_cr_read (FILE *, char *, size_t);
 #define YY_INPUT(buf, result, size) ((result) = no_cr_read (yyin, buf, size))
 
 
 #define YY_USER_ACTION  adjust_location (loc, yytext, yyleng);
 
 static size_t no_cr_read (FILE *, char *, size_t);
 #define YY_INPUT(buf, result, size) ((result) = no_cr_read (yyin, buf, size))
 
 
-/* STRING_OBSTACK -- Used to store all the characters that we need to
+/* OBSTACK_FOR_STRING -- Used to store all the characters that we need to
    keep (to construct ID, STRINGS etc.).  Use the following macros to
    use it.
 
    keep (to construct ID, STRINGS etc.).  Use the following macros to
    use it.
 
@@ -61,23 +64,23 @@ static size_t no_cr_read (FILE *, char *, size_t);
    STRING_FINISH also stores this string in LAST_STRING, which can be
    used, and which is used by STRING_FREE to free the last string.  */
 
    STRING_FINISH also stores this string in LAST_STRING, which can be
    used, and which is used by STRING_FREE to free the last string.  */
 
-static struct obstack string_obstack;
+static struct obstack obstack_for_string;
 
 /* A string representing the most recently saved token.  */
 static char *last_string;
 
 
 #define STRING_GROW   \
 
 /* A string representing the most recently saved token.  */
 static char *last_string;
 
 
 #define STRING_GROW   \
-  obstack_grow (&string_obstack, yytext, yyleng)
+  obstack_grow (&obstack_for_string, yytext, yyleng)
 
 #define STRING_FINISH                                  \
   do {                                                 \
 
 #define STRING_FINISH                                  \
   do {                                                 \
-    obstack_1grow (&string_obstack, '\0');             \
-    last_string = obstack_finish (&string_obstack);    \
+    obstack_1grow (&obstack_for_string, '\0');         \
+    last_string = obstack_finish (&obstack_for_string);        \
   } while (0)
 
 #define STRING_FREE \
   } while (0)
 
 #define STRING_FREE \
-  obstack_free (&string_obstack, last_string)
+  obstack_free (&obstack_for_string, last_string)
 
 void
 scanner_last_string_free (void)
 
 void
 scanner_last_string_free (void)
@@ -93,10 +96,8 @@ scanner_last_string_free (void)
    Outside of well-formed rules, RULE_LENGTH has an undefined value.  */
 static int rule_length;
 
    Outside of well-formed rules, RULE_LENGTH has an undefined value.  */
 static int rule_length;
 
-static void handle_dollar (braced_code_t code_kind,
-                          char *cp, location_t location);
-static void handle_at (braced_code_t code_kind,
-                      char *cp, location_t location);
+static void handle_dollar (braced_code code_kind, char *cp, location loc);
+static void handle_at (braced_code code_kind, char *cp, location loc);
 static void handle_syncline (char *args);
 static int convert_ucn_to_byte (char const *hex_text);
 static void unexpected_end_of_file (boundary, char const *);
 static void handle_syncline (char *args);
 static int convert_ucn_to_byte (char const *hex_text);
 static void unexpected_end_of_file (boundary, char const *);
@@ -131,13 +132,13 @@ splice     (\\[ \f\t\v]*\n)*
   int context_state IF_LINT (= 0);
 
   /* Location of most recent identifier, when applicable.  */
   int context_state IF_LINT (= 0);
 
   /* Location of most recent identifier, when applicable.  */
-  location_t id_loc IF_LINT (= *loc);
+  location id_loc IF_LINT (= *loc);
 
 
-  /* Location where containing code started, when applicable.  */
+  /* Where containing code started, when applicable.  */
   boundary code_start IF_LINT (= loc->start);
 
   boundary code_start IF_LINT (= loc->start);
 
-  /* Location where containing comment or string or character literal
-     started, when applicable.  */
+  /* Where containing comment or string or character literal started,
+     when applicable.  */
   boundary token_start IF_LINT (= loc->start);
 %}
 
   boundary token_start IF_LINT (= loc->start);
 %}
 
@@ -223,9 +224,9 @@ splice       (\\[ \f\t\v]*\n)*
 
   {int} {
     unsigned long num;
 
   {int} {
     unsigned long num;
-    errno = 0;
+    set_errno (0);
     num = strtoul (yytext, 0, 10);
     num = strtoul (yytext, 0, 10);
-    if (INT_MAX < num || errno)
+    if (INT_MAX < num || get_errno ())
       {
        complain_at (*loc, _("integer out of range: %s"), quote (yytext));
        num = INT_MAX;
       {
        complain_at (*loc, _("integer out of range: %s"), quote (yytext));
        num = INT_MAX;
@@ -253,9 +254,9 @@ splice       (\\[ \f\t\v]*\n)*
 
   /* A type. */
   "<"{tag}">" {
 
   /* A type. */
   "<"{tag}">" {
-    obstack_grow (&string_obstack, yytext + 1, yyleng - 2);
+    obstack_grow (&obstack_for_string, yytext + 1, yyleng - 2);
     STRING_FINISH;
     STRING_FINISH;
-    val->struniq = struniq_new (last_string);
+    val->uniqstr = uniqstr_new (last_string);
     STRING_FREE;
     return TYPE;
   }
     STRING_FREE;
     return TYPE;
   }
@@ -349,7 +350,7 @@ splice       (\\[ \f\t\v]*\n)*
     STRING_GROW;
     STRING_FINISH;
     loc->start = token_start;
     STRING_GROW;
     STRING_FINISH;
     loc->start = token_start;
-    val->string = last_string;
+    val->chars = last_string;
     rule_length++;
     BEGIN INITIAL;
     return STRING;
     rule_length++;
     BEGIN INITIAL;
     return STRING;
@@ -396,36 +397,36 @@ splice     (\\[ \f\t\v]*\n)*
     if (UCHAR_MAX < c)
       complain_at (*loc, _("invalid escape sequence: %s"), quote (yytext));
     else
     if (UCHAR_MAX < c)
       complain_at (*loc, _("invalid escape sequence: %s"), quote (yytext));
     else
-      obstack_1grow (&string_obstack, c);
+      obstack_1grow (&obstack_for_string, c);
   }
 
   \\x[0-9abcdefABCDEF]+ {
     unsigned long c;
   }
 
   \\x[0-9abcdefABCDEF]+ {
     unsigned long c;
-    errno = 0;
+    set_errno (0);
     c = strtoul (yytext + 2, 0, 16);
     c = strtoul (yytext + 2, 0, 16);
-    if (UCHAR_MAX < c || errno)
+    if (UCHAR_MAX < c || get_errno ())
       complain_at (*loc, _("invalid escape sequence: %s"), quote (yytext));
     else
       complain_at (*loc, _("invalid escape sequence: %s"), quote (yytext));
     else
-      obstack_1grow (&string_obstack, c);
+      obstack_1grow (&obstack_for_string, c);
   }
 
   }
 
-  \\a  obstack_1grow (&string_obstack, '\a');
-  \\b  obstack_1grow (&string_obstack, '\b');
-  \\f  obstack_1grow (&string_obstack, '\f');
-  \\n  obstack_1grow (&string_obstack, '\n');
-  \\r  obstack_1grow (&string_obstack, '\r');
-  \\t  obstack_1grow (&string_obstack, '\t');
-  \\v  obstack_1grow (&string_obstack, '\v');
+  \\a  obstack_1grow (&obstack_for_string, '\a');
+  \\b  obstack_1grow (&obstack_for_string, '\b');
+  \\f  obstack_1grow (&obstack_for_string, '\f');
+  \\n  obstack_1grow (&obstack_for_string, '\n');
+  \\r  obstack_1grow (&obstack_for_string, '\r');
+  \\t  obstack_1grow (&obstack_for_string, '\t');
+  \\v  obstack_1grow (&obstack_for_string, '\v');
 
   /* \\[\"\'?\\] would be shorter, but it confuses xgettext.  */
 
   /* \\[\"\'?\\] would be shorter, but it confuses xgettext.  */
-  \\("\""|"'"|"?"|"\\")  obstack_1grow (&string_obstack, yytext[1]);
+  \\("\""|"'"|"?"|"\\")  obstack_1grow (&obstack_for_string, yytext[1]);
 
   \\(u|U[0-9abcdefABCDEF]{4})[0-9abcdefABCDEF]{4} {
     int c = convert_ucn_to_byte (yytext);
     if (c < 0)
       complain_at (*loc, _("invalid escape sequence: %s"), quote (yytext));
     else
 
   \\(u|U[0-9abcdefABCDEF]{4})[0-9abcdefABCDEF]{4} {
     int c = convert_ucn_to_byte (yytext);
     if (c < 0)
       complain_at (*loc, _("invalid escape sequence: %s"), quote (yytext));
     else
-      obstack_1grow (&string_obstack, c);
+      obstack_1grow (&obstack_for_string, c);
   }
   \\(.|\n)     {
     complain_at (*loc, _("unrecognized escape sequence: %s"), quote (yytext));
   }
   \\(.|\n)     {
     complain_at (*loc, _("unrecognized escape sequence: %s"), quote (yytext));
@@ -508,7 +509,7 @@ splice       (\\[ \f\t\v]*\n)*
       {
        STRING_FINISH;
        loc->start = code_start;
       {
        STRING_FINISH;
        loc->start = code_start;
-       val->string = last_string;
+       val->chars = last_string;
        rule_length++;
        BEGIN INITIAL;
        return BRACED_CODE;
        rule_length++;
        BEGIN INITIAL;
        return BRACED_CODE;
@@ -537,7 +538,7 @@ splice       (\\[ \f\t\v]*\n)*
   "%}" {
     STRING_FINISH;
     loc->start = code_start;
   "%}" {
     STRING_FINISH;
     loc->start = code_start;
-    val->string = last_string;
+    val->chars = last_string;
     BEGIN INITIAL;
     return PROLOGUE;
   }
     BEGIN INITIAL;
     return PROLOGUE;
   }
@@ -556,7 +557,7 @@ splice       (\\[ \f\t\v]*\n)*
   <<EOF>> {
     STRING_FINISH;
     loc->start = code_start;
   <<EOF>> {
     STRING_FINISH;
     loc->start = code_start;
-    val->string = last_string;
+    val->chars = last_string;
     BEGIN INITIAL;
     return EPILOGUE;
   }
     BEGIN INITIAL;
     return EPILOGUE;
   }
@@ -570,10 +571,10 @@ splice     (\\[ \f\t\v]*\n)*
 
 <SC_COMMENT,SC_LINE_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE,SC_EPILOGUE>
 {
 
 <SC_COMMENT,SC_LINE_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE,SC_EPILOGUE>
 {
-  \$   obstack_sgrow (&string_obstack, "$][");
-  \@   obstack_sgrow (&string_obstack, "@@");
-  \[   obstack_sgrow (&string_obstack, "@{");
-  \]   obstack_sgrow (&string_obstack, "@}");
+  \$   obstack_sgrow (&obstack_for_string, "$][");
+  \@   obstack_sgrow (&obstack_for_string, "@@");
+  \[   obstack_sgrow (&obstack_for_string, "@{");
+  \]   obstack_sgrow (&obstack_for_string, "@}");
   .|\n  STRING_GROW;
 }
 
   .|\n  STRING_GROW;
 }
 
@@ -584,7 +585,7 @@ splice       (\\[ \f\t\v]*\n)*
    size SIZE.  */
 
 static void
    size SIZE.  */
 
 static void
-adjust_location (location_t *loc, char const *token, size_t size)
+adjust_location (location *loc, char const *token, size_t size)
 {
   int line = scanner_cursor.line;
   int column = scanner_cursor.column;
 {
   int line = scanner_cursor.line;
   int column = scanner_cursor.column;
@@ -669,11 +670,11 @@ no_cr_read (FILE *fp, char *buf, size_t size)
 |                                                                   |
 | Possible inputs: $[<TYPENAME>]($|integer)                         |
 |                                                                   |
 |                                                                   |
 | Possible inputs: $[<TYPENAME>]($|integer)                         |
 |                                                                   |
-| Output to the STRING_OBSTACK a reference to this semantic value.  |
+| Output to OBSTACK_FOR_STRING a reference to this semantic value.  |
 `------------------------------------------------------------------*/
 
 static inline void
 `------------------------------------------------------------------*/
 
 static inline void
-handle_action_dollar (char *text, location_t location)
+handle_action_dollar (char *text, location loc)
 {
   const char *type_name = NULL;
   char *cp = text + 1;
 {
   const char *type_name = NULL;
   char *cp = text + 1;
@@ -691,38 +692,37 @@ handle_action_dollar (char *text, location_t location)
   if (*cp == '$')
     {
       if (!type_name)
   if (*cp == '$')
     {
       if (!type_name)
-       type_name = symbol_list_n_type_name_get (current_rule, location, 0);
+       type_name = symbol_list_n_type_name_get (current_rule, loc, 0);
       if (!type_name && typed)
       if (!type_name && typed)
-       complain_at (location, _("$$ of `%s' has no declared type"),
+       complain_at (loc, _("$$ of `%s' has no declared type"),
                     current_rule->sym->tag);
       if (!type_name)
        type_name = "";
                     current_rule->sym->tag);
       if (!type_name)
        type_name = "";
-      obstack_fgrow1 (&string_obstack,
+      obstack_fgrow1 (&obstack_for_string,
                      "]b4_lhs_value([%s])[", type_name);
     }
   else
     {
       long num;
                      "]b4_lhs_value([%s])[", type_name);
     }
   else
     {
       long num;
-      errno = 0;
+      set_errno (0);
       num = strtol (cp, 0, 10);
 
       num = strtol (cp, 0, 10);
 
-      if (INT_MIN <= num && num <= rule_length && ! errno)
+      if (INT_MIN <= num && num <= rule_length && ! get_errno ())
        {
          int n = num;
          if (!type_name && n > 0)
        {
          int n = num;
          if (!type_name && n > 0)
-           type_name = symbol_list_n_type_name_get (current_rule, location,
-                                                    n);
+           type_name = symbol_list_n_type_name_get (current_rule, loc, n);
          if (!type_name && typed)
          if (!type_name && typed)
-           complain_at (location, _("$%d of `%s' has no declared type"),
-                     n, current_rule->sym->tag);
+           complain_at (loc, _("$%d of `%s' has no declared type"),
+                        n, current_rule->sym->tag);
          if (!type_name)
            type_name = "";
          if (!type_name)
            type_name = "";
-         obstack_fgrow3 (&string_obstack,
+         obstack_fgrow3 (&obstack_for_string,
                          "]b4_rhs_value([%d], [%d], [%s])[",
                          rule_length, n, type_name);
        }
       else
                          "]b4_rhs_value([%d], [%d], [%s])[",
                          rule_length, n, type_name);
        }
       else
-       complain_at (location, _("integer out of range: %s"), quote (text));
+       complain_at (loc, _("integer out of range: %s"), quote (text));
     }
 }
 
     }
 }
 
@@ -733,13 +733,13 @@ handle_action_dollar (char *text, location_t location)
 `---------------------------------------------------------------*/
 
 static inline void
 `---------------------------------------------------------------*/
 
 static inline void
-handle_symbol_code_dollar (char *text, location_t location)
+handle_symbol_code_dollar (char *text, location loc)
 {
   char *cp = text + 1;
   if (*cp == '$')
 {
   char *cp = text + 1;
   if (*cp == '$')
-    obstack_sgrow (&string_obstack, "]b4_dollar_dollar[");
+    obstack_sgrow (&obstack_for_string, "]b4_dollar_dollar[");
   else
   else
-    complain_at (location, _("invalid value: %s"), quote (text));
+    complain_at (loc, _("invalid value: %s"), quote (text));
 }
 
 
 }
 
 
@@ -749,18 +749,17 @@ handle_symbol_code_dollar (char *text, location_t location)
 `-----------------------------------------------------------------*/
 
 static void
 `-----------------------------------------------------------------*/
 
 static void
-handle_dollar (braced_code_t braced_code_kind,
-              char *text, location_t location)
+handle_dollar (braced_code braced_code_kind, char *text, location loc)
 {
   switch (braced_code_kind)
     {
     case action_braced_code:
 {
   switch (braced_code_kind)
     {
     case action_braced_code:
-      handle_action_dollar (text, location);
+      handle_action_dollar (text, loc);
       break;
 
     case destructor_braced_code:
     case printer_braced_code:
       break;
 
     case destructor_braced_code:
     case printer_braced_code:
-      handle_symbol_code_dollar (text, location);
+      handle_symbol_code_dollar (text, loc);
       break;
     }
 }
       break;
     }
 }
@@ -768,33 +767,33 @@ handle_dollar (braced_code_t braced_code_kind,
 
 /*------------------------------------------------------.
 | TEXT is a location token (i.e., a `@...').  Output to |
 
 /*------------------------------------------------------.
 | TEXT is a location token (i.e., a `@...').  Output to |
-| STRING_OBSTACK a reference to this location.          |
+| OBSTACK_FOR_STRING a reference to this location.      |
 `------------------------------------------------------*/
 
 static inline void
 `------------------------------------------------------*/
 
 static inline void
-handle_action_at (char *text, location_t location)
+handle_action_at (char *text, location loc)
 {
   char *cp = text + 1;
   locations_flag = 1;
 
   if (*cp == '$')
     {
 {
   char *cp = text + 1;
   locations_flag = 1;
 
   if (*cp == '$')
     {
-      obstack_sgrow (&string_obstack, "]b4_lhs_location[");
+      obstack_sgrow (&obstack_for_string, "]b4_lhs_location[");
     }
   else
     {
       long num;
     }
   else
     {
       long num;
-      errno = 0;
+      set_errno (0);
       num = strtol (cp, 0, 10);
 
       num = strtol (cp, 0, 10);
 
-      if (INT_MIN <= num && num <= rule_length && ! errno)
+      if (INT_MIN <= num && num <= rule_length && ! get_errno ())
        {
          int n = num;
        {
          int n = num;
-         obstack_fgrow2 (&string_obstack, "]b4_rhs_location([%d], [%d])[",
+         obstack_fgrow2 (&obstack_for_string, "]b4_rhs_location([%d], [%d])[",
                          rule_length, n);
        }
       else
                          rule_length, n);
        }
       else
-       complain_at (location, _("integer out of range: %s"), quote (text));
+       complain_at (loc, _("integer out of range: %s"), quote (text));
     }
 }
 
     }
 }
 
@@ -805,13 +804,13 @@ handle_action_at (char *text, location_t location)
 `---------------------------------------------------------------*/
 
 static inline void
 `---------------------------------------------------------------*/
 
 static inline void
-handle_symbol_code_at (char *text, location_t location)
+handle_symbol_code_at (char *text, location loc)
 {
   char *cp = text + 1;
   if (*cp == '$')
 {
   char *cp = text + 1;
   if (*cp == '$')
-    obstack_sgrow (&string_obstack, "]b4_at_dollar[");
+    obstack_sgrow (&obstack_for_string, "]b4_at_dollar[");
   else
   else
-    complain_at (location, _("invalid value: %s"), quote (text));
+    complain_at (loc, _("invalid value: %s"), quote (text));
 }
 
 
 }
 
 
@@ -821,18 +820,17 @@ handle_symbol_code_at (char *text, location_t location)
 `-------------------------------------------------------------------*/
 
 static void
 `-------------------------------------------------------------------*/
 
 static void
-handle_at (braced_code_t braced_code_kind,
-          char *text, location_t location)
+handle_at (braced_code braced_code_kind, char *text, location loc)
 {
   switch (braced_code_kind)
     {
     case action_braced_code:
 {
   switch (braced_code_kind)
     {
     case action_braced_code:
-      handle_action_at (text, location);
+      handle_action_at (text, loc);
       break;
 
     case destructor_braced_code:
     case printer_braced_code:
       break;
 
     case destructor_braced_code:
     case printer_braced_code:
-      handle_symbol_code_at (text, location);
+      handle_symbol_code_at (text, loc);
       break;
     }
 }
       break;
     }
 }
@@ -922,10 +920,10 @@ unexpected_end_of_file (boundary start, char const *token_end)
 {
   size_t i = strlen (token_end);
 
 {
   size_t i = strlen (token_end);
 
-  location_t location;
-  location.start = start;
-  location.end = scanner_cursor;
-  complain_at (location, _("missing `%s' at end of file"), token_end);
+  location loc;
+  loc.start = start;
+  loc.end = scanner_cursor;
+  complain_at (loc, _("missing `%s' at end of file"), token_end);
 
   /* Adjust scanner cursor so that any later message does not count
      the characters about to be inserted.  */
 
   /* Adjust scanner cursor so that any later message does not count
      the characters about to be inserted.  */
@@ -943,7 +941,7 @@ unexpected_end_of_file (boundary start, char const *token_end)
 void
 scanner_initialize (void)
 {
 void
 scanner_initialize (void)
 {
-  obstack_init (&string_obstack);
+  obstack_init (&obstack_for_string);
 }
 
 
 }
 
 
@@ -954,7 +952,7 @@ scanner_initialize (void)
 void
 scanner_free (void)
 {
 void
 scanner_free (void)
 {
-  obstack_free (&string_obstack, 0);
+  obstack_free (&obstack_for_string, 0);
   /* Reclaim Flex's buffers.  */
   yy_delete_buffer (YY_CURRENT_BUFFER);
 }
   /* Reclaim Flex's buffers.  */
   yy_delete_buffer (YY_CURRENT_BUFFER);
 }