1.6 指令语法 |
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 |