diff options
Diffstat (limited to 'gcc/f/str.c')
-rw-r--r-- | gcc/f/str.c | 217 |
1 files changed, 217 insertions, 0 deletions
diff --git a/gcc/f/str.c b/gcc/f/str.c new file mode 100644 index 00000000000..3fa6b86200e --- /dev/null +++ b/gcc/f/str.c @@ -0,0 +1,217 @@ +/* str.c -- Implementation File (module.c template V1.0) + Copyright (C) 1995 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. + + Related Modules: + None + + Description: + Handles recognition of keywords. + + Modifications: +*/ + +/* Include files. */ + +#include "proj.h" +#include "src.h" +#include "str.h" +#include "lex.h" + +/* Externals defined here. */ + + +/* Simple definitions and enumerations. */ + + +/* Internal typedefs. */ + + +/* Private include files. */ + + +/* Internal structure definitions. */ + + +/* Static objects accessed by functions in this module. */ + + +/* Static functions (internal). */ + + +/* Internal macros. */ + + +/* ffestr_first -- Look up the first names in a statement + + ffestrFirst kw; + ffelexToken t; + kw = ffestr_first(t); + + Returns FFESTR_firstNone if no matches, else FFESTR_firstXYZ if the + NAME or NAMES token matches XYZ. t must be a NAME or NAMES token or this + routine will crash. + + This routine's code is actually written by a utility called FINI, itself + written specifically for the Gnu Fortran project. FINI takes an input + file, in this case "ffe_first.fini", consisting primarily of a + list of statements (ASSIGN, IF, DO, DOWHILE), and outputs a C file, + "str-1t.j", that contains the definition of the + ffestr_first function. We #include that file here. + + 30-Jan-90 JCB 2.0 + Updated for Fortran 90. +*/ + +#ifndef MAKING_DEPENDENCIES +#include "str-1t.j" +#endif +/* ffestr_format -- Look up format names in a statement + + ffestrFormat kw; + ffelexToken t; + kw = ffestr_format(t); + + Returns FFESTR_formatNone if no matches, else FFESTR_formatXYZ if the + NAME or NAMES token matches XYZ. t must be a NAME or NAMES token or this + routine will crash. + + This routine's code is actually written by a utility called FINI, itself + written specifically for the Gnu Fortran project. FINI takes an input + file, in this case "ffe_format.fini", consisting primarily of a + list of format keywords (I, F, TL, TR), and outputs a C file, + "str-fo.j", that contains the definition of the + ffestr_format function. We #include that file here. + +*/ + +#ifndef MAKING_DEPENDENCIES +#include "str-fo.j" +#endif +/* ffestr_genio -- Look up genio names in a statement + + ffestrGenio kw; + ffelexToken t; + kw = ffestr_genio(t); + + Returns FFESTR_genioNone if no matches, else FFESTR_genioXYZ if the + NAME or NAMES token matches XYZ. t must be a NAME or NAMES token or this + routine will crash. + + This routine's code is actually written by a utility called FINI, itself + written specifically for the Gnu Fortran project. FINI takes an input + file, in this case "ffe_genio.fini", consisting primarily of a + list of statement keywords (TO, FUNCTION), and outputs a C file, + "str-io.j", that contains the definition of the + ffestr_genio function. We #include that file here. + +*/ + +#ifndef MAKING_DEPENDENCIES +#include "str-io.j" +#endif +/* ffestr_inquire -- Look up inquire names in a statement + + ffestrInquire kw; + ffelexToken t; + kw = ffestr_inquire(t); + + Returns FFESTR_inquireNone if no matches, else FFESTR_inquireXYZ if the + NAME or NAMES token matches XYZ. t must be a NAME or NAMES token or this + routine will crash. + + This routine's code is actually written by a utility called FINI, itself + written specifically for the Gnu Fortran project. FINI takes an input + file, in this case "ffe_inquire.fini", consisting primarily of a + list of statement keywords (TO, FUNCTION), and outputs a C file, + "str-nq.j", that contains the definition of the + ffestr_inquire function. We #include that file here. + +*/ + +#ifndef MAKING_DEPENDENCIES +#include "str-nq.j" +#endif +/* ffestr_open -- Look up open names in a statement + + ffestrOpen kw; + ffelexToken t; + kw = ffestr_open(t); + + Returns FFESTR_openNone if no matches, else FFESTR_openXYZ if the + NAME or NAMES token matches XYZ. t must be a NAME or NAMES token or this + routine will crash. + + This routine's code is actually written by a utility called FINI, itself + written specifically for the Gnu Fortran project. FINI takes an input + file, in this case "ffe_open.fini", consisting primarily of a + list of statement keywords (TO, FUNCTION), and outputs a C file, + "str-op.j", that contains the definition of the + ffestr_open function. We #include that file here. + +*/ + +#ifndef MAKING_DEPENDENCIES +#include "str-op.j" +#endif +/* ffestr_other -- Look up other names in a statement + + ffestrOther kw; + ffelexToken t; + kw = ffestr_other(t); + + Returns FFESTR_otherNone if no matches, else FFESTR_otherXYZ if the + NAME or NAMES token matches XYZ. t must be a NAME or NAMES token or this + routine will crash. + + This routine's code is actually written by a utility called FINI, itself + written specifically for the Gnu Fortran project. FINI takes an input + file, in this case "ffe_other.fini", consisting primarily of a + list of statement keywords (TO, FUNCTION), and outputs a C file, + "str-ot.j", that contains the definition of the + ffestr_other function. We #include that file here. + +*/ + +#ifndef MAKING_DEPENDENCIES +#include "str-ot.j" +#endif +/* ffestr_second -- Look up the second name in a statement + + ffestrSecond kw; + ffelexToken t; + kw = ffestr_second(t); + + Returns FFESTR_secondNone if no matches, else FFESTR_secondXYZ if the + NAME or NAMES token matches XYZ. t must be a NAME or NAMES token or this + routine will crash. + + This routine's code is actually written by a utility called FINI, itself + written specifically for the Gnu Fortran project. FINI takes an input + file, in this case "ffe_second.fini", consisting primarily of a + list of statement keywords (TO, FUNCTION), and outputs a C file, + "str-2t.j", that contains the definition of the + ffestr_second function. We #include that file here. + +*/ + +#ifndef MAKING_DEPENDENCIES +#include "str-2t.j" +#endif |