Fortran gedit中的openmp语法突出显示?
我正面临一个尴尬的局面。我试图在Linux中使用ifort运行Fortran 90程序,由于它有OpenMP指令,我使用Fortran gedit中的openmp语法突出显示?,fortran,fortran90,gedit,intel-fortran,Fortran,Fortran90,Gedit,Intel Fortran,我正面临一个尴尬的局面。我试图在Linux中使用ifort运行Fortran 90程序,由于它有OpenMP指令,我使用-OpenMP-report1选项编译它,以查看这些块是否已成功并行化 问题是gedit无法识别OpenMP指令: !$omp parallel do etc.... 它将其视为一种评论。有人对此有想法吗?我还尝试: C$omp parallel do etc... 但在这种情况下,它会产生编译时错误。我是否必须在gedit中启用一个选项才能识别OpenMP指令 我在ema
-OpenMP-report1
选项编译它,以查看这些块是否已成功并行化
问题是gedit无法识别OpenMP指令:
!$omp parallel do etc....
它将其视为一种评论。有人对此有想法吗?我还尝试:
C$omp parallel do etc...
但在这种情况下,它会产生编译时错误。我是否必须在gedit中启用一个选项才能识别OpenMP指令
我在emacs中也遇到了同样的问题
我注意到,我使用“英特尔Visual Fortran”成功运行了相同的程序。在Visual Studio中,OpenMP指令被正确识别。首先,您需要在语言规范的
部分定义一种新样式:
<style>
<!-- ... -->
<style id="openmp-directives" _name="OpenMP directives" map-to="def:preprocessor"/>
</styles>
接下来,将相应的
添加到
部分:
<definitions>
<!-- ... -->
<context id="openmp-directives" style-ref="openmp-directives" end-at-line-end="true">
<start extended="true">
((^[Cc])|^\s*!)\$
</start>
</context>
<!-- ... -->
</definitions>
((^[Cc])|^\s*!)\$
激活新样式的评估:
<definitions>
<!-- ... -->
<context id="fortran" class="no-spell-check">
<include>
<context ref="openmp-directives"/>
</include>
</context>
<!-- ... -->
</definitions>
最后,@VladimirF指出,您需要告诉GtkSourceView不要将指令视为注释
找到
并更改
<start>!|(^[Cc](\b|[^OoAaYyHh]))</start>
|(^[Cc](\b |[^OoAaYyHh]))
到
(![^$])|(^[Cc](\s|[^$OoAaYyHh]))|(^[Cc]$)
我刚刚向GtkSourceView推荐了这个补丁 您希望如何突出显示指令?大多数编辑器不会这样做。问题是,一旦语法分析器确定它是一条注释,这可能是不可能的。也许您还需要更改注释的定义。@VladimirF谢谢您的回复。也许我没有解释清楚,问题是如何让gedit正确识别openmp指令,而不是将它们视为注释?是的,我做得很好。您必须在Peter's链接中编辑解析器定义。仅供参考:此修补程序已…从何时起具有
$代码>成为OpenMP哨兵?唯一的标准认可的哨兵在自由格式的来源是$omp
(+大小写变体),其中*$omp
和c$omp
在固定格式文件中额外识别。哨兵必须显示为一个单词,中间没有空格。在固定格式源中,哨兵必须从位置1开始。@hristoilev$代码>可用于仅在启用OpenMP时验证的Fortran语句。。。否则,它们将被视为注释。看,一个人每天都在学习新东西。非常感谢。无论如何,$
启动有条件编译的语句,而不是示例文件中所述的OpenMP指令(您链接到的提交的一部分)。
<start>(![^$])|(^[Cc](\s|[^$OoAaYyHh]))|(^[Cc]$)</start>