X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/401b73afdf9694e0d9380968ebfd21d837045a2c..4323e0dac386d777d070c68564f1c0041b06935d:/src/scan-skel.l diff --git a/src/scan-skel.l b/src/scan-skel.l index f342604b..b79e5832 100644 --- a/src/scan-skel.l +++ b/src/scan-skel.l @@ -1,7 +1,6 @@ /* Scan Bison Skeletons. -*- C -*- - Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008-2009 - Free Software Foundation, Inc. + Copyright (C) 2001-2012 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -59,7 +58,7 @@ static void fail_for_invalid_at (char const *at); %% %{ - int out_lineno IF_LINT (= 0); + int out_lineno PACIFY_CC (= 0); char *outname = NULL; /* Currently, only the @warn, @complain, @fatal, @warn_at, @complain_at, and @@ -73,12 +72,11 @@ static void fail_for_invalid_at (char const *at); "@@" fputc ('@', yyout); "@{" fputc ('[', yyout); "@}" fputc (']', yyout); -"@`" /* Emtpy. Used by b4_cat in ../data/bison.m4. */ -@\n /* Likewise. */ +"@`" continue; /* Used by b4_cat in ../data/bison.m4. */ +@\n continue; "@oline@" fprintf (yyout, "%d", out_lineno + 1); "@ofile@" QPUTS (outname); -"@dir_prefix@" QPUTS (dir_prefix); @[a-z_]+"(" { yytext[yyleng-1] = '\0'; @@ -90,10 +88,10 @@ static void fail_for_invalid_at (char const *at); /* This pattern must not match more than the previous @ patterns. */ @[^@{}`(\n]* fail_for_invalid_at (yytext); -\n out_lineno++; ECHO; -[^@\n]+ ECHO; +\n out_lineno++; ECHO; +[^@\n]+ ECHO; -<> { +<> { if (outname) { free (outname); @@ -102,15 +100,15 @@ static void fail_for_invalid_at (char const *at); return EOF; } -{ - [^@]+ { STRING_GROW; } + +{ + [^@]+ STRING_GROW; - "@@" { obstack_1grow (&obstack_for_string, '@'); } - "@{" { obstack_1grow (&obstack_for_string, '['); } - "@}" { obstack_1grow (&obstack_for_string, ']'); } - "@`" /* Emtpy. Useful for starting an argument - that begins with whitespace. */ - @\n /* Empty. */ + "@@" obstack_1grow (&obstack_for_string, '@'); + "@{" obstack_1grow (&obstack_for_string, '['); + "@}" obstack_1grow (&obstack_for_string, ']'); + "@`" continue; /* For starting an argument that begins with whitespace. */ + @\n continue; @[,)] { if (at_directive_argc >= AT_DIRECTIVE_ARGC_MAX) @@ -133,17 +131,20 @@ static void fail_for_invalid_at (char const *at); } } - @.? { fail_for_invalid_at (yytext); } + @.? fail_for_invalid_at (yytext); } -{ - [ \t\r\n] + +{ + [ \t\r\n] continue; . { yyless (0); BEGIN SC_AT_DIRECTIVE_ARGS; } } -{ + +{ <> { - fatal (_("unclosed %s directive in skeleton"), at_directive_argv[0]); + complain (fatal, _("unclosed %s directive in skeleton"), + at_directive_argv[0]); } } @@ -175,99 +176,103 @@ skel_scanner_free (void) yylex_destroy (); } -static -void at_directive_perform (int at_directive_argc, - char *at_directive_argv[], - char **outnamep, int *out_linenop) +static void +at_directive_perform (int at_directive_argc, + char *at_directive_argv[], + char **outnamep, int *out_linenop) { - if (0 == strcmp (at_directive_argv[0], "@basename")) + if (STREQ (at_directive_argv[0], "@basename")) { if (at_directive_argc > 2) fail_for_at_directive_too_many_args (at_directive_argv[0]); fputs (last_component (at_directive_argv[1]), yyout); } - else if (0 == strcmp (at_directive_argv[0], "@warn") - || 0 == strcmp (at_directive_argv[0], "@complain") - || 0 == strcmp (at_directive_argv[0], "@fatal")) + else if (STREQ (at_directive_argv[0], "@warn") + || STREQ (at_directive_argv[0], "@complain") + || STREQ (at_directive_argv[0], "@fatal")) { - void (*func)(char const *, ...); + warnings complaint_flag; switch (at_directive_argv[0][1]) { - case 'w': func = warn; break; - case 'c': func = complain; break; - case 'f': func = fatal; break; - default: aver (false); break; + case 'w': complaint_flag = Wother; break; + case 'c': complaint_flag = complaint; break; + case 'f': complaint_flag = fatal; break; + default: aver (false); break; } switch (at_directive_argc) { case 2: - func (_(at_directive_argv[1])); + complain (complaint_flag, "%s", _(at_directive_argv[1])); break; case 3: - func (_(at_directive_argv[1]), at_directive_argv[2]); + complain (complaint_flag, _(at_directive_argv[1]), + at_directive_argv[2]); break; case 4: - func (_(at_directive_argv[1]), at_directive_argv[2], - at_directive_argv[3]); + complain (complaint_flag, _(at_directive_argv[1]), + at_directive_argv[2], at_directive_argv[3]); break; case 5: - func (_(at_directive_argv[1]), at_directive_argv[2], - at_directive_argv[3], at_directive_argv[4]); + complain (complaint_flag, _(at_directive_argv[1]), + at_directive_argv[2], at_directive_argv[3], + at_directive_argv[4]); break; case 6: - func (_(at_directive_argv[1]), at_directive_argv[2], - at_directive_argv[3], at_directive_argv[4], - at_directive_argv[5]); + complain (complaint_flag, _(at_directive_argv[1]), + at_directive_argv[2], at_directive_argv[3], + at_directive_argv[4], at_directive_argv[5]); break; default: fail_for_at_directive_too_many_args (at_directive_argv[0]); break; } } - else if (0 == strcmp (at_directive_argv[0], "@warn_at") - || 0 == strcmp (at_directive_argv[0], "@complain_at") - || 0 == strcmp (at_directive_argv[0], "@fatal_at")) + else if (STREQ (at_directive_argv[0], "@warn_at") + || STREQ (at_directive_argv[0], "@complain_at") + || STREQ (at_directive_argv[0], "@fatal_at")) { - void (*func)(location, char const *, ...); + warnings complaint_flag; location loc; if (at_directive_argc < 4) fail_for_at_directive_too_few_args (at_directive_argv[0]); switch (at_directive_argv[0][1]) { - case 'w': func = warn_at; break; - case 'c': func = complain_at; break; - case 'f': func = fatal_at; break; - default: aver (false); break; + case 'w': complaint_flag = Wother; break; + case 'c': complaint_flag = complaint; break; + case 'f': complaint_flag = fatal; break; + default: aver (false); break; } boundary_set_from_string (&loc.start, at_directive_argv[1]); boundary_set_from_string (&loc.end, at_directive_argv[2]); switch (at_directive_argc) { case 4: - func (loc, _(at_directive_argv[3])); + complain_at (loc, complaint_flag, "%s", _(at_directive_argv[3])); break; case 5: - func (loc, _(at_directive_argv[3]), at_directive_argv[4]); + complain_at (loc, complaint_flag, _(at_directive_argv[3]), + at_directive_argv[4]); break; case 6: - func (loc, _(at_directive_argv[3]), at_directive_argv[4], - at_directive_argv[5]); + complain_at (loc, complaint_flag, _(at_directive_argv[3]), + at_directive_argv[4], at_directive_argv[5]); break; case 7: - func (loc, _(at_directive_argv[3]), at_directive_argv[4], - at_directive_argv[5], at_directive_argv[6]); + complain_at (loc, complaint_flag, _(at_directive_argv[3]), + at_directive_argv[4], at_directive_argv[5], + at_directive_argv[6]); break; case 8: - func (loc, _(at_directive_argv[3]), at_directive_argv[4], - at_directive_argv[5], at_directive_argv[6], - at_directive_argv[7]); + complain_at (loc, complaint_flag, _(at_directive_argv[3]), + at_directive_argv[4], at_directive_argv[5], + at_directive_argv[6], at_directive_argv[7]); break; default: fail_for_at_directive_too_many_args (at_directive_argv[0]); break; } } - else if (0 == strcmp (at_directive_argv[0], "@output")) + else if (STREQ (at_directive_argv[0], "@output")) { if (at_directive_argc > 2) fail_for_at_directive_too_many_args (at_directive_argv[0]); @@ -277,7 +282,7 @@ void at_directive_perform (int at_directive_argc, xfclose (yyout); } *outnamep = xstrdup (at_directive_argv[1]); - output_file_name_check (*outnamep); + output_file_name_check (outnamep); yyout = xfopen (*outnamep, "w"); *out_linenop = 1; } @@ -288,19 +293,19 @@ void at_directive_perform (int at_directive_argc, static void fail_for_at_directive_too_few_args (char const *at_directive_name) { - fatal (_("too few arguments for %s directive in skeleton"), + complain (fatal, _("too few arguments for %s directive in skeleton"), at_directive_name); } static void fail_for_at_directive_too_many_args (char const *at_directive_name) { - fatal (_("too many arguments for %s directive in skeleton"), - at_directive_name); + complain (fatal, _("too many arguments for %s directive in skeleton"), + at_directive_name); } static void fail_for_invalid_at (char const *at) { - fatal ("invalid @ in skeleton: %s", at); + complain (fatal, "invalid @ in skeleton: %s", at); }