name: Fortran fileTypes:
-
f
-
F
-
f77
-
F77
-
f90
-
F90
-
f95
-
F95
-
for
-
FOR
-
fpp
-
FPP
-
dmod1
-
dt
firstLineMatch: “(?i)-- mode: f90 -[*]-” scopeName: source.fortran uuid: 45253F88-F7CC-49C5-9C32-F3FADD2AB579 foldingStartMarker: ^s*(?i:(if|for|do|module(?!s*procedure)|interface|type(?!s*()|subroutine|function))s.*$ patterns:
-
name: meta.function.fortran endCaptures:
"0": name: punctuation.definition.parameters.fortran
begin: “(?x)n (?: (?i:subroutine\s+) | (?i:function\s+) )n t([A-Za-z_][A-Za-z0-9_:]+)n t \s*((\()(?=[^)\n]*))?n ” beginCaptures:
"1": name: entity.name.function.fortran "2": name: punctuation.definition.parameters.fortran
end: ) patterns:
-
include: $base
-
-
name: keyword.control.fortran match: b(?i:(use|if|for|do|gosto|then|else|function|end|enddo|endif|contains|assign|backspace|call|close|continue|endfile|inquire|open|print|read|return|rewind|stop|write))b
-
name: comment.line.c.fortran.punchcard-style begin: ^[Cc] beginCaptures:
"0": name: punctuation.definition.comment.fortran
end: $n? patterns:
-
match: \s*n
-
-
name: comment.line.asterisk.fortran.modern begin: ^[*] beginCaptures:
"0": name: punctuation.definition.comment.fortran
end: $n? patterns:
-
match: \s*n
-
-
name: comment.line.exclamation.fortran.modern begin: “[!]” beginCaptures:
"0": name: punctuation.definition.comment.fortran
end: $n? patterns:
-
match: \s*n
-
-
name: string.quoted.single.fortran endCaptures:
"0": name: punctuation.definition.string.end.fortran
begin: “'” beginCaptures:
"0": name: punctuation.definition.string.begin.fortran
end: “'” patterns:
-
name: constant.character.escape.fortran match: \.
-
-
name: string.quoted.double.fortran endCaptures:
"0": name: punctuation.definition.string.end.fortran
begin: “"” beginCaptures:
"0": name: punctuation.definition.string.begin.fortran
end: “"” patterns:
-
name: constant.character.escape.fortran match: \.
-
-
name: storage.type.fortran match: b(?i:data|double|blocksdata|doublesprecision|type(?=s*()|entry|equivalence|integer|real|character|intrinsic|logical|parameter)b
-
name: storage.modifier.fortran match: b(?i:(private|public|external|format|implicit|common|intent|in|out|inout))b
-
name: keyword.other.fortran.90 match: b(?i:(recursive|optional|interface|procedure|module|pointer|target))b
-
name: keyword.other.fortran match: b(?i:(program|save|subroutine|function|module|none))b
-
name: constant.language.fortran match: b(?i:(r8|r4|TRUE|FALSE))b
-
name: keyword.operator.fortran match: (?i:(.and.|.or.|.eq.|.lt.|.le.|.gt.|.ge.|.ne.|.not.|.eqv.|.neqv.))
-
name: keyword.operator.fortran.90 match: (==|/=|>=|>|<|<=|%|=>|=|::)
-
name: constant.numeric.fortran match: b((0(x|X)[0-9a-fA-F]*)|([0-9.]*_[0-9]+)|((+.?[0-9]*)|(.+))((e|E)(+|-)?+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?b
-
name: meta.tag.preprocessor.macro.fortran begin: “(?x)n tt^\s*\#\s*(define)\s+ # definen tt((?
[a-zA-Z_][a-zA-Z0-9_]*)) # macro namen tt\((n ttt\s* \g<id> \s* # first argumentn ttt(, \s* \g<id> \s*)* # additional argumentsn tt)\)n t” end: (?=(?://|/*))|$ -
name: meta.preprocessor.include.fortran begin: ^s*(#)s*(include|import)bs+ beginCaptures:
"1": name: punctuation.definition.preprocessor.fortran "2": name: keyword.control.import.fortran
end: (?=(?://|/*))|$ patterns:
-
match: \s*n
-
name: string.quoted.double.include.fortran endCaptures:
"0": name: punctuation.definition.string.end.fortran
begin: “"” beginCaptures:
"0": name: punctuation.definition.string.begin.fortran
end: “"”
-
name: string.quoted.other.lt-gt.include.fortran endCaptures:
"0": name: punctuation.definition.string.end.fortran
begin: < beginCaptures:
"0": name: punctuation.definition.string.begin.fortran
end: “>”
-
-
name: meta.preprocessor.fortran begin: ^s*#s*(define|defined|elif|else|if|ifdef|ifndef|line|pragma|undef|endif)b end: (?=(?://|/*))|$ patterns:
-
match: \s*n
-
-
name: keyword.other.non-executable.fortran match: b(?i:(dimension|function))b
foldingStopMarker: ^s*(?i:(end)).*$ keyEquivalent: ^~F