Comparing grammar for: https://github.com/ionide/ionide-vscode-fsharp/issues/1073

Created Diff never expires
0 Entfernungen
Zeilen
Gesamt
Entfernt
Wörter
Gesamt
Entfernt
Um diese Funktion weiterhin zu nutzen, aktualisieren Sie auf
Diffchecker logo
Diffchecker Pro
733 Zeilen
0 Hinzufügungen
Zeilen
Gesamt
Hinzugefügt
Wörter
Gesamt
Hinzugefügt
Um diese Funktion weiterhin zu nutzen, aktualisieren Sie auf
Diffchecker logo
Diffchecker Pro
733 Zeilen
{
{
"name": "fsharp",
"name": "fsharp",
"scopeName": "source.fsharp",
"scopeName": "source.fsharp",
"fileTypes": [
"fileTypes": [
"fs"
"fs"
],
],
"foldingStartMarker": "",
"foldingStartMarker": "",
"foldingStopMarker": "",
"foldingStopMarker": "",
"patterns": [
"patterns": [
{
{
"include": "#compiler_directives"
"include": "#compiler_directives"
},
},
{
{
"include": "#comments"
"include": "#comments"
},
},
{
{
"include": "#constants"
"include": "#constants"
},
},
{
{
"include": "#strings"
"include": "#strings"
},
},
{
{
"include": "#chars"
"include": "#chars"
},
},
{
{
"include": "#double_tick"
"include": "#double_tick"
},
},
{
{
"include": "#definition"
"include": "#definition"
},
},
{
{
"include": "#abstract_definition"
"include": "#abstract_definition"
},
},
{
{
"include": "#attributes"
"include": "#attributes"
},
},
{
{
"include": "#modules"
"include": "#modules"
},
},
{
{
"include": "#anonymous_functions"
"include": "#anonymous_functions"
},
},
{
{
"include": "#du_declaration"
"include": "#du_declaration"
},
},
{
{
"include": "#record_declaration"
"include": "#record_declaration"
},
},
{
{
"include": "#records"
"include": "#records"
},
},
{
{
"include": "#strp_inlined"
"include": "#strp_inlined"
},
},
{
{
"include": "#keywords"
"include": "#keywords"
},
},
{
{
"include": "#cexprs"
"include": "#cexprs"
},
},
{
{
"include": "#text"
"include": "#text"
}
}
],
],
"repository": {
"repository": {
"strp_inlined_body": {
"strp_inlined_body": {
"patterns": [
"patterns": [
{
{
"include": "#comments"
"include": "#comments"
},
},
{
{
"include": "#anonymous_functions"
"include": "#anonymous_functions"
},
},
{
{
"match": "(\\^[[:alpha:]0-9'._]+)",
"match": "(\\^[[:alpha:]0-9'._]+)",
"captures": {
"captures": {
"1": {
"1": {
"name": "entity.name.type.fsharp"
"name": "entity.name.type.fsharp"
}
}
}
}
},
},
{
{
"name": "keyword.fsharp",
"name": "keyword.fsharp",
"match": "\\b(and|when|or)\\b"
"match": "\\b(and|when|or)\\b"
},
},
{
{
"begin": "(\\()",
"begin": "(\\()",
"beginCaptures": {
"beginCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"end": "(\\))",
"end": "(\\))",
"endCaptures": {
"endCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"patterns": [
"patterns": [
{
{
"include": "#strp_inlined_body"
"include": "#strp_inlined_body"
}
}
]
]
},
},
{
{
"match": "(static member|member)\\s*([[:alpha:]0-9'`<>^._]+|``[[:alpha:]0-9' <>^._]+``)\\s*(:)",
"match": "(static member|member)\\s*([[:alpha:]0-9'`<>^._]+|``[[:alpha:]0-9' <>^._]+``)\\s*(:)",
"captures": {
"captures": {
"1": {
"1": {
"name": "keyword.fsharp"
"name": "keyword.fsharp"
},
},
"2": {
"2": {
"name": "variable.fsharp"
"name": "variable.fsharp"
},
},
"3": {
"3": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
}
}
},
},
{
{
"include": "#compiler_directives"
"include": "#compiler_directives"
},
},
{
{
"include": "#constants"
"include": "#constants"
},
},
{
{
"include": "#strings"
"include": "#strings"
},
},
{
{
"include": "#chars"
"include": "#chars"
},
},
{
{
"include": "#double_tick"
"include": "#double_tick"
},
},
{
{
"include": "#keywords"
"include": "#keywords"
},
},
{
{
"include": "#text"
"include": "#text"
},
},
{
{
"include": "#definition"
"include": "#definition"
},
},
{
{
"include": "#attributes"
"include": "#attributes"
},
},
{
{
"include": "#keywords"
"include": "#keywords"
},
},
{
{
"include": "#cexprs"
"include": "#cexprs"
},
},
{
{
"include": "#text"
"include": "#text"
}
}
]
]
},
},
"strp_inlined": {
"strp_inlined": {
"patterns": [
"patterns": [
{
{
"begin": "(\\()",
"begin": "(\\()",
"beginCaptures": {
"beginCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"end": "(\\))",
"end": "(\\))",
"endCaptures": {
"endCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"patterns": [
"patterns": [
{
{
"include": "#strp_inlined_body"
"include": "#strp_inlined_body"
}
}
]
]
}
}
]
]
},
},
"generic_declaration": {
"generic_declaration": {
"patterns": [
"patterns": [
{
{
"comments": "SRTP syntax support",
"comments": "SRTP syntax support",
"begin": "(:)\\s*(\\()\\s*(static member|member)",
"begin": "(:)\\s*(\\()\\s*(static member|member)",
"beginCaptures": {
"beginCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
},
},
"2": {
"2": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
},
},
"3": {
"3": {
"name": "keyword.fsharp"
"name": "keyword.fsharp"
}
}
},
},
"end": "(\\))",
"end": "(\\))",
"endCaptures": {
"endCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"patterns": [
"patterns": [
{
{
"begin": "(\\()",
"begin": "(\\()",
"beginCaptures": {
"beginCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"end": "(\\))",
"end": "(\\))",
"endCaptures": {
"endCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"patterns": [
"patterns": [
{
{
"include": "#member_declaration"
"include": "#member_declaration"
}
}
]
]
},
},
{
{
"match": "(('|\\^)[[:alpha:]0-9'._]+)",
"match": "(('|\\^)[[:alpha:]0-9'._]+)",
"captures": {
"captures": {
"1": {
"1": {
"name": "entity.name.type.fsharp"
"name": "entity.name.type.fsharp"
}
}
}
}
},
},
{
{
"include": "#variables"
"include": "#variables"
},
},
{
{
"include": "#keywords"
"include": "#keywords"
}
}
]
]
},
},
{
{
"name": "keyword.fsharp",
"name": "keyword.fsharp",
"match": "\\b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\\!|return\\!|return|interface|with|abstract|property|union|enum|member|try|finally|and|when|use|use\\!|struct|while|mutable)(?!')\\b"
"match": "\\b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\\!|return\\!|return|interface|with|abstract|property|union|enum|member|try|finally|and|when|use|use\\!|struct|while|mutable)(?!')\\b"
},
},
{
{
"name": "keyword.fsharp",
"name": "keyword.fsharp",
"match": ":"
"match": ":"
},
},
{
{
"include": "#constants"
"include": "#constants"
},
},
{
{
"match": "(('|\\^)[[:alpha:]0-9'._]+)",
"match": "(('|\\^)[[:alpha:]0-9'._]+)",
"captures": {
"captures": {
"1": {
"1": {
"name": "entity.name.type.fsharp"
"name": "entity.name.type.fsharp"
}
}
}
}
},
},
{
{
"begin": "(<)",
"begin": "(<)",
"end": "(>)",
"end": "(>)",
"beginCaptures": {
"beginCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"endCaptures": {
"endCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"patterns": [
"patterns": [
{
{
"match": "(('|\\^)[[:alpha:]0-9'._]+)",
"match": "(('|\\^)[[:alpha:]0-9'._]+)",
"captures": {
"captures": {
"1": {
"1": {
"name": "entity.name.type.fsharp"
"name": "entity.name.type.fsharp"
}
}
}
}
},
},
{
{
"include": "#tuple_signature"
"include": "#tuple_signature"
},
},
{
{
"include": "#generic_declaration"
"include": "#generic_declaration"
}
}
]
]
},
},
{
{
"match": "(?!when|and|or\\b)\\b([\\w0-9'`^._]+)",
"match": "(?!when|and|or\\b)\\b([\\w0-9'`^._]+)",
"comments": "Here we need the \\w modifier in order to check that the words isn't blacklisted",
"comments": "Here we need the \\w modifier in order to check that the words isn't blacklisted",
"captures": {
"captures": {
"1": {
"1": {
"name": "entity.name.type.fsharp"
"name": "entity.name.type.fsharp"
}
}
}
}
},
},
{
{
"match": "(\\|)",
"match": "(\\|)",
"comments": "Prevent captures of `|>` as a keyword when defining custom operator like `<|>`",
"comments": "Prevent captures of `|>` as a keyword when defining custom operator like `<|>`",
"captures": {
"captures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
}
}
},
},
{
{
"include": "#keywords"
"include": "#keywords"
}
}
]
]
},
},
"record_signature": {
"record_signature": {
"patterns": [
"patterns": [
{
{
"match": "[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)",
"match": "[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)",
"captures": {
"captures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
},
},
"2": {
"2": {
"name": "variable.parameter.fsharp"
"name": "variable.parameter.fsharp"
}
}
}
}
},
},
{
{
"begin": "({)",
"begin": "({)",
"end": "(})",
"end": "(})",
"beginCaptures": {
"beginCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"endCaptures": {
"endCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"patterns": [
"patterns": [
{
{
"match": "[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)",
"match": "[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)",
"captures": {
"captures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
},
},
"2": {
"2": {
"name": "variable.parameter.fsharp"
"name": "variable.parameter.fsharp"
}
}
}
}
},
},
{
{
"include": "#record_signature"
"include": "#record_signature"
}
}
]
]
},
},
{
{
"include": "#keywords"
"include": "#keywords"
}
}
]
]
},
},
"tuple_signature": {
"tuple_signature": {
"patterns": [
"patterns": [
{
{
"match": "(([?[:alpha:]0-9'`^._ ]+))+",
"match": "(([?[:alpha:]0-9'`^._ ]+))+",
"captures": {
"captures": {
"1": {
"1": {
"name": "entity.name.type.fsharp"
"name": "entity.name.type.fsharp"
}
}
}
}
},
},
{
{
"begin": "(\\()",
"begin": "(\\()",
"end": "(\\))",
"end": "(\\))",
"beginCaptures": {
"beginCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"endCaptures": {
"endCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"patterns": [
"patterns": [
{
{
"match": "(([?[:alpha:]0-9'`^._ ]+))+",
"match": "(([?[:alpha:]0-9'`^._ ]+))+",
"captures": {
"captures": {
"1": {
"1": {
"name": "entity.name.type.fsharp"
"name": "entity.name.type.fsharp"
}
}
}
}
},
},
{
{
"include": "#tuple_signature"
"include": "#tuple_signature"
}
}
]
]
},
},
{
{
"include": "#keywords"
"include": "#keywords"
}
}
]
]
},
},
"anonymous_functions": {
"anonymous_functions": {
"patterns": [
"patterns": [
{
{
"name": "function.anonymous",
"name": "function.anonymous",
"begin": "\\b(fun)\\b",
"begin": "\\b(fun)\\b",
"end": "(->)",
"end": "(->)",
"beginCaptures": {
"beginCaptures": {
"1": {
"1": {
"name": "keyword.fsharp"
"name": "keyword.fsharp"
}
}
},
},
"endCaptures": {
"endCaptures": {
"1": {
"1": {
"name": "keyword.fsharp"
"name": "keyword.fsharp"
}
}
},
},
"patterns": [
"patterns": [
{
{
"include": "#comments"
"include": "#comments"
},
},
{
{
"begin": "(\\()",
"begin": "(\\()",
"end": "\\s*(?=(->))",
"end": "\\s*(?=(->))",
"beginCaptures": {
"beginCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"endCaptures": {
"endCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"patterns": [
"patterns": [
{
{
"include": "#member_declaration"
"include": "#member_declaration"
}
}
]
]
},
},
{
{
"include": "#variables"
"include": "#variables"
}
}
]
]
}
}
]
]
},
},
"attributes": {
"attributes": {
"patterns": [
"patterns": [
{
{
"name": "support.function.attribute.fsharp",
"name": "support.function.attribute.fsharp",
"begin": "\\[\\<",
"begin": "\\[\\<",
"end": "\\>\\]|\\]",
"end": "\\>\\]|\\]",
"patterns": [
"patterns": [
{
{
"include": "$self"
"include": "$self"
}
}
]
]
}
}
]
]
},
},
"comments": {
"comments": {
"patterns": [
"patterns": [
{
{
"name": "comment.block.markdown.fsharp",
"name": "comment.block.markdown.fsharp",
"begin": "^\\s*(\\(\\*\\*(?!\\)))(?!\\*\\))$",
"begin": "^\\s*(\\(\\*\\*(?!\\)))(?!\\*\\))$",
"while": "^(?!\\s*\\*\\)$)",
"while": "^(?!\\s*\\*\\)$)",
"beginCaptures": {
"beginCaptures": {
"1": {
"1": {
"name": "comment.block.fsharp"
"name": "comment.block.fsharp"
}
}
},
},
"endCaptures": {
"endCaptures": {
"1": {
"1": {
"name": "comment.block.fsharp"
"name": "comment.block.fsharp"
}
}
},
},
"patterns": [
"patterns": [
{
{
"include": "text.html.markdown"
"include": "text.html.markdown"
}
}
]
]
},
},
{
{
"name": "comment.block.markdown.fsharp.end",
"name": "comment.block.markdown.fsharp.end",
"match": "^(\\s*\\*\\)$)",
"match": "^(\\s*\\*\\)$)",
"captures": {
"captures": {
"1": {
"1": {
"name": "comment.block.fsharp"
"name": "comment.block.fsharp"
}
}
}
}
},
},
{
{
"name": "comment.block.fsharp",
"name": "comment.block.fsharp",
"begin": "(\\(\\*(?!\\)))",
"begin": "(\\(\\*(?!\\)))",
"end": "(\\*\\))",
"end": "(\\*\\))",
"beginCaptures": {
"beginCaptures": {
"1": {
"1": {
"name": "comment.block.fsharp"
"name": "comment.block.fsharp"
}
}
},
},
"endCaptures": {
"endCaptures": {
"1": {
"1": {
"name": "comment.block.fsharp"
"name": "comment.block.fsharp"
}
}
}
}
},
},
{
{
"name": "comment.line.markdown.fsharp",
"name": "comment.line.markdown.fsharp",
"begin": "///",
"begin": "///",
"while": "///",
"while": "///",
"patterns": [
"patterns": [
{
{
"include": "text.html.markdown"
"include": "text.html.markdown"
}
}
]
]
},
},
{
{
"name": "comment.line.double-slash.fsharp",
"name": "comment.line.double-slash.fsharp",
"match": "//.*$"
"match": "//.*$"
}
}
]
]
},
},
"constants": {
"constants": {
"patterns": [
"patterns": [
{
{
"name": "constant.language.unit.fsharp",
"name": "constant.language.unit.fsharp",
"match": "\\(\\)"
"match": "\\(\\)"
},
},
{
{
"name": "constant.numeric.floating-point.fsharp",
"name": "constant.numeric.floating-point.fsharp",
"match": "\\b-?[0-9][0-9_]*((\\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))"
"match": "\\b-?[0-9][0-9_]*((\\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))"
},
},
{
{
"name": "constant.numeric.integer.nativeint.fsharp",
"name": "constant.numeric.integer.nativeint.fsharp",
"match": "\\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))"
"match": "\\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))"
},
},
{
{
"name": "constant.others.fsharp",
"name": "constant.others.fsharp",
"match": "\\b(true|false|null|unit)\\b"
"match": "\\b(true|false|null|unit)\\b"
}
}
]
]
},
},
"abstract_definition": {
"abstract_definition": {
"name": "abstract.definition.fsharp",
"name": "abstract.definition.fsharp",
"begin": "\\b(abstract)\\s+(member)?(\\s+\\[\\<.*\\>\\])?\\s*([_[:alpha:]0-9,\\._`\\s]+)(:)",
"begin": "\\b(abstract)\\s+(member)?(\\s+\\[\\<.*\\>\\])?\\s*([_[:alpha:]0-9,\\._`\\s]+)(:)",
"end": "\\s*(with)\\b|=|$",
"end": "\\s*(with)\\b|=|$",
"beginCaptures": {
"beginCaptures": {
"1": {
"1": {
"name": "keyword.fsharp"
"name": "keyword.fsharp"
},
},
"2": {
"2": {
"name": "keyword.fsharp"
"name": "keyword.fsharp"
},
},
"3": {
"3": {
"name": "support.function.attribute.fsharp"
"name": "support.function.attribute.fsharp"
},
},
"5": {
"5": {
"name": "keyword.fsharp"
"name": "keyword.fsharp"
}
}
},
},
"endCaptures": {
"endCaptures": {
"1": {
"1": {
"name": "keyword.fsharp"
"name": "keyword.fsharp"
}
}
},
},
"patterns": [
"patterns": [
{
{
"include": "#comments"
"include": "#comments"
},
},
{
{
"include": "#common_declaration"
"include": "#common_declaration"
},
},
{
{
"match": "(\\?{0,1})([[:alpha:]0-9'`^._ ]+)\\s*(:)(\\s*([[:alpha:]0-9'`^._ ]+)){0,1}",
"match": "(\\?{0,1})([[:alpha:]0-9'`^._ ]+)\\s*(:)(\\s*([[:alpha:]0-9'`^._ ]+)){0,1}",
"captures": {
"captures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
},
},
"2": {
"2": {
"name": "variable.parameter.fsharp"
"name": "variable.parameter.fsharp"
},
},
"3": {
"3": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
},
},
"4": {
"4": {
"name": "entity.name.type.fsharp"
"name": "entity.name.type.fsharp"
}
}
}
}
},
},
{
{
"match": "(?!with|get|set\\b)\\b([\\w0-9'`^._]+)",
"match": "(?!with|get|set\\b)\\b([\\w0-9'`^._]+)",
"comments": "Here we need the \\w modifier in order to check that the words isn't blacklisted",
"comments": "Here we need the \\w modifier in order to check that the words isn't blacklisted",
"captures": {
"captures": {
"1": {
"1": {
"name": "entity.name.type.fsharp"
"name": "entity.name.type.fsharp"
}
}
}
}
},
},
{
{
"include": "#keywords"
"include": "#keywords"
}
}
]
]
},
},
"common_binding_definition": {
"common_binding_definition": {
"patterns": [
"patterns": [
{
{
"include": "#comments"
"include": "#comments"
},
},
{
{
"include": "#attributes"
"include": "#attributes"
},
},
{
{
"comments": "SRTP syntax support",
"comments": "SRTP syntax support",
"begin": "(:)\\s*(\\()\\s*(static member|member)",
"begin": "(:)\\s*(\\()\\s*(static member|member)",
"beginCaptures": {
"beginCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
},
},
"2": {
"2": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
},
},
"3": {
"3": {
"name": "keyword.fsharp"
"name": "keyword.fsharp"
}
}
},
},
"end": "(\\))\\s*((?=,)|(?=\\=))",
"end": "(\\))\\s*((?=,)|(?=\\=))",
"endCaptures": {
"endCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"patterns": [
"patterns": [
{
{
"match": "(\\^[[:alpha:]0-9'._]+)",
"match": "(\\^[[:alpha:]0-9'._]+)",
"captures": {
"captures": {
"1": {
"1": {
"name": "entity.name.type.fsharp"
"name": "entity.name.type.fsharp"
}
}
}
}
},
},
{
{
"include": "#variables"
"include": "#variables"
},
},
{
{
"include": "#keywords"
"include": "#keywords"
}
}
]
]
},
},
{
{
"begin": "(:)\\s*(\\()",
"begin": "(:)\\s*(\\()",
"beginCaptures": {
"beginCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
},
},
"2": {
"2": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"end": "(\\)\\s*(([?[:alpha:]0-9'`^._ ]*)))",
"end": "(\\)\\s*(([?[:alpha:]0-9'`^._ ]*)))",
"endCaptures": {
"endCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
},
},
"2": {
"2": {
"name": "entity.name.type.fsharp"
"name": "entity.name.type.fsharp"
}
}
},
},
"patterns": [
"patterns": [
{
{
"include": "#tuple_signature"
"include": "#tuple_signature"
}
}
]
]
},
},
{
{
"begin": "(:)\\s*(\\^[[:alpha:]0-9'._]+)\\s*(when)",
"begin": "(:)\\s*(\\^[[:alpha:]0-9'._]+)\\s*(when)",
"beginCaptures": {
"beginCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
},
},
"2": {
"2": {
"name": "entity.name.type.fsharp"
"name": "entity.name.type.fsharp"
},
},
"3": {
"3": {
"name": "keyword.fsharp"
"name": "keyword.fsharp"
}
}
},
},
"end": "(?=:)",
"end": "(?=:)",
"endCaptures": {
"endCaptures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
}
}
},
},
"patterns": [
"patterns": [
{
{
"name": "keyword.fsharp",
"name": "keyword.fsharp",
"match": "\\b(and|when|or)\\b"
"match": "\\b(and|when|or)\\b"
},
},
{
{
"comment": "Because we first capture the keywords, we can capture what looks like a word and assume it's an entity definition",
"comment": "Because we first capture the keywords, we can capture what looks like a word and assume it's an entity definition",
"match": "([[:alpha:]0-9'^._]+)",
"match": "([[:alpha:]0-9'^._]+)",
"captures": {
"captures": {
"1": {
"1": {
"name": "entity.name.type.fsharp"
"name": "entity.name.type.fsharp"
}
}
}
}
},
},
{
{
"name": "keyword.symbol.fsharp",
"name": "keyword.symbol.fsharp",
"match": "(\\(|\\))"
"match": "(\\(|\\))"
}
}
]
]
},
},
{
{
"match": "(:)\\s*([?[:alpha:]0-9'`^._ ]+)",
"match": "(:)\\s*([?[:alpha:]0-9'`^._ ]+)",
"captures": {
"captures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
},
},
"2": {
"2": {
"name": "entity.name.type.fsharp"
"name": "entity.name.type.fsharp"
}
}
}
}
},
},
{
{
"match": "(->)\\s*(\\()?\\s*([?[:alpha:]0-9'`^._ ]+)*",
"match": "(->)\\s*(\\()?\\s*([?[:alpha:]0-9'`^._ ]+)*",
"captures": {
"captures": {
"1": {
"1": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
},
},
"2": {
"2": {
"name": "keyword.symbol.fsharp"
"name": "keyword.symbol.fsharp"
},
},
"3": {
"3": {