diff options
author | obrien <obrien@FreeBSD.org> | 1999-08-26 09:30:50 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 1999-08-26 09:30:50 +0000 |
commit | 0bedf4fb30066e5e1d4342a1d3914dae7d37cba7 (patch) | |
tree | 68d8110b41afd0ebbf39167b1a4918eea667a7c5 /contrib/gcc/f/expr.h | |
parent | d4db5fb866b7ad5216abd5047774a3973b9901a9 (diff) | |
download | FreeBSD-src-0bedf4fb30066e5e1d4342a1d3914dae7d37cba7.zip FreeBSD-src-0bedf4fb30066e5e1d4342a1d3914dae7d37cba7.tar.gz |
Virgin import of gcc from EGCS 1.1.2
Diffstat (limited to 'contrib/gcc/f/expr.h')
-rw-r--r-- | contrib/gcc/f/expr.h | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/contrib/gcc/f/expr.h b/contrib/gcc/f/expr.h new file mode 100644 index 0000000..04143e6 --- /dev/null +++ b/contrib/gcc/f/expr.h @@ -0,0 +1,194 @@ +/* expr.h -- Public #include File (module.h template V1.0) + Copyright (C) 1995, 1996 Free Software Foundation, Inc. + Contributed by James Craig Burley (burley@gnu.org). + +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. + + Owning Modules: + expr.c + + Modifications: +*/ + +/* Allow multiple inclusion to work. */ + +#ifndef _H_f_expr +#define _H_f_expr + +/* Simple definitions and enumerations. */ + +typedef enum + { + FFEEXPR_contextLET, + FFEEXPR_contextASSIGN, + FFEEXPR_contextIOLIST, + FFEEXPR_contextPARAMETER, + FFEEXPR_contextSUBROUTINEREF, + FFEEXPR_contextDATA, + FFEEXPR_contextIF, + FFEEXPR_contextARITHIF, + FFEEXPR_contextDO, + FFEEXPR_contextDOWHILE, + FFEEXPR_contextFORMAT, + FFEEXPR_contextAGOTO, + FFEEXPR_contextCGOTO, + FFEEXPR_contextCHARACTERSIZE, + FFEEXPR_contextEQUIVALENCE, + FFEEXPR_contextSTOP, + FFEEXPR_contextRETURN, + FFEEXPR_contextSFUNCDEF, + FFEEXPR_contextINCLUDE, + FFEEXPR_contextWHERE, + FFEEXPR_contextSELECTCASE, + FFEEXPR_contextCASE, + FFEEXPR_contextDIMLIST, + FFEEXPR_contextDIMLISTCOMMON, /* Dim list in COMMON stmt. */ + FFEEXPR_contextFILEASSOC, /* ASSOCIATEVARIABLE=. */ + FFEEXPR_contextFILEINT, /* IOSTAT=. */ + FFEEXPR_contextFILEDFINT, /* NEXTREC=. */ + FFEEXPR_contextFILELOG, /* NAMED=. */ + FFEEXPR_contextFILENUM, /* Numerical expression. */ + FFEEXPR_contextFILECHAR, /* Character expression. */ + FFEEXPR_contextFILENUMCHAR, /* READ KEYxyz=. */ + FFEEXPR_contextFILEDFCHAR, /* Default kind character expression. */ + FFEEXPR_contextFILEKEY, /* OPEN KEY=. */ + FFEEXPR_contextFILEEXTFUNC, /* USEROPEN=. */ + FFEEXPR_contextFILEUNIT, /* READ/WRITE UNIT=. */ + FFEEXPR_contextFILEUNIT_DF, /* DEFINE FILE unit (no "(" after it). */ + FFEEXPR_contextFILEFORMATNML, /* [FMT=] or [NML=]. */ + FFEEXPR_contextFILEFORMAT, /* FMT=. */ + FFEEXPR_contextFILENAMELIST,/* NML=. */ + FFEEXPR_contextFILENUMAMBIG,/* BACKSPACE, ENDFILE, REWIND, UNLOCK... + where at e.g. BACKSPACE(, if COMMA seen + before ), it is ok. */ + FFEEXPR_contextFILEUNITAMBIG, /* READ(, if COMMA seen before ), ok. */ + FFEEXPR_contextFILEVXTCODE, /* ENCODE/DECODE third arg (scalar/array). */ + FFEEXPR_contextALLOCATE, /* ALLOCATE objects (weird). */ + FFEEXPR_contextDEALLOCATE, /* DEALLOCATE objects (weird). */ + FFEEXPR_contextHEAPSTAT, /* ALLOCATE/DEALLOCATE STAT= variable. */ + FFEEXPR_contextKINDTYPE, /* KIND=. */ + FFEEXPR_contextINITVAL, /* R426 =initialization-expr. */ + FFEEXPR_contextNULLIFY, /* Pointer names only (F90) or pointers. */ + FFEEXPR_contextIOLISTDF, /* IOLIST w/internal file (V112 9-14 30,31). */ + FFEEXPR_contextINDEX_, /* Element dimension or substring value. */ + FFEEXPR_contextEQVINDEX_, /* EQUIVALENCE element dimension. */ + FFEEXPR_contextDATAIMPDOINDEX_, /* INDEX in DATAIMPDO context. */ + FFEEXPR_contextIMPDOITEM_, + FFEEXPR_contextIMPDOITEMDF_,/* to ...ITEM_ as IOLISTDF is to IOLIST. */ + FFEEXPR_contextIMPDOCTRL_, + FFEEXPR_contextDATAIMPDOITEM_, + FFEEXPR_contextDATAIMPDOCTRL_, + FFEEXPR_contextLOC_, + FFEEXPR_contextACTUALARG_, /* Actual arg to function or subroutine; + turns into ACTUALARGEXPR_ if tokens not + NAME (CLOSE_PAREN/COMMA) or PERCENT.... */ + FFEEXPR_contextACTUALARGEXPR_, /* Like LET but disallow CHAR*(*) + concats. */ + FFEEXPR_contextINDEXORACTUALARG_, /* "CHARACTER FOO; PRINT *,FOO(?". */ + FFEEXPR_contextINDEXORACTUALARGEXPR_, /* ? not NAME + (CLOSE_PAREN/COMMA). */ + FFEEXPR_contextSFUNCDEFINDEX_, /* INDEX_ within stmt-func def. */ + FFEEXPR_contextSFUNCDEFACTUALARG_, + FFEEXPR_contextSFUNCDEFACTUALARGEXPR_, + FFEEXPR_contextSFUNCDEFINDEXORACTUALARG_, + FFEEXPR_contextSFUNCDEFINDEXORACTUALARGEXPR_, + FFEEXPR_contextPAREN_, /* Rhs paren except in LET context. */ + FFEEXPR_contextPARENFILENUM_, /* Either PAREN or FILENUM context. */ + FFEEXPR_contextPARENFILEUNIT_, /* Either PAREN or FILEUNIT context. */ + FFEEXPR_context + } ffeexprContext; + +/* Typedefs. */ + + +/* Include files needed by this one. */ + +#include "bld.h" +#include "lex.h" +#include "malloc.h" + +/* Structure definitions. */ + +typedef ffelexHandler (*ffeexprCallback) (ffelexToken ft, ffebld expr, + ffelexToken t); + +/* Global objects accessed by users of this module. */ + + +/* Declare functions with prototypes. */ + +ffebld ffeexpr_collapse_convert (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_paren (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_uplus (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_uminus (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_not (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_add (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_subtract (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_multiply (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_divide (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_power (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_concatenate (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_lt (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_le (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_eq (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_ne (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_gt (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_ge (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_and (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_or (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_xor (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_eqv (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_neqv (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_symter (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_funcref (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_arrayref (ffebld expr, ffelexToken t); +ffebld ffeexpr_collapse_substr (ffebld expr, ffelexToken t); +ffebld ffeexpr_convert (ffebld source, ffelexToken source_token, + ffelexToken dest_token, ffeinfoBasictype bt, ffeinfoKindtype kt, + ffeinfoRank rk, ffetargetCharacterSize sz, + ffeexprContext context); +ffebld ffeexpr_convert_expr (ffebld source, ffelexToken source_token, + ffebld dest, ffelexToken dest_token, + ffeexprContext context); +ffebld ffeexpr_convert_to_sym (ffebld source, ffelexToken source_token, + ffesymbol dest, ffelexToken dest_token); +void ffeexpr_init_2 (void); +ffelexHandler ffeexpr_rhs (mallocPool pool, ffeexprContext context, + ffeexprCallback callback); +ffelexHandler ffeexpr_lhs (mallocPool pool, ffeexprContext context, + ffeexprCallback callback); +void ffeexpr_terminate_2 (void); +void ffeexpr_type_combine (ffeinfoBasictype *nbt, ffeinfoKindtype *nkt, + ffeinfoBasictype lbt, ffeinfoKindtype lkt, + ffeinfoBasictype rbt, ffeinfoKindtype rkt, + ffelexToken t); + +/* Define macros. */ + +#define ffeexpr_init_0() +#define ffeexpr_init_1() +#define ffeexpr_init_3() +#define ffeexpr_init_4() +#define ffeexpr_terminate_0() +#define ffeexpr_terminate_1() +#define ffeexpr_terminate_3() +#define ffeexpr_terminate_4() + +/* End of #include file. */ + +#endif |