1 /* stb.h -- Private #include File (module.h template V1.0) 2 Copyright (C) 1995, 1996 Free Software Foundation, Inc. 3 Contributed by James Craig Burley. 4 5 This file is part of GNU Fortran. 6 7 GNU Fortran is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 2, or (at your option) 10 any later version. 11 12 GNU Fortran is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with GNU Fortran; see the file COPYING. If not, write to 19 the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 20 02111-1307, USA. 21 22 Owning Modules: 23 stb.c 24 25 Modifications: 26 */ 27 28 /* Allow multiple inclusion to work. */ 29 30 #ifndef GCC_F_STB_H 31 #define GCC_F_STB_H 32 33 /* Simple definitions and enumerations. */ 34 35 36 /* Typedefs. */ 37 38 39 /* Include files needed by this one. */ 40 41 #include "bad.h" 42 #include "expr.h" 43 #include "lex.h" 44 #include "stp.h" 45 #include "str.h" 46 47 /* Structure definitions. */ 48 49 struct _ffestb_args_ 50 { 51 struct 52 { 53 const char *badname; 54 ffeTokenLength len; /* Length of "ENTRY/FUNCTION/SUBROUTINE". */ 55 bool is_subr; /* TRUE if SUBROUTINE or if ENTRY within 56 SUBROUTINE. */ 57 } 58 dummy; 59 struct 60 { 61 const char *badname; 62 ffeTokenLength len; /* Length of 63 "BACKSPACE/ENDFILE/REWIND/UNLOCK". */ 64 } 65 beru; 66 struct 67 { 68 ffeTokenLength len; /* Length of keyword including "END". */ 69 ffestrSecond second; /* Second keyword. */ 70 } 71 endxyz; 72 struct 73 { 74 ffestrSecond second; /* Second keyword. */ 75 } 76 elsexyz; 77 struct 78 { 79 ffeTokenLength len; /* Length of "STOP/PAUSE". */ 80 } 81 halt; 82 #if FFESTR_F90 83 struct 84 { 85 const char *badname; 86 ffeTokenLength len; /* Length of "ALLOCATE/DEALLOCATE". */ 87 ffeexprContext ctx; /* Either ALLOCATE or DEALLOCATE. */ 88 } 89 heap; 90 #endif 91 struct 92 { 93 const char *badname; 94 ffeTokenLength len; /* Length of 95 "EXTERNAL/INTENT/INTRINSIC/OPTIONAL/PUBLIC/ 96 PRIVATE". */ 97 } 98 varlist; 99 #if FFESTR_VXT 100 struct 101 { 102 const char *badname; 103 ffeTokenLength len; /* Length of "ENCODE/DECODE". */ 104 } 105 vxtcode; 106 #endif 107 #if FFESTR_F90 108 struct 109 { 110 const char *badname; 111 ffeTokenLength len; /* Length of "ALLOCATABLE/POINTER/TARGET". */ 112 } 113 dimlist; 114 #endif 115 struct 116 { 117 const char *badname; 118 ffeTokenLength len; /* Length of "DIMENSION/VIRTUAL". */ 119 } 120 R524; 121 struct 122 { 123 ffeTokenLength len; /* Length of first keyword. */ 124 ffestpType type; /* Type of declaration. */ 125 } 126 decl; 127 }; 128 129 /* Global objects accessed by users of this module. */ 130 131 extern struct _ffestb_args_ ffestb_args; 132 133 /* Declare functions with prototypes. */ 134 135 ffelexHandler ffestb_beru (ffelexToken t); 136 ffelexHandler ffestb_block (ffelexToken t); 137 ffelexHandler ffestb_blockdata (ffelexToken t); 138 ffelexHandler ffestb_decl_chartype (ffelexToken t); 139 ffelexHandler ffestb_construct (ffelexToken t); 140 ffelexHandler ffestb_decl_dbltype (ffelexToken t); 141 ffelexHandler ffestb_decl_double (ffelexToken t); 142 ffelexHandler ffestb_dimlist (ffelexToken t); 143 ffelexHandler ffestb_do (ffelexToken t); 144 ffelexHandler ffestb_dowhile (ffelexToken t); 145 ffelexHandler ffestb_dummy (ffelexToken t); 146 ffelexHandler ffestb_else (ffelexToken t); 147 ffelexHandler ffestb_elsexyz (ffelexToken t); 148 ffelexHandler ffestb_end (ffelexToken t); 149 ffelexHandler ffestb_endxyz (ffelexToken t); 150 ffelexHandler ffestb_decl_gentype (ffelexToken t); 151 ffelexHandler ffestb_goto (ffelexToken t); 152 ffelexHandler ffestb_halt (ffelexToken t); 153 #if FFESTR_F90 154 ffelexHandler ffestb_heap (ffelexToken t); 155 #endif 156 ffelexHandler ffestb_if (ffelexToken t); 157 ffelexHandler ffestb_let (ffelexToken t); 158 #if FFESTR_F90 159 ffelexHandler ffestb_module (ffelexToken t); 160 #endif 161 #if FFESTR_F90 162 ffelexHandler ffestb_decl_recursive (ffelexToken t); 163 #endif 164 #if FFESTR_F90 165 ffelexHandler ffestb_type (ffelexToken t); 166 #endif 167 #if FFESTR_F90 168 ffelexHandler ffestb_decl_typetype (ffelexToken t); 169 #endif 170 ffelexHandler ffestb_varlist (ffelexToken t); 171 #if FFESTR_VXT 172 ffelexHandler ffestb_vxtcode (ffelexToken t); 173 #endif 174 #if FFESTR_F90 175 ffelexHandler ffestb_where (ffelexToken t); 176 #endif 177 #if HARD_F90 178 ffelexHandler ffestb_R423B (ffelexToken t); 179 #endif 180 ffelexHandler ffestb_R522 (ffelexToken t); 181 ffelexHandler ffestb_R524 (ffelexToken t); 182 ffelexHandler ffestb_R528 (ffelexToken t); 183 ffelexHandler ffestb_R537 (ffelexToken t); 184 ffelexHandler ffestb_decl_R539 (ffelexToken t); 185 ffelexHandler ffestb_R542 (ffelexToken t); 186 ffelexHandler ffestb_R544 (ffelexToken t); 187 ffelexHandler ffestb_R547 (ffelexToken t); 188 #if FFESTR_F90 189 ffelexHandler ffestb_R624 (ffelexToken t); 190 #endif 191 ffelexHandler ffestb_R809 (ffelexToken t); 192 ffelexHandler ffestb_R810 (ffelexToken t); 193 ffelexHandler ffestb_R834 (ffelexToken t); 194 ffelexHandler ffestb_R835 (ffelexToken t); 195 ffelexHandler ffestb_R838 (ffelexToken t); 196 ffelexHandler ffestb_R840 (ffelexToken t); 197 ffelexHandler ffestb_R841 (ffelexToken t); 198 ffelexHandler ffestb_R904 (ffelexToken t); 199 ffelexHandler ffestb_R907 (ffelexToken t); 200 ffelexHandler ffestb_R909 (ffelexToken t); 201 ffelexHandler ffestb_R910 (ffelexToken t); 202 ffelexHandler ffestb_R911 (ffelexToken t); 203 ffelexHandler ffestb_R923 (ffelexToken t); 204 ffelexHandler ffestb_R1001 (ffelexToken t); 205 ffelexHandler ffestb_R1102 (ffelexToken t); 206 #if FFESTR_F90 207 ffelexHandler ffestb_R1107 (ffelexToken t); 208 #endif 209 #if FFESTR_F90 210 ffelexHandler ffestb_R1202 (ffelexToken t); 211 #endif 212 ffelexHandler ffestb_R1212 (ffelexToken t); 213 ffelexHandler ffestb_R1227 (ffelexToken t); 214 #if FFESTR_F90 215 ffelexHandler ffestb_R1228 (ffelexToken t); 216 #endif 217 ffelexHandler ffestb_R1229 (ffelexToken t); 218 ffelexHandler ffestb_S3P4 (ffelexToken t); 219 #if FFESTR_VXT 220 ffelexHandler ffestb_V003 (ffelexToken t); 221 ffelexHandler ffestb_V009 (ffelexToken t); 222 ffelexHandler ffestb_V012 (ffelexToken t); 223 #endif 224 ffelexHandler ffestb_V014 (ffelexToken t); 225 #if FFESTR_VXT 226 ffelexHandler ffestb_V016 (ffelexToken t); 227 ffelexHandler ffestb_V018 (ffelexToken t); 228 ffelexHandler ffestb_V019 (ffelexToken t); 229 #endif 230 ffelexHandler ffestb_V020 (ffelexToken t); 231 #if FFESTR_VXT 232 ffelexHandler ffestb_V021 (ffelexToken t); 233 ffelexHandler ffestb_V025 (ffelexToken t); 234 ffelexHandler ffestb_V026 (ffelexToken t); 235 #endif 236 ffelexHandler ffestb_V027 (ffelexToken t); 237 238 /* Define macros. */ 239 240 #define ffestb_init_0() 241 #define ffestb_init_1() 242 #define ffestb_init_2() 243 #define ffestb_init_3() 244 #define ffestb_init_4() 245 #define ffestb_terminate_0() 246 #define ffestb_terminate_1() 247 #define ffestb_terminate_2() 248 #define ffestb_terminate_3() 249 #define ffestb_terminate_4() 250 251 /* End of #include file. */ 252 253 #endif /* ! GCC_F_STB_H */ 254