⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 symbol.def

📁 gcc-2.95.3 Linux下最常用的C编译器
💻 DEF
📖 第 1 页 / 共 2 页
字号:
/* Definitions and documentations for attributes used in GNU F77 compiler   Copyright (C) 1995, 1996 Free Software Foundation, Inc.   Contributed by James Craig Burley.This file is part of GNU Fortran.GNU Fortran is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe 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 ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU Fortran; see the file COPYING.  If not, write tothe Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA02111-1307, USA.  *//* "How g77 learns about symbols"   There are three primary things in a symbol that g77 uses to keep   track of what it has learned about that symbol:   1.  The state   2.  The attributes   3.  The info   State, attributes, and info (see f-info* files) all start out with   "NONE" fields when a symbol is first created.   In a PROGRAM or BLOCK DATA program unit, info where cannot be DUMMY   or RESULT.  Any combinations including those possibilities are not   considered possible in such program units.   As soon as a symbol is created, it _must_ have its state changed to   SEEN, UNCERTAIN, or UNDERSTOOD.   If SEEN, some info might be set, such as the type info (as in when   the TYPE attribute is present) or kind/where info.   If UNCERTAIN, the permitted combinations of attributes and info are   listed below.  Only the attributes ACTUALARG, ADJUSTABLE, ANYLEN, ARRAY,   DUMMY, EXTERNAL, SFARG, and TYPE are permitted.  (All these attributes   are contrasted to each attribute below, even though some combinations   wouldn't be permitted in SEEN state either.)  Note that DUMMY and   RESULT are not permitted in a PROGRAM/BLOCKDATA program unit, which   results in some of the combinations below not occurring (not UNCERTAIN,   but UNDERSTOOD).   ANYLEN|TYPE & ~(ACTUALARG|ADJUSTABLE|ARRAY|DUMMY|EXTERNAL|SFARG):	ENTITY/DUMMY, ENTITY/RESULT, FUNCTION/INTRINSIC.   ARRAY & ~(ACTUALARG|ANYLEN|DUMMY|EXTERNAL|SFARG|TYPE):	ENTITY/DUMMY, ENTITY/LOCAL.   ARRAY|TYPE & ~(ACTUALARG|ANYLEN|DUMMY|EXTERNAL|SFARG):	ENTITY/DUMMY, ENTITY/LOCAL.   DUMMY & ~(ACTUALARG|ADJUSTABLE|ANYLEN|ARRAY|EXTERNAL|SFARG|TYPE):	ENTITY/DUMMY, FUNCTION/DUMMY, SUBROUTINE/DUMMY.   DUMMY|TYPE & ~(ACTUALARG|ADJUSTABLE|ANYLEN|ARRAY|EXTERNAL|SFARG):	ENTITY/DUMMY, FUNCTION/DUMMY.   EXTERNAL & ~(ACTUALARG|ADJUSTABLE|ANYLEN|ARRAY|DUMMY|SFARG|TYPE):	FUNCTION/DUMMY, FUNCTION/GLOBAL, SUBROUTINE/DUMMY,	SUBROUTINE/GLOBAL, BLOCKDATA/GLOBAL.   EXTERNAL|ACTUALARG & ~(ADJUSTABLE|ANYLEN|ARRAY|DUMMY|SFARG|TYPE):	FUNCTION/GLOBAL, SUBROUTINE/GLOBAL.   EXTERNAL|DUMMY & ~(ACTUALARG|ADJUSTABLE|ANYLEN|ARRAY|SFARG|TYPE):	FUNCTION/DUMMY, SUBROUTINE/DUMMY.   EXTERNAL|TYPE & ~(ACTUALARG|ADJUSTABLE|ANYLEN|ARRAY|DUMMY|SFARG):	FUNCTION/DUMMY, FUNCTION/GLOBAL.   SFARG & ~(ACTUALARG|ADJUSTABLE|ANYLEN|ARRAY|DUMMY|EXTERNAL|TYPE):	ENTITY/DUMMY, ENTITY/LOCAL.   SFARG|TYPE & ~(ACTUALARG|ADJUSTABLE|ANYLEN|ARRAY|DUMMY|EXTERNAL):	ENTITY/DUMMY, ENTITY/LOCAL.   TYPE & ~(ACTUALARG|ANYLEN|ARRAY|DUMMY|EXTERNAL|SFARG):	ENTITY/DUMMY, ENTITY/LOCAL, ENTITY/RESULT, FUNCTION/DUMMY,	FUNCTION/GLOBAL, FUNCTION/INTRINSIC.   If UNDERSTOOD, the attributes are no longer considered, and the info   field is considered to be as fully filled in as possible by analyzing   a single program unit.   Each of the attributes (used only for SEEN/UNCERTAIN states) is   defined and described below.  In many cases, a symbol starts out as   SEEN and has attributes set as it is seen in various contexts prior   to the first executable statement being seen (the "exec transition").   Once that happens, either it becomes immediately UNDERSTOOD and all   its info filled in, or it becomes UNCERTAIN and its info only partially   filled in until it becomes UNDERSTOOD.  While UNCERTAIN, only a   subset of attributes are possible/important.   Not all symbols reach the UNDERSTOOD state, and in some cases symbols   go immediately from NONE to the UNDERSTOOD or even UNCERTAIN state.   For example, given "PROGRAM FOO", everything is known about the name   "FOO", so it becomes immediately UNDERSTOOD.   Also, there are multiple name spaces, and not all attributes are   possible/permitted in all name spaces.   The only attributes permitted in the global name space are:   ANY, CBLOCK, SAVECBLOCK.   The only attributes permitted in the local name space are:   ANY, ACTUALARG, ADJUSTABLE, ADJUSTS, ANYLEN, ANYSIZE, ARRAY, COMMON,   DUMMY, EQUIV, EXTERNAL, INIT, INTRINSIC, NAMELIST, RESULT, SAVE, SFARG,   SFUNC, TYPE.   In the stmt-func name space, no attributes are used, just the states.*//* Actual argument.  Always accompanied by EXTERNAL.   Context is a name used as an actual argument passed to a procedure   other than a statement function.   Valid in UNCERTAIN state and local name space only.   This attribute is used only to flag the fact that an EXTERNAL'ed name   has been seen as an actual argument, and therefore cannot be   discovered later to be a DUMMY argument (via an ENTRY statement).   If DUMMY + EXTERNAL already, it is permitted to see the name   as an actual argument, but ACTUALARG is not added as an attribute since   that fact does not improve knowledge about the name.  Hence it is not   permitted to transition ACTUALARG + EXTERNAL += DUMMY, and the   transition DUMMY + EXTERNAL += ACTUALARG is not actually done.   Cannot be combined with: ANYLEN, ARRAY, DUMMY, SFARG, TYPE.   Can be combined with: ACTUALARG, ANY, EXTERNAL.   Unrelated: ADJUSTABLE, ADJUSTS, ANYSIZE, CBLOCK, COMMON, EQUIV, INIT,   INTRINSIC, NAMELIST, RESULT, SAVE, SAVECBLOCK, SFUNC.*/DEFATTR (FFESYMBOL_attrACTUALARG, FFESYMBOL_attrsACTUALARG, "ACTUALARG")#ifndef FFESYMBOL_attrsACTUALARG#define FFESYMBOL_attrsACTUALARG ((ffesymbolAttrs) 1 << FFESYMBOL_attrACTUALARG)#endif/* Has adjustable dimension(s).  Always accompanied by ARRAY.   Context is an ARRAY-attributed name with an adjustable dimension (at   least one dimension containing a variable reference).   Valid in SEEN state and local name space only.   Cannot be combined with: ADJUSTABLE, ADJUSTS, COMMON, EQUIV, EXTERNAL,   NAMELIST, INIT, INTRINSIC, RESULT, SAVE, SFARG, SFUNC.   Can be combined with: ANY, ANYLEN, ANYSIZE, ARRAY, TYPE.   Must be combined with: DUMMY.   Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.*/DEFATTR (FFESYMBOL_attrADJUSTABLE, FFESYMBOL_attrsADJUSTABLE, "ADJUSTABLE")#ifndef FFESYMBOL_attrsADJUSTABLE#define FFESYMBOL_attrsADJUSTABLE ((ffesymbolAttrs) 1 << FFESYMBOL_attrADJUSTABLE)#endif/* Adjusts an array.   Context is an expression in an array declarator, such as in a   DIMENSION, COMMON, or type-specification statement.   Valid in SEEN state and local name space only.   Cannot be combined with: ADJUSTABLE, ANYLEN, ANYSIZE, ARRAY,   EXTERNAL, INTRINSIC, RESULT, SAVE, SFUNC.   Can be combined with: ADJUSTS, ANY, COMMON, DUMMY, EQUIV, INIT,   NAMELIST, SFARG, TYPE.   Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.*/DEFATTR (FFESYMBOL_attrADJUSTS, FFESYMBOL_attrsADJUSTS, "ADJUSTS")#ifndef FFESYMBOL_attrsADJUSTS#define FFESYMBOL_attrsADJUSTS ((ffesymbolAttrs) 1 << FFESYMBOL_attrADJUSTS)#endif/* Can be anything now, diagnostic has been issued at least once.   Valid in UNDERSTOOD state only.  Valid in any name space.   Can be combined with anything.*/DEFATTR (FFESYMBOL_attrANY, FFESYMBOL_attrsANY, "ANY")#ifndef FFESYMBOL_attrsANY#define FFESYMBOL_attrsANY ((ffesymbolAttrs) 1 << FFESYMBOL_attrANY)#endif/* Assumed (any) length.  Always accompanied by TYPE.   Context is a name listed in a CHARACTER statement and given a length   specification of (*).   Valid in SEEN and UNCERTAIN states.  Valid in local name space only.   In SEEN state, attributes marked below with "=" are unrelated.   In UNCERTAIN state, attributes marked below with "+" are unrelated,   attributes marked below with "-" cannot be combined with ANYLEN,   and attributes marked below with "!" transition to state UNDERSTOOD   instead of acquiring the new attribute.  Any other subsequent mentioning   of the name transitions to state UNDERSTOOD.  UNCERTAIN state is not   valid for this attribute in PROGRAM/BLOCKDATA program unit.   Cannot be combined with: ACTUALARG=, ADJUSTS+, ANYLEN, COMMON+, EQUIV+,   EXTERNAL, INIT+, INTRINSIC+, NAMELIST+, SAVE+, SFARG, SFUNC+.   Can be combined with: ADJUSTABLE+, ANY, ANYSIZE+, ARRAY-, DUMMY!, RESULT+,   TYPE.   Unrelated: CBLOCK, SAVECBLOCK.   In PROGRAM/BLOCKDATA, cannot be combined with ARRAY.*/DEFATTR (FFESYMBOL_attrANYLEN, FFESYMBOL_attrsANYLEN, "ANYLEN")#ifndef FFESYMBOL_attrsANYLEN#define FFESYMBOL_attrsANYLEN ((ffesymbolAttrs) 1 << FFESYMBOL_attrANYLEN)#endif/* Has assumed (any) size.  Always accompanied by ARRAY.   Context is an ARRAY-attributed name with its last dimension having   an upper bound of "*".   Valid in SEEN state and local name space only.   Cannot be combined with: ADJUSTS, ANYSIZE, COMMON, EQUIV, EXTERNAL,   NAMELIST, INIT, INTRINSIC, RESULT, SAVE, SFARG, SFUNC.   Can be combined with: ADJUSTABLE, ANY, ANYLEN, ARRAY, TYPE.   Must be combined with: DUMMY.   Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.*/DEFATTR (FFESYMBOL_attrANYSIZE, FFESYMBOL_attrsANYSIZE, "ANYSIZE")#ifndef FFESYMBOL_attrsANYSIZE#define FFESYMBOL_attrsANYSIZE ((ffesymbolAttrs) 1 << FFESYMBOL_attrANYSIZE)#endif/* Array.   Context is a name followed by an array declarator, such as in a   type-statement-decl, a DIMENSION statement, or a COMMON statement.   Valid in SEEN and UNCERTAIN states.  Valid in local name space only.   In SEEN state, attributes marked below with "=" are unrelated.   In UNCERTAIN state, attributes marked below with "+" are unrelated,   attributes marked below with "-" cannot be combined with ARRAY,   and attributes marked below with "!" transition to state UNDERSTOOD   instead of acquiring the new attribute.  Any other subsequent mentioning   of the name transitions to state UNDERSTOOD.  UNCERTAIN state is not   valid for this attribute in PROGRAM/BLOCKDATA program unit.   Cannot be combined with: ACTUALARG=, ADJUSTS+, ARRAY, EXTERNAL,   INTRINSIC+, RESULT+, SFARG, SFUNC+.   Can be combined with: ADJUSTABLE+, ANY, ANYLEN-, ANYSIZE+, COMMON+,   DUMMY!, EQUIV+, INIT+, NAMELIST+, SAVE+, TYPE.   Unrelated: CBLOCK, SAVECBLOCK.   In PROGRAM/BLOCKDATA, cannot be combined with ANYLEN.   Cannot follow INIT.*/DEFATTR (FFESYMBOL_attrARRAY, FFESYMBOL_attrsARRAY, "ARRAY")#ifndef FFESYMBOL_attrsARRAY#define FFESYMBOL_attrsARRAY ((ffesymbolAttrs) 1 << FFESYMBOL_attrARRAY)#endif/* COMMON block.   Context is a name enclosed in slashes in a COMMON statement.   Valid in SEEN state and global name space only.   Cannot be combined with:   Can be combined with: CBLOCK, SAVECBLOCK.   Unrelated: ACTUALARG, ADJUSTABLE, ADJUSTS, ANY, ANYLEN, ANYSIZE,   ARRAY, COMMON, DUMMY, EQUIV, EXTERNAL, INIT, INTRINSIC, NAMELIST,   RESULT, SAVE, SFARG, SFUNC, TYPE.*/DEFATTR (FFESYMBOL_attrCBLOCK, FFESYMBOL_attrsCBLOCK, "CBLOCK")#ifndef FFESYMBOL_attrsCBLOCK#define FFESYMBOL_attrsCBLOCK ((ffesymbolAttrs) 1 << FFESYMBOL_attrCBLOCK)#endif/* Placed in COMMON.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -