Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9124269
fortran.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
9 KB
Subscribers
None
fortran.js
View Options
/*
Language: Fortran
Author: Anthony Scemama <scemama@irsamc.ups-tlse.fr>
Website: https://en.wikipedia.org/wiki/Fortran
Category: scientific
*/
/** @type LanguageFn */
function
fortran
(
hljs
)
{
const
regex
=
hljs
.
regex
;
const
PARAMS
=
{
className
:
'params'
,
begin
:
'\\('
,
end
:
'\\)'
};
const
COMMENT
=
{
variants
:
[
hljs
.
COMMENT
(
'!'
,
'$'
,
{
relevance
:
0
}),
// allow FORTRAN 77 style comments
hljs
.
COMMENT
(
'^C[ ]'
,
'$'
,
{
relevance
:
0
}),
hljs
.
COMMENT
(
'^C$'
,
'$'
,
{
relevance
:
0
})
]
};
// regex in both fortran and irpf90 should match
const
OPTIONAL_NUMBER_SUFFIX
=
/(_[a-z_\d]+)?/
;
const
OPTIONAL_NUMBER_EXP
=
/([de][+-]?\d+)?/
;
const
NUMBER
=
{
className
:
'number'
,
variants
:
[
{
begin
:
regex
.
concat
(
/\b\d+/
,
/\.(\d*)/
,
OPTIONAL_NUMBER_EXP
,
OPTIONAL_NUMBER_SUFFIX
)
},
{
begin
:
regex
.
concat
(
/\b\d+/
,
OPTIONAL_NUMBER_EXP
,
OPTIONAL_NUMBER_SUFFIX
)
},
{
begin
:
regex
.
concat
(
/\.\d+/
,
OPTIONAL_NUMBER_EXP
,
OPTIONAL_NUMBER_SUFFIX
)
}
],
relevance
:
0
};
const
FUNCTION_DEF
=
{
className
:
'function'
,
beginKeywords
:
'subroutine function program'
,
illegal
:
'[${=\\n]'
,
contains
:
[
hljs
.
UNDERSCORE_TITLE_MODE
,
PARAMS
]
};
const
STRING
=
{
className
:
'string'
,
relevance
:
0
,
variants
:
[
hljs
.
APOS_STRING_MODE
,
hljs
.
QUOTE_STRING_MODE
]
};
const
KEYWORDS
=
[
"kind"
,
"do"
,
"concurrent"
,
"local"
,
"shared"
,
"while"
,
"private"
,
"call"
,
"intrinsic"
,
"where"
,
"elsewhere"
,
"type"
,
"endtype"
,
"endmodule"
,
"endselect"
,
"endinterface"
,
"end"
,
"enddo"
,
"endif"
,
"if"
,
"forall"
,
"endforall"
,
"only"
,
"contains"
,
"default"
,
"return"
,
"stop"
,
"then"
,
"block"
,
"endblock"
,
"endassociate"
,
"public"
,
"subroutine|10"
,
"function"
,
"program"
,
".and."
,
".or."
,
".not."
,
".le."
,
".eq."
,
".ge."
,
".gt."
,
".lt."
,
"goto"
,
"save"
,
"else"
,
"use"
,
"module"
,
"select"
,
"case"
,
"access"
,
"blank"
,
"direct"
,
"exist"
,
"file"
,
"fmt"
,
"form"
,
"formatted"
,
"iostat"
,
"name"
,
"named"
,
"nextrec"
,
"number"
,
"opened"
,
"rec"
,
"recl"
,
"sequential"
,
"status"
,
"unformatted"
,
"unit"
,
"continue"
,
"format"
,
"pause"
,
"cycle"
,
"exit"
,
"c_null_char"
,
"c_alert"
,
"c_backspace"
,
"c_form_feed"
,
"flush"
,
"wait"
,
"decimal"
,
"round"
,
"iomsg"
,
"synchronous"
,
"nopass"
,
"non_overridable"
,
"pass"
,
"protected"
,
"volatile"
,
"abstract"
,
"extends"
,
"import"
,
"non_intrinsic"
,
"value"
,
"deferred"
,
"generic"
,
"final"
,
"enumerator"
,
"class"
,
"associate"
,
"bind"
,
"enum"
,
"c_int"
,
"c_short"
,
"c_long"
,
"c_long_long"
,
"c_signed_char"
,
"c_size_t"
,
"c_int8_t"
,
"c_int16_t"
,
"c_int32_t"
,
"c_int64_t"
,
"c_int_least8_t"
,
"c_int_least16_t"
,
"c_int_least32_t"
,
"c_int_least64_t"
,
"c_int_fast8_t"
,
"c_int_fast16_t"
,
"c_int_fast32_t"
,
"c_int_fast64_t"
,
"c_intmax_t"
,
"C_intptr_t"
,
"c_float"
,
"c_double"
,
"c_long_double"
,
"c_float_complex"
,
"c_double_complex"
,
"c_long_double_complex"
,
"c_bool"
,
"c_char"
,
"c_null_ptr"
,
"c_null_funptr"
,
"c_new_line"
,
"c_carriage_return"
,
"c_horizontal_tab"
,
"c_vertical_tab"
,
"iso_c_binding"
,
"c_loc"
,
"c_funloc"
,
"c_associated"
,
"c_f_pointer"
,
"c_ptr"
,
"c_funptr"
,
"iso_fortran_env"
,
"character_storage_size"
,
"error_unit"
,
"file_storage_size"
,
"input_unit"
,
"iostat_end"
,
"iostat_eor"
,
"numeric_storage_size"
,
"output_unit"
,
"c_f_procpointer"
,
"ieee_arithmetic"
,
"ieee_support_underflow_control"
,
"ieee_get_underflow_mode"
,
"ieee_set_underflow_mode"
,
"newunit"
,
"contiguous"
,
"recursive"
,
"pad"
,
"position"
,
"action"
,
"delim"
,
"readwrite"
,
"eor"
,
"advance"
,
"nml"
,
"interface"
,
"procedure"
,
"namelist"
,
"include"
,
"sequence"
,
"elemental"
,
"pure"
,
"impure"
,
"integer"
,
"real"
,
"character"
,
"complex"
,
"logical"
,
"codimension"
,
"dimension"
,
"allocatable|10"
,
"parameter"
,
"external"
,
"implicit|10"
,
"none"
,
"double"
,
"precision"
,
"assign"
,
"intent"
,
"optional"
,
"pointer"
,
"target"
,
"in"
,
"out"
,
"common"
,
"equivalence"
,
"data"
];
const
LITERALS
=
[
".False."
,
".True."
];
const
BUILT_INS
=
[
"alog"
,
"alog10"
,
"amax0"
,
"amax1"
,
"amin0"
,
"amin1"
,
"amod"
,
"cabs"
,
"ccos"
,
"cexp"
,
"clog"
,
"csin"
,
"csqrt"
,
"dabs"
,
"dacos"
,
"dasin"
,
"datan"
,
"datan2"
,
"dcos"
,
"dcosh"
,
"ddim"
,
"dexp"
,
"dint"
,
"dlog"
,
"dlog10"
,
"dmax1"
,
"dmin1"
,
"dmod"
,
"dnint"
,
"dsign"
,
"dsin"
,
"dsinh"
,
"dsqrt"
,
"dtan"
,
"dtanh"
,
"float"
,
"iabs"
,
"idim"
,
"idint"
,
"idnint"
,
"ifix"
,
"isign"
,
"max0"
,
"max1"
,
"min0"
,
"min1"
,
"sngl"
,
"algama"
,
"cdabs"
,
"cdcos"
,
"cdexp"
,
"cdlog"
,
"cdsin"
,
"cdsqrt"
,
"cqabs"
,
"cqcos"
,
"cqexp"
,
"cqlog"
,
"cqsin"
,
"cqsqrt"
,
"dcmplx"
,
"dconjg"
,
"derf"
,
"derfc"
,
"dfloat"
,
"dgamma"
,
"dimag"
,
"dlgama"
,
"iqint"
,
"qabs"
,
"qacos"
,
"qasin"
,
"qatan"
,
"qatan2"
,
"qcmplx"
,
"qconjg"
,
"qcos"
,
"qcosh"
,
"qdim"
,
"qerf"
,
"qerfc"
,
"qexp"
,
"qgamma"
,
"qimag"
,
"qlgama"
,
"qlog"
,
"qlog10"
,
"qmax1"
,
"qmin1"
,
"qmod"
,
"qnint"
,
"qsign"
,
"qsin"
,
"qsinh"
,
"qsqrt"
,
"qtan"
,
"qtanh"
,
"abs"
,
"acos"
,
"aimag"
,
"aint"
,
"anint"
,
"asin"
,
"atan"
,
"atan2"
,
"char"
,
"cmplx"
,
"conjg"
,
"cos"
,
"cosh"
,
"exp"
,
"ichar"
,
"index"
,
"int"
,
"log"
,
"log10"
,
"max"
,
"min"
,
"nint"
,
"sign"
,
"sin"
,
"sinh"
,
"sqrt"
,
"tan"
,
"tanh"
,
"print"
,
"write"
,
"dim"
,
"lge"
,
"lgt"
,
"lle"
,
"llt"
,
"mod"
,
"nullify"
,
"allocate"
,
"deallocate"
,
"adjustl"
,
"adjustr"
,
"all"
,
"allocated"
,
"any"
,
"associated"
,
"bit_size"
,
"btest"
,
"ceiling"
,
"count"
,
"cshift"
,
"date_and_time"
,
"digits"
,
"dot_product"
,
"eoshift"
,
"epsilon"
,
"exponent"
,
"floor"
,
"fraction"
,
"huge"
,
"iand"
,
"ibclr"
,
"ibits"
,
"ibset"
,
"ieor"
,
"ior"
,
"ishft"
,
"ishftc"
,
"lbound"
,
"len_trim"
,
"matmul"
,
"maxexponent"
,
"maxloc"
,
"maxval"
,
"merge"
,
"minexponent"
,
"minloc"
,
"minval"
,
"modulo"
,
"mvbits"
,
"nearest"
,
"pack"
,
"present"
,
"product"
,
"radix"
,
"random_number"
,
"random_seed"
,
"range"
,
"repeat"
,
"reshape"
,
"rrspacing"
,
"scale"
,
"scan"
,
"selected_int_kind"
,
"selected_real_kind"
,
"set_exponent"
,
"shape"
,
"size"
,
"spacing"
,
"spread"
,
"sum"
,
"system_clock"
,
"tiny"
,
"transpose"
,
"trim"
,
"ubound"
,
"unpack"
,
"verify"
,
"achar"
,
"iachar"
,
"transfer"
,
"dble"
,
"entry"
,
"dprod"
,
"cpu_time"
,
"command_argument_count"
,
"get_command"
,
"get_command_argument"
,
"get_environment_variable"
,
"is_iostat_end"
,
"ieee_arithmetic"
,
"ieee_support_underflow_control"
,
"ieee_get_underflow_mode"
,
"ieee_set_underflow_mode"
,
"is_iostat_eor"
,
"move_alloc"
,
"new_line"
,
"selected_char_kind"
,
"same_type_as"
,
"extends_type_of"
,
"acosh"
,
"asinh"
,
"atanh"
,
"bessel_j0"
,
"bessel_j1"
,
"bessel_jn"
,
"bessel_y0"
,
"bessel_y1"
,
"bessel_yn"
,
"erf"
,
"erfc"
,
"erfc_scaled"
,
"gamma"
,
"log_gamma"
,
"hypot"
,
"norm2"
,
"atomic_define"
,
"atomic_ref"
,
"execute_command_line"
,
"leadz"
,
"trailz"
,
"storage_size"
,
"merge_bits"
,
"bge"
,
"bgt"
,
"ble"
,
"blt"
,
"dshiftl"
,
"dshiftr"
,
"findloc"
,
"iall"
,
"iany"
,
"iparity"
,
"image_index"
,
"lcobound"
,
"ucobound"
,
"maskl"
,
"maskr"
,
"num_images"
,
"parity"
,
"popcnt"
,
"poppar"
,
"shifta"
,
"shiftl"
,
"shiftr"
,
"this_image"
,
"sync"
,
"change"
,
"team"
,
"co_broadcast"
,
"co_max"
,
"co_min"
,
"co_sum"
,
"co_reduce"
];
return
{
name
:
'Fortran'
,
case_insensitive
:
true
,
aliases
:
[
'f90'
,
'f95'
],
keywords
:
{
keyword
:
KEYWORDS
,
literal
:
LITERALS
,
built_in
:
BUILT_INS
},
illegal
:
/\/\*/
,
contains
:
[
STRING
,
FUNCTION_DEF
,
// allow `C = value` for assignments so they aren't misdetected
// as Fortran 77 style comments
{
begin
:
/^C\s*=(?!=)/
,
relevance
:
0
},
COMMENT
,
NUMBER
]
};
}
module
.
exports
=
fortran
;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Jun 21, 6:54 PM (2 w, 1 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3338110
Attached To
rDWAPPS Web applications
Event Timeline
Log In to Comment