Fortran90 OpenMP directives -- syntax highlighting?

dantian dantian at free.fr
Tue Sep 22 19:33:58 CEST 2009


Hi,

here is what I do:

openmp:"!\\$omp":"$"::Identifier1::\n\

and for MPI ....

mpi:"call MPI_":"$"::Text Key1::\n\

Well here is the whole Fortran90 stuff:

    Fortran90:1:30{\n\
        openmp:"!\\$omp":"$"::Identifier1::\n\
        mpi:"call MPI_":"$"::Text Key1::\n\
        Comment:"!":"$"::Comment::\n\
        Continuation:"&":::Flag::\n\
        String:"'":"'":"\\n([^ \\t]| [^ \\t]|  [^ \\t]|   [^ \\t]|    [^ 
\\t]|     [ \\t0]| *\\t[^1-9])":String::\n\
        
Keywords:"<(ACCEPT|[Aa]ccept|ASSIGN|[Aa]ssign|AUTOMATIC|[Aa]utomatic|BACKSPACE|[Bb]ackspace|BLOCK|[Bb]lock|CALL|[Cc]all|CLOSE|[Cc]lose|COMMON|[Cc]ommon|CONTINUE|[Cc]ontinue|DATA|[Dd]ata|DECODE|[Dd]ecode|DELETE|[Dd]elete|DIMENSION|[Dd]imension|DO|[Dd]o|ELSE|[Ee]lse|ELSEIF|[Ee]lseif|ENCODE|[Ee]ncode|END 
*FILE|[Ee]nd 
*[Ff]ile|ENDFILE|[Ee]ndfile|END|[Ee]nd|ENDDO|[Ee]nddo|ENDIF|[Ee]ndif|ENTRY|[Ee]ntry|EQUIVALENCE|[Ee]quivalence|EXIT|[Ee]xit|EXTERNAL|[Ee]xternal|FORMAT|[Ff]ormat|FUNCTION|[Ff]unction|GOTO|[Gg]oto|IF|[Ii]f|IMPLICIT|[Ii]mplicit|INCLUDE|[Ii]nclude|INQUIRE|[Ii]nquire|INTRINSIC|[Ii]ntrinsic|LOGICAL|[Ll]ogical|MAP|[Mm]ap|NONE|[Nn]one|ON|[Oo]n|OPEN|[Oo]pen|PARAMETER|[Pp]arameter|PAUSE|[Pp]ause|POINTER|[Pp]ointer|PRINT|[Pp]rint|PROGRAM|[Pp]rogram|READ|[Rr]ead|RECORD|[Rr]ecord|RETURN|[Rr]eturn|REWIND|[Rr]ewind|SAVE|[Ss]ave|STATIC|[Ss]tatic|STOP|[Ss]top|STRUCTURE|[Ss]tructure|SUBROUTINE|[Ss]ubroutine|SYSTEM|[Ss]ystem|THEN|[Tt]hen|TO|[Tt]o|TYPE|[Tt]ype|UNION|[Uu]nion|UNLOCK|[Uu]nlock|VIRTUAL|[Vv]irtual|VOLATILE|[Vv]olatile|WHILE|[Ww]hile|WRITE|[Ww]rite)>":::Keyword::D\n\
        Data 
Types:"<(BYTE|[Bb]yte|CHARACTER|[Cc]haracter|COMPLEX|[Cc]omplex|DOUBLE 
*COMPLEX|[Dd]ouble *[Cc]omplex|DOUBLE *PRECISION|[Dd]ouble 
*[Pp]recision|DOUBLE|[Dd]ouble|INTEGER|[Ii]nteger|REAL|[Rr]eal)(\\*[0-9]+)?>":::Keyword::D\n\
        F90 
Keywords:"<(ALLOCATABLE|[Aa]llocatable|ALLOCATE|[Aa]llocate|CASE|[Cc]ase|CASE|[Cc]ase|CONTAINS|[Cc]ontains|CYCLE|[Cc]ycle|DEALLOCATE|[Dd]eallocate|ELSEWHERE|[Ee]lsewhere|ENDWHERE|[Ee]ndwhere|INTENT|[Ii]ntent|INTERFACE|[Ii]nterface|MODULE|[Mm]odule|NAMELIST|[Nn]amelist|OPTIONAL|[Oo]ptional|PRIVATE|[Pp]rivate|PROCEDURE|[Pp]rocedure|PUBLIC|[Pp]ublic|REWRITE|[Rr]ewrite|SELECT|[Ss]elect|USE|[Uu]se|WHERE|[Ww]here)>":::Keyword::D\n\
        Numeric 
const:"<[0-9]+(\\.[0-9]*)?([DEde][-+]?[0-9]*)?|\\.[0-9]+([DEde][-+]?[0-9]*)?>":::Numeric 
Const::D\n\
    }\n\


Best,

      Éric.

Carlie J. Coats wrote:
>
> Fortran OpenMP directives look something like the following example:
>
> !$OMP   PARALLEL DO DEFAULT( NONE ),                              &
> !$OMP&               SHARED( C1, C2, R1, R2, DH, KH, SFCHEADRT ), &
> !$OMP&              PRIVATE( I, J, K, C, R ),                     &
> !$OMP&             SCHEDULE( DYNAMIC )
>
> where a directive is started by a "!$OMP", and continued by a
> "&\n!$OMP&".  It would be nice to have them highlighted in some
> fashion.  I've tried to treat them as "Preprocessor" style by
> adding a "Directive:"^!\$OMP":"$"::Preprocessor::\n\" line
> to the Fortran90 "nedit.highlightPatterns" in my RC file (not
> a full-strength description of the directives, but for a first
> cut, it should help), and that didn't work for me.  I'm probably
> missing something obvious;-(
>
> How *should* I do it?
>
> -- Carlie J. Coats, Jr.
>    Baron Advanced Meteorological Systems, LLC.
>

-- 
/ Be the change you wish to see in the world
/ --- Mahatma Gandhi ---

dantian.free.fr <http://dantian.free.fr>

/gtalk/: aihaike at gmail.com
/msn/: aihaike at hotmail.com
/skype/: aihaike

/ Please consider the environment before printing this email.
Considérez svp l'environnement avant d'imprimer cet email. /



More information about the Discuss mailing list