[{"displayName":"PureScript","fileTypes":["purs"],"name":"purescript","patterns":[{"include":"#module_declaration"},{"include":"#module_import"},{"include":"#type_synonym_declaration"},{"include":"#data_type_declaration"},{"include":"#typeclass_declaration"},{"include":"#instance_declaration"},{"include":"#derive_declaration"},{"include":"#infix_op_declaration"},{"include":"#foreign_import_data"},{"include":"#foreign_import"},{"include":"#function_type_declaration"},{"include":"#function_type_declaration_arrow_first"},{"include":"#typed_hole"},{"include":"#keywords_orphan"},{"include":"#control_keywords"},{"include":"#function_infix"},{"include":"#data_ctor"},{"include":"#infix_op"},{"include":"#constants_numeric_decimal"},{"include":"#constant_numeric"},{"include":"#constant_boolean"},{"include":"#string_triple_quoted"},{"include":"#string_single_quoted"},{"include":"#string_double_quoted"},{"include":"#markup_newline"},{"include":"#string_double_colon_parens"},{"include":"#double_colon_parens"},{"include":"#double_colon_inlined"},{"include":"#comments"},{"match":"<-|->","name":"keyword.other.arrow.purescript"},{"match":"[[\\p{S}\\p{P}]&&[^]\"'(),;\\[_`{}]]+","name":"keyword.operator.purescript"},{"match":",","name":"punctuation.separator.comma.purescript"}],"repository":{"block_comment":{"patterns":[{"applyEndPatternLast":1,"begin":"\\{-\\s*\\|","beginCaptures":{"0":{"name":"punctuation.definition.comment.documentation.purescript"}},"end":"-}","endCaptures":{"0":{"name":"punctuation.definition.comment.documentation.purescript"}},"name":"comment.block.documentation.purescript","patterns":[{"include":"#block_comment"}]},{"applyEndPatternLast":1,"begin":"\\{-","beginCaptures":{"0":{"name":"punctuation.definition.comment.purescript"}},"end":"-}","name":"comment.block.purescript","patterns":[{"include":"#block_comment"}]}]},"characters":{"patterns":[{"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"}},"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\\h+)|(\\^[@-_])"}]},"class_constraint":{"patterns":[{"captures":{"1":{"patterns":[{"match":"\\b[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*","name":"entity.name.type.purescript"}]},"2":{"patterns":[{"include":"#type_name"},{"include":"#generic_type"}]}},"match":"([\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*)\\s+(?<classConstraint>(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*|(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*\\.)?[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)(?:\\s*\\s+\\s*(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*|(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*\\.)?[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*))*)","name":"meta.class-constraint.purescript"}]},"comments":{"patterns":[{"begin":"(^[\\t ]+)?(?=--+)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.purescript"}},"end":"(?!\\G)","patterns":[{"begin":"--","beginCaptures":{"0":{"name":"punctuation.definition.comment.purescript"}},"end":"\\n","name":"comment.line.double-dash.purescript"}]},{"include":"#block_comment"}]},"constant_boolean":{"patterns":[{"match":"\\b(true|false)(?!')\\b","name":"constant.language.boolean.purescript"}]},"constant_numeric":{"patterns":[{"match":"\\b(([0-9]+_?)*[0-9]+|0([Xx]\\h+|[Oo][0-7]+))\\b","name":"constant.numeric.purescript"}]},"constants_numeric_decimal":{"patterns":[{"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"}},"match":"(?<!\\$)\\b(?:[0-9]+(\\.)[0-9]+[Ee][-+]?[0-9]+\\b|[0-9]+[Ee][-+]?[0-9]+\\b|[0-9]+(\\.)[0-9]+\\b|[0-9]+\\b(?!\\.))(?!\\$)","name":"constant.numeric.decimal.purescript"}]},"control_keywords":{"patterns":[{"match":"\\b(do|ado|if|then|else|case|of|let|in)(?!('|\\s*([:=])))\\b","name":"keyword.control.purescript"}]},"data_ctor":{"patterns":[{"match":"\\b[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*","name":"entity.name.tag.purescript"}]},"data_type_declaration":{"patterns":[{"begin":"^(\\s)*(data|newtype)\\s+(.+?)\\s*(?==|$)","beginCaptures":{"2":{"name":"storage.type.data.purescript"},"3":{"name":"meta.type-signature.purescript","patterns":[{"include":"#type_signature"}]}},"end":"^(?!\\1[\\t ]|[\\t ]*$)","name":"meta.declaration.type.data.purescript","patterns":[{"include":"#comments"},{"captures":{"2":{"patterns":[{"include":"#data_ctor"}]}},"match":"(?<=([=|])\\s*)([\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)"},{"captures":{"0":{"name":"keyword.operator.pipe.purescript"}},"match":"\\|"},{"include":"#record_types"},{"include":"#type_signature"}]}]},"derive_declaration":{"patterns":[{"begin":"^\\s*\\b(derive)(\\s+newtype)?(\\s+instance)?(?!')\\b","beginCaptures":{"1":{"name":"keyword.other.purescript"},"2":{"name":"keyword.other.purescript"},"3":{"name":"keyword.other.purescript"},"4":{"name":"keyword.other.purescript"}},"contentName":"meta.type-signature.purescript","end":"^(?=\\S)","endCaptures":{"1":{"name":"keyword.other.purescript"}},"name":"meta.declaration.derive.purescript","patterns":[{"include":"#type_signature"}]}]},"double_colon":{"patterns":[{"match":"::|∷","name":"keyword.other.double-colon.purescript"}]},"double_colon_inlined":{"patterns":[{"patterns":[{"captures":{"1":{"name":"keyword.other.double-colon.purescript"},"2":{"name":"meta.type-signature.purescript","patterns":[{"include":"#type_signature"}]}},"match":"(::|∷)(.*?)(?=<-| \"\"\")"}]},{"patterns":[{"begin":"(::|∷)","beginCaptures":{"1":{"name":"keyword.other.double-colon.purescript"}},"end":"(?=^([\\s\\S]))","patterns":[{"include":"#type_signature"}]}]}]},"double_colon_orphan":{"patterns":[{"begin":"(\\s*)(::|∷)(\\s*)$","beginCaptures":{"2":{"name":"keyword.other.double-colon.purescript"}},"end":"^(?!\\1[\\t ]*|[\\t ]*$)","patterns":[{"include":"#type_signature"}]}]},"double_colon_parens":{"patterns":[{"captures":{"1":{"patterns":[{"include":"$self"}]},"2":{"name":"keyword.other.double-colon.purescript"},"3":{"name":"meta.type-signature.purescript","patterns":[{"include":"#type_signature"}]}},"match":"\\((?<paren>(?:[^()]|\\(\\g<paren>\\))*)(::|∷)(?<paren2>(?:[^()}]|\\(\\g<paren2>\\))*)\\)"}]},"foreign_import":{"patterns":[{"begin":"^(\\s*)(foreign)\\s+(import)\\s+([_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)","beginCaptures":{"2":{"name":"keyword.other.purescript"},"3":{"name":"keyword.other.purescript"},"4":{"name":"entity.name.function.purescript"}},"contentName":"meta.type-signature.purescript","end":"^(?!\\1[\\t ]|[\\t ]*$)","name":"meta.foreign.purescript","patterns":[{"include":"#double_colon"},{"include":"#type_signature"},{"include":"#record_types"}]}]},"foreign_import_data":{"patterns":[{"begin":"^(\\s*)(foreign)\\s+(import)\\s+(data)\\s(?:\\s+([\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)\\s*(::|∷))?","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"}},"contentName":"meta.kind-signature.purescript","end":"^(?!\\1[\\t ]|[\\t ]*$)","name":"meta.foreign.data.purescript","patterns":[{"include":"#comments"},{"include":"#type_signature"},{"include":"#record_types"}]}]},"function_infix":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.entity.purescript"},"2":{"name":"punctuation.definition.entity.purescript"}},"match":"(`)(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*\\.)?[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*.*(`)","name":"keyword.operator.function.infix.purescript"}]},"function_type_declaration":{"patterns":[{"begin":"^(\\s*)([_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)\\s*(::|∷)(?!.*<-)","beginCaptures":{"2":{"name":"entity.name.function.purescript"},"3":{"name":"keyword.other.double-colon.purescript"}},"contentName":"meta.type-signature.purescript","end":"^(?!\\1[\\t ]|[\\t ]*$)","name":"meta.function.type-declaration.purescript","patterns":[{"include":"#double_colon"},{"include":"#type_signature"},{"include":"#record_types"},{"include":"#row_types"}]}]},"function_type_declaration_arrow_first":{"patterns":[{"begin":"^(\\s*)\\s(::|∷)(?!.*<-)","beginCaptures":{"2":{"name":"keyword.other.double-colon.purescript"}},"contentName":"meta.type-signature.purescript","end":"^(?!\\1[\\t ]|[\\t ]*$)","name":"meta.function.type-declaration.purescript","patterns":[{"include":"#double_colon"},{"include":"#type_signature"},{"include":"#record_types"},{"include":"#row_types"}]}]},"generic_type":{"patterns":[{"match":"\\b(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*\\.)?[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*","name":"variable.other.generic-type.purescript"}]},"infix_op":{"patterns":[{"match":"\\((?!--+\\))[[\\p{S}\\p{P}]&&[^]\"'(),;\\[_`{}]]+\\)","name":"entity.name.function.infix.purescript"}]},"infix_op_declaration":{"patterns":[{"begin":"^\\b(infix[lr|]?)(?!')\\b","beginCaptures":{"1":{"name":"keyword.other.purescript"}},"end":"$()","name":"meta.infix.declaration.purescript","patterns":[{"include":"#comments"},{"include":"#data_ctor"},{"match":" \\d+ ","name":"constant.numeric.purescript"},{"captures":{"1":{"name":"keyword.other.purescript"}},"match":"([[\\p{S}\\p{P}]&&[^]\"'(),;\\[_`{}]]+)"},{"captures":{"1":{"name":"keyword.other.purescript"},"2":{"name":"entity.name.type.purescript"}},"match":"\\b(type)\\s+([\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*)\\b"},{"captures":{"1":{"name":"keyword.other.purescript"}},"match":"\\b(as|type)\\b"}]}]},"instance_declaration":{"patterns":[{"begin":"^\\s*\\b(else\\s+)?(newtype\\s+)?(instance)(?!')\\b","beginCaptures":{"1":{"name":"keyword.other.purescript"},"2":{"name":"keyword.other.purescript"},"3":{"name":"keyword.other.purescript"},"4":{"name":"keyword.other.purescript"}},"contentName":"meta.type-signature.purescript","end":"(\\bwhere\\b|(?=^\\S))","endCaptures":{"1":{"name":"keyword.other.purescript"}},"name":"meta.declaration.instance.purescript","patterns":[{"include":"#type_signature"}]}]},"keywords_orphan":{"patterns":[{"match":"^\\s*\\b(derive|where|data|type|newtype|foreign(\\s+import)?(\\s+data)?)(?!')\\b","name":"keyword.other.purescript"}]},"kind_signature":{"patterns":[{"match":"\\*","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"}]},"markup_newline":{"patterns":[{"match":"\\\\$","name":"markup.other.escape.newline.purescript"}]},"module_declaration":{"patterns":[{"begin":"^\\s*\\b(module)(?!')\\b","beginCaptures":{"1":{"name":"keyword.other.purescript"}},"end":"\\b(where)\\b","endCaptures":{"1":{"name":"keyword.other.purescript"}},"name":"meta.declaration.module.purescript","patterns":[{"include":"#comments"},{"include":"#module_name"},{"include":"#module_exports"},{"match":"[a-z]+","name":"invalid.purescript"}]}]},"module_exports":{"patterns":[{"begin":"\\(","end":"\\)","name":"meta.declaration.exports.purescript","patterns":[{"include":"#comments"},{"match":"\\b(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*\\.)?[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*","name":"entity.name.function.purescript"},{"include":"#type_name"},{"match":",","name":"punctuation.separator.comma.purescript"},{"include":"#infix_op"},{"match":"\\(.*?\\)","name":"meta.other.constructor-list.purescript"}]}]},"module_import":{"patterns":[{"begin":"^\\s*\\b(import)(?!')\\b","beginCaptures":{"1":{"name":"keyword.other.purescript"}},"end":"^(?=\\S)","name":"meta.import.purescript","patterns":[{"include":"#module_name"},{"include":"#string_double_quoted"},{"include":"#comments"},{"include":"#module_exports"},{"captures":{"1":{"name":"keyword.other.purescript"}},"match":"\\b(as|hiding)\\b"}]}]},"module_name":{"patterns":[{"match":"(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*\\.)*[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*\\.?","name":"support.other.module.purescript"}]},"record_field_declaration":{"patterns":[{"begin":"([ ,]\"(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*|[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)\"|[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)\\s*(::|∷)","beginCaptures":{"1":{"patterns":[{"match":"(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*\\.)?[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*","name":"entity.other.attribute-name.purescript"},{"match":"\"([_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*|[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)\"","name":"string.quoted.double.purescript"}]},"2":{"name":"keyword.other.double-colon.purescript"}},"contentName":"meta.type-signature.purescript","end":"(?=([ ,]\"(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*|[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)\"|[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)\\s*(::|∷)|}| \\)|^(?!\\1[\\t ]|[\\t ]*$))","name":"meta.record-field.type-declaration.purescript","patterns":[{"include":"#record_types"},{"include":"#type_signature"},{"include":"#comments"}]}]},"record_types":{"patterns":[{"begin":"\\{(?!-)","beginCaptures":{"0":{"name":"keyword.operator.type.record.begin.purescript"}},"end":"}","endCaptures":{"0":{"name":"keyword.operator.type.record.end.purescript"}},"name":"meta.type.record.purescript","patterns":[{"match":",","name":"punctuation.separator.comma.purescript"},{"include":"#comments"},{"include":"#record_field_declaration"},{"include":"#type_signature"}]}]},"row_types":{"patterns":[{"begin":"\\((?=\\s*([_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*|\"[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*\"|\"[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*\")\\s*(::|∷))","end":"(?=^\\S)","name":"meta.type.row.purescript","patterns":[{"match":",","name":"punctuation.separator.comma.purescript"},{"include":"#comments"},{"include":"#record_field_declaration"},{"include":"#type_signature"}]}]},"string_double_colon_parens":{"patterns":[{"captures":{"1":{"patterns":[{"include":"$self"}]},"2":{"patterns":[{"include":"$self"}]}},"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\\h+)|(\\^[@-_]))*(::|∷)([ -\\[\\]-~]|(\\\\(?: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\\h+)|(\\^[@-_]))*\")"}]},"string_double_quoted":{"patterns":[{"begin":"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.purescript"}},"end":"\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.purescript"}},"name":"string.quoted.double.purescript","patterns":[{"include":"#characters"},{"begin":"\\\\\\s","beginCaptures":{"0":{"name":"markup.other.escape.newline.begin.purescript"}},"end":"\\\\","endCaptures":{"0":{"name":"markup.other.escape.newline.end.purescript"}},"patterns":[{"match":"\\S+","name":"invalid.illegal.character-not-allowed-here.purescript"}]}]}]},"string_single_quoted":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.string.begin.purescript"},"2":{"patterns":[{"include":"#characters"}]},"7":{"name":"punctuation.definition.string.end.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\\h+)|(\\^[@-_]))(')","name":"string.quoted.single.purescript"}]},"string_triple_quoted":{"patterns":[{"begin":"\"\"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.purescript"}},"end":"\"\"\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.purescript"}},"name":"string.quoted.triple.purescript"}]},"type_kind_signature":{"patterns":[{"begin":"^(data|newtype)\\s+([\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)\\s*(::|∷)","beginCaptures":{"1":{"name":"storage.type.data.purescript"},"2":{"name":"meta.type-signature.purescript","patterns":[{"include":"#type_signature"}]},"3":{"name":"keyword.other.double-colon.purescript"}},"end":"(?=^\\S)","name":"meta.declaration.type.data.signature.purescript","patterns":[{"include":"#type_signature"},{"captures":{"0":{"name":"keyword.operator.assignment.purescript"}},"match":"="},{"captures":{"1":{"patterns":[{"include":"#data_ctor"}]},"2":{"name":"meta.type-signature.purescript","patterns":[{"include":"#type_signature"}]}},"match":"\\b([\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*)\\s+(?<ctorArgs>(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*|(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*\\.)?[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*|(?:(?:[]'(),\\[→⇒\\w]|->|=>)+\\s*)+)(?:\\s*\\s+\\s*(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*|(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*\\.)?[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*|(?:(?:[]'(),\\[→⇒\\w]|->|=>)+\\s*)+))*)?"},{"captures":{"0":{"name":"keyword.operator.pipe.purescript"}},"match":"\\|"},{"include":"#record_types"}]}]},"type_name":{"patterns":[{"match":"\\b[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*","name":"entity.name.type.purescript"}]},"type_signature":{"patterns":[{"include":"#record_types"},{"captures":{"1":{"patterns":[{"include":"#class_constraint"}]},"6":{"name":"keyword.other.big-arrow.purescript"}},"match":"\\((?<classConstraints>([\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*)\\s+(?<classConstraint>(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*|(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*\\.)?[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)(?:\\s*\\s+\\s*(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*|(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*\\.)?[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*))*)(?:\\s*,\\s*([\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*)\\s+(?<classConstraint>(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*|(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*\\.)?[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)(?:\\s*\\s+\\s*(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*|(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*\\.)?[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*))*))*)\\)\\s*(=>|<=|[⇐⇒])","name":"meta.class-constraints.purescript"},{"captures":{"1":{"patterns":[{"include":"#class_constraint"}]},"4":{"name":"keyword.other.big-arrow.purescript"}},"match":"(([\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*)\\s+(?<classConstraint>(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*|(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*\\.)?[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)(?:\\s*\\s+\\s*(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*|(?:[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*(?:\\.[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)*\\.)?[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*))*))\\s*(=>|<=|[⇐⇒])","name":"meta.class-constraints.purescript"},{"match":"(?<![[\\p{S}\\p{P}]&&[^]\"'(),;\\[_`{}]])(->|→)","name":"keyword.other.arrow.purescript"},{"match":"(?<![[\\p{S}\\p{P}]&&[^]\"'(),;\\[_`{}]])(=>|⇒)","name":"keyword.other.big-arrow.purescript"},{"match":"<=|⇐","name":"keyword.other.big-arrow-left.purescript"},{"match":"forall|∀","name":"keyword.other.forall.purescript"},{"include":"#string_double_quoted"},{"include":"#generic_type"},{"include":"#type_name"},{"include":"#comments"},{"match":"[[\\p{S}\\p{P}]&&[^]\"'(),;\\[_`{}]]+","name":"keyword.other.purescript"}]},"type_synonym_declaration":{"patterns":[{"begin":"^(\\s)*(type)\\s+(.+?)\\s*(?==|$)","beginCaptures":{"2":{"name":"storage.type.data.purescript"},"3":{"name":"meta.type-signature.purescript","patterns":[{"include":"#type_signature"}]}},"contentName":"meta.type-signature.purescript","end":"^(?!\\1[\\t ]|[\\t ]*$)","name":"meta.declaration.type.type.purescript","patterns":[{"captures":{"0":{"name":"keyword.operator.assignment.purescript"}},"match":"="},{"include":"#type_signature"},{"include":"#record_types"},{"include":"#row_types"},{"include":"#comments"}]}]},"typeclass_declaration":{"patterns":[{"begin":"^\\s*\\b(class)(?!')\\b","beginCaptures":{"1":{"name":"storage.type.class.purescript"}},"end":"(\\bwhere\\b|(?=^\\S))","endCaptures":{"1":{"name":"keyword.other.purescript"}},"name":"meta.declaration.typeclass.purescript","patterns":[{"include":"#type_signature"}]}]},"typed_hole":{"patterns":[{"match":"\\?(?:[_\\p{Ll}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*|[\\p{Lu}\\p{Lt}]['_\\p{Ll}\\p{Lu}\\p{Lt}\\d]*)","name":"entity.name.function.typed-hole.purescript"}]}},"scopeName":"source.purescript"}]