kjelsrud.dev/node_modules/shiki/languages/purescript.tmLanguage.json

887 lines
27 KiB
JSON
Raw Normal View History

2023-07-19 21:31:30 +02:00
{
"fileTypes": ["purs"],
"name": "purescript",
"scopeName": "source.purescript",
"macros": {
"functionNameOne": "[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
"classNameOne": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
"functionName": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
"className": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*",
"operatorChar": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]",
"operator": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+",
"operatorFun": "(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))",
"character": "(?:[ -\\[\\]-~]|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_]))",
"classConstraint": "(?:(?:([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<classConstraint>(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(?:\\s*(?:\\s+)\\s*\\g<classConstraint>)?)))",
"functionTypeDeclaration": "([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\s*(::|∷)",
"ctorArgs": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)",
"ctor": "(?:(?:\\b([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<ctorArgs>(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+))(?:\\s*(?:\\s+)\\s*\\g<ctorArgs>)?)?))",
"typeDecl": ".+?",
"indentChar": "[ \\t]",
"indentBlockEnd": "^(?!\\1[ \\t]|[ \\t]*$)",
"maybeBirdTrack": "^"
},
"patterns": [
{
"name": "keyword.operator.function.infix.purescript",
"match": "(`)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(`)",
"captures": {
"1": {
"name": "punctuation.definition.entity.purescript"
},
"2": {
"name": "punctuation.definition.entity.purescript"
}
}
},
{
"name": "meta.declaration.module.purescript",
"begin": "^\\s*\\b(module)(?!')\\b",
"end": "(where)",
"beginCaptures": {
"1": {
"name": "keyword.other.purescript"
}
},
"endCaptures": {
"1": {
"name": "keyword.other.purescript"
}
},
"patterns": [
{
"include": "#comments"
},
{
"include": "#module_name"
},
{
"include": "#module_exports"
},
{
"name": "invalid.purescript",
"match": "[a-z]+"
}
]
},
{
"name": "meta.declaration.typeclass.purescript",
"begin": "^\\s*\\b(class)(?!')\\b",
"end": "\\b(where)\\b|$",
"beginCaptures": {
"1": {
"name": "storage.type.class.purescript"
}
},
"endCaptures": {
"1": {
"name": "keyword.other.purescript"
}
},
"patterns": [
{
"include": "#type_signature"
}
]
},
{
"name": "meta.declaration.instance.purescript",
"begin": "^\\s*\\b(else\\s+)?(derive\\s+)?(newtype\\s+)?(instance)(?!')\\b",
"end": "\\b(where)\\b|$",
"contentName": "meta.type-signature.purescript",
"beginCaptures": {
"1": {
"name": "keyword.other.purescript"
},
"2": {
"name": "keyword.other.purescript"
},
"3": {
"name": "keyword.other.purescript"
},
"4": {
"name": "keyword.other.purescript"
}
},
"endCaptures": {
"1": {
"name": "keyword.other.purescript"
}
},
"patterns": [
{
"include": "#type_signature"
}
]
},
{
"name": "meta.foreign.data.purescript",
"begin": "^(\\s*)(foreign)\\s+(import)\\s+(data)\\s+([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)",
"end": "^(?!\\1[ \\t]|[ \\t]*$)",
"contentName": "meta.kind-signature.purescript",
"beginCaptures": {
"2": {
"name": "keyword.other.purescript"
},
"3": {
"name": "keyword.other.purescript"
},
"4": {
"name": "keyword.other.purescript"
},
"5": {
"name": "entity.name.type.purescript"
},
"6": {
"name": "keyword.other.double-colon.purescript"
}
},
"patterns": [
{
"include": "#double_colon"
},
{
"include": "#kind_signature"
}
]
},
{
"name": "meta.foreign.purescript",
"begin": "^(\\s*)(foreign)\\s+(import)\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)",
"end": "^(?!\\1[ \\t]|[ \\t]*$)",
"contentName": "meta.type-signature.purescript",
"beginCaptures": {
"2": {
"name": "keyword.other.purescript"
},
"3": {
"name": "keyword.other.purescript"
},
"4": {
"name": "entity.name.function.purescript"
}
},
"patterns": [
{
"include": "#double_colon"
},
{
"include": "#type_signature"
}
]
},
{
"name": "meta.import.purescript",
"begin": "^\\s*\\b(import)(?!')\\b",
"end": "($|(?=--))",
"beginCaptures": {
"1": {
"name": "keyword.other.purescript"
}
},
"patterns": [
{
"include": "#module_name"
},
{
"include": "#module_exports"
},
{
"match": "\\b(as|hiding)\\b",
"captures": {
"1": {
"name": "keyword.other.purescript"
}
}
}
]
},
{
"name": "meta.declaration.type.data.purescript",
"begin": "^(\\s)*(data|newtype)\\s+(.+?)\\s*(?=\\=|$)",
"end": "^(?!\\1[ \\t]|[ \\t]*$)",
"beginCaptures": {
"2": {
"name": "storage.type.data.purescript"
},
"3": {
"name": "meta.type-signature.purescript",
"patterns": [
{
"include": "#type_signature"
}
]
}
},
"patterns": [
{
"include": "#comments"
},
{
"match": "=",
"captures": {
"0": {
"name": "keyword.operator.assignment.purescript"
}
}
},
{
"match": "(?:(?:\\b([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<ctorArgs>(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+))(?:\\s*(?:\\s+)\\s*\\g<ctorArgs>)?)?))",
"captures": {
"1": {
"patterns": [
{
"include": "#data_ctor"
}
]
},
"2": {
"name": "meta.type-signature.purescript",
"patterns": [
{
"include": "#type_signature"
}
]
}
}
},
{
"match": "\\|",
"captures": {
"0": {
"name": "punctuation.separator.pipe.purescript"
}
}
},
{
"include": "#record_types"
}
]
},
{
"name": "meta.declaration.type.type.purescript",
"begin": "^(\\s)*(type)\\s+(.+?)\\s*(?=\\=|$)",
"end": "^(?!\\1[ \\t]|[ \\t]*$)",
"contentName": "meta.type-signature.purescript",
"beginCaptures": {
"2": {
"name": "storage.type.data.purescript"
},
"3": {
"name": "meta.type-signature.purescript",
"patterns": [
{
"include": "#type_signature"
}
]
}
},
"patterns": [
{
"match": "=",
"captures": {
"0": {
"name": "keyword.operator.assignment.purescript"
}
}
},
{
"include": "#type_signature"
},
{
"include": "#record_types"
},
{
"include": "#comments"
}
]
},
{
"name": "keyword.other.purescript",
"match": "^\\s*\\b(derive|where|data|type|newtype|infix[lr]?|foreign(\\s+import)?(\\s+data)?)(?!')\\b"
},
{
"name": "entity.name.function.typed-hole.purescript",
"match": "\\?(?:[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)"
},
{
"name": "storage.type.purescript",
"match": "^\\s*\\b(data|type|newtype)(?!')\\b"
},
{
"name": "keyword.control.purescript",
"match": "\\b(do|ado|if|then|else|case|of|let|in)(?!('|\\s*(:|=)))\\b"
},
{
"name": "constant.numeric.hex.purescript",
"match": "\\b(?<!\\$)0(x|X)[0-9a-fA-F]+\\b(?!\\$)"
},
{
"name": "constant.numeric.decimal.purescript",
"match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9]+(\\.)[0-9]+[eE][+-]?[0-9]+\\b)| # 1.1E+3\n (?:\\b[0-9]+[eE][+-]?[0-9]+\\b)| # 1E+3\n (?:\\b[0-9]+(\\.)[0-9]+\\b)| # 1.1\n (?:\\b[0-9]+\\b(?!\\.)) # 1\n)(?!\\$)",
"captures": {
"0": {
"name": "constant.numeric.decimal.purescript"
},
"1": {
"name": "meta.delimiter.decimal.period.purescript"
},
"2": {
"name": "meta.delimiter.decimal.period.purescript"
},
"3": {
"name": "meta.delimiter.decimal.period.purescript"
},
"4": {
"name": "meta.delimiter.decimal.period.purescript"
},
"5": {
"name": "meta.delimiter.decimal.period.purescript"
},
"6": {
"name": "meta.delimiter.decimal.period.purescript"
}
}
},
{
"name": "constant.language.boolean.purescript",
"match": "\\b(true|false)\\b"
},
{
"name": "constant.numeric.purescript",
"match": "\\b(([0-9]+_?)*[0-9]+|0([xX][0-9a-fA-F]+|[oO][0-7]+))\\b"
},
{
"name": "string.quoted.triple.purescript",
"begin": "\"\"\"",
"end": "\"\"\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.purescript"
}
},
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.purescript"
}
}
},
{
"name": "string.quoted.double.purescript",
"begin": "\"",
"end": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.purescript"
}
},
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.purescript"
}
},
"patterns": [
{
"include": "#characters"
},
{
"begin": "\\\\\\s",
"end": "\\\\",
"beginCaptures": {
"0": {
"name": "markup.other.escape.newline.begin.purescript"
}
},
"endCaptures": {
"0": {
"name": "markup.other.escape.newline.end.purescript"
}
},
"patterns": [
{
"match": "\\S+",
"name": "invalid.illegal.character-not-allowed-here.purescript"
}
]
}
]
},
{
"name": "markup.other.escape.newline.purescript",
"match": "\\\\$"
},
{
"name": "string.quoted.single.purescript",
"match": "(')((?:[ -\\[\\]-~]|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_])))(')",
"captures": {
"1": {
"name": "punctuation.definition.string.begin.purescript"
},
"2": {
"patterns": [
{
"include": "#characters"
}
]
},
"7": {
"name": "punctuation.definition.string.end.purescript"
}
}
},
{
"include": "#function_type_declaration"
},
{
"match": "\\((?<paren>(?:[^()]|\\(\\g<paren>\\))*)(::|∷)(?<paren2>(?:[^()]|\\(\\g<paren2>\\))*)\\)",
"captures": {
"1": {
"patterns": [
{
"include": "$self"
}
]
},
"2": {
"name": "keyword.other.double-colon.purescript"
},
"3": {
"name": "meta.type-signature.purescript",
"patterns": [
{
"include": "#type_signature"
}
]
}
}
},
{
"begin": "^(\\s*)(?:(::|∷))",
"beginCaptures": {
"2": {
"name": "keyword.other.double-colon.purescript"
}
},
"end": "^(?!\\1[ \\t]*|[ \\t]*$)",
"patterns": [
{
"include": "#type_signature"
}
]
},
{
"include": "#data_ctor"
},
{
"include": "#comments"
},
{
"include": "#infix_op"
},
{
"name": "keyword.other.arrow.purescript",
"match": "\\<-|-\\>"
},
{
"name": "keyword.operator.purescript",
"match": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+"
},
{
"name": "punctuation.separator.comma.purescript",
"match": ","
}
],
"repository": {
"block_comment": {
"patterns": [
{
"name": "comment.block.documentation.purescript",
"begin": "\\{-\\s*\\|",
"end": "-\\}",
"applyEndPatternLast": 1,
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.documentation.purescript"
}
},
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.documentation.purescript"
}
},
"patterns": [
{
"include": "#block_comment"
}
]
},
{
"name": "comment.block.purescript",
"begin": "\\{-",
"end": "-\\}",
"applyEndPatternLast": 1,
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.purescript"
}
},
"patterns": [
{
"include": "#block_comment"
}
]
}
]
},
"record_types": {
"patterns": [
{
"name": "meta.type.record.purescript",
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "keyword.operator.type.record.begin.purescript"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "keyword.operator.type.record.end.purescript"
}
},
"patterns": [
{
"name": "punctuation.separator.comma.purescript",
"match": ","
},
{
"include": "#record_field_declaration"
},
{
"include": "#comments"
}
]
}
]
},
"comments": {
"patterns": [
{
"begin": "(^[ \\t]+)?(?=--+\\s+\\|)",
"end": "(?!\\G)",
"beginCaptures": {
"1": {
"name": "punctuation.whitespace.comment.leading.purescript"
}
},
"patterns": [
{
"name": "comment.line.double-dash.documentation.purescript",
"begin": "(--+)\\s+(\\|)",
"end": "\\n",
"beginCaptures": {
"1": {
"name": "punctuation.definition.comment.purescript"
},
"2": {
"name": "punctuation.definition.comment.documentation.purescript"
}
}
}
]
},
{
"begin": "(^[ \\t]+)?(?=--+(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))",
"end": "(?!\\G)",
"beginCaptures": {
"1": {
"name": "punctuation.whitespace.comment.leading.purescript"
}
},
"patterns": [
{
"name": "comment.line.double-dash.purescript",
"begin": "--",
"end": "\\n",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.purescript"
}
}
}
]
},
{
"include": "#block_comment"
}
]
},
"characters": {
"patterns": [
{
"match": "(?:[ -\\[\\]-~]|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_]))",
"captures": {
"1": {
"name": "constant.character.escape.purescript"
},
"2": {
"name": "constant.character.escape.octal.purescript"
},
"3": {
"name": "constant.character.escape.hexadecimal.purescript"
},
"4": {
"name": "constant.character.escape.control.purescript"
}
}
}
]
},
"infix_op": {
"patterns": [
{
"name": "entity.name.function.infix.purescript",
"match": "(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))"
}
]
},
"module_exports": {
"patterns": [
{
"name": "meta.declaration.exports.purescript",
"begin": "\\(",
"end": "\\)",
"patterns": [
{
"include": "#comments"
},
{
"name": "entity.name.function.purescript",
"match": "\\b(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*"
},
{
"include": "#type_name"
},
{
"name": "punctuation.separator.comma.purescript",
"match": ","
},
{
"include": "#infix_op"
},
{
"name": "meta.other.constructor-list.purescript",
"match": "\\(.*?\\)"
}
]
}
]
},
"module_name": {
"patterns": [
{
"name": "support.other.module.purescript",
"match": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)*[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.?"
}
]
},
"function_type_declaration": {
"patterns": [
{
"name": "meta.function.type-declaration.purescript",
"begin": "^(\\s*)([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\s*(?:(::|∷)(?!.*<-))",
"end": "^(?!\\1[ \\t]|[ \\t]*$)",
"contentName": "meta.type-signature.purescript",
"beginCaptures": {
"2": {
"name": "entity.name.function.purescript"
},
"3": {
"name": "keyword.other.double-colon.purescript"
}
},
"patterns": [
{
"include": "#double_colon"
},
{
"include": "#type_signature"
}
]
}
]
},
"record_field_declaration": {
"patterns": [
{
"name": "meta.record-field.type-declaration.purescript",
"begin": "([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\s*(::|∷)",
"end": "(?=([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\s*(::|∷)|})",
"contentName": "meta.type-signature.purescript",
"beginCaptures": {
"1": {
"patterns": [
{
"name": "entity.other.attribute-name.purescript",
"match": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*"
}
]
},
"2": {
"name": "keyword.other.double-colon.purescript"
}
},
"patterns": [
{
"include": "#type_signature"
},
{
"include": "#record_types"
}
]
}
]
},
"kind_signature": {
"patterns": [
{
"name": "keyword.other.star.purescript",
"match": "\\*"
},
{
"name": "keyword.other.exclaimation-point.purescript",
"match": "!"
},
{
"name": "keyword.other.pound-sign.purescript",
"match": "#"
},
{
"name": "keyword.other.arrow.purescript",
"match": "->|→"
}
]
},
"type_signature": {
"patterns": [
{
"name": "meta.class-constraints.purescript",
"match": "(?:(?:\\()(?:(?<classConstraints>(?:(?:(?:([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<classConstraint>(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(?:\\s*(?:\\s+)\\s*\\g<classConstraint>)?))))(?:\\s*(?:,)\\s*\\g<classConstraints>)?))(?:\\))(?:\\s*(=>|<=|⇐|⇒)))",
"captures": {
"1": {
"patterns": [
{
"include": "#class_constraint"
}
]
},
"4": {
"name": "keyword.other.big-arrow.purescript"
}
}
},
{
"name": "meta.class-constraints.purescript",
"match": "((?:(?:([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<classConstraint>(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(?:\\s*(?:\\s+)\\s*\\g<classConstraint>)?))))\\s*(=>|<=|⇐|⇒)",
"captures": {
"1": {
"patterns": [
{
"include": "#class_constraint"
}
]
},
"4": {
"name": "keyword.other.big-arrow.purescript"
}
}
},
{
"name": "keyword.other.arrow.purescript",
"match": "->|→"
},
{
"name": "keyword.other.big-arrow.purescript",
"match": "=>|⇒"
},
{
"name": "keyword.other.big-arrow-left.purescript",
"match": "<=|⇐"
},
{
"name": "keyword.other.forall.purescript",
"match": "forall|∀"
},
{
"include": "#generic_type"
},
{
"include": "#type_name"
},
{
"include": "#comments"
}
]
},
"type_name": {
"patterns": [
{
"name": "entity.name.type.purescript",
"match": "\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*"
}
]
},
"data_ctor": {
"patterns": [
{
"name": "entity.name.tag.purescript",
"match": "\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*"
}
]
},
"generic_type": {
"patterns": [
{
"name": "variable.other.generic-type.purescript",
"match": "\\b(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*"
}
]
},
"double_colon": {
"patterns": [
{
"name": "keyword.other.double-colon.purescript",
"match": "(?:::|∷)"
}
]
},
"class_constraint": {
"patterns": [
{
"name": "meta.class-constraint.purescript",
"match": "(?:(?:([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<classConstraint>(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(?:\\s*(?:\\s+)\\s*\\g<classConstraint>)?)))",
"captures": {
"1": {
"patterns": [
{
"name": "entity.name.type.purescript",
"match": "\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*"
}
]
},
"2": {
"patterns": [
{
"include": "#type_name"
},
{
"include": "#generic_type"
}
]
}
}
}
]
}
}
}