1.6 指令语法 BACKWARD FORWARD


HPF指令在下列意义上同Fortran语法一致: 如果任何HPF指令被采纳为未来Fortran标准的一部分, 转换HPF程序时所需采取的唯一改变是用空格代替指令前缀(directive-origin).

H101 hpf-directive-line    is directive-origin hpf-directive
H102 directive-origin      is !HPF$
                  or CHPF$
                  or *HPF$
H103 hpf-directive      is specification-directive
                 or executable-directive
H104 specification-directive is processors-directive
                  or align-directive
                  or distribute-directive
                  or inherit-directive
                  or template-directive
                  or combined-directive
                  or sequence-directive
H105  executable-directive  is independent-directive

约束: 一个hpf-directive-line(hpf指令行)不能在同一行上作为注释紧接在其它语句的后面.

约束: 一个specification-directive(说明指令)仅能出现在declaration-construct(说明结构)的位置上.

约束: 一个executable-directive(可执行指令)仅能出现在executable-construct(执行结构)的位置上

约束: 一个hpf-directive-line既可遵循Fortran自由格式(3.3.1.1)的规则, 也可遵循严格格式(3.3.2.1)注释行的规则, 具体采用哪条规则可依据该程序单元中周围的Fortran源代码的格式.

HPF指令是case insensitive的, 它不但能够遵守自由源程序格式中的空格规则, 而且也可遵守严格源程序格式的规则. 但是在HPF指令中, HPF语言处理器并不要求诊断多余的或丢失的空格. 注意: 根据Fortran规则, 自由源程序格式中的指令前缀必须是!HPF$. HPF指令可以被续行, 在这种情况下, 每个续行也是以指令前缀开始.在一个续行HPF指令中不能夹杂其它的语句. HPF指令行一定不能出现在一个续行语句中. HPF指令行可以包括行尾注释.

无论在哪种源程序格式中, 相邻关键字END FORALL以及NO SEQUENCE中的空格都是可选的.

下面是自由源程序格式中HPF指令续行的一个例子:

 !HPF$ ALIGN ANTIDISESTABLISHMENTARIANISM(I, J, K)&
 !HPF$    WITH ORNITHORHYNCHUS_ANATINUS(J, K, I)

严格源程序格式中HPF指令续行的例子如下所示. 注意在此格式中, 除非指定续行, 否则第六列必须是空格.

 !HPF$ ALIGN ANTIDISESTABLISHMENTARIANISM(I, J, K)&
 !HPF$*WITH ORNITHORHYNCHUS_ANATINUS(J, K, I)

下面的例子显示了一个"广义"的HPF指令续行, 因为它既可被看成是严格源程序格式, 也可被看成是自由源程序格式. 注意第一行上的"&"是在第73列上.

 !HPF$  ALIGN ANTIDISESTABLISHMENTARIANISM(I, J, K)   &
 !HPF$& WITH ORNITHORHYNCHUS_ANATINUS(J, K, I)

第三部分介绍了一些新指令, 包括说明指令和可执行指令, 它们被作为HPF 2.0所认可的扩展. 这些指令如下所示:

H106 specification-directive-extended      is      processors-directive
                                                 or      align-directive
                            or      inherit-directive
                            or      template-directive
                            or      combined-directive
                            or      sequence-directive
                            or      dynamic-directive
                            or      range-directive
                            or      shadow-directive
H107 executable-directive-extended        is      independent-directive
                              or      realign-directive
                            or      redistribute-directive
                            or      active-directive
                            or      simple-on-directive
                            or      block-on-directive
                           or      end-on-directive
                            or      simple-resident-directive
                            or      block-resident-directive
                            or      end-residnet-directive
                            or      task-region-directive
                            or      end-task-region-directive


Copyright: NPACT BACKWARD FORWARD