# ---------------------------------------------------
# fortran.syntax
# FORTRAN language syntax highlighting template.
# Provides syntax highlighting rules for the
# FORTRAN programming language.
#
# Author: John Theal
# Email: jtheal@renegadelinuxbox.dhs.org
# December 7, 1999
# ---------------------------------------------------

# Heavily modified by Paul Sheer <psheer@obsidian.co.za>.

caseinsensitive

context default
# keywords at the beginning of line
    keyword linestart ! black yellow
    keyword linestart \* black yellow
    keyword linestart c black yellow
    keyword linestart C black yellow

    keyword linestart \s\s\s\s\s\* yellow red
    keyword linestart \s\s\s\s\s\+ yellow red

    keyword linestart \s\s\s\s\s\s black brightcyan/blue3

    keyword linestart 0\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white brightcyan
    keyword linestart 1\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white brightcyan
    keyword linestart 2\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white brightcyan
    keyword linestart 3\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white brightcyan
    keyword linestart 4\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white brightcyan
    keyword linestart 5\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white brightcyan
    keyword linestart 6\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white brightcyan
    keyword linestart 7\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white brightcyan
    keyword linestart 8\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white brightcyan
    keyword linestart 9\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white brightcyan

    keyword linestart \s\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white brightcyan
    keyword linestart               \s\s\{0123456789\s\}\{0123456789\s\}\{0123456789\s\}\s white brightcyan
    keyword linestart                             \s\s\s\{0123456789\s\}\{0123456789\s\}\s white brightcyan
    keyword linestart                                           \s\s\s\s\{0123456789\s\}\s white brightcyan

# 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 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 external brightcyan
    keyword whole format brightcyan
    keyword whole implicit brightcyan
    keyword whole integer brightcyan
    keyword whole intrinsic brightcyan
    keyword whole logical brightcyan
    keyword whole none brightcyan
    keyword whole parameter brightcyan
    keyword whole precision brightcyan
    keyword whole real brightcyan

# general programming syntax
    keyword whole assign brightgreen
    keyword whole call brightgreen
    keyword whole continue brightgreen
    keyword whole do brightgreen
    keyword whole else brightgreen
    keyword whole elseif brightgreen
    keyword whole end brightgreen
    keyword whole enddo brightgreen
    keyword whole endif brightgreen
    keyword whole for brightgreen
    keyword whole goto brightgreen
    keyword whole if brightgreen
    keyword whole pause brightgreen
    keyword whole return brightgreen
    keyword whole stop brightgreen
    keyword whole then brightgreen
    keyword whole to brightgreen
    keyword whole while brightgreen

# headers
    keyword whole entry brightgreen
    keyword whole function yellow
    keyword whole program yellow
    keyword whole subroutine yellow

# 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 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 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 equivalence yellow
    keyword whole exp yellow
    keyword whole float yellow
    keyword whole iabs 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 max yellow
    keyword whole max0 yellow
    keyword whole max1 yellow
    keyword whole min yellow
    keyword whole min0 yellow
    keyword whole min1 yellow
    keyword whole mod yellow
    keyword whole rand yellow
    keyword whole sign yellow
    keyword whole sin yellow
    keyword whole sinh yellow
    keyword whole sngl yellow
    keyword whole sqrt yellow
    keyword whole tan yellow
    keyword whole tanh yellow

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

# comments and quotes
    keyword '*' green

context exclusive linestart ! \n brown
   spellcheck
context exclusive linestart \* \n brown
   spellcheck
context exclusive linestart c \n brown
   spellcheck
context exclusive linestart C \n brown
   spellcheck
