# ---------------------------------------------------
# f90.syntax
# FORTRAN 90/95 language freeform syntax highlighting template.
# Provides syntax highlighting rules for the
# FORTRAN programming language.
#
# Based on FORTRAN77 version fortran.syntax
# Author: John Theal
# Email: jtheal@renegadelinuxbox.dhs.org
# December 7, 1999
# ---------------------------------------------------

# Heavily modified by Paul Sheer <psheer@obsidian.co.za>.
# Adjusted to Fortran 90 by Norbert Nemec <Norbert@Nemec-online.de>.

caseinsensitive

context default
# keywords at the beginning of line
    keyword linestart \{0123456789\}\{0123456789\}\{0123456789\}\{0123456789\}\{0123456789\} brightred
    keyword linestart \{0123456789\}\{0123456789\}\{0123456789\}\{0123456789\} brightred
    keyword linestart \{0123456789\}\{0123456789\}\{0123456789\} brightred
    keyword linestart \{0123456789\}\{0123456789\} brightred
    keyword linestart \{0123456789\} brightred

# structure
    keyword whole ASSIGNMENT white black
    keyword whole CONTAINS white black
    keyword whole END white black
    keyword whole FUNCTION white black
    keyword whole INTERFACE white black
    keyword whole INCLUDE white black
    keyword whole MODULE white black
    keyword whole OPERATOR white black
    keyword whole PROGRAM white black
    keyword whole SUBROUTINE white black

# boolean and logical expressions / operators
    keyword .and. brightred/orange
    keyword .eq. brightred/orange
    keyword .eqv. brightred/orange
    keyword .false. brightred/orange
    keyword .ge. brightred/orange
    keyword .gt. brightred/orange
    keyword .le. brightred/orange
    keyword .lt. brightred/orange
    keyword .ne. brightred/orange
    keyword .neqv. brightred/orange
    keyword .not. brightred/orange
    keyword .or. brightred/orange
    keyword .true. brightred/orange
    keyword whole lge brightred/orange
    keyword whole lgt brightred/orange
    keyword whole lle brightred/orange
    keyword whole llt brightred/orange

# declarations
    keyword whole ALLOCATABLE brightcyan
    keyword whole BLOCK brightcyan
    keyword whole CHARACTER brightcyan
    keyword whole COMMON brightcyan
    keyword whole COMPLEX brightcyan
    keyword whole DATA brightcyan
    keyword whole DIMENSION brightcyan
    keyword whole DOUBLE brightcyan
    keyword whole ELEMENTAL brightcyan
    keyword whole EQUIVALENCE brightcyan
    keyword whole EXTERNAL brightcyan
    keyword whole FORMAT brightcyan
    keyword whole IMPLICIT brightcyan
    keyword whole INTEGER brightcyan
    keyword whole INTENT brightcyan
    keyword whole INTRINSIC brightcyan
    keyword whole LOGICAL brightcyan
    keyword whole NAMELIST brightcyan
    keyword whole NONE brightcyan
    keyword whole ONLY brightcyan
    keyword whole OPTIONAL brightcyan
    keyword whole PARAMETER brightcyan
    keyword whole POINTER brightcyan
    keyword whole PRECISION brightcyan
    keyword whole PRIVATE brightcyan
    keyword whole PUBLIC brightcyan
    keyword whole PURE brightcyan
    keyword whole REAL brightcyan
    keyword whole SAVE brightcyan
    keyword whole TYPE brightcyan
    keyword whole USE brightcyan

# general programming syntax
    keyword whole allocate brightgreen
    keyword whole assign brightgreen
    keyword whole call brightgreen
    keyword whole case brightgreen
    keyword whole deallocate brightgreen
    keyword whole default brightgreen
    keyword whole continue brightgreen
    keyword whole cycle brightgreen
    keyword whole do brightgreen
    keyword whole else brightgreen
    keyword whole elseif brightgreen
    keyword whole elsewhere brightgreen
    keyword whole end brightgreen
    keyword whole enddo brightgreen
    keyword whole endif brightgreen
    keyword whole exit brightgreen
    keyword whole for brightgreen
    keyword whole forall brightgreen
    keyword whole goto brightgreen
    keyword whole if brightgreen
    keyword whole nullify brightgreen
    keyword whole pause brightgreen
    keyword whole return brightgreen
    keyword whole select brightgreen
    keyword whole stop brightgreen
    keyword whole target brightgreen
    keyword whole then brightgreen
    keyword whole to brightgreen
    keyword whole where brightgreen
    keyword whole while brightgreen

# headers
    keyword whole entry brightgreen

# I/O functions
# may have optional equal signs after them: 'keyword ='
    keyword whole access brightmagenta
    keyword whole backspace brightmagenta
    keyword whole blank brightmagenta
    keyword whole close brightmagenta
    keyword whole direct brightmagenta
    keyword whole endfile brightmagenta
    keyword whole err brightmagenta
    keyword whole exist brightmagenta
    keyword whole file brightmagenta
    keyword whole fmt brightmagenta
    keyword whole form brightmagenta
    keyword whole formatted brightmagenta
    keyword whole inquire brightmagenta
    keyword whole iostat brightmagenta
    keyword whole name brightmagenta
    keyword whole named brightmagenta
    keyword whole nextrec brightmagenta
    keyword whole number brightmagenta
    keyword whole open brightmagenta
    keyword whole opened brightmagenta
    keyword whole print brightmagenta
    keyword whole read brightmagenta
    keyword whole rec brightmagenta
    keyword whole recl brightmagenta
    keyword whole rewind brightmagenta
    keyword whole sequential brightmagenta
    keyword whole status brightmagenta
    keyword whole unformatted brightmagenta
    keyword whole unit brightmagenta
    keyword whole write brightmagenta

# mathematical functions
    keyword whole abs yellow
    keyword whole achar yellow
    keyword whole acos yellow
    keyword whole aimag yellow
    keyword whole aint yellow
    keyword whole alog yellow
    keyword whole alog10 yellow
    keyword whole amax0 yellow
    keyword whole amax1 yellow
    keyword whole amin0 yellow
    keyword whole amin1 yellow
    keyword whole amod yellow
    keyword whole anint yellow
    keyword whole aprime yellow
    keyword whole asin yellow
    keyword whole atan yellow
    keyword whole atan2 yellow
    keyword whole acos yellow
    keyword whole cabs yellow
    keyword whole ceiling yellow
    keyword whole cexp yellow
    keyword whole char yellow
    keyword whole clog yellow
    keyword whole cmplx yellow
    keyword whole conjg yellow
    keyword whole cos yellow
    keyword whole cosh yellow
    keyword whole ccos yellow
    keyword whole csin yellow
    keyword whole csqrt yellow
    keyword whole dabs yellow
    keyword whole dacos yellow
    keyword whole dasin yellow
    keyword whole datan yellow
    keyword whole datan2 yellow
    keyword whole dble yellow
    keyword whole dcos yellow
    keyword whole dcosh yellow
    keyword whole dfloat yellow
    keyword whole ddmim yellow
    keyword whole dexp yellow
    keyword whole dim yellow
    keyword whole dint yellow
    keyword whole dlog yellow
    keyword whole dlog10 yellow
    keyword whole dmax1 yellow
    keyword whole dmin1 yellow
    keyword whole dmod yellow
    keyword whole dnint yellow
    keyword whole dsign yellow
    keyword whole dsin yellow
    keyword whole dsinh yellow
    keyword whole dsqrt yellow
    keyword whole dtan yellow
    keyword whole dtanh yellow
    keyword whole exp yellow
    keyword whole float yellow
    keyword whole floor yellow
    keyword whole iabs yellow
    keyword whole iachar yellow
    keyword whole ichar yellow
    keyword whole idim yellow
    keyword whole idint yellow
    keyword whole ifix yellow
    keyword whole index yellow
    keyword whole int yellow
    keyword whole isign yellow
    keyword whole len yellow
    keyword whole log yellow
    keyword whole log10 yellow
    keyword whole matmul yellow
    keyword whole max yellow
    keyword whole max0 yellow
    keyword whole max1 yellow
    keyword whole maxval yellow
    keyword whole min yellow
    keyword whole min0 yellow
    keyword whole min1 yellow
    keyword whole minval yellow
    keyword whole mod yellow
    keyword whole nint yellow
    keyword whole product yellow
    keyword whole rand yellow
    keyword whole random_number yellow
    keyword whole random_seed yellow
    keyword whole sign yellow
    keyword whole sin yellow
    keyword whole sinh yellow
    keyword whole sngl yellow
    keyword whole sqrt yellow
    keyword whole sum yellow
    keyword whole tan yellow
    keyword whole tanh yellow
    keyword whole transpose yellow

# operators and syntax elements
    keyword ( brightcyan
    keyword ) brightcyan
    keyword : brightcyan
    keyword , brightcyan
    keyword ; brightcyan
    keyword \+ yellow
    keyword - yellow
    keyword \* yellow
    keyword / yellow
    keyword = yellow
    keyword < yellow
    keyword > yellow

# comments and quotes
    keyword '*' green
    keyword "*" green

#context &\n \n black cyan
    keyword &\n black cyan

context format( ) green

context ! \n brown
   spellcheck
