home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / g77-0.5.15-src.tgz / tar.out / fsf / g77 / f / symbol.def < prev    next >
Text File  |  1996-09-28  |  22KB  |  654 lines

  1. /* Definitions and documentations for attributes used in GNU F77 compiler
  2.    Copyright (C) 1995 Free Software Foundation, Inc.
  3.    Contributed by James Craig Burley (burley@gnu.ai.mit.edu).
  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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  20.  
  21. /* "How g77 learns about symbols"
  22.  
  23.    There are three primary things in a symbol that g77 uses to keep
  24.    track of what it has learned about that symbol:
  25.  
  26.    1.  The state
  27.    2.  The attributes
  28.    3.  The info
  29.  
  30.    State, attributes, and info (see f-info* files) all start out with
  31.    "NONE" fields when a symbol is first created.
  32.  
  33.    In a PROGRAM or BLOCK DATA program unit, info where cannot be DUMMY
  34.    or RESULT.  Any combinations including those possibilities are not
  35.    considered possible in such program units.
  36.  
  37.    As soon as a symbol is created, it _must_ have its state changed to
  38.    SEEN, UNCERTAIN, or UNDERSTOOD.
  39.  
  40.    If SEEN, some info might be set, such as the type info (as in when
  41.    the TYPE attribute is present) or kind/where info.
  42.  
  43.    If UNCERTAIN, the permitted combinations of attributes and info are
  44.    listed below.  Only the attributes ACTUALARG, ANYLEN, ARRAY, DUMMY,
  45.    EXTERNAL, SFARG, and TYPE are permitted.  (All these attributes
  46.    are contrasted to each attribute below, even though some combinations
  47.    wouldn't be permitted in SEEN state either.)  Note that DUMMY and
  48.    RESULT are not permitted in a PROGRAM/BLOCKDATA program unit, which
  49.    results in some of the combinations below not occurring (not UNCERTAIN,
  50.    but UNDERSTOOD).
  51.  
  52.    ANYLEN + TYPE & ~(ACTUALARG + ARRAY + DUMMY + EXTERNAL + SFARG):
  53.     ENTITY/DUMMY, ENTITY/RESULT, FUNCTION/INTRINSIC.
  54.  
  55.    ARRAY & ~(ACTUALARG + ANYLEN + DUMMY + EXTERNAL + SFARG + TYPE):
  56.     ENTITY/DUMMY, ENTITY/LOCAL.
  57.  
  58.    ARRAY + TYPE & ~(ACTUALARG + ANYLEN + DUMMY + EXTERNAL + SFARG):
  59.     ENTITY/DUMMY, ENTITY/LOCAL.
  60.  
  61.    DUMMY & ~(ACTUALARG + ANYLEN + ARRAY + EXTERNAL + SFARG + TYPE):
  62.     ENTITY/DUMMY, FUNCTION/DUMMY, SUBROUTINE/DUMMY.
  63.  
  64.    DUMMY + TYPE & ~(ACTUALARG + ANYLEN + ARRAY + EXTERNAL + SFARG):
  65.     ENTITY/DUMMY, FUNCTION/DUMMY.
  66.  
  67.    EXTERNAL & ~(ACTUALARG + ANYLEN + ARRAY + DUMMY + SFARG + TYPE):
  68.     FUNCTION/DUMMY, FUNCTION/GLOBAL, SUBROUTINE/DUMMY,
  69.     SUBROUTINE/GLOBAL, BLOCKDATA/GLOBAL.
  70.  
  71.    EXTERNAL + ACTUALARG & ~(ANYLEN + ARRAY + DUMMY + SFARG + TYPE):
  72.     FUNCTION/GLOBAL, SUBROUTINE/GLOBAL.
  73.  
  74.    EXTERNAL + DUMMY & ~(ACTUALARG + ANYLEN + ARRAY + SFARG + TYPE):
  75.     FUNCTION/DUMMY, SUBROUTINE/DUMMY.
  76.  
  77.    EXTERNAL + TYPE & ~(ACTUALARG + ANYLEN + ARRAY + DUMMY + SFARG):
  78.     FUNCTION/DUMMY, FUNCTION/GLOBAL.
  79.  
  80.    SFARG & ~(ACTUALARG + ANYLEN + ARRAY + DUMMY + EXTERNAL + TYPE):
  81.     ENTITY/DUMMY, ENTITY/LOCAL.
  82.  
  83.    SFARG + TYPE & ~(ACTUALARG + ANYLEN + ARRAY + DUMMY + EXTERNAL):
  84.     ENTITY/DUMMY, ENTITY/LOCAL.
  85.  
  86.    TYPE & ~(ACTUALARG + ANYLEN + ARRAY + DUMMY + EXTERNAL + SFARG):
  87.     ENTITY/DUMMY, ENTITY/LOCAL, ENTITY/RESULT, FUNCTION/DUMMY,
  88.     FUNCTION/GLOBAL, FUNCTION/INTRINSIC.
  89.  
  90.    If UNDERSTOOD, the attributes are no longer considered, and the info
  91.    field is considered to be as fully filled in as possible by analyzing
  92.    a single program unit.
  93.  
  94.    Each of the attributes (used only for SEEN/UNCERTAIN states) is
  95.    defined and described below.  In many cases, a symbol starts out as
  96.    SEEN and has attributes set as it is seen in various contexts prior
  97.    to the first executable statement being seen (the "exec transition").
  98.    Once that happens, either it becomes immediately UNDERSTOOD and all
  99.    its info filled in, or it becomes UNCERTAIN and its info only partially
  100.    filled in until it becomes UNDERSTOOD.  While UNCERTAIN, only a
  101.    subset of attributes are possible/important.
  102.  
  103.    Not all symbols reach the UNDERSTOOD state, and in some cases symbols
  104.    go immediately from NONE to the UNDERSTOOD or even UNCERTAIN state.
  105.    For example, given "PROGRAM FOO", everything is known about the name
  106.    "FOO", so it becomes immediately UNDERSTOOD.
  107.  
  108.    Also, there are multiple name spaces, and not all attributes are
  109.    possible/permitted in all name spaces.
  110.  
  111.    The only attributes permitted in the global name space are:
  112.  
  113.    ANY, CBLOCK, SAVECBLOCK.
  114.  
  115.    The only attributes permitted in the local name space are:
  116.  
  117.    ANY, ACTUALARG, ADJUSTABLE, ADJUSTS, ANYLEN, ANYSIZE, ARRAY, COMMON,
  118.    DUMMY, EQUIV, EXTERNAL, INIT, INTRINSIC, NAMELIST, RESULT, SAVE, SFARG,
  119.    SFUNC, TYPE.
  120.  
  121.    In the stmt-func name space, no attributes are used, just the states.
  122.  
  123. */
  124.  
  125.  
  126. /* Actual argument.  Always accompanied by EXTERNAL.
  127.  
  128.    Context is a name used as an actual argument passed to a procedure
  129.    other than a statement function.
  130.  
  131.    Valid in UNCERTAIN state and local name space only.
  132.  
  133.    This attribute is used only to flag the fact that an EXTERNAL'ed name
  134.    has been seen as an actual argument, and therefore cannot be
  135.    discovered later to be a DUMMY argument (via an ENTRY statement).
  136.  
  137.    If DUMMY + EXTERNAL already, it is permitted to see the name
  138.    as an actual argument, but ACTUALARG is not added as an attribute since
  139.    that fact does not improve knowledge about the name.  Hence it is not
  140.    permitted to transition ACTUALARG + EXTERNAL += DUMMY, and the
  141.    transition DUMMY + EXTERNAL += ACTUALARG is not actually done.
  142.  
  143.    Cannot be combined with: ANYLEN, ARRAY, DUMMY, SFARG, TYPE.
  144.  
  145.    Can be combined with: ACTUALARG, ANY, EXTERNAL.
  146.  
  147.    Unrelated: ADJUSTABLE, ADJUSTS, ANYSIZE, CBLOCK, COMMON, EQUIV, INIT,
  148.    INTRINSIC, NAMELIST, RESULT, SAVE, SAVECBLOCK, SFUNC.
  149.  
  150. */
  151.  
  152. DEFATTR (FFESYMBOL_attrACTUALARG, FFESYMBOL_attrsACTUALARG, "ACTUALARG")
  153. #ifndef FFESYMBOL_attrsACTUALARG
  154. #define FFESYMBOL_attrsACTUALARG ((ffesymbolAttrs) 1 << FFESYMBOL_attrACTUALARG)
  155. #endif
  156.  
  157. /* Has adjustable dimension(s).  Always accompanied by ARRAY.
  158.  
  159.    Context is an ARRAY-attributed name with an adjustable dimension (at
  160.    least one dimension containing a variable reference).
  161.  
  162.    Valid in SEEN state and local name space only.
  163.  
  164.    Cannot be combined with: ADJUSTABLE, ADJUSTS, COMMON, EQUIV, EXTERNAL,
  165.    NAMELIST, INIT, INTRINSIC, RESULT, SAVE, SFARG, SFUNC.
  166.  
  167.    Can be combined with: ANY, ANYLEN, ANYSIZE, ARRAY, TYPE.
  168.  
  169.    Must be combined with: DUMMY.
  170.  
  171.    Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
  172.  
  173. */
  174.  
  175. DEFATTR (FFESYMBOL_attrADJUSTABLE, FFESYMBOL_attrsADJUSTABLE, "ADJUSTABLE")
  176. #ifndef FFESYMBOL_attrsADJUSTABLE
  177. #define FFESYMBOL_attrsADJUSTABLE ((ffesymbolAttrs) 1 << FFESYMBOL_attrADJUSTABLE)
  178. #endif
  179.  
  180. /* Adjusts an array.
  181.  
  182.    Context is an expression in an array declarator, such as in a
  183.    DIMENSION, COMMON, or type-specification statement.
  184.  
  185.    Valid in SEEN state and local name space only.
  186.  
  187.    Cannot be combined with: ADJUSTABLE, ANYLEN, ANYSIZE, ARRAY,
  188.    EXTERNAL, INTRINSIC, RESULT, SAVE, SFUNC.
  189.  
  190.    Can be combined with: ADJUSTS, ANY, COMMON, DUMMY, EQUIV, INIT,
  191.    NAMELIST, SFARG, TYPE.
  192.  
  193.    Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
  194.  
  195. */
  196.  
  197. DEFATTR (FFESYMBOL_attrADJUSTS, FFESYMBOL_attrsADJUSTS, "ADJUSTS")
  198. #ifndef FFESYMBOL_attrsADJUSTS
  199. #define FFESYMBOL_attrsADJUSTS ((ffesymbolAttrs) 1 << FFESYMBOL_attrADJUSTS)
  200. #endif
  201.  
  202. /* Can be anything now, diagnostic has been issued at least once.
  203.  
  204.    Valid in UNDERSTOOD state only.  Valid in any name space.
  205.  
  206.    Can be combined with anything.
  207.  
  208. */
  209.  
  210. DEFATTR (FFESYMBOL_attrANY, FFESYMBOL_attrsANY, "ANY")
  211. #ifndef FFESYMBOL_attrsANY
  212. #define FFESYMBOL_attrsANY ((ffesymbolAttrs) 1 << FFESYMBOL_attrANY)
  213. #endif
  214.  
  215. /* Assumed (any) length.  Always accompanied by TYPE.
  216.  
  217.    Context is a name listed in a CHARACTER statement and given a length
  218.    specification of (*).
  219.  
  220.    Valid in SEEN and UNCERTAIN states.  Valid in local name space only.
  221.  
  222.    In SEEN state, attributes marked below with "=" are unrelated.
  223.  
  224.    In UNCERTAIN state, attributes marked below with "+" are unrelated,
  225.    attributes marked below with "-" cannot be combined with ANYLEN,
  226.    and attributes marked below with "!" transition to state UNDERSTOOD
  227.    instead of acquiring the new attribute.  Any other subsequent mentioning
  228.    of the name transitions to state UNDERSTOOD.  UNCERTAIN state is not
  229.    valid for this attribute in PROGRAM/BLOCKDATA program unit.
  230.  
  231.    Cannot be combined with: ACTUALARG=, ADJUSTS+, ANYLEN, COMMON+, EQUIV+,
  232.    EXTERNAL, INIT+, INTRINSIC+, NAMELIST+, SAVE+, SFARG, SFUNC+.
  233.  
  234.    Can be combined with: ADJUSTABLE+, ANY, ANYSIZE+, ARRAY-, DUMMY!, RESULT+,
  235.    TYPE.
  236.  
  237.    Unrelated: CBLOCK, SAVECBLOCK.
  238.  
  239.    In PROGRAM/BLOCKDATA, cannot be combined with ARRAY.
  240.  
  241. */
  242.  
  243. DEFATTR (FFESYMBOL_attrANYLEN, FFESYMBOL_attrsANYLEN, "ANYLEN")
  244. #ifndef FFESYMBOL_attrsANYLEN
  245. #define FFESYMBOL_attrsANYLEN ((ffesymbolAttrs) 1 << FFESYMBOL_attrANYLEN)
  246. #endif
  247.  
  248. /* Has assumed (any) size.  Always accompanied by ARRAY.
  249.  
  250.    Context is an ARRAY-attributed name with its last dimension having
  251.    an upper bound of "*".
  252.  
  253.    Valid in SEEN state and local name space only.
  254.  
  255.    Cannot be combined with: ADJUSTS, ANYSIZE, COMMON, EQUIV, EXTERNAL,
  256.    NAMELIST, INIT, INTRINSIC, RESULT, SAVE, SFARG, SFUNC.
  257.  
  258.    Can be combined with: ADJUSTABLE, ANY, ANYLEN, ARRAY, TYPE.
  259.  
  260.    Must be combined with: DUMMY.
  261.  
  262.    Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
  263.  
  264. */
  265.  
  266. DEFATTR (FFESYMBOL_attrANYSIZE, FFESYMBOL_attrsANYSIZE, "ANYSIZE")
  267. #ifndef FFESYMBOL_attrsANYSIZE
  268. #define FFESYMBOL_attrsANYSIZE ((ffesymbolAttrs) 1 << FFESYMBOL_attrANYSIZE)
  269. #endif
  270.  
  271. /* Array.
  272.  
  273.    Context is a name followed by an array declarator, such as in a
  274.    type-statement-decl, a DIMENSION statement, or a COMMON statement.
  275.  
  276.    Valid in SEEN and UNCERTAIN states.  Valid in local name space only.
  277.  
  278.    In SEEN state, attributes marked below with "=" are unrelated.
  279.  
  280.    In UNCERTAIN state, attributes marked below with "+" are unrelated,
  281.    attributes marked below with "-" cannot be combined with ARRAY,
  282.    and attributes marked below with "!" transition to state UNDERSTOOD
  283.    instead of acquiring the new attribute.  Any other subsequent mentioning
  284.    of the name transitions to state UNDERSTOOD.  UNCERTAIN state is not
  285.    valid for this attribute in PROGRAM/BLOCKDATA program unit.
  286.  
  287.    Cannot be combined with: ACTUALARG=, ADJUSTS+, ARRAY, EXTERNAL,
  288.    INTRINSIC+, RESULT+, SFARG, SFUNC+.
  289.  
  290.    Can be combined with: ADJUSTABLE+, ANY, ANYLEN-, ANYSIZE+, COMMON+,
  291.    DUMMY!, EQUIV+, INIT+, NAMELIST+, SAVE+, TYPE.
  292.  
  293.    Unrelated: CBLOCK, SAVECBLOCK.
  294.  
  295.    In PROGRAM/BLOCKDATA, cannot be combined with ANYLEN.
  296.    Cannot follow INIT.
  297.  
  298. */
  299.  
  300. DEFATTR (FFESYMBOL_attrARRAY, FFESYMBOL_attrsARRAY, "ARRAY")
  301. #ifndef FFESYMBOL_attrsARRAY
  302. #define FFESYMBOL_attrsARRAY ((ffesymbolAttrs) 1 << FFESYMBOL_attrARRAY)
  303. #endif
  304.  
  305. /* COMMON block.
  306.  
  307.    Context is a name enclosed in slashes in a COMMON statement.
  308.  
  309.    Valid in SEEN state and global name space only.
  310.  
  311.    Cannot be combined with:
  312.  
  313.    Can be combined with: CBLOCK, SAVECBLOCK.
  314.  
  315.    Unrelated: ACTUALARG, ADJUSTABLE, ADJUSTS, ANY, ANYLEN, ANYSIZE,
  316.    ARRAY, COMMON, DUMMY, EQUIV, EXTERNAL, INIT, INTRINSIC, NAMELIST,
  317.    RESULT, SAVE, SFARG, SFUNC, TYPE.
  318.  
  319. */
  320.  
  321. DEFATTR (FFESYMBOL_attrCBLOCK, FFESYMBOL_attrsCBLOCK, "CBLOCK")
  322. #ifndef FFESYMBOL_attrsCBLOCK
  323. #define FFESYMBOL_attrsCBLOCK ((ffesymbolAttrs) 1 << FFESYMBOL_attrCBLOCK)
  324. #endif
  325.  
  326. /* Placed in COMMON.
  327.  
  328.    Context is a name listed in a COMMON statement but not enclosed in
  329.    slashes.
  330.  
  331.    Valid in SEEN state and local name space only.
  332.  
  333.    Cannot be combined with: ADJUSTABLE, ANYLEN, ANYSIZE, COMMON, DUMMY,
  334.    EXTERNAL, INTRINSIC, RESULT, SAVE, SFUNC.
  335.  
  336.    Can be combined with: ADJUSTS, ANY, ARRAY, EQUIV, INIT, NAMELIST,
  337.    SFARG, TYPE.
  338.  
  339.    Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
  340.  
  341. */
  342.  
  343. DEFATTR (FFESYMBOL_attrCOMMON, FFESYMBOL_attrsCOMMON, "COMMON")
  344. #ifndef FFESYMBOL_attrsCOMMON
  345. #define FFESYMBOL_attrsCOMMON ((ffesymbolAttrs) 1 << FFESYMBOL_attrCOMMON)
  346. #endif
  347.  
  348. /* Dummy argument.
  349.  
  350.    Context is a name listed in the arglist of FUNCTION, SUBROUTINE, ENTRY.
  351.    (Statement-function definitions have dummy arguments, but since they're
  352.    the only possible entities in the statement-function name space, this
  353.    attribution mechanism isn't used for them.)
  354.  
  355.    Valid in SEEN and UNCERTAIN states.  Valid in local name space only.
  356.  
  357.    In SEEN state, attributes marked below with "=" are unrelated.
  358.  
  359.    In UNCERTAIN state, attributes marked below with "+" are unrelated,
  360.    attributes marked below with "-" cannot be combined with DUMMY,
  361.    and attributes marked below with "!" transition to state UNDERSTOOD
  362.    instead of acquiring the new attribute.  Any other subsequent mentioning
  363.    of the name transitions to state UNDERSTOOD.  UNCERTAIN state is not
  364.    valid for this attribute in PROGRAM/BLOCKDATA program unit.
  365.  
  366.    Cannot be combined with: ACTUALARG=, COMMON+, EQUIV+, INIT+, INTRINSIC+,
  367.    NAMELIST+, RESULT+, SAVE+, SFUNC+.
  368.  
  369.    Can be combined with: ADJUSTABLE+, ADJUSTS+, ANY, ANYLEN-, ANYSIZE+,
  370.    ARRAY-, DUMMY, EXTERNAL, SFARG-, TYPE.
  371.  
  372.    Unrelated: CBLOCK, SAVECBLOCK.
  373.  
  374.    VXT Fortran disallows DUMMY + NAMELIST.
  375.    F90 allows DUMMY + NAMELIST (with some restrictions), g77 doesn't yet.
  376.  
  377. */
  378.  
  379. DEFATTR (FFESYMBOL_attrDUMMY, FFESYMBOL_attrsDUMMY, "DUMMY")
  380. #ifndef FFESYMBOL_attrsDUMMY
  381. #define FFESYMBOL_attrsDUMMY ((ffesymbolAttrs) 1 << FFESYMBOL_attrDUMMY)
  382. #endif
  383.  
  384. /* EQUIVALENCE'd.
  385.  
  386.    Context is a name given in an EQUIVALENCE statement.
  387.  
  388.    Valid in SEEN state and local name space only.
  389.  
  390.    Cannot be combined with: ADJUSTABLE, ANYLEN, ANYSIZE, DUMMY,
  391.    EXTERNAL, INTRINSIC, RESULT, SFUNC.
  392.  
  393.    Can be combined with: ADJUSTS, ANY, ARRAY, COMMON, EQUIV, INIT,
  394.    NAMELIST, SAVE, SFARG, TYPE.
  395.  
  396.    Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
  397.  
  398. */
  399.  
  400. DEFATTR (FFESYMBOL_attrEQUIV, FFESYMBOL_attrsEQUIV, "EQUIV")
  401. #ifndef FFESYMBOL_attrsEQUIV
  402. #define FFESYMBOL_attrsEQUIV ((ffesymbolAttrs) 1 << FFESYMBOL_attrEQUIV)
  403. #endif
  404.  
  405. /* EXTERNAL.
  406.  
  407.    Context is a name listed in an EXTERNAL statement.
  408.  
  409.    Valid in SEEN and UNCERTAIN states.  Valid in local name space only.
  410.  
  411.    In SEEN state, attributes marked below with "=" are unrelated.
  412.  
  413.    In UNCERTAIN state, attributes marked below with "+" are unrelated,
  414.    attributes marked below with "-" cannot be combined with EXTERNAL,
  415.    and attributes marked below with "!" transition to state UNDERSTOOD
  416.    instead of acquiring the new attribute.  Many other subsequent mentionings
  417.    of the name transitions to state UNDERSTOOD.  UNCERTAIN state is not
  418.    valid for this attribute in PROGRAM/BLOCKDATA program unit.
  419.  
  420.    Cannot be combined with: ADJUSTABLE+, ADJUSTS+, ANYLEN, ANYSIZE+,
  421.    ARRAY, COMMON+, EQUIV+, EXTERNAL, INIT+, INTRINSIC+, NAMELIST+, RESULT+,
  422.    SAVE+, SFARG, SFUNC+.
  423.  
  424.    Can be combined with: ACTUALARG=, ANY, DUMMY, TYPE.
  425.  
  426.    Unrelated: CBLOCK, SAVECBLOCK.
  427.  
  428. */
  429.  
  430. DEFATTR (FFESYMBOL_attrEXTERNAL, FFESYMBOL_attrsEXTERNAL, "EXTERNAL")
  431. #ifndef FFESYMBOL_attrsEXTERNAL
  432. #define FFESYMBOL_attrsEXTERNAL ((ffesymbolAttrs) 1 << FFESYMBOL_attrEXTERNAL)
  433. #endif
  434.  
  435. /* Given an initial value.
  436.  
  437.    Context is a name listed in a type-def-stmt such as INTEGER or REAL
  438.    and given an initial value or values.  Someday will also include
  439.    names in DATA statements, which currently immediately exec-transition
  440.    their targets.
  441.  
  442.    Valid in SEEN state and local name space only.
  443.  
  444.    Cannot be combined with: ADJUSTABLE, ANYLEN, ANYSIZE, DUMMY, EXTERNAL,
  445.    INIT, INTRINSIC, RESULT, SFUNC.
  446.  
  447.    Can be combined with: ADJUSTS, ANY, ARRAY, COMMON, EQUIV, NAMELIST,
  448.    SAVE, SFARG, TYPE.
  449.  
  450.    Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
  451.  
  452.    Cannot be followed by ARRAY.
  453.  
  454. */
  455.  
  456. DEFATTR (FFESYMBOL_attrINIT, FFESYMBOL_attrsINIT, "INIT")
  457. #ifndef FFESYMBOL_attrsINIT
  458. #define FFESYMBOL_attrsINIT ((ffesymbolAttrs) 1 << FFESYMBOL_attrINIT)
  459. #endif
  460.  
  461. /* INTRINSIC.
  462.  
  463.    Context is a name listed in an INTRINSIC statement.
  464.  
  465.    Valid in SEEN state and local name space only.
  466.  
  467.    Cannot be combined with: ADJUSTABLE, ADJUSTS, ANYLEN, ANYSIZE, ARRAY,
  468.    COMMON, DUMMY, EQUIV, EXTERNAL, INIT, INTRINSIC, NAMELIST, RESULT,
  469.    SAVE, SFARG, SFUNC.
  470.  
  471.    Can be combined with: ANY, TYPE.
  472.  
  473.    Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
  474.  
  475. */
  476.  
  477. DEFATTR (FFESYMBOL_attrINTRINSIC, FFESYMBOL_attrsINTRINSIC, "INTRINSIC")
  478. #ifndef FFESYMBOL_attrsINTRINSIC
  479. #define FFESYMBOL_attrsINTRINSIC ((ffesymbolAttrs) 1 << FFESYMBOL_attrINTRINSIC)
  480. #endif
  481.  
  482. /* NAMELISTed.
  483.  
  484.    Context is a name listed in a NAMELIST statement but not enclosed in
  485.    slashes.
  486.  
  487.    Valid in SEEN state and local name space only.
  488.  
  489.    Cannot be combined with: ADJUSTABLE, ANYLEN, ANYSIZE, DUMMY, EXTERNAL,
  490.    INTRINSIC, RESULT, SFUNC.
  491.  
  492.    Can be combined with: ADJUSTS, ANY, ARRAY, COMMON, EQUIV, INIT,
  493.    NAMELIST, SAVE, SFARG, TYPE.
  494.  
  495.    Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
  496.  
  497. */
  498.  
  499. DEFATTR (FFESYMBOL_attrNAMELIST, FFESYMBOL_attrsNAMELIST, "NAMELIST")
  500. #ifndef FFESYMBOL_attrsNAMELIST
  501. #define FFESYMBOL_attrsNAMELIST ((ffesymbolAttrs) 1 << FFESYMBOL_attrNAMELIST)
  502. #endif
  503.  
  504. /* RESULT of a function.
  505.  
  506.    Context is name in RESULT() clause in FUNCTION or ENTRY statement, or
  507.    the name in a FUNCTION or ENTRY statement (within a FUNCTION subprogram)
  508.    that has no RESULT() clause.
  509.  
  510.    Valid in SEEN state and local name space only.
  511.  
  512.    Cannot be combined with: ADJUSTABLE, ADJUSTS, ANYSIZE, ARRAY, COMMON,
  513.    DUMMY, EQUIV, EXTERNAL, INIT, INTRINSIC, NAMELIST, RESULT, SAVE, SFUNC.
  514.  
  515.    Can be combined with: ANY, ANYLEN, SFARG, TYPE.
  516.  
  517.    Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
  518.  
  519.    Cannot be preceded by SFARG.
  520.  
  521. */
  522.  
  523. DEFATTR (FFESYMBOL_attrRESULT, FFESYMBOL_attrsRESULT, "RESULT")
  524. #ifndef FFESYMBOL_attrsRESULT
  525. #define FFESYMBOL_attrsRESULT ((ffesymbolAttrs) 1 << FFESYMBOL_attrRESULT)
  526. #endif
  527.  
  528. /* SAVEd (not enclosed in slashes).
  529.  
  530.    Context is a name listed in a SAVE statement but not enclosed in slashes.
  531.  
  532.    Valid in SEEN state and local name space only.
  533.  
  534.    Cannot be combined with: ADUSTABLE, ADJUSTS, ANYLEN, ANYSIZE, COMMON,
  535.    DUMMY, EXTERNAL, INTRINSIC, RESULT, SAVE, SFUNC.
  536.  
  537.    Can be combined with: ANY, ARRAY, EQUIV, INIT, NAMELIST,
  538.    SFARG, TYPE.
  539.  
  540.    Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
  541.  
  542. */
  543.  
  544. DEFATTR (FFESYMBOL_attrSAVE, FFESYMBOL_attrsSAVE, "SAVE")
  545. #ifndef FFESYMBOL_attrsSAVE
  546. #define FFESYMBOL_attrsSAVE ((ffesymbolAttrs) 1 << FFESYMBOL_attrSAVE)
  547. #endif
  548.  
  549. /* SAVEd (enclosed in slashes).
  550.  
  551.    Context is a name enclosed in slashes in a SAVE statement.
  552.  
  553.    Valid in SEEN state and global name space only.
  554.  
  555.    Cannot be combined with: SAVECBLOCK.
  556.  
  557.    Can be combined with: CBLOCK.
  558.  
  559.    Unrelated: ACTUALARG, ADJUSTABLE, ADJUSTS, ANY, ANYLEN, ANYSIZE,
  560.    ARRAY, COMMON, DUMMY, EQUIV, EXTERNAL, INIT, INTRINSIC, NAMELIST,
  561.    RESULT, SAVE, SFARG, SFUNC, TYPE.
  562.  
  563. */
  564.  
  565. DEFATTR (FFESYMBOL_attrSAVECBLOCK, FFESYMBOL_attrsSAVECBLOCK, "SAVECBLOCK")
  566. #ifndef FFESYMBOL_attrsSAVECBLOCK
  567. #define FFESYMBOL_attrsSAVECBLOCK ((ffesymbolAttrs) 1 << FFESYMBOL_attrSAVECBLOCK)
  568. #endif
  569.  
  570. /* Name used as a statement function arg or DATA implied-DO iterator.
  571.  
  572.    Context is a name listed in the arglist of statement-function-definition
  573.    or as the iterator in an implied-DO construct in a DATA statement.
  574.  
  575.    Valid in SEEN and UNCERTAIN states.  Valid in local name space only.
  576.  
  577.    In SEEN state, attributes marked below with "=" are unrelated.
  578.  
  579.    In UNCERTAIN state, attributes marked below with "+" are unrelated,
  580.    attributes marked below with "-" cannot be combined with SFARG,
  581.    and attributes marked below with "!" transition to state UNDERSTOOD
  582.    instead of acquiring the new attribute.  Any other subsequent mentioning
  583.    of the name transitions to state UNDERSTOOD.  UNCERTAIN state is not
  584.    valid for this attribute in PROGRAM/BLOCKDATA program unit.
  585.  
  586.    Cannot be combined with: ACTUALARG=, ADJUSTABLE+, ANYLEN, ANYSIZE+,
  587.    ARRAY, EXTERNAL, INTRINSIC+, SFUNC+.
  588.  
  589.    Can be combined with: ADJUSTS+, ANY, COMMON+, DUMMY!, EQUIV+, INIT+,
  590.    NAMELIST+, RESULT+, SAVE+, SFARG, TYPE.
  591.  
  592.    Unrelated: CBLOCK, SAVECBLOCK.
  593.  
  594.    Cannot be followed by RESULT.
  595.  
  596. */
  597.  
  598. DEFATTR (FFESYMBOL_attrSFARG, FFESYMBOL_attrsSFARG, "SFARG")
  599. #ifndef FFESYMBOL_attrsSFARG
  600. #define FFESYMBOL_attrsSFARG ((ffesymbolAttrs) 1 << FFESYMBOL_attrSFARG)
  601. #endif
  602.  
  603. /* Statement function name.
  604.  
  605.    Context is a statement-function-definition statement, the name being
  606.    defined.
  607.  
  608.    Valid in SEEN state and local name space only.
  609.  
  610.    Cannot be combined with: ADJUSTABLE, ADJUSTS, ANYLEN, ANYSIZE, ARRAY,
  611.    COMMON, DUMMY, EQUIV, EXTERNAL, INIT, INTRINSIC, NAMELIST, RESULT,
  612.    SAVE, SFARG, SFUNC.
  613.  
  614.    Can be combined with: ANY, TYPE.
  615.  
  616.    Unrelated: ACTUALARG, CBLOCK, SAVECBLOCK.
  617.  
  618. */
  619.  
  620. DEFATTR (FFESYMBOL_attrSFUNC, FFESYMBOL_attrsSFUNC, "SFUNC")
  621. #ifndef FFESYMBOL_attrsSFUNC
  622. #define FFESYMBOL_attrsSFUNC ((ffesymbolAttrs) 1 << FFESYMBOL_attrSFUNC)
  623. #endif
  624.  
  625. /* Explicitly typed.
  626.  
  627.    Context is a name listed in a type-def-stmt such as INTEGER or REAL.
  628.  
  629.    Valid in SEEN and UNCERTAIN states.  Valid in local name space only.
  630.  
  631.    In SEEN state, attributes marked below with "=" are unrelated.
  632.  
  633.    In UNCERTAIN state, attributes marked below with "+" are unrelated,
  634.    attributes marked below with "-" cannot be combined with TYPE,
  635.    and attributes marked below with "!" transition to state UNDERSTOOD
  636.    instead of acquiring the new attribute.  Many other subsequent mentionings
  637.    of the name transitions to state UNDERSTOOD.  UNCERTAIN state is not
  638.    valid for this attribute in PROGRAM/BLOCKDATA program unit.
  639.  
  640.    Cannot be combined with: ACTUALARG=, TYPE.
  641.  
  642.    Can be combined with: ADJUSTABLE+, ADJUSTS+, ANY, ANYLEN, ANYSIZE+,
  643.    ARRAY, COMMON+, DUMMY, EQUIV+, EXTERNAL, INIT+, INTRINSIC+, NAMELIST+,
  644.    RESULT+, SAVE+, SFARG, SFUNC+.
  645.  
  646.    Unrelated: CBLOCK, SAVECBLOCK.
  647.  
  648. */
  649.  
  650. DEFATTR (FFESYMBOL_attrTYPE, FFESYMBOL_attrsTYPE, "TYPE")
  651. #ifndef FFESYMBOL_attrsTYPE
  652. #define FFESYMBOL_attrsTYPE ((ffesymbolAttrs) 1 << FFESYMBOL_attrTYPE)
  653. #endif
  654.