在本附录我们给出FORTRAN95的语法规则(ISO/IEC 1559-1:1997(E))。所谓语法规则,就是描述一切FORTRAN95的词汇,语句,结构等语言成分的形式规则,凡是遵循了这个描述的,就是合法的FORTRAN95语言;否则,就是不合法的。
因此语法规则本身必须是精确的,绝对不能产生歧义。在这种要求下,FORTRAN95的语法采用了形式语言的方式给出语法规则,即属于所谓Backus-Naur形式(BNF)的一种变体。
由于这种描述形式本身采用了语言的形式,因此有几点说明如下:
●在描述语法时,对于属于FORTRAN字符集的字符按照字面形式来理解,除非有特别的说明。
●对于每一个语法成分的描述,都有一个唯一的编号,这个编号的采用了如下的一般形式:
Rxyy
其中的R表示规则,而x表示FORTRAN标准的节号,yy表示对于该语法成分的描述在该节的唯一编号,因此对于每一个语法成分的描述,这个Rxyy可以看成是它的唯一编号,全书的正文当中,每当第一次引入一个语法成分,我们总是给出了它的这个编号。在下面的规则表里面,这个编号简写为纯数字,省略了字母R。
●下面的描述当中,为了简洁起见,采用了如下的缩写:
argument……arg
attribute……..attr
declaration…..decl
definition……def
descriptor……desc
expression…..expr
integer………int
operator……..op
specifier…….spec
statement……stmt
●同样为了简洁的缘故,这里给出的形式描述不可能是绝对完备和精确的,在能够理解的前提下,本附录采用了一定的简化形式,并且在FORTRAN标准的基础上作了一定的节略。
●除了文字之外,还使用了来自FORTRAN字符集的如下特殊符号;另外还使用了|表示或者的意思。
|
+ 加号 |
% 百分号 |
|
- 减号 |
& and |
|
* 星号 |
; 分号 |
|
/ 除号或斜线 |
‘ 省略符号 |
|
< 小于 |
“ 引号 |
|
> 大于 |
. 小数点或句号 |
|
( 左括号 |
= 等号 |
|
) 右括号 |
! 叹号 |
|
| 或者 |
|
FORTRAN95的语法规则(ISO/IEC 1559-1:1997(E))
|
语法成分 |
形式描述 |
编号 |
|
access-id |
use-name | generic-spec |
523 |
|
access-spec |
PUBLIC | PRIVATE |
511 |
|
access-stmt |
access-spec [ [ :: ] access-id-list ] |
522 |
|
ac-do-variable |
scalar-int-variable |
436 |
|
ac-implied-do |
( ac-value-list, ac-implied-do-control ) |
434 |
|
ac-implied-do-control |
ac-do-variable = scalar-int-expr , scalar-int-expr [ , scalar-int-expr ] |
435 |
|
action-stmt |
allocate-stmt | assignment-stmt | backspace-stmt | call-stmt | close-stmt | continue-stmt | cycle-stmt | deallocate-stmt | endfile-stmt | end-function-stmt | end-program-stmt | end-subroutine-stmt | exit-stmt | forall-stmt | goto-stmt | if-stmt | inquire-stmt | nullify-stmt | open-stmt | pointer-assignment-stmt | print-stmt | read-stmt | return-stmt | rewind-stmt | stop-stmt | where-stmt | write-stmt |
216 |
|
actual-arg |
Expr | variable | procedure-name |
1214 |
|
actual-arg-spec |
[ keyword = ] actual-arg |
1212 |
|
ac-value |
Expr | ac-implied-do |
433 |
|
add-op |
+ | - |
710 |
|
add-operand |
[ add-operand mult-op ] mult-operand |
706 |
|
allocatable-stmt |
ALLOCATABLE [ :: ] array-name [ ( deferred-shape-spec-list ) ] { , array-name [ ( deferred-shape-spec-list ) ] } |
527 |
|
allocate-lower-bound |
scalar-int-expr |
627 |
|
allocate-object |
variable-name | structure-component |
625 |
|
allocate-shape-spec |
[ allocate-lower-bound : ] allocate-upper-bound |
626 |
|
allocate-stmt |
ALLOCATE ( allocation-list [ , STAT = stat-variable ] ) |
622 |
|
allocate-upper-bound |
scalar-int-expr |
628 |
|
allocation allocate-object |
[ ( allocate-shape-spec-list ) ] |
624 |
|
alphanumeric-character |
Letter | digit | underscore |
302 |
|
and-op |
.AND. |
720 |
|
and-operand |
[ not-op ] level-4-expr |
715 |
|
array-constructor |
( / ac-value-list / ) |
432 |
|
array-element |
data-ref |
615 |
|
array-section |
dataref [ ( substringrange ) ] |
616 |
|
array-spec |
explicit-shape-spec-list | assumed-shape-spec-list | deferred-shape-spec-list | assumed-size-spec |
513 |
|
assignment-stmt |
variable = expr |
735 |
|
assumed-shape-spec |
[ lower-bound ] : |
517 |
|
assumed-shape-spec-list |
assumed-shape-spec { assumed-shape-spec } |
0 |
|
assumed-size-spec |
[ explicit-shape-spec-list , ] [ lower-bound : ] * |
519 |
|
attr-spec |
PARAMETER | access-spec | ALLOCATABLE | DIMENSION (array-spec ) | EXTERNAL | INTENT ( intent-spec ) | INTRINSIC | OPTIONAL | POINTER | SAVE | TARGET |
503 |
|
backspace-stmt |
BACKSPACE external-file-unit | BACKSPACE ( position-spec-list ) |
919 |
|
binary-constant |
B ' digit { digit } ' | B "digit { digit } " |
408 |
|
blank-interp-edit-desc |
BN | BZ |
1015 |
|
block |
{ execution-part-construct } |
801 |
|
block-data |
block-data-stmt [specification-part] end-block-data-stmt |
1112 |
|
block-data-stmt |
BLOCK DATA [block-data-name] |
1113 |
|
block-do-construct |
do-stmt do-block end-do |
817 |
|
boz-literal-constant |
binary-constant | octal-constant | hex-constant |
407 |
|
call-stmt |
CALL subroutine-name [ ( [ actual-arg-spec-list ] ) ] |
1211 |
|
case-construct |
select-case-stmt { case-stmt block } end-select-stmt |
808 |
|
case-expr |
scalar-int-expr | scalar-char-expr | scalar-logical-expr |
812 |
|
case-selector |
( case-value-range-list ) | DEFAULT |
813 |
|
case-stmt |
CASE case-selector [ case-construct-name ] |
810 |
|
case-value |
scalar-int-initialization-expr | scalar-char-initialization-expr | scalar-logical-initialization-expr |
815 |
|
case-value-range |
case-value | case-value : | : case-value | case-value : case-value |
814 |
|
case-value-range-list |
case-value-range { case-value-range } |
0 |
|
char-constant |
constant |
309 |
|
char-expr |
expr |
726 |
|
char-initialization-exr |
char-expr |
731 |
|
char-length |
( char-len-param-value ) | scalar-int-literal-constant |
509 |
|
char-len-param-value |
specification-expr | * | : |
510 |
|
char-literal-constant |
[ _kind-param ] ' { rep-char } ' | [ _kind-param ] " { rep-char } " |
420 |
|
char-selector |
length-selector | (LEN = char-len-param-value, KIND = scalar-int-initialization-expr ) | ( char-len-param-value, [ KIND = ] scalar-int-initialization-expr ) | (KIND = scalar-int-initialization-expr [, LEN = char-len-param-value ] ) |
507 |
|
char-string-edit-desc |
char-literal-constant |
1016 |
|
char-variable |
variable |
605 |
|
close-spec |
[ UNIT = ] external-file-unit | IOSTAT = scalar-default-int-variable | ERR = label | STATUS = scalar-default-char-expr |
908 |
|
close-stmt |
CLOSE ( close-spec-list ) |
907 |
|
common-block-object |
variable-name [ ( explicit-shape-spec-list ) ] |
530 |
|
common-stmt |
COMMON [ / [ common-block-name ] / ] common-block-object-list { [,] / [ common-block-name ] / common-block object-list } |
549
|
|
complex-literal-constant |
( real-part , imag-part ) |
417 |
|
component-array-spec |
explicit-shape-spec-list | deferred-shape-spec-list |
427 |
|
component-attr-spec |
POINTER | DIMENSION ( component-array-spec ) |
426 |
|
component-attr-spec-list |
component-attr-spec { component-attr-spec } |
0 |
|
component-decl |
component-name [ ( component-array-spec ) ] [ * char-length ] [ component-initialization ] |
428 |
|
component-decl-list |
component-decl { component-decl } |
0 |
|
component-def-stmt |
type-spec [ [ , component-attr-spec-list ] :: ] component-decl-list |
425 |
|
component-initialization |
= initialization-expr | => NULL () |
429 |
|
concat-op |
// |
712 |
|
connect-spec |
[ UNIT = ] external-file-unit | IOSTAT = scalar-default-int-variable | ERR = label | FILE = file-name-expr | STATUS = scalar-default-char-expr | ACCESS = scalar-default-char-expr | FORM = scalar-default-char-expr | RECL = scalar-int-expr | BLANK = scalar-default-char-expr | POSITION = scalar-default-char-expr | ACTION = scalar-default-char-expr | DELIM = scalar-default-char-expr | PAD = scalar-default-char-expr |
905 |
|
constant |
literal-constant | named-constant |
305 |
|
constant-subobject |
subobject |
702 |
|
contains-stmt |
CONTAINS |
1227 |
|
continue-stmt |
CONTINUE |
839 |
|
control-edit-desc |
position-edit-desc | [ r ] / | : | sign-edit-desc | k P | blank-interp-edit-desc |
1010 |
|
cycle-stmt |
CYCLE [ do-construct-name ] |
834 |
|
d |
int-literal-constant |
1008 |
|
data-edit-desc |
I w [ . m ] | B w [ . m ] | O w [ . m ] | Z w [ . m ] | F w . d | E w . d [ E e ] | EN w . d [ E e ] | ES w . d [ E e ] | G w . d [ E e ] | L w | A [ w ] | D w . d |
1005 |
|
Data-i-do-object |
Array-element | scalarstructurecomponent | dataimplieddo |
536 |
|
Data-i-do-variable |
Scalar-int-variable |
537 |
|
Data-implied-do |
( data-i-do-object-list, data-i-do-variable = scalar-int-expr scalar-int-expr [ , scalar-int-expr] ) |
535 |
|
data-ref |
part-ref { % part-ref } |
612 |
|
data-stmt |
DATA data-stmt-set { [ , ] data-stmt-set } |
532 |
|
data-stmt-constant |
scalar-constant | scalar-constant-subobject | signed-int-literal-constant | signed-real-literal-constant | NULL ( ) | structure-constructor | entry-stmt |
540 |
|
Data-stmt-object |
variable | data-implied-do |
534 |
|
data-stmt-object-list |
data-stmt-object { data-stmt-object } |
0 |
|
datastmtrepeat |
Scalar-int-constant | scalar-int-constant-subobject |
539 |
|
data-stmt-set |
data-stmt-object-list / data-stmt-value-list / |
533 |
|
Data-stmt-value |
[ data-stmt-repeat* ] data-stmt-constant |
538 |
|
data-stmt-value-list |
data-stmt-value { data-stmt-value } |
0 |
|
deallocate-stmt |
DEALLOCATE ( allocate-object-list [, STAT = stat-variable ] ) |
631 |
|
declaration-construct |
derived-type-def | interface-block | type-declaration-stmt | specification-stmt | parameter-stmt | format-stmt | entry-stmt | stmt-function-stmt |
207 |
|
default-char-expr |
expr |
727 |
|
Default-char-variable |
variable |
606 |
|
default-int-variable |
variable |
608 |
|
default-logical-variable |
variable |
604 |
|
deferred-shape-spec |
: |
518 |
|
defined-binary-op |
. letter { letter }. |
724 |
|
defined-operator |
defined-binary-op | defined-unary-op | extended-intrinsic-op |
311 |
|
defined-unary-op |
. letter { letter }. |
704 |
|
derived-type-def |
derived-type-stmt { private-sequence-stmt } component-def-stmt { component-def-stmt } end-type-stmt |
422 |
|
derived-type-stmt |
TYPE [ [ , access-spec ] ] type-name |
423 |
|
digit-string |
digit { digit } |
402 |
|
dimension-stmt |
DIMENSION [ :: ] array-name ( array-spec ) { , array-name ( array-spec ) } |
526 |
|
do-block |
block |
823 |
|
do-construct |
block-do-construct |
816 |
|
do-construct-name |
name |
0 |
|
do-stmt |
label-do-stmt | nonlabel-do-stmt |
818 |
|
do-variable |
scalar-int-variable |
822 |
|
dummy-arg |
dummy-arg-name | * |
1223 |
|
e |
int-literal-constant |
1009 |
|
else-if-stmt |
ELSE IF ( scalar-logical-expr ) THEN [ if-construct-name ] |
804 |
|
else-stmt |
ELSE [ if-construct-name ] |
805 |
|
elsewhere-stmt |
ELSEWHERE [ where-construct-name ] |
745 |
|
end-block-data-stmt |
END [BLOCK DATA [block-data-name]] |
1114 |
|
end-do |
end-do-stmt | continue-stmt |
824 |
|
end-do-stmt |
END DO [ do-construct-name ] |
825 |
|
endfile-stmt |
ENDFILE external-file-unit |
920 |
|
end-forall-stmt |
END FORALL [ forall-construct-name ] |
753 |
|
end-function-stmt |
END [ FUNCTION [ function-name ]] |
1220 |
|
end-if-stmt |
END IF [ if-construct-name ] |
806 |
|
end-interface-stmt |
END INTERFACE [ generic-spec ] |
1204 |
|
end-module-stmt |
END [MODULE [ module-name]] |
1106 |
|
end-program-stmt |
END [PROGRAM [ program-name]] |
1103 |
|
end-select-stmt |
END SELECT [ select-case-construct-name ] |
811 |
|
end-subroutine-stmt |
END [ SUBROUTINE [ subroutine-name ]] |
1224 |
|
end-type-stmt |
END TYPE [ type-name ] |
430 |
|
end-where-stmt |
END WHERE [ where-construct-name ] |
746 |
|
entity-decl |
object-name [ ( array-spec ) ] [ * char-length ] [ initialization ] | function-name [ * char-length ] |
504 |
|
entry-stmt |
ENTRY entry-name [ ( [ dummy-arg-list ] ) [ RESULT ( result-name ) ] ] |
1225 |
|
enum-def equivalence-object |
type-alias-name ( enumerator-list ) | variable-name | array-element | substring |
0 548 |
|
equivalence-set |
( equivalence-object, equivalence-object-list ) |
547 |
|
equivalence-set-list |
equivalence-set { equivalence-set } |
0 |
|
equivalence-stmt |
EQUIVALENCE equivalence-set-list |
546 |
|
equiv-op |
.EQ. | .NEQ. |
722 |
|
equiv-operand |
[ equiv-operand or-op ] or-operand |
717 |
|
executable-construct |
action-stmt | case-construct | do-construct | forall-construct | if-construct | where-construct |
215 |
|
execution-part |
executable-construct {execution-part-construct} |
208 |
|
execution-part-construct |
executable-construct | format-stmt | entry-stmt | data stmt (check still present) |
209 |
|
exit-stmt |
EXIT [ do-construct-name ] |
835 |
|
explicit-shape-spec |
[ lower-bound : ] upper-bound |
514 |
|
exponent |
signed-digit-string |
406 |
|
exponent-letter |
E | D |
415 |
|
expr |
[ expr defined-binary-op ] level-5-expr |
723 |
|
extended-intrinsic-op |
intrinsic-operator |
312 |
|
external-file -unit |
scalar-int-expr |
902 |
|
external-name-list |
external-name { external-name } |
0 |
|
external-stmt |
EXTERNAL [ :: ] external-name-list |
1208 |
|
external-subprogram |
function-subprogram | subroutine-subprogram |
203 |
|
file-name-expr |
scalar-default-char-expr |
906 |
|
forall-assignment-stmt |
assignment-stmt | pointer-assignment-stmt |
752 |
|
forall-body-construct |
forall-assignment-stmt | where-stmt | where-construct | forall-construct | forall-stmt |
751 |
|
forall-construct |
forall-construct-stmt { forall-body-construct } end-forall-stmt |
747 |
|
forall-construct-name |
name |
0 |
|
forall-construct-stmt |
[ forall-construct-name : ] FORALL forall-header |
748 |
|
forall-header |
( forall-triplet-spec-list [, scalar-mask-expr ] ) |
749 |
|
forall-stmt |
FORALL forall-header forall-assignment-stmt |
754 |
|
forall-triplet-spec |
index-name = subscript : subscript [ : stride ] |
750 |
|
format |
default-char-expr | label | * |
913 |
|
format-item |
[ r ] data-edit-desc | control-edit-desc | char-string-edit-desc | [ r ] ( format-item-list ) |
1003 |
|
format-item-list |
format-item { format-item } |
0 |
|
format-specification |
( [ format-item-list ) ] ) |
1002 |
|
format-stmt |
FORMAT format-specification |
1001 |
|
function-name |
name |
0 |
|
function-reference |
function-name ( [ actual-arg-spec-list ] ) |
1210 |
|
function-stmt |
[ prefix ] FUNCTION function-name ( [ dummy-arg-name-list ] ) [ RESULT ( result-name ) ] |
1217 |
|
function-subprogram |
function-stmt [specification-part] [execution-part] [internal-subprogram-part] end-function-stmt |
1216 |
|
generic-spec |
generic-name | OPERATOR ( defined-operator ) | ASSIGNMENT ( = ) |
1207 |
|
goto-stmt |
GO TO label |
836 |
|
hex-constant |
Z ' hex-digit { hex-digit } ' | Z " hex-digit { hex-digit } " |
410 |
|
hex-digit |
digit | A | B | C | D | E | F |
411 |
|
if-construct |
if-then-stmt block { else-if-stmt block } [ else-stmt block ] end-if-stmt |
802 |
|
if-construct-name |
name |
0 |
|
if-stmt |
IF ( scalar-logical-expr ) action-stmt |
807 |
|
if-then-stmt |
[ if-construct-name : ] IF ( scalar-logical-expr ) THEN |
803 |
|
imag-part |
signed-int-literal-constant | signed-real-literal-constant |
419 |
|
implicit-part |
{ implicit-part-stmt } implicit-stmt |
205 |
|
implicit-part-stmt |
implicit-stmt | parameter-stmt | format-stmt | entry-stmt |
206 |
|
implicit-spec |
type-spec ( letter-spec-list ) |
542 |
|
implicit-stmt |
IMPLICIT implicit-spec-list | IMPLICIT NONE |
541 |
|
initialization |
initialization-expr | => NULL() |
505 |
|
initialization-expr |
expr |
730 |
|
input-item |
variable | io-implied-do |
914 |
|
input-item-list |
input-item { input-item } |
0 |
|
inquire-spec |
[ UNIT = ] external-file-unit | FILE = file-name-expr | IOSTAT = scalar-default-int-variable | ERR = label | EXIST = scalar-default-logical-variable | OPENED = scalar-default-logical-variable | NUMBER = scalar-default-int-variable | NAMED = scalar-default-logical-variable | NAME = scalar-default-char-variable | ACCESS = scalar-default-char-variable | SEQUENTIAL = scalar-default-char-variable | DIRECT = scalar-default-char-variable | FORM = scalar-default-char-variable | FORMATTED = scalar-default-char-variable | UNFORMATTED = scalar-default-char-variable | RECL = scalar-default-int-variable | NEXTREC = scalar-default-int-variable | BLANK = scalar-default-char-variable | POSITION = scalar-default-char-variable | ACTION = scalar-default-char-variable | READ = scalar-default-char-variable | WRITE = scalar-default-char-variable | READWRITE = scalar-default-char-variable | DELIM = scalar-default-char-variable | PAD = scalar-default-char-variable |
924 |
|
inquire-spec-list |
inquire-spec { inquire-spec } |
0 |
|
inquire-stmt |
INQUIRE ( inquire-spec-list ) | INQUIRE ( IOLENGTH = scalar-default-int-variable ) output-item-list |
923 |
|
int-constant |
constant |
308 |
|
intent-spec |
IN | OUT | INOUT |
512 |
|
intent-stmt |
INTENT ( intent-spec ) [ :: ] dummy-arg-name-list |
520 |
|
interface-block |
interface-stmt { interface-specification } end-interface-stmt |
1201 |
|
interface-body |
function-stmt [ specification-part ] end-function-stmt | subroutine-stmt [ specification-part ] end-subroutine-stmt |
1205 |
|
interface-specification |
interface-body | module-procedure-stmt |
1202 |
|
interface-stmt |
INTERFACE [generic-spec] |
1203 |
|
internal-file-unit |
default-char-variable |
903 |
|
internal-subprogram |
function-subprogram | subroutine-subprogram |
211 |
|
internal-subprogram-part |
contains-stmt internal-subprogram {internal-subprogram} |
210 |
|
int-expr |
expr |
728 |
|
int-initialization-expr |
int-expr |
732 |
|
int-literal-constant |
digit-string [ _ kind-param ] |
404 |
|
intrinsic-operator |
power-op | mult-op | add-op | concat-op | rel-op | not-op | and-op | or-op | equiv-op |
310 |
|
intrinsic-procedure-name-list |
intrinsic-procedure-name { intrinsic-procedure-name } |
0 |
|
intrinsic-stmt |
INTRINSIC [ :: ] intrinsic-procedure-name-list |
1209 |
|
int-variable |
variable |
607 |
|
io-control-spec |
[ UNIT = ] io-unit | [ FMT = ] format | [ NML = ] namelist-group-name | REC = scalar-int-expr | IOSTAT = scalar-default-int-variable | ERR = label | END = label | ADVANCE = scalar-default-char-expr | SIZE = scalar-default-int-variable | EOR = label |
912 |
|
io-implied-do |
( io-implied-do-object-list , io-implied-do-control ) |
916 |
|
io-implied-do-control |
do-variable = scalar-int-expr, scalar-int-expr [ , scalar-int-expr ] |
918 |
|
io-implied-do-object |
input-item | output-item |
917 |
|
io-unit |
external-file-unit | * | internal-file-unit |
901 |
|
k |
signed-int-literal-constant |
1011 |
|
keyword |
dummy-arg-name |
1213 |
|
kind-param |
digit-string | scalar-int-constant-name |
405 |
|
kind-selector |
( [ KIND = ] scalar-int-initialization-expr ) |
506 |
|
label |
digit [ digit [ digit [ digit [ digit ]]]]] |
313 |
|
label-do-stmt |
[ do-construct-name : ] DO label [ loop-control ] |
819 |
|
Length-selector |
( [ LEN = ] charlenparamvalue) | * char-length [ , ] |
508 |
|
Letter-spec |
letter [ - letter ] |
543 |
|
level-1-expr |
[ defined-unary-op ] primary |
703 |
|
level-2-expr |
[ [ level-2-expr ] add-op ] add-operand |
707 |
|
level-3-expr |
[ level-3-expr concat-op ] level-2-expr |
711 |
|
level-4-expr |
[ level-3-expr rel-op ] level-3-expr |
713 |
|
level-5-expr |
[ level-5-expr equiv-op ] equiv-operand |
718 |
|
literal-constant |
int-literal-constant | real-literal-constant | complex-literal-constant | logical-literal-constant | char-literal-constant | boz-literal-constant |
306 |
|
local-name |
name |
0 |
|
logical-expr |
expr |
725 |
|
logical-initialization-expr |
logical-expr |
733 |
|
logical-literal-constant |
.TRUE. [ _kind-param ] | . FALSE. [ _kind-param ] |
421 |
|
logical-variable |
variable |
603 |
|
loop-control |
[ , ] do-variable = scalar-int-expr , scalar-int-expr [ , scalar-int-expr ] | [ , ] WHILE scalar-logical-expr |
821 |
|
lower-bound |
specification-expr |
515 |
|
m |
int-literal-constant |
1007 |
|
main-program |
[program-stmt] [specification-part] [execution-part] [internal-subprogram-part] end-program-stmt |
1101 |
|
masked-elsewhere-stmt |
ELSEWHERE ( mask-expr ) [ where-construct-name ] |
744 |
|
mask-expr |
logical-expr |
743 |
|
module |
module-stmt [specification-part] [module-subprogram-part] end-module-stmt |
1104 |
|
module-procedure-stmt |
MODULE PROCEDURE procedure-name-list |
1206 |
|
module-stmt |
MODULE module-name |
1105 |
|
module-subprogram |
function-subprogram | subroutine-subprogram |
213 |
|
module-subprogram-part |
contains-stmt module-subprogram {module-subprogram} |
212 |
|
mult-op |
* | / |
709 |
|
mult-operand |
level-1-expr [ power-op mult-operand ] |
705 |
|
n |
int-literal-constant |
1013 |
|
name |
letter (alphanumeric-character } |
304 |
|
named-constant |
name |
307 |
|
named-constant-def |
named-constant = initialization |
531 |
|
namelist-group-name |
name |
0 |
|
namelist-group-object |
variable-name |
545 |
|
namelist-group-object-list |
namelist-group-object {namelist-group-object } |
0 |
|
namelist-stmt |
NAMELIST / namelist-group-name / namelist-group-object-list { [ , ] / namelist-group-name / namelist-group-object-list } |
544 |
|
nonlabel-do-stmt |
[ do-construct-name : ] DO [ loop-control ] |
820 |
|
not-op |
.NOT. |
719 |
|
nullify-stmt |
NULLIFY ( pointer-object-list ) |
629 |
|
numeric-e xpr |
expr |
729 |
|
object-name |
name |
0 |
|
object-name-list |
object-name { object-name } |
0 |
|
octal-constant |
O ' digit { digit } ' | O " digit { digit } " |
409 |
|
only |
generic-spec | only-use-name | only-rename |
1109 |
|
only-rename |
local-name => use-name |
1111 |
|
only-use-name |
only-name |
1110 |
|
open-stmt |
OPEN ( connect-spec-list ) |
904 |
|
optional-stmt |
OPTIONAL [ :: ] dummy-arg-name-list
|
521 |
|
or-op |
.OR. |
721 |
|
or-operand |
[ or-operand and-op ] and-operand |
716 |
|
output-item |
expr | io-implied-do |
915 |
|
output-item-list |
output-item { output-item } |
0 |
|
parameter-stmt |
PARAMETER ( named-constant-def-list ) |
550 |
|
parent-string |
scalar-variable-name | array-element | scalar-structure-component | scalar-constant |
610 |
|
part-ref part-name |
[ ( section-subscript-list ) ] |
613 |
|
pointer-assignment-stmt |
pointer-object => target |
736 |
|
pointer-object |
variable-name | structure-component |
630 |
|
pointer-object-list |
pointer-object { pointer-object } |
0 |
|
pointer-stmt |
POINTER [ :: ] object-name [ ( deferred-shape-spec-list ) ] { , object-name [ ( deferred-shape-spec-list ) ] } |
528 |
|
position-edit-desc |
T n | TL n | TR n | n X |
1012 |
|
position-spec |
[ UNIT = ] external-file-unit | IOSTAT = scalar-default-int-variable | ERR = label
|
922 |
|
position-spec-list |
position-spec { position-spec } |
0 |
|
power-op |
** |
708 |
|
prefix |
prefix-spec { prefix-spec } |
1218 |
|
prefix-spec |
type-spec | RECURSIVE | PURE | ELEMENTAL |
1219 |
|
primary |
constant | constant-sub-object | variable | array-constructor | structure-constructor | function-reference | ( expr )
|
701 |
|
print-stmt |
PRINT format [ , output-item-list ] |
911 |
|
private-sequence-stmt |
PRIVATE | SEQUENCE |
424 |
|
program |
program-unit {program-unit} |
201 |
|
program-name |
name |
0 |
|
program-stmt |
PROGRAM program-name |
1102 |
|
program-unit |
main-program | external-subprogram | module | block-data |
202 |
|
r |
int-literal-constant |
1004 |
|
read-stmt |
READ ( io-control-spec-list ) [ input-item-list ] READ format [, input-item-list ] |
909 |
|
real-literal-constant |
significand [ exponent-letter exponent ] [ _kind-param ] | digit-string exponent-letter exponent [ _kind-param ] |
413 |
|
real-part |
signed-int-literal-constant | signed-real-literal-constant |
418 |
|
rel-op |
.EQ. |.NE. |.LT. |.LE. |.GT. |.GE. | == | /= | < | <= | > | >= |
714 |
|
rename |
local-name => use-name |
1108 |
|
result-name |
name |
0 |
|
return-stmt |
RETURN [ scalar-int-expr ] |
1226 |
|
rewind-stmt |
REWIND external-file-unit | REWIND ( position-spec-list ) |
921 |
|
saved-entity |
object-name | / common-block-name / |
525 |
|
saved-entity-list |
saved-entity { saved-entity } |
0 |
|
save-stmt |
SAVE [ [ :: ] saved-entity-list ] |
524 |
|
scalar-default-int-variable |
scalar-int-variable |
0 |
|
scalar-int-expr |
expr |
0 |
|
scalar-int-initialization-expr |
expr |
0 |
|
scalar-logical-expr |
expr |
0 |
|
sectionsubscript |
subscript | subscripttriplet | vectorsubscript |
618 |
|
select-case-construct-name |
name |
0 |
|
select-case-stmt |
[ case-construct-name : ] SELECT CASE ( case-expr ) |
809 |
|
select-construct-name |
name |
0 |
|
sign |
+ | - |
416 |
|
signed-digit-string |
[ sign ] digit-string |
401 |
|
signed-int-literal-constant |
[ sign ] int-literal-constant |
403 |
|
sign-edit-desc |
S | SP | SS |
1014 |
|
signed-real-literal-constant |
[ sign ] real-literal-constant |
412 |
|
significand |
digit-string . [ digit-string ] | . digit-string |
414 414 |
|
specification-expr |
scalar-int-expr |
734 |
|
specification-part |
{ use-stmt } [ implicit-part ] { declaration-construct } |
204 |
|
specification-stmt |
access-stmt | allocatable-stmt | common-stmt | data-stmt | dimension-stmt | equivalence-stmt | external-stmt | intent-stmt | intrinsic-stmt | namelist-stmt | optional-stmt | pointer-stmt | save-stmt | target-stmt |
214 |
|
stat-variable |
scalar-int-variable |
623 |
|
stmt-function-stmt |
function-name ( [ dummy-arg-name-list ] ) = scalar-expr |
1228 |
|
stop-code |
scalar-char-constant | digit [ digit [ digit [ digit [ digit ]]]] |
841 |
|
stop-stmt |
STOP [ stop-code ] |
840 |
|
stride |
scalar-int-expr |
620 |
|
structure-component |
data-ref |
614 |
|
structure-constructor |
type-name ( expr-list ) |
431 |
|
subobject
|
array-element | array-section | structure-component | substring |
602 |
|
subroutine-stmt |
[ prefix ] SUBROUTINE subroutine-name [ ( [ dummy-arg-list ] ) ] |
1222 |
|
subroutine-subprogram |
subroutine-stmt [specification-part] [execution-part] [internal-subprogram-part] end-subroutine-stmt |
1221 |
|
subscript |
scalar-int-expr |
617 |
|
Subscript-triplet |
[ subscript] : [subscript ] [ :stride ] |
619 |
|
substring |
parent-string ( substring-range ) |
609 |
|
substring-range |
[ scalar-int-expr ] : [scalar-int-expr ] |
611 |
|
target |
variable | expr |
737 |
|
target-stmt |
TARGET [ :: ] object-name [ ( array-spec ) ] { , object-name [ ( array-spec ) ] } |
529 |
|
type-declaration-stmt |
type-spec [ { , attr-spec } :: ] entity-decl-list |
501 |
|
type-name |
name |
0 |
|
type-spec |
INTEGER [ kind-selector ] | REAL [ kind-selector ] | DOUBLE PRECISION | COMPLEX [ kind-selector ] | CHARACTER [char-selector ] | LOGICAL [ kind-selector ] | TYPE ( type-name ) |
502 |
|
underscore |
_ |
303 |
|
Upper-bound |
Specification-expr |
516 |
|
use-name |
name |
0 |
|
use-stmt |
USE module-name [ , rename-list ] | USE module-name , ONLY : [only-list] |
1107 |
|
variable |
scalar-variable-name | array-variable-name | subobject
|
601 |
|
Vectorsub-script |
intexpr |
621 |
|
w |
int-literal-constant |
1006 |
|
where-assignment-stmt |
assignment-stmt |
742 |
|
where-body-construct |
where-assignment-stmt | where-stmt | where-construct |
741
741 |
|
where-construct |
where-construct-stmt { where-body-construct } { masked-elsewhere-stmt { where-body-construct } } { elsewhere-stmt { where-body-construct } } end-where-stmt |
739
|
|
where-construct-name |
name |
0 |
|
where-construct-stmt |
[ where-construct-name: ] WHERE ( mask-expr ) |
740 |
|
where-stmt |
WHERE ( mask-expr ) where-assignment-stmt |
738 |
|
write-stmt |
WRITE ( io-control-spec-list ) [ output-item-list ] |
910 |