/* Scan Bison Skeletons. -*- C -*-
- Copyright (C) 2001-2012 Free Software Foundation, Inc.
+ Copyright (C) 2001-2013 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
"@@" fputc ('@', yyout);
"@{" fputc ('[', yyout);
"@}" fputc (']', yyout);
-"@`" continue; /* Used by b4_cat in ../data/bison.m4. */
+"@'" continue; /* Used by b4_cat in ../data/bison.m4. */
@\n continue;
"@oline@" fprintf (yyout, "%d", out_lineno + 1);
"@ofile@" fputs (quotearg_style (c_quoting_style, out_name), yyout);
-@basename"(" at_init (&argc, argv, &at_ptr, &at_basename);
-@complain"(" at_init (&argc, argv, &at_ptr, &at_complain);
-@output"(" at_init (&argc, argv, &at_ptr, &at_output);
-@[a-z_]+"(" at_init (&argc, argv, &at_ptr, NULL);
+"@basename(" at_init (&argc, argv, &at_ptr, &at_basename);
+"@complain(" at_init (&argc, argv, &at_ptr, &at_complain);
+"@output(" at_init (&argc, argv, &at_ptr, &at_output);
/* This pattern must not match more than the previous @ patterns. */
-@[^@{}`(\n]* fail_for_invalid_at (yytext);
-\n out_lineno++; ECHO;
-[^@\n]+ ECHO;
+@[^@{}\'(\n]* fail_for_invalid_at (yytext);
+\n out_lineno++; ECHO;
+[^@\n]+ ECHO;
<INITIAL><<EOF>> {
if (out_name)
"@@" obstack_1grow (&obstack_for_string, '@');
"@{" obstack_1grow (&obstack_for_string, '[');
"@}" obstack_1grow (&obstack_for_string, ']');
- "@`" continue; /* For starting an argument that begins with whitespace. */
+ "@'" continue; /* For starting an argument that begins with whitespace. */
@\n continue;
@[,)] {
BEGIN SC_AT_DIRECTIVE_SKIP_WS;
else
{
- if (at_ptr)
- at_ptr (argc, argv, &out_name, &out_lineno);
- else
- fail_for_invalid_at (argv[0]);
-
+ aver (at_ptr);
+ at_ptr (argc, argv, &out_name, &out_lineno);
obstack_free (&obstack_for_string, argv[0]);
argc = 0;
BEGIN INITIAL;
/* compare with values issued from b4_error */
if (STREQ (arg, "complain"))
return complaint;
+ else if (STREQ (arg, "deprecated"))
+ return Wdeprecated;
else if (STREQ (arg, "fatal"))
return fatal;
else if (STREQ (arg, "note"))
- return silent;
+ return silent | complaint | no_caret;
else if (STREQ (arg, "warn"))
return Wother;
else
indent += SUB_INDENT;
else
indent = 0;
- complain_args (locp, w, &indent, argc - 3, argv + 3);
+ complain_args (locp, w, &indent, argc - 4, argv + 4);
if (w & silent)
indent -= SUB_INDENT;
}
xfclose (yyout);
}
*out_namep = xstrdup (argv[1]);
- output_file_name_check (out_namep);
- yyout = xfopen (*out_namep, "w");
+ output_file_name_check (out_namep, true);
+ /* If there were errors, do not generate the output. */
+ yyout = xfopen (complaint_status ? "/dev/null" : *out_namep, "w");
*out_linenop = 1;
}
- static void
+static void
fail_for_at_directive_too_few_args (char const *at_directive_name)
{
complain (NULL, fatal, _("too few arguments for %s directive in skeleton"),