Fortran gedit中的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

我正面临一个尴尬的局面。我试图在Linux中使用ifort运行Fortran 90程序,由于它有OpenMP指令,我使用
-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>