]> git.saurik.com Git - bison.git/blobdiff - src/scan-code.l
glr.c: scope reduction
[bison.git] / src / scan-code.l
index 31befe9172f9bc7e8d6c99f543e4f8c5649ff2af..560d3435cb95e348c9ea8f3fd2f0f89cf031195c 100644 (file)
@@ -220,12 +220,16 @@ ref      -?[0-9]+|{id}|"["{id}"]"|"$"
     /* As an undocumented Bison extension, append ';' before the last
        brace in braced code, so that the user code can omit trailing
        ';'.  But do not append ';' if emulating Yacc, since Yacc does
-       not append one.  */
+       not append one.  This is deprecated since release 2.4.1.  */
     if (outer_brace && !yacc_flag && language_prio == default_prio
         && skeleton_prio == default_prio && need_semicolon && ! in_cpp)
       {
-        warn_at (*loc, _("a ';' might be needed at the end of action code"));
-        warn_at (*loc, _("future versions of Bison will not add the ';'"));
+        unsigned int indent = 0;
+        warn_at_indent (*loc, &indent,
+                       _("a ';' might be needed at the end of action code"));
+        indent += SUB_INDENT;
+        warn_at_indent (*loc, &indent,
+                       _("future versions of Bison will not add the ';'"));
         obstack_1grow (&obstack_for_string, ';');
       }
 
@@ -443,30 +447,30 @@ show_sub_messages (const char* cp, bool explicit_bracketing,
          /* Create the explanation message. */
          obstack_init (&msg_buf);
 
-         obstack_fgrow1 (&msg_buf, _("possibly meant: %c"), dollar_or_at);
+         obstack_printf (&msg_buf, _("possibly meant: %c"), dollar_or_at);
          if (contains_dot_or_dash (id))
-           obstack_fgrow1 (&msg_buf, "[%s]", id);
+           obstack_printf (&msg_buf, "[%s]", id);
          else
            obstack_sgrow (&msg_buf, id);
          obstack_sgrow (&msg_buf, tail);
 
          if (var->err & VARIANT_HIDDEN)
            {
-             obstack_fgrow1 (&msg_buf, _(", hiding %c"), dollar_or_at);
+             obstack_printf (&msg_buf, _(", hiding %c"), dollar_or_at);
              if (contains_dot_or_dash (var->id))
-               obstack_fgrow1 (&msg_buf, "[%s]", var->id);
+               obstack_printf (&msg_buf, "[%s]", var->id);
              else
                obstack_sgrow (&msg_buf, var->id);
              obstack_sgrow (&msg_buf, tail);
            }
 
-         obstack_fgrow1 (&msg_buf, _(" at %s"), at_spec);
+         obstack_printf (&msg_buf, _(" at %s"), at_spec);
 
          if (var->err & VARIANT_NOT_VISIBLE_FROM_MIDRULE)
             {
               const char *format =
                 _(", cannot be accessed from mid-rule action at $%d");
-              obstack_fgrow1 (&msg_buf, format, midrule_rhs_index);
+              obstack_printf (&msg_buf, format, midrule_rhs_index);
             }
 
          obstack_1grow (&msg_buf, '\0');
@@ -489,9 +493,6 @@ show_sub_messages (const char* cp, bool explicit_bracketing,
    points to LHS ($$) of the current rule or midrule. */
 #define LHS_REF (INT_MIN + 1)
 
-/* Sub-messages indent. */
-#define SUB_INDENT (4)
-
 /* Parse named or positional reference. In case of positional
    references, can return negative values for $-n "deep" stack
    accesses. */
@@ -788,7 +789,7 @@ handle_action_dollar (symbol_list *rule, char *text, location dollar_loc)
             untyped_var_seen = true;
         }
 
-      obstack_fgrow2 (&obstack_for_string,
+      obstack_printf (&obstack_for_string,
                      "]b4_rhs_value(%d, %d, ", effective_rule_length, n);
       obstack_quote (&obstack_for_string, type_name);
       obstack_sgrow (&obstack_for_string, ")[");
@@ -838,7 +839,7 @@ handle_action_at (symbol_list *rule, char *text, location at_loc)
       break;
 
     default:
-      obstack_fgrow2 (&obstack_for_string, "]b4_rhs_location(%d, %d)[",
+      obstack_printf (&obstack_for_string, "]b4_rhs_location(%d, %d)[",
                      effective_rule_length, n);
       break;
     }