text/x-fortran
*.f;*.f90;*.f95;*.for;*.F;*.F90
!
^#
\\( # leading backslash
[\\\"\'nrbtfav\?] | # escaped character
[0-7]{1,3} | # one, two, or three octal digits
x[0-9A-Fa-f]+ # 'x' followed by hex digits
)
\%{preproc-start}
(include|import)\s*
(".*?"|<.*>)
\%{preproc-start}
(define|undef|error|pragma|ident|if(n?def)?|else|elif|endif|line|warning)
\b
((^[Cc])|^\s*!)\$
L?"
"
\%{escaped-character}
\.
\.
true
false
not
and
or
xor
eqv
neqv
eq
ne
gt
ge
lt
le
abstract
allocate
assign
assignment
associate
bind
block
call
case
class
common
contains
continue
critical
cycle
data
deallocate
default
do concurrent
do
elemental
elseif
else
elsewhere
endassociate
endblock
endcritical
enddo
endenum
endfunction
endif
endinterface
endmodule
endprocedure
endprogram
endselect
endsubmodule
endsubroutine
end
enum
entry
equivalence
error stop
exit
extends
external
final
forall
function
generic
go to
goto
if
implicit none
implicit
import
impure
in
[^#]include
inout
interface
intrinsic
kind
len
lock
module
namelist
nullify
only
operator
out
pause
private
program
public
pure
recursive
result
return
save
select
stop
submodule
subroutine
sync all
sync images
sync memory
then
type
unlock
use
where
while
backspace
close
endfile
format
inquire
open
print
read
rewind
wait
write
access
action
advance
blank
delim
direct
end
eor
err
exist
file
fmt
form
formatted
iolength
iostat
name
named
newunit
nextrec
nml
number
opened
pad
position
readwrite
rec
recl
sequential
status
unformatted
unit
write
abs
achar
acosh
acos
adjustl
adjustr
aimag
aint
algama
allocated
all
alog10
alog
amax0
amax1
amin0
amin1
amod
anint
any
asinh
asin
associated
atan2
atanh
atan
atomic_define
atomic_ref
bessel_j0
bessel_j1
bessel_jn
bessel_y0
bessel_y1
bessel_yn
bge
bgt
ble
blt
bit_size
btest
c_associated
c_loc
c_funloc
c_f_pointer
c_f_procpointer
cabs
ccos
cdabs
cdcos
cdexp
cdlog
cdsin
cdsqrt
ceiling
cexp
char
clog
cmplx
command_argument_count
compiler_options
compiler_version
conjg
cosh
cos
count
cpu_time
cqabs
cqcos
cqexp
cqlog
cqsin
cqsqrt
cshift
csin
csqrt
dabs
dacos
dasin
datan2
datan
date_and_time
dble
dcmplx
dconjg
dcosh
dcos
ddim
derf
derfc
dexp
dfloat
dgamma
digits
dim
dimag
dint
dlgama
dlog10
dlog
dmax1
dmin1
dmod
dnint
dot_product
dprod
dshiftl
dshiftr
dsign
dsinh
dsin
dsqrt
dtanh
dtan
eoshift
epsilon
erfc_scaled
erfc
erf
execute_command_line
exp
exponent
findloc
float
floor
flush
fraction
gamma
getarg
get_command
get_command_argument
get_environment_variable
huge
hypot
iabs
iachar
iall
iand
iany
iargc
ibclr
ibits
ibset
ichar
idim
idint
idnint
ieee_class
ieee_copy_sign
ieee_get_flag
ieee_get_halting_mode
ieee_get_rounding_mode
ieee_get_status
ieee_is_finite
ieee_is_nan
ieee_is_negative
ieee_is_normal
ieee_logb
ieee_next_after
ieee_rem
ieee_rint
ieee_scalb
ieee_selected_real_kind
ieee_set_flag
ieee_set_halting_mode
ieee_set_rounding_mode
ieee_set_status
ieee_support_datatype
ieee_support_denormal
ieee_support_divide
ieee_support_flag
ieee_support_halting
ieee_support_inf
ieee_support_nan
ieee_support_rounding
ieee_support_sqrt
ieee_support_standard
ieee_unordered
ieee_value
ieor
ifix
image_index
index
int
ior
iparity
iqint
is_contiguous
is_iostat_end
is_iostat_eor
ishftc
ishft
isign
kind
lbound
lcobound
leadz
len_trim
len
lge
lgt
lle
llt
loc
log_gamma
log10
log
logical
maskl
maskr
matmul
max0
max1
maxexponent
maxloc
maxval
max
merge_bits
merge
min0
min1
minexponent
minloc
minval
min
mod
modulo
move_alloc
mvbits
nearest
new_line
nint
norm2
not
null
num_images
or
pack
parity
popcnt
poppar
precision
present
product
qabs
qacos
qasin
qatan2
qatan
qcmplx
qconjg
qcosh
qcos
qdim
qerf
qerfc
qexp
qgamma
qimag
qlgama
qlog10
qlog
qmax1
qmin1
qmod
qnint
qsign
qsinh
qsin
qsqrt
qtanh
qtan
radix
random_number
random_seed
range
real
repeat
reshape
rrspacing
scale
scan
selected_char_kind
selected_int_kind
selected_real_kind
set_exponent
shape
shifta
shiftl
shiftr
sign
sinh
sin
size
sngl
spacing
spread
sqrt
storage_size
sum
system_clock
tanh
tan
this_image
tiny
trailz
transfer
transpose
trim
ubound
ucobound
unpack
verify
zabs
zcos
zexp
zlog
zsin
zsqrt
byte
character
complex
double complex
double precision
enumerator
integer
logical
procedure
real
allocatable
asynchronous
codimension
contiguous
deferred
dimension
external
intent
intrinsic
non_overridable
nopass
optional
parameter
pass
pointer
private
protected
public
save
synchronous
target
value
volatile
,\s*\%[
\%[
(?<![\w\.])
[+-]?
((\.[0-9]+ | [0-9]+\.[0-9]*) ([ed][+-]?[0-9]*)? |
([0-9]+[ed][+-]?[0-9]*))
([_]([0-9]+|[a-z][\w_]*))?
(?![\w\.])
(?<![\w\.])
[+-]? ([1-9][0-9]*|0)
([_]([0-9]+|[a-z][\w_]*))?
(?![\w\.])
\bb'[01]+'|\bb"[01]+"|
\bo'[0-7]+'|\bo"[0-7]+"|
\bz'[0-9a-f]+'|\bz"[0-9a-f]+"