From: Jeff Law Date: Thu, 28 Aug 1997 03:21:33 +0000 (-0600) Subject: New file in g77 front end. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=73624c403d6bc189395af0c8b7c47c0262d38ca0;p=gcc.git New file in g77 front end. From-SVN: r14986 --- diff --git a/gcc/f/ansify.c b/gcc/f/ansify.c new file mode 100644 index 00000000000..c73cc42c856 --- /dev/null +++ b/gcc/f/ansify.c @@ -0,0 +1,208 @@ +/* ansify.c + Copyright (C) 1997 Free Software Foundation, Inc. + Contributed by James Craig Burley (burley@gnu.ai.mit.edu). + +This file is part of GNU Fortran. + +GNU Fortran is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Fortran is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Fortran; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. */ + +/* From f/proj.h, which uses #error -- not all C compilers + support that, and we want *this* program to be compilable + by pretty much any C compiler. */ + +#include "assert.j" /* Use gcc's assert.h. */ +#include +#include +#include +#include + +typedef enum + { +#if !defined(false) || !defined(true) + false = 0, true = 1, +#endif +#if !defined(FALSE) || !defined(TRUE) + FALSE = 0, TRUE = 1, +#endif + Doggone_Trailing_Comma_Dont_Work = 1 + } bool; + +#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0])) + +#define die_unless(c) \ + do if (!(c)) \ + { \ + fprintf (stderr, "%s:%lu: " #c "\n", argv[1], lineno); \ + die (); \ + } \ + while(0) + +static void +die () +{ + exit (1); +} + +int +main(int argc, char **argv) +{ + int c; + static unsigned long lineno = 1; + + die_unless (argc == 2); + + printf ("\ +/* This file is automatically generated from `%s',\n\ + which you should modify instead. */\n\ +# 1 \"%s\"\n\ +", + argv[1], argv[1]); + + while ((c = getchar ()) != EOF) + { + switch (c) + { + default: + putchar (c); + break; + + case '\n': + ++lineno; + putchar (c); + break; + + case '"': + putchar (c); + for (;;) + { + c = getchar (); + die_unless (c != EOF); + switch (c) + { + case '"': + putchar (c); + goto next_char; + + case '\n': + putchar ('\\'); + putchar ('n'); + putchar ('\\'); + putchar ('\n'); + ++lineno; + break; + + case '\\': + putchar (c); + c = getchar (); + die_unless (c != EOF); + putchar (c); + if (c == '\n') + ++lineno; + break; + + default: + putchar (c); + break; + } + } + break; + + case '\'': + putchar (c); + for (;;) + { + c = getchar (); + die_unless (c != EOF); + switch (c) + { + case '\'': + putchar (c); + goto next_char; + + case '\n': + putchar ('\\'); + putchar ('n'); + putchar ('\\'); + putchar ('\n'); + ++lineno; + break; + + case '\\': + putchar (c); + c = getchar (); + die_unless (c != EOF); + putchar (c); + if (c == '\n') + ++lineno; + break; + + default: + putchar (c); + break; + } + } + break; + + case '/': + putchar (c); + c = getchar (); + putchar (c); + if (c != '*') + break; + for (;;) + { + c = getchar (); + die_unless (c != EOF); + + switch (c) + { + case '\n': + ++lineno; + putchar (c); + break; + + case '*': + c = getchar (); + die_unless (c != EOF); + if (c == '/') + { + putchar ('*'); + putchar ('/'); + goto next_char; + } + if (c == '\n') + { + ++lineno; + putchar (c); + } + break; + + default: + /* Don't bother outputting content of comments. */ + break; + } + } + break; + } + + next_char: + ; + } + + die_unless (c == EOF); + + return 0; +}