@shikijs/langs-precompiled 2.3.1 → 2.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/dist/actionscript-3.mjs +1 -1
  2. package/dist/applescript.mjs +1 -1
  3. package/dist/ara.mjs +1 -1
  4. package/dist/asciidoc.mjs +1 -1
  5. package/dist/beancount.mjs +1 -1
  6. package/dist/bsl.mjs +1 -1
  7. package/dist/cadence.mjs +1 -1
  8. package/dist/clarity.mjs +1 -1
  9. package/dist/cmake.mjs +1 -1
  10. package/dist/cobol.mjs +1 -1
  11. package/dist/coq.mjs +1 -1
  12. package/dist/crystal.mjs +1 -1
  13. package/dist/cypher.mjs +1 -1
  14. package/dist/dax.mjs +1 -1
  15. package/dist/diff.mjs +1 -1
  16. package/dist/docker.mjs +1 -1
  17. package/dist/dotenv.mjs +1 -1
  18. package/dist/dream-maker.mjs +1 -1
  19. package/dist/elixir.mjs +1 -1
  20. package/dist/elm.mjs +1 -1
  21. package/dist/erlang.mjs +1 -1
  22. package/dist/fish.mjs +1 -1
  23. package/dist/fortran-free-form.mjs +1 -1
  24. package/dist/fsharp.mjs +1 -1
  25. package/dist/gdresource.mjs +1 -1
  26. package/dist/gdscript.mjs +1 -1
  27. package/dist/git-commit.mjs +1 -1
  28. package/dist/go.mjs +1 -1
  29. package/dist/graphql.mjs +1 -1
  30. package/dist/groovy.mjs +1 -1
  31. package/dist/hack.mjs +1 -1
  32. package/dist/haml.mjs +1 -1
  33. package/dist/haskell.mjs +1 -1
  34. package/dist/hcl.mjs +1 -1
  35. package/dist/html.mjs +1 -1
  36. package/dist/json.mjs +1 -1
  37. package/dist/json5.mjs +1 -1
  38. package/dist/jsonc.mjs +1 -1
  39. package/dist/jsonl.mjs +1 -1
  40. package/dist/jssm.mjs +1 -1
  41. package/dist/julia.mjs +1 -1
  42. package/dist/kusto.mjs +1 -1
  43. package/dist/latex.mjs +1 -1
  44. package/dist/less.mjs +1 -1
  45. package/dist/markdown.mjs +1 -1
  46. package/dist/marko.mjs +1 -1
  47. package/dist/matlab.mjs +1 -1
  48. package/dist/mermaid.mjs +1 -1
  49. package/dist/mipsasm.mjs +1 -1
  50. package/dist/mojo.mjs +1 -1
  51. package/dist/move.mjs +1 -1
  52. package/dist/nim.mjs +1 -1
  53. package/dist/nushell.mjs +1 -1
  54. package/dist/objective-c.mjs +1 -1
  55. package/dist/objective-cpp.mjs +1 -1
  56. package/dist/perl.mjs +1 -1
  57. package/dist/po.mjs +1 -1
  58. package/dist/polar.mjs +1 -1
  59. package/dist/powershell.mjs +1 -1
  60. package/dist/pug.mjs +1 -1
  61. package/dist/puppet.mjs +1 -1
  62. package/dist/python.mjs +1 -1
  63. package/dist/regexp.mjs +1 -1
  64. package/dist/riscv.mjs +1 -1
  65. package/dist/ruby.mjs +1 -1
  66. package/dist/rust.mjs +1 -1
  67. package/dist/sas.mjs +1 -1
  68. package/dist/scala.mjs +1 -1
  69. package/dist/scheme.mjs +1 -1
  70. package/dist/sdbl.mjs +1 -1
  71. package/dist/shellscript.mjs +1 -1
  72. package/dist/smalltalk.mjs +1 -1
  73. package/dist/splunk.mjs +1 -1
  74. package/dist/sql.mjs +1 -1
  75. package/dist/stata.mjs +1 -1
  76. package/dist/stylus.mjs +1 -1
  77. package/dist/tcl.mjs +1 -1
  78. package/dist/terraform.mjs +1 -1
  79. package/dist/toml.mjs +1 -1
  80. package/dist/twig.mjs +1 -1
  81. package/dist/typst.mjs +1 -1
  82. package/dist/vue.mjs +1 -1
  83. package/dist/vyper.mjs +1 -1
  84. package/dist/wasm.mjs +1 -1
  85. package/dist/wgsl.mjs +1 -1
  86. package/dist/zenscript.mjs +1 -1
  87. package/dist/zig.mjs +1 -1
  88. package/package.json +3 -3
package/dist/haskell.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { EmulatedRegExp } from 'oniguruma-to-es'
2
2
 
3
- const lang = Object.freeze({displayName:"Haskell",fileTypes:["hs","hs-boot","hsig"],name:"haskell",patterns:[{include:"#liquid_haskell"},{include:"#comment_like"},{include:"#numeric_literals"},{include:"#string_literal"},{include:"#char_literal"},{match:/(?<!@|#)-\}/dgv,name:"invalid"},{captures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"punctuation.paren.haskell"}},match:/(\()\p{space}*(\))/dgv,name:"constant.language.unit.haskell"},{captures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"keyword.operator.hash.haskell"},"3":{name:"keyword.operator.hash.haskell"},"4":{name:"punctuation.paren.haskell"}},match:/(\()(#)\p{space}*(#)(\))/dgv,name:"constant.language.unit.unboxed.haskell"},{captures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"punctuation.paren.haskell"}},match:/(\()\p{space}*,[\p{space}\,]*(\))/dgv,name:"support.constant.tuple.haskell"},{captures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"keyword.operator.hash.haskell"},"3":{name:"keyword.operator.hash.haskell"},"4":{name:"punctuation.paren.haskell"}},match:/(\()(#)\p{space}*,[\p{space}\,]*(#)(\))/dgv,name:"support.constant.tuple.unboxed.haskell"},{captures:{"1":{name:"punctuation.bracket.haskell"},"2":{name:"punctuation.bracket.haskell"}},match:/(\[)\p{space}*(\])/dgv,name:"constant.language.empty-list.haskell"},{begin:/(\b(?<!')(module)|^(signature))(\b(?!'))/dgv,beginCaptures:{"2":{name:"keyword.other.module.haskell"},"3":{name:"keyword.other.signature.haskell"}},end:/(?=\b(?<!')where\b(?!'))/dgv,name:"meta.declaration.module.haskell",patterns:[{include:"#comment_like"},{include:"#module_name"},{include:"#module_exports"},{match:/[a-z]+/dgv,name:"invalid"}]},{include:"#ffi"},{begin:/^(\p{space}*)(class)(\b(?!'))/dgv,beginCaptures:{"2":{name:"keyword.other.class.haskell"}},end:/(?=(?<!')\bwhere\b(?!'))|(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.declaration.class.haskell",patterns:[{include:"#comment_like"},{include:"#where"},{include:"#type_signature"}]},{begin:/^(\p{space}*)(data|newtype)(?:\p{space}+(instance))?\p{space}+((?:(?!(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(?:=|--+)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])|\b(?<!')(?:where|deriving)\b(?!')|\{-)[^\n])*)(?=\b(?<!'')where\b(?!''))/dgv,beginCaptures:{"2":{name:"keyword.other.$2.haskell"},"3":{name:"keyword.other.instance.haskell"},"4":{patterns:[{include:"#type_signature"}]}},end:/(?=(?<!')\bderiving\b(?!'))|(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.declaration.$2.generalized.haskell",patterns:[{include:"#comment_like"},{begin:/(?<!')\b(where)\p{space}*(\{)(?!-)/dgv,beginCaptures:{"1":{name:"keyword.other.where.haskell"},"2":{name:"punctuation.brace.haskell"}},end:/(\})/dgv,endCaptures:{"1":{name:"punctuation.brace.haskell"}},patterns:[{include:"#comment_like"},{include:"#gadt_constructor"},{match:/;/dgv,name:"punctuation.semicolon.haskell"}]},{match:/\b(?<!')(where)\b(?!')/dgv,name:"keyword.other.where.haskell"},{include:"#deriving"},{include:"#gadt_constructor"}]},{include:"#role_annotation"},{begin:/^(\p{space}*)(pattern)\p{space}+([^\n]*?)\p{space}+(::|∷)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])/dgv,beginCaptures:{"2":{name:"keyword.other.pattern.haskell"},"3":{patterns:[{include:"#comma"},{include:"#data_constructor"}]},"4":{name:"keyword.operator.double-colon.haskell"}},end:/(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.declaration.pattern.type.haskell",patterns:[{include:"#type_signature"}]},{begin:/^\p{space}*(pattern)\b(?!')/dgv,captures:{"1":{name:"keyword.other.pattern.haskell"}},end:/(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.declaration.pattern.haskell",patterns:[{include:"$self"}]},{begin:/^(\p{space}*)(data|newtype)(?:\p{space}+(family|instance))?\p{space}+(((?!(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(?:=|--+)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])|\b(?<!')(?:where|deriving)\b(?!')|\{-)[^\n])*)/dgv,beginCaptures:{"2":{name:"keyword.other.$2.haskell"},"3":{name:"keyword.other.$3.haskell"},"4":{patterns:[{include:"#type_signature"}]}},end:/(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.declaration.$2.algebraic.haskell",patterns:[{include:"#comment_like"},{include:"#deriving"},{include:"#forall"},{include:"#adt_constructor"},{include:"#context"},{include:"#record_decl"},{include:"#type_signature"}]},{begin:/^(\p{space}*)(type)\p{space}+(family)\b(?!')(((?!(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(?:=|--+)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])|\b(?<!')where\b(?!')|\{-)[^\n])*)/dgv,beginCaptures:{"2":{name:"keyword.other.type.haskell"},"3":{name:"keyword.other.family.haskell"},"4":{patterns:[{include:"#comment_like"},{include:"#where"},{include:"#type_signature"}]}},end:/(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.declaration.type.family.haskell",patterns:[{include:"#comment_like"},{include:"#where"},{include:"#type_signature"}]},{begin:/^(\p{space}*)(type)(?:\p{space}+(instance))?\p{space}+(((?!(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(?:=|--+|::|∷)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])|\{-)[^\n])*)/dgv,beginCaptures:{"2":{name:"keyword.other.type.haskell"},"3":{name:"keyword.other.instance.haskell"},"4":{patterns:[{include:"#type_signature"}]}},end:/(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.declaration.type.haskell",patterns:[{include:"#type_signature"}]},{begin:/^(\p{space}*)(instance)(\b(?!'))/dgv,beginCaptures:{"2":{name:"keyword.other.instance.haskell"}},end:/(?=\b(?<!')(where)\b(?!'))|(?=\}|;)|^(?!(?!)\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))/dgv,name:"meta.declaration.instance.haskell",patterns:[{include:"#comment_like"},{include:"#where"},{include:"#type_signature"}]},{begin:/^(\p{space}*)(import)(\b(?!'))/dgv,beginCaptures:{"2":{name:"keyword.other.import.haskell"}},end:/(?=\b(?<!')(where)\b(?!'))|(?=\}|;)|^(?!(?!)\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))/dgv,name:"meta.import.haskell",patterns:[{include:"#comment_like"},{include:"#where"},{captures:{"1":{name:"keyword.other.$1.haskell"}},match:/(qualified|as|hiding)/dgv},{include:"#module_name"},{include:"#module_exports"}]},{include:"#deriving"},{include:"#layout_herald"},{include:"#keyword"},{captures:{"1":{name:"keyword.other.$1.haskell"},"2":{patterns:[{include:"#comment_like"},{include:"#integer_literals"},{include:"#infix_op"}]}},match:/^\p{space}*(infix[lr]?)\p{space}+([^\n]*)/dgv,name:"meta.fixity-declaration.haskell"},{include:"#overloaded_label"},{include:"#type_application"},{include:"#reserved_symbol"},{include:"#fun_decl"},{include:"#qualifier"},{include:"#data_constructor"},{include:"#start_type_signature"},{include:"#prefix_op"},{include:"#infix_op"},{begin:/(\()(#)\p{space}/dgv,beginCaptures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"keyword.operator.hash.haskell"}},end:/(#)(\))/dgv,endCaptures:{"1":{name:"keyword.operator.hash.haskell"},"2":{name:"punctuation.paren.haskell"}},patterns:[{include:"#comma"},{include:"$self"}]},{begin:/(\()/dgv,beginCaptures:{"1":{name:"punctuation.paren.haskell"}},end:/(\))/dgv,endCaptures:{"1":{name:"punctuation.paren.haskell"}},patterns:[{include:"#comma"},{include:"$self"}]},{include:"#quasi_quote"},{begin:/(\[)/dgv,beginCaptures:{"1":{name:"punctuation.bracket.haskell"}},end:/(\])/dgv,endCaptures:{"1":{name:"punctuation.bracket.haskell"}},patterns:[{include:"#comma"},{include:"$self"}]},{include:"#record"}],repository:{adt_constructor:{patterns:[{include:"#comment_like"},{begin:/(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(?:(=)|(\|))(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])/dgv,beginCaptures:{"1":{name:"keyword.operator.eq.haskell"},"2":{name:"keyword.operator.pipe.haskell"}},end:/*@__PURE__*/ new EmulatedRegExp("(?:^|^)\\p{space}*(?:(?<!')\\b((?:[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'\\.])+)|('?(?<paren>\\((?:[^\\(\\)]*|(?:\\((?:[^\\(\\)]*|(?:\\((?:[^\\(\\)]*|(?:\\((?:[^\\(\\)]*|(?:\\((?:[^\\(\\)]*|(?:))*\\)))*\\)))*\\)))*\\)))*\\)))|('?(?<brac>\\((?:[^\\[\\]]*|(?:\\((?:[^\\[\\]]*|(?:\\((?:[^\\[\\]]*|(?:\\((?:[^\\[\\]]*|(?:\\((?:[^\\[\\]]*|(?:))*\\]))*\\]))*\\]))*\\]))*\\])))\\p{space}*(?:(?<![[\\p{S}\\p{P}]&&[^\\(\\)\\,\\;\\[\\]\\`\\{\\}_\"']])(:[[\\p{S}\\p{P}]&&[^\\(\\)\\,\\;\\[\\]\\`\\{\\}_\"']]*)|(`)([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(`))|(?<!')\\b([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)|(\\()\\p{space}*(:[[\\p{S}\\p{P}]&&[^\\(\\)\\,\\;\\[\\]\\`\\{\\}_\"']]*)\\p{space}*(\\))","dgv",{"strategy":"clip_search"}),endCaptures:{"1":{patterns:[{include:"#type_signature"}]},"2":{patterns:[{include:"#type_signature"}]},"4":{patterns:[{include:"#type_signature"}]},"6":{name:"constant.other.operator.haskell"},"7":{name:"punctuation.backtick.haskell"},"8":{name:"constant.other.haskell"},"9":{name:"punctuation.backtick.haskell"},"10":{name:"constant.other.haskell"},"11":{name:"punctuation.paren.haskell"},"12":{name:"constant.other.operator.haskell"},"13":{name:"punctuation.paren.haskell"}},patterns:[{include:"#comment_like"},{include:"#deriving"},{include:"#record_decl"},{include:"#forall"},{include:"#context"}]}]},block_comment:{applyEndPatternLast:1,begin:/\{-/dgv,captures:{"0":{name:"punctuation.definition.comment.haskell"}},end:/-\}/dgv,name:"comment.block.haskell",patterns:[{include:"#block_comment"}]},char_literal:{captures:{"1":{name:"punctuation.definition.string.begin.haskell"},"2":{name:"constant.character.escape.haskell"},"3":{name:"constant.character.escape.octal.haskell"},"4":{name:"constant.character.escape.hexadecimal.haskell"},"5":{name:"constant.character.escape.control.haskell"},"6":{name:"punctuation.definition.string.end.haskell"}},match:/(?<![\p{Ll}_\p{Lu}\p{Lt}\p{Nd}'])(')(?:[ -\[\]-\~]|(\\(?: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\@\[\]\\\^_]))(')/dgv,name:"string.quoted.single.haskell"},comma:{match:/,/dgv,name:"punctuation.separator.comma.haskell"},comment_like:{patterns:[{include:"#cpp"},{include:"#pragma"},{include:"#comments"}]},comments:{patterns:[{begin:/^(\p{space}*)(--\p{space}[\|\$])/dgv,beginCaptures:{"2":{name:"punctuation.whitespace.comment.leading.haskell"}},end:/(?=^(?!\1--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])))()/dgv,name:"comment.block.documentation.haskell"},{begin:/(^[ \t]+)?(--\p{space}[\^\*])/dgv,beginCaptures:{"1":{name:"punctuation.whitespace.comment.leading.haskell"}},end:/\n/dgv,name:"comment.line.documentation.haskell"},{applyEndPatternLast:1,begin:/\{-\p{space}?[\|\$\*\^]/dgv,captures:{"0":{name:"punctuation.definition.comment.haskell"}},end:/-\}/dgv,name:"comment.block.documentation.haskell",patterns:[{include:"#block_comment"}]},{begin:/(^[ \t]+)?(?=--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]))/dgv,beginCaptures:{"1":{name:"punctuation.whitespace.comment.leading.haskell"}},comment:"Operators may begin with '--' as long as they are not entirely composed of '-' characters. This means comments can't be immediately followed by an allowable operator character.",end:/*@__PURE__*/ new EmulatedRegExp("(?!^)","dgv",{"strategy":"clip_search"}),patterns:[{begin:/--/dgv,beginCaptures:{"0":{name:"punctuation.definition.comment.haskell"}},end:/\n/dgv,name:"comment.line.double-dash.haskell"}]},{include:"#block_comment"}]},context:{captures:{"1":{patterns:[{include:"#comment_like"},{include:"#type_signature"}]},"2":{name:"keyword.operator.big-arrow.haskell"}},match:/([^\n]*)(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(=>|⇒)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])/dgv},cpp:{captures:{"1":{name:"punctuation.definition.preprocessor.c"}},comment:"In addition to Haskell's \"native\" syntax, GHC permits the C preprocessor to be run on a source file.",match:/^(#)[^\n]*(?=\n?$)/dgv,name:"meta.preprocessor.c"},data_constructor:{match:/\b(?<!')[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*(?![\.'\p{L}\p{M}\p{N}\p{Pc}])/dgv,name:"constant.other.haskell"},deriving:{patterns:[{begin:/^(\p{space}*)(deriving)\p{space}+(?:(via|stock|newtype|anyclass)\p{space}+)?/dgv,beginCaptures:{"2":{name:"keyword.other.deriving.haskell"},"3":{name:"keyword.other.deriving.strategy.$3.haskell"}},end:/(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.deriving.haskell",patterns:[{include:"#comment_like"},{match:/(?<!')\b(instance)\b(?!')/dgv,name:"keyword.other.instance.haskell"},{captures:{"1":{name:"keyword.other.deriving.strategy.$1.haskell"}},match:/(?<!')\b(via|stock|newtype|anyclass)\b(?!')/dgv},{include:"#type_signature"}]},{begin:/(deriving)(?:\p{space}+(stock|newtype|anyclass))?\p{space}*(\()/dgv,beginCaptures:{"1":{name:"keyword.other.deriving.haskell"},"2":{name:"keyword.other.deriving.strategy.$2.haskell"},"3":{name:"punctuation.paren.haskell"}},end:/(\))/dgv,endCaptures:{"1":{name:"punctuation.paren.haskell"}},name:"meta.deriving.haskell",patterns:[{include:"#type_signature"}]},{captures:{"1":{name:"keyword.other.deriving.haskell"},"2":{name:"keyword.other.deriving.strategy.$2.haskell"},"3":{patterns:[{include:"#type_signature"}]},"5":{name:"keyword.other.deriving.strategy.via.haskell"},"6":{patterns:[{include:"#type_signature"}]}},match:/(deriving)(?:\p{space}+(stock|newtype|anyclass))?\p{space}+([\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)(\p{space}+(via)\p{space}+([^\n]*)(?=\n?$))?/dgv,name:"meta.deriving.haskell"},{match:/(?<!')\b(via)\b(?!')/dgv,name:"keyword.other.deriving.strategy.via.haskell"}]},double_colon:{captures:{"1":{name:"keyword.operator.double-colon.haskell"}},match:/\p{space}*(::|∷)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])\p{space}*/dgv},export_constructs:{patterns:[{include:"#comment_like"},{begin:/\b(?<!')(pattern)\b(?!')/dgv,beginCaptures:{"1":{name:"keyword.other.pattern.haskell"}},end:/([\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)|(\()\p{space}*(:[[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+)\p{space}*(\))/dgv,endCaptures:{"1":{name:"constant.other.haskell"},"2":{name:"punctuation.paren.haskell"},"3":{name:"constant.other.operator.haskell"},"4":{name:"punctuation.paren.haskell"}},patterns:[{include:"#comment_like"}]},{begin:/\b(?<!')(type)\b(?!')/dgv,beginCaptures:{"1":{name:"keyword.other.type.haskell"}},end:/([\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)|(\()\p{space}*([[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+)\p{space}*(\))/dgv,endCaptures:{"1":{name:"storage.type.haskell"},"2":{name:"punctuation.paren.haskell"},"3":{name:"storage.type.operator.haskell"},"4":{name:"punctuation.paren.haskell"}},patterns:[{include:"#comment_like"}]},{match:/(?<!')\b[\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*/dgv,name:"entity.name.function.haskell"},{match:/(?<!')\b[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*/dgv,name:"storage.type.haskell"},{include:"#record_wildcard"},{include:"#reserved_symbol"},{include:"#prefix_op"}]},ffi:{begin:/^(\p{space}*)(foreign)\p{space}+(import|export)\p{space}+/dgv,beginCaptures:{"2":{name:"keyword.other.foreign.haskell"},"3":{name:"keyword.other.$3.haskell"}},end:/(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.$3.foreign.haskell",patterns:[{include:"#comment_like"},{captures:{"1":{name:"keyword.other.calling-convention.$1.haskell"}},match:/\b(?<!')(ccall|cplusplus|dotnet|jvm|stdcall|prim|capi)\p{space}+/dgv},{begin:/(?=")|(?=\b(?<!')([\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)\b(?!'))/dgv,end:/(?=(::|∷)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]))/dgv,patterns:[{include:"#comment_like"},{captures:{"1":{name:"keyword.other.safety.$1.haskell"},"2":{name:"entity.name.foreign.haskell",patterns:[{include:"#string_literal"}]},"3":{name:"entity.name.function.haskell"},"4":{name:"entity.name.function.infix.haskell"}},match:/\b(?<!')(safe|unsafe|interruptible)\b(?!')\p{space}*("(?:\\"|[^"])*")?\p{space}*(?:\b(?<!'')([\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)\b(?!')|\(\p{space}*(?!--+\))([[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+)\p{space}*\))/dgv},{captures:{"1":{name:"keyword.other.safety.$1.haskell"},"2":{name:"entity.name.foreign.haskell",patterns:[{include:"#string_literal"}]}},match:/\b(?<!')(safe|unsafe|interruptible)\b(?!')\p{space}*("(?:\\"|[^"])*")?\p{space}*(?=\n?$)/dgv},{captures:{"0":{name:"entity.name.foreign.haskell",patterns:[{include:"#string_literal"}]}},match:/"(?:\\"|[^"])*"/dgv},{captures:{"1":{name:"entity.name.function.haskell"},"2":{name:"punctuation.paren.haskell"},"3":{name:"entity.name.function.infix.haskell"},"4":{name:"punctuation.paren.haskell"}},match:/\b(?<!'')([\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)\b(?!')|(\()\p{space}*(?!--+\))([[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+)\p{space}*(\))/dgv}]},{include:"#double_colon"},{include:"#type_signature"}]},float_literals:{captures:{"1":{name:"constant.numeric.floating.decimal.haskell"},"2":{name:"constant.numeric.floating.hexadecimal.haskell"}},comment:"Floats are decimal or hexadecimal",match:/\b(?<!')(?:([0-9][_0-9]*\.[0-9][_0-9]*(?:[eE][\-\+]?[0-9][_0-9]*)?|[0-9][_0-9]*[eE][\-\+]?[0-9][_0-9]*)|(0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*\.[0-9a-fA-F][_0-9a-fA-F]*(?:[pP][\-\+]?[0-9][_0-9]*)?|0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*[pP][\-\+]?[0-9][_0-9]*))\b(?!')/dgv},forall:{begin:/\b(?<!')(forall|∀)\b(?!')/dgv,beginCaptures:{"1":{name:"keyword.other.forall.haskell"}},end:/(\.)|(->|→)/dgv,endCaptures:{"1":{name:"keyword.operator.period.haskell"},"2":{name:"keyword.operator.arrow.haskell"}},patterns:[{include:"#comment_like"},{include:"#type_variable"},{include:"#type_signature"}]},fun_decl:{begin:/^(\p{space}*)(?<fn>(?:[\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*#*|\(\p{space}*(?!--+\))[[\p{S}\p{P}]&&[^\(\)\,\:\;\[\]\`\{\}_"']][[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]*\p{space}*\))(?:\p{space}*,\p{space}*(?:(?:[\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*#*|\(\p{space}*(?!--+\))[[\p{S}\p{P}]&&[^\(\)\,\:\;\[\]\`\{\}_"']][[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]*\p{space}*\))(?:\p{space}*,\p{space}*(?:(?:[\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*#*|\(\p{space}*(?!--+\))[[\p{S}\p{P}]&&[^\(\)\,\:\;\[\]\`\{\}_"']][[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]*\p{space}*\))(?:\p{space}*,\p{space}*(?:(?:[\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*#*|\(\p{space}*(?!--+\))[[\p{S}\p{P}]&&[^\(\)\,\:\;\[\]\`\{\}_"']][[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]*\p{space}*\))(?:\p{space}*,\p{space}*(?:(?:[\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*#*|\(\p{space}*(?!--+\))[[\p{S}\p{P}]&&[^\(\)\,\:\;\[\]\`\{\}_"']][[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]*\p{space}*\))(?:\p{space}*,\p{space}*(?:))?))?))?))?))?)\p{space}*(?<![[\p{S}\p{P}]&&[^\)\,\;\]\`\}_"']])(::|∷)(?![[\p{S}\p{P}]&&[^\(\,\;\[\`\{_"']])/dgv,beginCaptures:{"2":{name:"entity.name.function.haskell",patterns:[{include:"#reserved_symbol"},{include:"#prefix_op"}]},"3":{name:"keyword.operator.double-colon.haskell"}},end:/(?=(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])((<-|←)|(=)|(-<|↢)|(-<<|⤛))([\(\)\,\;\[\]\`\{\}_"']|[^\p{S}\p{P}]))|(?=\}|;)|^(?!(?!)\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))/dgv,name:"meta.function.type-declaration.haskell",patterns:[{include:"#type_signature"}]},gadt_constructor:{patterns:[{begin:/^(\p{space}*)(?:(\b(?<!')[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)|(\()\p{space}*(:[[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]*)\p{space}*(\)))/dgv,beginCaptures:{"2":{name:"constant.other.haskell"},"3":{name:"punctuation.paren.haskell"},"4":{name:"constant.other.operator.haskell"},"5":{name:"punctuation.paren.haskell"}},end:/(?=\b(?<!'')deriving\b(?!'))|(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,patterns:[{include:"#comment_like"},{include:"#deriving"},{include:"#double_colon"},{include:"#record_decl"},{include:"#type_signature"}]},{begin:/(\b(?<!')[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}]*)|(\()\p{space}*(:[[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]*)\p{space}*(\))/dgv,beginCaptures:{"1":{name:"constant.other.haskell"},"2":{name:"punctuation.paren.haskell"},"3":{name:"constant.other.operator.haskell"},"4":{name:"punctuation.paren.haskell"}},end:/(?=\n?$)/dgv,patterns:[{include:"#comment_like"},{include:"#deriving"},{include:"#double_colon"},{include:"#record_decl"},{include:"#type_signature"}]}]},infix_op:{patterns:[{captures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"entity.name.namespace.haskell"},"3":{name:"keyword.operator.infix.haskell"}},comment:"In case this regex seems overly general, note that Haskell permits the definition of new operators which can be nearly any string of punctuation characters, such as $%^&*.\n",match:/((?:(?<!'')('')?[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}'']*\.)*)(#+|[[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+(?<!#))/dgv},{captures:{"1":{name:"punctuation.backtick.haskell"},"2":{name:"entity.name.namespace.haskell"},"3":{patterns:[{include:"#data_constructor"}]},"4":{name:"punctuation.backtick.haskell"}},comment:"In case this regex seems unusual for an infix operator, note that Haskell\nallows any ordinary function application (elem 4 [1..10]) to be rewritten\nas an infix expression (4 `elem` [1..10]).\n",match:/(`)((?:[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}'']*\.)*)([\p{Ll}\p{Lu}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}'']*)(`)/dgv,name:"keyword.operator.function.infix.haskell"}]},inline_phase:{begin:/\[/dgv,beginCaptures:{"0":{name:"punctuation.bracket.haskell"}},end:/\]/dgv,endCaptures:{"0":{name:"punctuation.bracket.haskell"}},name:"meta.inlining-phase.haskell",patterns:[{match:/~/dgv,name:"punctuation.tilde.haskell"},{include:"#integer_literals"},{match:/[\p{L}\p{M}\p{N}\p{Pc}]*/dgv,name:"invalid"}]},integer_literals:{captures:{"1":{name:"constant.numeric.integral.decimal.haskell"},"2":{name:"constant.numeric.integral.hexadecimal.haskell"},"3":{name:"constant.numeric.integral.octal.haskell"},"4":{name:"constant.numeric.integral.binary.haskell"}},match:/\b(?<!')(?:([0-9][_0-9]*)|(0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*)|(0[oO]_*[0-7][_0-7]*)|(0[bB]_*[01][_01]*))\b(?!')/dgv},keyword:{captures:{"1":{name:"keyword.other.$1.haskell"},"2":{name:"keyword.control.$2.haskell"}},match:/\b(?<!')(?:(where|let|in|default)|(m?do|if|then|else|case|of|proc|rec))\b(?!')/dgv},layout_herald:{begin:/(?<!')\b(?:(where|let|m?do)|(of))\p{space}*(\{)(?!-)/dgv,beginCaptures:{"1":{name:"keyword.other.$1.haskell"},"2":{name:"keyword.control.of.haskell"},"3":{name:"punctuation.brace.haskell"}},end:/(\})/dgv,endCaptures:{"1":{name:"punctuation.brace.haskell"}},patterns:[{include:"$self"},{match:/;/dgv,name:"punctuation.semicolon.haskell"}]},liquid_haskell:{begin:/\{-@/dgv,end:/@-\}/dgv,name:"block.liquidhaskell.haskell",patterns:[{include:"$self"}]},module_exports:{applyEndPatternLast:1,begin:/\(/dgv,beginCaptures:{"0":{name:"punctuation.paren.haskell"}},end:/\)/dgv,endCaptures:{"0":{name:"punctuation.paren.haskell"}},name:"meta.declaration.exports.haskell",patterns:[{include:"#comment_like"},{captures:{"1":{name:"keyword.other.module.haskell"}},match:/\b(?<!')(module)\b(?!')/dgv},{include:"#comma"},{include:"#export_constructs"},{begin:/\(/dgv,beginCaptures:{"0":{name:"punctuation.paren.haskell"}},end:/\)/dgv,endCaptures:{"0":{name:"punctuation.paren.haskell"}},patterns:[{include:"#comment_like"},{include:"#record_wildcard"},{include:"#export_constructs"},{include:"#comma"}]}]},module_name:{match:/*@__PURE__*/ new EmulatedRegExp("(?<conid>[\\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{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(\\.(?:))?))?))?))?))?)","dgv",{"hiddenCaptures":[3,4,5,6]}),name:"entity.name.namespace.haskell"},numeric_literals:{patterns:[{include:"#float_literals"},{include:"#integer_literals"}]},overloaded_label:{patterns:[{captures:{"1":{name:"keyword.operator.prefix.hash.haskell"},"2":{patterns:[{include:"#string_literal"}]}},match:/(?<![[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}\p{S}\p{P}]&&[^\(\,\;\[\`\{]])(#)(?:("(?:\\"|[^"])*")|[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}'\.]+)/dgv,name:"entity.name.label.haskell"}]},pragma:{begin:/\{-#/dgv,end:/#-\}/dgv,name:"meta.preprocessor.haskell",patterns:[{begin:/\b(?<!')(LANGUAGE)\b(?!')/dgiv,beginCaptures:{"1":{name:"keyword.other.preprocessor.pragma.haskell"}},end:/(?=#-\})/dgv,patterns:[{match:/(?:No)?(?:AutoDeriveTypeable|DatatypeContexts|DoRec|IncoherentInstances|MonadFailDesugaring|MonoPatBinds|NullaryTypeClasses|OverlappingInstances|PatternSignatures|RecordPuns|RelaxedPolyRec)/dgv,name:"invalid.deprecated"},{captures:{"1":{name:"keyword.other.preprocessor.extension.haskell"}},match:/((?:No)?(?:AllowAmbiguousTypes|AlternativeLayoutRule|AlternativeLayoutRuleTransitional|Arrows|BangPatterns|BinaryLiterals|CApiFFI|CPP|CUSKs|ConstrainedClassMethods|ConstraintKinds|DataKinds|DefaultSignatures|DeriveAnyClass|DeriveDataTypeable|DeriveFoldable|DeriveFunctor|DeriveGeneric|DeriveLift|DeriveTraversable|DerivingStrategies|DerivingVia|DisambiguateRecordFields|DoAndIfThenElse|BlockArguments|DuplicateRecordFields|EmptyCase|EmptyDataDecls|EmptyDataDeriving|ExistentialQuantification|ExplicitForAll|ExplicitNamespaces|ExtendedDefaultRules|FlexibleContexts|FlexibleInstances|ForeignFunctionInterface|FunctionalDependencies|GADTSyntax|GADTs|GHCForeignImportPrim|Generali(?:s|z)edNewtypeDeriving|ImplicitParams|ImplicitPrelude|ImportQualifiedPost|ImpredicativeTypes|TypeFamilyDependencies|InstanceSigs|ApplicativeDo|InterruptibleFFI|JavaScriptFFI|KindSignatures|LambdaCase|LiberalTypeSynonyms|MagicHash|MonadComprehensions|MonoLocalBinds|MonomorphismRestriction|MultiParamTypeClasses|MultiWayIf|NumericUnderscores|NPlusKPatterns|NamedFieldPuns|NamedWildCards|NegativeLiterals|HexFloatLiterals|NondecreasingIndentation|NumDecimals|OverloadedLabels|OverloadedLists|OverloadedStrings|PackageImports|ParallelArrays|ParallelListComp|PartialTypeSignatures|PatternGuards|PatternSynonyms|PolyKinds|PolymorphicComponents|QuantifiedConstraints|PostfixOperators|QuasiQuotes|Rank2Types|RankNTypes|RebindableSyntax|RecordWildCards|RecursiveDo|RelaxedLayout|RoleAnnotations|ScopedTypeVariables|StandaloneDeriving|StarIsType|StaticPointers|Strict|StrictData|TemplateHaskell|TemplateHaskellQuotes|StandaloneKindSignatures|TraditionalRecordSyntax|TransformListComp|TupleSections|TypeApplications|TypeInType|TypeFamilies|TypeOperators|TypeSynonymInstances|UnboxedTuples|UnboxedSums|UndecidableInstances|UndecidableSuperClasses|UnicodeSyntax|UnliftedFFITypes|UnliftedNewtypes|ViewPatterns))/dgv},{include:"#comma"}]},{begin:/\b(?<!')(SPECIALI(?:S|Z)E)(?:\p{space}*(\[[^\[\]]*\])?\p{space}*|\p{space}+)(instance)\b(?!')/dgiv,beginCaptures:{"1":{name:"keyword.other.preprocessor.pragma.haskell"},"2":{patterns:[{include:"#inline_phase"}]},"3":{name:"keyword.other.instance.haskell"}},end:/(?=#-\})/dgv,patterns:[{include:"#type_signature"}]},{begin:/\b(?<!')(SPECIALI(?:S|Z)E)\b(?!')(?:\p{space}+(INLINE)\b(?!'))?\p{space}*(\[[^\[\]]*\])?\p{space}*/dgiv,beginCaptures:{"1":{name:"keyword.other.preprocessor.pragma.haskell"},"2":{name:"keyword.other.preprocessor.pragma.haskell"},"3":{patterns:[{include:"#inline_phase"}]}},end:/(?=#-\})/dgv,patterns:[{include:"$self"}]},{match:/\b(?<!')(LANGUAGE|OPTIONS_GHC|INCLUDE|MINIMAL|UNPACK|OVERLAPS|INCOHERENT|NOUNPACK|SOURCE|OVERLAPPING|OVERLAPPABLE|INLINE|NOINLINE|INLINE?ABLE|CONLIKE|LINE|COLUMN|RULES|COMPLETE)\b(?!')/dgiv,name:"keyword.other.preprocessor.haskell"},{begin:/\b(DEPRECATED|WARNING)\b/dgiv,beginCaptures:{"1":{name:"keyword.other.preprocessor.pragma.haskell"}},end:/(?=#-\})/dgv,patterns:[{include:"#string_literal"}]}]},prefix_op:{patterns:[{captures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"entity.name.function.infix.haskell"},"3":{name:"punctuation.paren.haskell"}},comment:"An operator cannot be composed entirely of '-' characters; instead, it should be matched as a comment.\n",match:/(\()\p{space}*(?!(?:--+|\.\.)\))(#+|[[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+(?<!#))\p{space}*(\))/dgv}]},qualifier:{match:/\b(?<!')[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*\./dgv,name:"entity.name.namespace.haskell"},quasi_quote:{patterns:[{begin:/(\[)(e|d|p)?(\|\|?)/dgv,beginCaptures:{"1":{name:"keyword.operator.quasi-quotation.begin.haskell"},"2":{name:"entity.name.quasi-quoter.haskell"},"3":{name:"keyword.operator.quasi-quotation.begin.haskell"}},end:/\3\]()()()/dgv,endCaptures:{"0":{name:"keyword.operator.quasi-quotation.end.haskell"}},name:"meta.quasi-quotation.haskell",patterns:[{include:"$self"}]},{begin:/(\[)(t)(\|\|?)/dgv,beginCaptures:{"1":{name:"keyword.operator.quasi-quotation.begin.haskell"},"2":{name:"entity.name.quasi-quoter.haskell"},"3":{name:"keyword.operator.quasi-quotation.begin.haskell"}},end:/\3\]()()()/dgv,endCaptures:{"0":{name:"keyword.operator.quasi-quotation.end.haskell"}},name:"meta.quasi-quotation.haskell",patterns:[{include:"#type_signature"}]},{begin:/(\[)(?:(\$\$)|(\$))?((?:[^\p{space}\p{S}\p{P}]|[\.'_])*)(\|\|?)/dgv,beginCaptures:{"1":{name:"keyword.operator.quasi-quotation.begin.haskell"},"2":{name:"keyword.operator.prefix.double-dollar.haskell"},"3":{name:"keyword.operator.prefix.dollar.haskell"},"4":{name:"entity.name.quasi-quoter.haskell",patterns:[{include:"#qualifier"}]},"5":{name:"keyword.operator.quasi-quotation.begin.haskell"}},end:/\5\]()()()()()/dgv,endCaptures:{"0":{name:"keyword.operator.quasi-quotation.end.haskell"}},name:"meta.quasi-quotation.haskell"}]},record:{begin:/(\{)(?!-)/dgv,beginCaptures:{"1":{name:"punctuation.brace.haskell"}},end:/(?<!-)(\})/dgv,endCaptures:{"1":{name:"punctuation.brace.haskell"}},name:"meta.record.haskell",patterns:[{include:"#comment_like"},{include:"#record_field"}]},record_decl:{begin:/(\{)(?!-)/dgv,beginCaptures:{"1":{name:"punctuation.brace.haskell"}},end:/(?<!-)(\})/dgv,endCaptures:{"1":{name:"punctuation.brace.haskell"}},name:"meta.record.definition.haskell",patterns:[{include:"#comment_like"},{include:"#record_decl_field"}]},record_decl_field:{begin:/(?:([\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)|(\()\p{space}*([[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+)\p{space}*(\)))/dgv,beginCaptures:{"1":{name:"variable.other.member.definition.haskell"},"2":{name:"punctuation.paren.haskell"},"3":{name:"variable.other.member.definition.haskell"},"4":{name:"punctuation.paren.haskell"}},end:/(,)|(?=\})/dgv,endCaptures:{"1":{name:"punctuation.comma.haskell"}},patterns:[{include:"#comment_like"},{include:"#comma"},{include:"#double_colon"},{include:"#type_signature"},{include:"#record_decl_field"}]},record_field:{patterns:[{begin:/(?:([\p{Ll}\p{Lu}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}\.']*)|(\()\p{space}*([[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+)\p{space}*(\)))/dgv,beginCaptures:{"1":{name:"variable.other.member.haskell",patterns:[{include:"#qualifier"}]},"2":{name:"punctuation.paren.haskell"},"3":{name:"variable.other.member.haskell"},"4":{name:"punctuation.paren.haskell"}},end:/(,)|(?=\})/dgv,endCaptures:{"1":{name:"punctuation.comma.haskell"}},patterns:[{include:"#comment_like"},{include:"#comma"},{include:"$self"}]},{include:"#record_wildcard"}]},record_wildcard:{captures:{"1":{name:"variable.other.member.wildcard.haskell"}},match:/(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(\.\.)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])/dgv},reserved_symbol:{patterns:[{captures:{"1":{name:"keyword.operator.double-dot.haskell"},"2":{name:"keyword.operator.colon.haskell"},"3":{name:"keyword.operator.eq.haskell"},"4":{name:"keyword.operator.lambda.haskell"},"5":{name:"keyword.operator.pipe.haskell"},"6":{name:"keyword.operator.arrow.left.haskell"},"7":{name:"keyword.operator.arrow.haskell"},"8":{name:"keyword.operator.arrow.left.tail.haskell"},"9":{name:"keyword.operator.arrow.left.tail.double.haskell"},"10":{name:"keyword.operator.arrow.tail.haskell"},"11":{name:"keyword.operator.arrow.tail.double.haskell"},"12":{name:"keyword.other.forall.haskell"}},match:/(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"'']])(?:(\.\.)|(:)|(=)|(\\)|(\|)|(<-|←)|(->|→)|(-<|↢)|(-<<|⤛)|(>-|⤚)|(>>-|⤜)|(∀))(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"'']])/dgv},{captures:{"1":{name:"keyword.operator.postfix.hash.haskell"}},match:/(?<=[[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}\p{S}\p{P}]&&[^\#\,\;\[\`\{]])(#+)(?![[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}\p{S}\p{P}]&&[^\)\,\;\]\`\}]])/dgv},{captures:{"1":{name:"keyword.operator.infix.tight.at.haskell"}},match:/(?<=[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}\)\}\]])(@)(?=[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}\(\[\{])/dgv},{captures:{"1":{name:"keyword.operator.prefix.tilde.haskell"},"2":{name:"keyword.operator.prefix.bang.haskell"},"3":{name:"keyword.operator.prefix.minus.haskell"},"4":{name:"keyword.operator.prefix.dollar.haskell"},"5":{name:"keyword.operator.prefix.double-dollar.haskell"}},match:/(?<![[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}\p{S}\p{P}]&&[^\(\,\;\[\`\{]])(?:(~)|(!)|(-)|(\$)|(\$\$))(?=[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}\(\{\[])/dgv}]},role_annotation:{patterns:[{begin:/^(\p{space}*)(type)\p{space}+(role)\b(?!')/dgv,beginCaptures:{"2":{name:"keyword.other.type.haskell"},"3":{name:"keyword.other.role.haskell"}},end:/(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.role-annotation.haskell",patterns:[{include:"#comment_like"},{include:"#type_constructor"},{captures:{"1":{name:"keyword.other.role.$1.haskell"}},match:/\b(?<!')(nominal|representational|phantom)\b(?!')/dgv}]}]},start_type_signature:{patterns:[{begin:/^(\p{space}*)(::|∷)(?![[\p{S}\p{P}]&&[^\(\,\;\[\`\{_"']])\p{space}*/dgv,beginCaptures:{"2":{name:"keyword.operator.double-colon.haskell"}},end:/(?=#?\)|\]|,|(?<!')\b(in|then|else|of)\b(?!')|(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(?:(\\|λ)|(<-|←)|(=)|(-<|↢)|(-<<|⤛))([\(\)\,\;\[\]\`\{\}_"']|[^\p{S}\p{P}])|(#|@)-\}|(?=\}|;)|^(?!(?!)\p{space}*\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$))))/dgv,name:"meta.type-declaration.haskell",patterns:[{include:"#type_signature"}]},{begin:/(?<![[\p{S}\p{P}]&&[^\(\,\;\[\`\{_"']])(::|∷)(?![[\p{S}\p{P}]&&[^\(\,\;\[\`\{_"']])/dgv,beginCaptures:{"1":{name:"keyword.operator.double-colon.haskell"}},end:/(?=#?\)|\]|,|\b(?<!')(in|then|else|of)\b(?!')|(#|@)-\}|(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(?:(\\|λ)|(<-|←)|(=)|(-<|↢)|(-<<|⤛))([\(\)\,\;\[\]\`\{\}_"']|[^\p{S}\p{P}])|(?=\}|;)|(?=\n?$))/dgv,patterns:[{include:"#type_signature"}]}]},string_literal:{begin:/"/dgv,beginCaptures:{"0":{name:"punctuation.definition.string.begin.haskell"}},end:/"/dgv,endCaptures:{"0":{name:"punctuation.definition.string.end.haskell"}},name:"string.quoted.double.haskell",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\\"'\&])/dgv,name:"constant.character.escape.haskell"},{match:/\\o[0-7]+|\\x[0-9A-Fa-f]+|\\[0-9]+/dgv,name:"constant.character.escape.octal.haskell"},{match:/\\\^[A-Z\@\[\]\\\^_]/dgv,name:"constant.character.escape.control.haskell"},{begin:/\\\p{space}/dgv,beginCaptures:{"0":{name:"constant.character.escape.begin.haskell"}},end:/\\/dgv,endCaptures:{"0":{name:"constant.character.escape.end.haskell"}},patterns:[{match:/\P{space}+/dgv,name:"invalid.illegal.character-not-allowed-here.haskell"}]}]},type_application:{patterns:[{begin:/(?<=[\p{space}\,\;\[\]\{\}"])(@)(')?(\()/dgv,beginCaptures:{"1":{name:"keyword.operator.prefix.at.haskell"},"2":{name:"keyword.operator.promotion.haskell"},"3":{name:"punctuation.paren.haskell"}},end:/\)/dgv,endCaptures:{"0":{name:"punctuation.paren.haskell"}},name:"meta.type-application.haskell",patterns:[{include:"#type_signature"}]},{begin:/(?<=[\p{space}\,\;\[\]\{\}"])(@)(')?(\[)/dgv,beginCaptures:{"1":{name:"keyword.operator.prefix.at.haskell"},"2":{name:"keyword.operator.promotion.haskell"},"3":{name:"punctuation.bracket.haskell"}},end:/\]/dgv,endCaptures:{"0":{name:"punctuation.bracket.haskell"}},name:"meta.type-application.haskell",patterns:[{include:"#type_signature"}]},{begin:/(?<=[\p{space}\,\;\[\]\{\}"])(@)(?=")/dgv,beginCaptures:{"1":{name:"keyword.operator.prefix.at.haskell"}},end:/(?<=")/dgv,name:"meta.type-application.haskell",patterns:[{include:"#string_literal"}]},{begin:/(?<=[\p{space}\,\;\[\]\{\}"])(@)(?=[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}'])/dgv,beginCaptures:{"1":{name:"keyword.operator.prefix.at.haskell"}},end:/(?![\p{Ll}_\p{Lu}\p{Lt}\p{Nd}'])/dgv,name:"meta.type-application.haskell",patterns:[{include:"#type_signature"}]}]},type_constructor:{patterns:[{captures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"entity.name.namespace.haskell"},"3":{name:"storage.type.haskell"}},match:/(')?((?:\b[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*\.)*)(\b[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)/dgv},{captures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"punctuation.paren.haskell"},"3":{name:"entity.name.namespace.haskell"},"4":{name:"storage.type.operator.haskell"},"5":{name:"punctuation.paren.haskell"}},match:/(')?(\()\p{space}*((?:[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*\.)*)([[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+)\p{space}*(\))/dgv}]},type_operator:{patterns:[{captures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"entity.name.namespace.haskell"},"3":{name:"storage.type.operator.infix.haskell"}},match:/(?:(?<!')('))?((?:\b[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*\.)*)(?![\#\@]?-\})(#+|[[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+(?<!#))/dgv},{captures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"punctuation.backtick.haskell"},"3":{name:"entity.name.namespace.haskell"},"4":{name:"storage.type.infix.haskell"},"5":{name:"punctuation.backtick.haskell"}},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}']*)(`)/dgv}]},type_signature:{patterns:[{include:"#comment_like"},{captures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"punctuation.paren.haskell"},"3":{name:"punctuation.paren.haskell"}},match:/(')?(\()\p{space}*(\))/dgv,name:"support.constant.unit.haskell"},{captures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"keyword.operator.hash.haskell"},"3":{name:"keyword.operator.hash.haskell"},"4":{name:"punctuation.paren.haskell"}},match:/(\()(#)\p{space}*(#)(\))/dgv,name:"support.constant.unit.unboxed.haskell"},{captures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"punctuation.paren.haskell"},"3":{name:"punctuation.paren.haskell"}},match:/(')?(\()\p{space}*,[\p{space}\,]*(\))/dgv,name:"support.constant.tuple.haskell"},{captures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"keyword.operator.hash.haskell"},"3":{name:"keyword.operator.hash.haskell"},"4":{name:"punctuation.paren.haskell"}},match:/(\()(#)\p{space}*(#)(\))/dgv,name:"support.constant.unit.unboxed.haskell"},{captures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"keyword.operator.hash.haskell"},"3":{name:"keyword.operator.hash.haskell"},"4":{name:"punctuation.paren.haskell"}},match:/(\()(#)\p{space}*,[\p{space}\,]*(#)(\))/dgv,name:"support.constant.tuple.unboxed.haskell"},{captures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"punctuation.bracket.haskell"},"3":{name:"punctuation.bracket.haskell"}},match:/(')?(\[)\p{space}*(\])/dgv,name:"support.constant.empty-list.haskell"},{include:"#integer_literals"},{match:/(::|∷)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])/dgv,name:"keyword.operator.double-colon.haskell"},{include:"#forall"},{match:/=>|⇒/dgv,name:"keyword.operator.big-arrow.haskell"},{include:"#string_literal"},{match:/'[^']'/dgv,name:"invalid"},{include:"#type_application"},{include:"#reserved_symbol"},{include:"#type_operator"},{include:"#type_constructor"},{begin:/(\()(#)/dgv,beginCaptures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"keyword.operator.hash.haskell"}},end:/(#)(\))/dgv,endCaptures:{"1":{name:"keyword.operator.hash.haskell"},"2":{name:"punctuation.paren.haskell"}},patterns:[{include:"#comma"},{include:"#type_signature"}]},{begin:/(')?(\()/dgv,beginCaptures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"punctuation.paren.haskell"}},end:/(\))/dgv,endCaptures:{"1":{name:"punctuation.paren.haskell"}},patterns:[{include:"#comma"},{include:"#type_signature"}]},{begin:/(')?(\[)/dgv,beginCaptures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"punctuation.bracket.haskell"}},end:/(\])/dgv,endCaptures:{"1":{name:"punctuation.bracket.haskell"}},patterns:[{include:"#comma"},{include:"#type_signature"}]},{include:"#type_variable"}]},type_variable:{match:/\b(?<!')(?!(?:forall|deriving)\b(?!'))[\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*/dgv,name:"variable.other.generic-type.haskell"},where:{patterns:[{begin:/(?<!')\b(where)\p{space}*(\{)(?!-)/dgv,beginCaptures:{"1":{name:"keyword.other.where.haskell"},"2":{name:"punctuation.brace.haskell"}},end:/(\})/dgv,endCaptures:{"1":{name:"punctuation.brace.haskell"}},patterns:[{include:"$self"},{match:/;/dgv,name:"punctuation.semicolon.haskell"}]},{match:/\b(?<!')(where)\b(?!')/dgv,name:"keyword.other.where.haskell"}]}},scopeName:"source.haskell",embeddedLangs:undefined,aliases:["hs"]})
3
+ const lang = Object.freeze({displayName:"Haskell",fileTypes:["hs","hs-boot","hsig"],name:"haskell",patterns:[{include:"#liquid_haskell"},{include:"#comment_like"},{include:"#numeric_literals"},{include:"#string_literal"},{include:"#char_literal"},{match:/(?<!@|#)-\}/dgv,name:"invalid"},{captures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"punctuation.paren.haskell"}},match:/(\()\p{space}*(\))/dgv,name:"constant.language.unit.haskell"},{captures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"keyword.operator.hash.haskell"},"3":{name:"keyword.operator.hash.haskell"},"4":{name:"punctuation.paren.haskell"}},match:/(\()(#)\p{space}*(#)(\))/dgv,name:"constant.language.unit.unboxed.haskell"},{captures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"punctuation.paren.haskell"}},match:/(\()\p{space}*,[\p{space}\,]*(\))/dgv,name:"support.constant.tuple.haskell"},{captures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"keyword.operator.hash.haskell"},"3":{name:"keyword.operator.hash.haskell"},"4":{name:"punctuation.paren.haskell"}},match:/(\()(#)\p{space}*,[\p{space}\,]*(#)(\))/dgv,name:"support.constant.tuple.unboxed.haskell"},{captures:{"1":{name:"punctuation.bracket.haskell"},"2":{name:"punctuation.bracket.haskell"}},match:/(\[)\p{space}*(\])/dgv,name:"constant.language.empty-list.haskell"},{begin:/(\b(?<!')(module)|^(signature))(\b(?!'))/dgv,beginCaptures:{"2":{name:"keyword.other.module.haskell"},"3":{name:"keyword.other.signature.haskell"}},end:/(?=\b(?<!')where\b(?!'))/dgv,name:"meta.declaration.module.haskell",patterns:[{include:"#comment_like"},{include:"#module_name"},{include:"#module_exports"},{match:/[a-z]+/dgv,name:"invalid"}]},{include:"#ffi"},{begin:/^(\p{space}*)(class)(\b(?!'))/dgv,beginCaptures:{"2":{name:"keyword.other.class.haskell"}},end:/(?=(?<!')\bwhere\b(?!'))|(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.declaration.class.haskell",patterns:[{include:"#comment_like"},{include:"#where"},{include:"#type_signature"}]},{begin:/^(\p{space}*)(data|newtype)(?:\p{space}+(instance))?\p{space}+((?:(?!(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(?:=|--+)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])|\b(?<!')(?:where|deriving)\b(?!')|\{-)[^\n])*)(?=\b(?<!'')where\b(?!''))/dgv,beginCaptures:{"2":{name:"keyword.other.$2.haskell"},"3":{name:"keyword.other.instance.haskell"},"4":{patterns:[{include:"#type_signature"}]}},end:/(?=(?<!')\bderiving\b(?!'))|(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.declaration.$2.generalized.haskell",patterns:[{include:"#comment_like"},{begin:/(?<!')\b(where)\p{space}*(\{)(?!-)/dgv,beginCaptures:{"1":{name:"keyword.other.where.haskell"},"2":{name:"punctuation.brace.haskell"}},end:/(\})/dgv,endCaptures:{"1":{name:"punctuation.brace.haskell"}},patterns:[{include:"#comment_like"},{include:"#gadt_constructor"},{match:/;/dgv,name:"punctuation.semicolon.haskell"}]},{match:/\b(?<!')(where)\b(?!')/dgv,name:"keyword.other.where.haskell"},{include:"#deriving"},{include:"#gadt_constructor"}]},{include:"#role_annotation"},{begin:/^(\p{space}*)(pattern)\p{space}+([^\n]*?)\p{space}+(::|∷)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])/dgv,beginCaptures:{"2":{name:"keyword.other.pattern.haskell"},"3":{patterns:[{include:"#comma"},{include:"#data_constructor"}]},"4":{name:"keyword.operator.double-colon.haskell"}},end:/(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.declaration.pattern.type.haskell",patterns:[{include:"#type_signature"}]},{begin:/^\p{space}*(pattern)\b(?!')/dgv,captures:{"1":{name:"keyword.other.pattern.haskell"}},end:/(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.declaration.pattern.haskell",patterns:[{include:"$self"}]},{begin:/^(\p{space}*)(data|newtype)(?:\p{space}+(family|instance))?\p{space}+(((?!(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(?:=|--+)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])|\b(?<!')(?:where|deriving)\b(?!')|\{-)[^\n])*)/dgv,beginCaptures:{"2":{name:"keyword.other.$2.haskell"},"3":{name:"keyword.other.$3.haskell"},"4":{patterns:[{include:"#type_signature"}]}},end:/(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.declaration.$2.algebraic.haskell",patterns:[{include:"#comment_like"},{include:"#deriving"},{include:"#forall"},{include:"#adt_constructor"},{include:"#context"},{include:"#record_decl"},{include:"#type_signature"}]},{begin:/^(\p{space}*)(type)\p{space}+(family)\b(?!')(((?!(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(?:=|--+)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])|\b(?<!')where\b(?!')|\{-)[^\n])*)/dgv,beginCaptures:{"2":{name:"keyword.other.type.haskell"},"3":{name:"keyword.other.family.haskell"},"4":{patterns:[{include:"#comment_like"},{include:"#where"},{include:"#type_signature"}]}},end:/(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.declaration.type.family.haskell",patterns:[{include:"#comment_like"},{include:"#where"},{include:"#type_signature"}]},{begin:/^(\p{space}*)(type)(?:\p{space}+(instance))?\p{space}+(((?!(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(?:=|--+|::|∷)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])|\{-)[^\n])*)/dgv,beginCaptures:{"2":{name:"keyword.other.type.haskell"},"3":{name:"keyword.other.instance.haskell"},"4":{patterns:[{include:"#type_signature"}]}},end:/(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.declaration.type.haskell",patterns:[{include:"#type_signature"}]},{begin:/^(\p{space}*)(instance)(\b(?!'))/dgv,beginCaptures:{"2":{name:"keyword.other.instance.haskell"}},end:/(?=\b(?<!')(where)\b(?!'))|(?=\}|;)|^(?!(?!)\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))/dgv,name:"meta.declaration.instance.haskell",patterns:[{include:"#comment_like"},{include:"#where"},{include:"#type_signature"}]},{begin:/^(\p{space}*)(import)(\b(?!'))/dgv,beginCaptures:{"2":{name:"keyword.other.import.haskell"}},end:/(?=\b(?<!')(where)\b(?!'))|(?=\}|;)|^(?!(?!)\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))/dgv,name:"meta.import.haskell",patterns:[{include:"#comment_like"},{include:"#where"},{captures:{"1":{name:"keyword.other.$1.haskell"}},match:/(qualified|as|hiding)/dgv},{include:"#module_name"},{include:"#module_exports"}]},{include:"#deriving"},{include:"#layout_herald"},{include:"#keyword"},{captures:{"1":{name:"keyword.other.$1.haskell"},"2":{patterns:[{include:"#comment_like"},{include:"#integer_literals"},{include:"#infix_op"}]}},match:/^\p{space}*(infix[lr]?)\p{space}+([^\n]*)/dgv,name:"meta.fixity-declaration.haskell"},{include:"#overloaded_label"},{include:"#type_application"},{include:"#reserved_symbol"},{include:"#fun_decl"},{include:"#qualifier"},{include:"#data_constructor"},{include:"#start_type_signature"},{include:"#prefix_op"},{include:"#infix_op"},{begin:/(\()(#)\p{space}/dgv,beginCaptures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"keyword.operator.hash.haskell"}},end:/(#)(\))/dgv,endCaptures:{"1":{name:"keyword.operator.hash.haskell"},"2":{name:"punctuation.paren.haskell"}},patterns:[{include:"#comma"},{include:"$self"}]},{begin:/(\()/dgv,beginCaptures:{"1":{name:"punctuation.paren.haskell"}},end:/(\))/dgv,endCaptures:{"1":{name:"punctuation.paren.haskell"}},patterns:[{include:"#comma"},{include:"$self"}]},{include:"#quasi_quote"},{begin:/(\[)/dgv,beginCaptures:{"1":{name:"punctuation.bracket.haskell"}},end:/(\])/dgv,endCaptures:{"1":{name:"punctuation.bracket.haskell"}},patterns:[{include:"#comma"},{include:"$self"}]},{include:"#record"}],repository:{adt_constructor:{patterns:[{include:"#comment_like"},{begin:/(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(?:(=)|(\|))(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])/dgv,beginCaptures:{"1":{name:"keyword.operator.eq.haskell"},"2":{name:"keyword.operator.pipe.haskell"}},end:/*@__PURE__*/ new EmulatedRegExp("(?:^|^)\\p{space}*(?:(?<!')\\b((?:[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'\\.])+)|('?(?<paren>\\((?:[^\\(\\)]*|(?:\\((?:[^\\(\\)]*|(?:\\((?:[^\\(\\)]*|(?:\\((?:[^\\(\\)]*|(?:\\((?:[^\\(\\)]*|(?:))*\\)))*\\)))*\\)))*\\)))*\\)))|('?(?<brac>\\((?:[^\\[\\]]*|(?:\\((?:[^\\[\\]]*|(?:\\((?:[^\\[\\]]*|(?:\\((?:[^\\[\\]]*|(?:\\((?:[^\\[\\]]*|(?:))*\\]))*\\]))*\\]))*\\]))*\\])))\\p{space}*(?:(?<![[\\p{S}\\p{P}]&&[^\\(\\)\\,\\;\\[\\]\\`\\{\\}_\"']])(:[[\\p{S}\\p{P}]&&[^\\(\\)\\,\\;\\[\\]\\`\\{\\}_\"']]*)|(`)([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(`))|(?<!')\\b([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)|(\\()\\p{space}*(:[[\\p{S}\\p{P}]&&[^\\(\\)\\,\\;\\[\\]\\`\\{\\}_\"']]*)\\p{space}*(\\))","dgv",{"strategy":"clip_search"}),endCaptures:{"1":{patterns:[{include:"#type_signature"}]},"2":{patterns:[{include:"#type_signature"}]},"4":{patterns:[{include:"#type_signature"}]},"6":{name:"constant.other.operator.haskell"},"7":{name:"punctuation.backtick.haskell"},"8":{name:"constant.other.haskell"},"9":{name:"punctuation.backtick.haskell"},"10":{name:"constant.other.haskell"},"11":{name:"punctuation.paren.haskell"},"12":{name:"constant.other.operator.haskell"},"13":{name:"punctuation.paren.haskell"}},patterns:[{include:"#comment_like"},{include:"#deriving"},{include:"#record_decl"},{include:"#forall"},{include:"#context"}]}]},block_comment:{applyEndPatternLast:1,begin:/\{-/dgv,captures:{"0":{name:"punctuation.definition.comment.haskell"}},end:/-\}/dgv,name:"comment.block.haskell",patterns:[{include:"#block_comment"}]},char_literal:{captures:{"1":{name:"punctuation.definition.string.begin.haskell"},"2":{name:"constant.character.escape.haskell"},"3":{name:"constant.character.escape.octal.haskell"},"4":{name:"constant.character.escape.hexadecimal.haskell"},"5":{name:"constant.character.escape.control.haskell"},"6":{name:"punctuation.definition.string.end.haskell"}},match:/(?<![\p{Ll}_\p{Lu}\p{Lt}\p{Nd}'])(')(?:[ -\[\]-\~]|(\\(?: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\@\[\]\\\^_]))(')/dgv,name:"string.quoted.single.haskell"},comma:{match:/,/dgv,name:"punctuation.separator.comma.haskell"},comment_like:{patterns:[{include:"#cpp"},{include:"#pragma"},{include:"#comments"}]},comments:{patterns:[{begin:/^(\p{space}*)(--\p{space}[\|\$])/dgv,beginCaptures:{"2":{name:"punctuation.whitespace.comment.leading.haskell"}},end:/(?=^(?!\1--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])))()/dgv,name:"comment.block.documentation.haskell"},{begin:/(^[ \t]+)?(--\p{space}[\^\*])/dgv,beginCaptures:{"1":{name:"punctuation.whitespace.comment.leading.haskell"}},end:/\n/dgv,name:"comment.line.documentation.haskell"},{applyEndPatternLast:1,begin:/\{-\p{space}?[\|\$\*\^]/dgv,captures:{"0":{name:"punctuation.definition.comment.haskell"}},end:/-\}/dgv,name:"comment.block.documentation.haskell",patterns:[{include:"#block_comment"}]},{begin:/(^[ \t]+)?(?=--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]))/dgv,beginCaptures:{"1":{name:"punctuation.whitespace.comment.leading.haskell"}},end:/*@__PURE__*/ new EmulatedRegExp("(?!^)","dgv",{"strategy":"clip_search"}),patterns:[{begin:/--/dgv,beginCaptures:{"0":{name:"punctuation.definition.comment.haskell"}},end:/\n/dgv,name:"comment.line.double-dash.haskell"}]},{include:"#block_comment"}]},context:{captures:{"1":{patterns:[{include:"#comment_like"},{include:"#type_signature"}]},"2":{name:"keyword.operator.big-arrow.haskell"}},match:/([^\n]*)(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(=>|⇒)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])/dgv},cpp:{captures:{"1":{name:"punctuation.definition.preprocessor.c"}},match:/^(#)[^\n]*(?=\n?$)/dgv,name:"meta.preprocessor.c"},data_constructor:{match:/\b(?<!')[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*(?![\.'\p{L}\p{M}\p{N}\p{Pc}])/dgv,name:"constant.other.haskell"},deriving:{patterns:[{begin:/^(\p{space}*)(deriving)\p{space}+(?:(via|stock|newtype|anyclass)\p{space}+)?/dgv,beginCaptures:{"2":{name:"keyword.other.deriving.haskell"},"3":{name:"keyword.other.deriving.strategy.$3.haskell"}},end:/(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.deriving.haskell",patterns:[{include:"#comment_like"},{match:/(?<!')\b(instance)\b(?!')/dgv,name:"keyword.other.instance.haskell"},{captures:{"1":{name:"keyword.other.deriving.strategy.$1.haskell"}},match:/(?<!')\b(via|stock|newtype|anyclass)\b(?!')/dgv},{include:"#type_signature"}]},{begin:/(deriving)(?:\p{space}+(stock|newtype|anyclass))?\p{space}*(\()/dgv,beginCaptures:{"1":{name:"keyword.other.deriving.haskell"},"2":{name:"keyword.other.deriving.strategy.$2.haskell"},"3":{name:"punctuation.paren.haskell"}},end:/(\))/dgv,endCaptures:{"1":{name:"punctuation.paren.haskell"}},name:"meta.deriving.haskell",patterns:[{include:"#type_signature"}]},{captures:{"1":{name:"keyword.other.deriving.haskell"},"2":{name:"keyword.other.deriving.strategy.$2.haskell"},"3":{patterns:[{include:"#type_signature"}]},"5":{name:"keyword.other.deriving.strategy.via.haskell"},"6":{patterns:[{include:"#type_signature"}]}},match:/(deriving)(?:\p{space}+(stock|newtype|anyclass))?\p{space}+([\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)(\p{space}+(via)\p{space}+([^\n]*)(?=\n?$))?/dgv,name:"meta.deriving.haskell"},{match:/(?<!')\b(via)\b(?!')/dgv,name:"keyword.other.deriving.strategy.via.haskell"}]},double_colon:{captures:{"1":{name:"keyword.operator.double-colon.haskell"}},match:/\p{space}*(::|∷)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])\p{space}*/dgv},export_constructs:{patterns:[{include:"#comment_like"},{begin:/\b(?<!')(pattern)\b(?!')/dgv,beginCaptures:{"1":{name:"keyword.other.pattern.haskell"}},end:/([\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)|(\()\p{space}*(:[[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+)\p{space}*(\))/dgv,endCaptures:{"1":{name:"constant.other.haskell"},"2":{name:"punctuation.paren.haskell"},"3":{name:"constant.other.operator.haskell"},"4":{name:"punctuation.paren.haskell"}},patterns:[{include:"#comment_like"}]},{begin:/\b(?<!')(type)\b(?!')/dgv,beginCaptures:{"1":{name:"keyword.other.type.haskell"}},end:/([\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)|(\()\p{space}*([[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+)\p{space}*(\))/dgv,endCaptures:{"1":{name:"storage.type.haskell"},"2":{name:"punctuation.paren.haskell"},"3":{name:"storage.type.operator.haskell"},"4":{name:"punctuation.paren.haskell"}},patterns:[{include:"#comment_like"}]},{match:/(?<!')\b[\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*/dgv,name:"entity.name.function.haskell"},{match:/(?<!')\b[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*/dgv,name:"storage.type.haskell"},{include:"#record_wildcard"},{include:"#reserved_symbol"},{include:"#prefix_op"}]},ffi:{begin:/^(\p{space}*)(foreign)\p{space}+(import|export)\p{space}+/dgv,beginCaptures:{"2":{name:"keyword.other.foreign.haskell"},"3":{name:"keyword.other.$3.haskell"}},end:/(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.$3.foreign.haskell",patterns:[{include:"#comment_like"},{captures:{"1":{name:"keyword.other.calling-convention.$1.haskell"}},match:/\b(?<!')(ccall|cplusplus|dotnet|jvm|stdcall|prim|capi)\p{space}+/dgv},{begin:/(?=")|(?=\b(?<!')([\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)\b(?!'))/dgv,end:/(?=(::|∷)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]))/dgv,patterns:[{include:"#comment_like"},{captures:{"1":{name:"keyword.other.safety.$1.haskell"},"2":{name:"entity.name.foreign.haskell",patterns:[{include:"#string_literal"}]},"3":{name:"entity.name.function.haskell"},"4":{name:"entity.name.function.infix.haskell"}},match:/\b(?<!')(safe|unsafe|interruptible)\b(?!')\p{space}*("(?:\\"|[^"])*")?\p{space}*(?:\b(?<!'')([\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)\b(?!')|\(\p{space}*(?!--+\))([[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+)\p{space}*\))/dgv},{captures:{"1":{name:"keyword.other.safety.$1.haskell"},"2":{name:"entity.name.foreign.haskell",patterns:[{include:"#string_literal"}]}},match:/\b(?<!')(safe|unsafe|interruptible)\b(?!')\p{space}*("(?:\\"|[^"])*")?\p{space}*(?=\n?$)/dgv},{captures:{"0":{name:"entity.name.foreign.haskell",patterns:[{include:"#string_literal"}]}},match:/"(?:\\"|[^"])*"/dgv},{captures:{"1":{name:"entity.name.function.haskell"},"2":{name:"punctuation.paren.haskell"},"3":{name:"entity.name.function.infix.haskell"},"4":{name:"punctuation.paren.haskell"}},match:/\b(?<!'')([\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)\b(?!')|(\()\p{space}*(?!--+\))([[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+)\p{space}*(\))/dgv}]},{include:"#double_colon"},{include:"#type_signature"}]},float_literals:{captures:{"1":{name:"constant.numeric.floating.decimal.haskell"},"2":{name:"constant.numeric.floating.hexadecimal.haskell"}},match:/\b(?<!')(?:([0-9][_0-9]*\.[0-9][_0-9]*(?:[eE][\-\+]?[0-9][_0-9]*)?|[0-9][_0-9]*[eE][\-\+]?[0-9][_0-9]*)|(0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*\.[0-9a-fA-F][_0-9a-fA-F]*(?:[pP][\-\+]?[0-9][_0-9]*)?|0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*[pP][\-\+]?[0-9][_0-9]*))\b(?!')/dgv},forall:{begin:/\b(?<!')(forall|∀)\b(?!')/dgv,beginCaptures:{"1":{name:"keyword.other.forall.haskell"}},end:/(\.)|(->|→)/dgv,endCaptures:{"1":{name:"keyword.operator.period.haskell"},"2":{name:"keyword.operator.arrow.haskell"}},patterns:[{include:"#comment_like"},{include:"#type_variable"},{include:"#type_signature"}]},fun_decl:{begin:/^(\p{space}*)(?<fn>(?:[\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*#*|\(\p{space}*(?!--+\))[[\p{S}\p{P}]&&[^\(\)\,\:\;\[\]\`\{\}_"']][[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]*\p{space}*\))(?:\p{space}*,\p{space}*(?:(?:[\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*#*|\(\p{space}*(?!--+\))[[\p{S}\p{P}]&&[^\(\)\,\:\;\[\]\`\{\}_"']][[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]*\p{space}*\))(?:\p{space}*,\p{space}*(?:(?:[\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*#*|\(\p{space}*(?!--+\))[[\p{S}\p{P}]&&[^\(\)\,\:\;\[\]\`\{\}_"']][[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]*\p{space}*\))(?:\p{space}*,\p{space}*(?:(?:[\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*#*|\(\p{space}*(?!--+\))[[\p{S}\p{P}]&&[^\(\)\,\:\;\[\]\`\{\}_"']][[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]*\p{space}*\))(?:\p{space}*,\p{space}*(?:(?:[\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*#*|\(\p{space}*(?!--+\))[[\p{S}\p{P}]&&[^\(\)\,\:\;\[\]\`\{\}_"']][[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]*\p{space}*\))(?:\p{space}*,\p{space}*(?:))?))?))?))?))?)\p{space}*(?<![[\p{S}\p{P}]&&[^\)\,\;\]\`\}_"']])(::|∷)(?![[\p{S}\p{P}]&&[^\(\,\;\[\`\{_"']])/dgv,beginCaptures:{"2":{name:"entity.name.function.haskell",patterns:[{include:"#reserved_symbol"},{include:"#prefix_op"}]},"3":{name:"keyword.operator.double-colon.haskell"}},end:/(?=(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])((<-|←)|(=)|(-<|↢)|(-<<|⤛))([\(\)\,\;\[\]\`\{\}_"']|[^\p{S}\p{P}]))|(?=\}|;)|^(?!(?!)\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))/dgv,name:"meta.function.type-declaration.haskell",patterns:[{include:"#type_signature"}]},gadt_constructor:{patterns:[{begin:/^(\p{space}*)(?:(\b(?<!')[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)|(\()\p{space}*(:[[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]*)\p{space}*(\)))/dgv,beginCaptures:{"2":{name:"constant.other.haskell"},"3":{name:"punctuation.paren.haskell"},"4":{name:"constant.other.operator.haskell"},"5":{name:"punctuation.paren.haskell"}},end:/(?=\b(?<!'')deriving\b(?!'))|(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,patterns:[{include:"#comment_like"},{include:"#deriving"},{include:"#double_colon"},{include:"#record_decl"},{include:"#type_signature"}]},{begin:/(\b(?<!')[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}]*)|(\()\p{space}*(:[[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]*)\p{space}*(\))/dgv,beginCaptures:{"1":{name:"constant.other.haskell"},"2":{name:"punctuation.paren.haskell"},"3":{name:"constant.other.operator.haskell"},"4":{name:"punctuation.paren.haskell"}},end:/(?=\n?$)/dgv,patterns:[{include:"#comment_like"},{include:"#deriving"},{include:"#double_colon"},{include:"#record_decl"},{include:"#type_signature"}]}]},infix_op:{patterns:[{captures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"entity.name.namespace.haskell"},"3":{name:"keyword.operator.infix.haskell"}},match:/((?:(?<!'')('')?[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}'']*\.)*)(#+|[[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+(?<!#))/dgv},{captures:{"1":{name:"punctuation.backtick.haskell"},"2":{name:"entity.name.namespace.haskell"},"3":{patterns:[{include:"#data_constructor"}]},"4":{name:"punctuation.backtick.haskell"}},match:/(`)((?:[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}'']*\.)*)([\p{Ll}\p{Lu}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}'']*)(`)/dgv,name:"keyword.operator.function.infix.haskell"}]},inline_phase:{begin:/\[/dgv,beginCaptures:{"0":{name:"punctuation.bracket.haskell"}},end:/\]/dgv,endCaptures:{"0":{name:"punctuation.bracket.haskell"}},name:"meta.inlining-phase.haskell",patterns:[{match:/~/dgv,name:"punctuation.tilde.haskell"},{include:"#integer_literals"},{match:/[\p{L}\p{M}\p{N}\p{Pc}]*/dgv,name:"invalid"}]},integer_literals:{captures:{"1":{name:"constant.numeric.integral.decimal.haskell"},"2":{name:"constant.numeric.integral.hexadecimal.haskell"},"3":{name:"constant.numeric.integral.octal.haskell"},"4":{name:"constant.numeric.integral.binary.haskell"}},match:/\b(?<!')(?:([0-9][_0-9]*)|(0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*)|(0[oO]_*[0-7][_0-7]*)|(0[bB]_*[01][_01]*))\b(?!')/dgv},keyword:{captures:{"1":{name:"keyword.other.$1.haskell"},"2":{name:"keyword.control.$2.haskell"}},match:/\b(?<!')(?:(where|let|in|default)|(m?do|if|then|else|case|of|proc|rec))\b(?!')/dgv},layout_herald:{begin:/(?<!')\b(?:(where|let|m?do)|(of))\p{space}*(\{)(?!-)/dgv,beginCaptures:{"1":{name:"keyword.other.$1.haskell"},"2":{name:"keyword.control.of.haskell"},"3":{name:"punctuation.brace.haskell"}},end:/(\})/dgv,endCaptures:{"1":{name:"punctuation.brace.haskell"}},patterns:[{include:"$self"},{match:/;/dgv,name:"punctuation.semicolon.haskell"}]},liquid_haskell:{begin:/\{-@/dgv,end:/@-\}/dgv,name:"block.liquidhaskell.haskell",patterns:[{include:"$self"}]},module_exports:{applyEndPatternLast:1,begin:/\(/dgv,beginCaptures:{"0":{name:"punctuation.paren.haskell"}},end:/\)/dgv,endCaptures:{"0":{name:"punctuation.paren.haskell"}},name:"meta.declaration.exports.haskell",patterns:[{include:"#comment_like"},{captures:{"1":{name:"keyword.other.module.haskell"}},match:/\b(?<!')(module)\b(?!')/dgv},{include:"#comma"},{include:"#export_constructs"},{begin:/\(/dgv,beginCaptures:{"0":{name:"punctuation.paren.haskell"}},end:/\)/dgv,endCaptures:{"0":{name:"punctuation.paren.haskell"}},patterns:[{include:"#comment_like"},{include:"#record_wildcard"},{include:"#export_constructs"},{include:"#comma"}]}]},module_name:{match:/*@__PURE__*/ new EmulatedRegExp("(?<conid>[\\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{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(\\.(?:))?))?))?))?))?)","dgv",{"hiddenCaptures":[3,4,5,6]}),name:"entity.name.namespace.haskell"},numeric_literals:{patterns:[{include:"#float_literals"},{include:"#integer_literals"}]},overloaded_label:{patterns:[{captures:{"1":{name:"keyword.operator.prefix.hash.haskell"},"2":{patterns:[{include:"#string_literal"}]}},match:/(?<![[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}\p{S}\p{P}]&&[^\(\,\;\[\`\{]])(#)(?:("(?:\\"|[^"])*")|[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}'\.]+)/dgv,name:"entity.name.label.haskell"}]},pragma:{begin:/\{-#/dgv,end:/#-\}/dgv,name:"meta.preprocessor.haskell",patterns:[{begin:/\b(?<!')(LANGUAGE)\b(?!')/dgiv,beginCaptures:{"1":{name:"keyword.other.preprocessor.pragma.haskell"}},end:/(?=#-\})/dgv,patterns:[{match:/(?:No)?(?:AutoDeriveTypeable|DatatypeContexts|DoRec|IncoherentInstances|MonadFailDesugaring|MonoPatBinds|NullaryTypeClasses|OverlappingInstances|PatternSignatures|RecordPuns|RelaxedPolyRec)/dgv,name:"invalid.deprecated"},{captures:{"1":{name:"keyword.other.preprocessor.extension.haskell"}},match:/((?:No)?(?:AllowAmbiguousTypes|AlternativeLayoutRule|AlternativeLayoutRuleTransitional|Arrows|BangPatterns|BinaryLiterals|CApiFFI|CPP|CUSKs|ConstrainedClassMethods|ConstraintKinds|DataKinds|DefaultSignatures|DeriveAnyClass|DeriveDataTypeable|DeriveFoldable|DeriveFunctor|DeriveGeneric|DeriveLift|DeriveTraversable|DerivingStrategies|DerivingVia|DisambiguateRecordFields|DoAndIfThenElse|BlockArguments|DuplicateRecordFields|EmptyCase|EmptyDataDecls|EmptyDataDeriving|ExistentialQuantification|ExplicitForAll|ExplicitNamespaces|ExtendedDefaultRules|FlexibleContexts|FlexibleInstances|ForeignFunctionInterface|FunctionalDependencies|GADTSyntax|GADTs|GHCForeignImportPrim|Generali(?:s|z)edNewtypeDeriving|ImplicitParams|ImplicitPrelude|ImportQualifiedPost|ImpredicativeTypes|TypeFamilyDependencies|InstanceSigs|ApplicativeDo|InterruptibleFFI|JavaScriptFFI|KindSignatures|LambdaCase|LiberalTypeSynonyms|MagicHash|MonadComprehensions|MonoLocalBinds|MonomorphismRestriction|MultiParamTypeClasses|MultiWayIf|NumericUnderscores|NPlusKPatterns|NamedFieldPuns|NamedWildCards|NegativeLiterals|HexFloatLiterals|NondecreasingIndentation|NumDecimals|OverloadedLabels|OverloadedLists|OverloadedStrings|PackageImports|ParallelArrays|ParallelListComp|PartialTypeSignatures|PatternGuards|PatternSynonyms|PolyKinds|PolymorphicComponents|QuantifiedConstraints|PostfixOperators|QuasiQuotes|Rank2Types|RankNTypes|RebindableSyntax|RecordWildCards|RecursiveDo|RelaxedLayout|RoleAnnotations|ScopedTypeVariables|StandaloneDeriving|StarIsType|StaticPointers|Strict|StrictData|TemplateHaskell|TemplateHaskellQuotes|StandaloneKindSignatures|TraditionalRecordSyntax|TransformListComp|TupleSections|TypeApplications|TypeInType|TypeFamilies|TypeOperators|TypeSynonymInstances|UnboxedTuples|UnboxedSums|UndecidableInstances|UndecidableSuperClasses|UnicodeSyntax|UnliftedFFITypes|UnliftedNewtypes|ViewPatterns))/dgv},{include:"#comma"}]},{begin:/\b(?<!')(SPECIALI(?:S|Z)E)(?:\p{space}*(\[[^\[\]]*\])?\p{space}*|\p{space}+)(instance)\b(?!')/dgiv,beginCaptures:{"1":{name:"keyword.other.preprocessor.pragma.haskell"},"2":{patterns:[{include:"#inline_phase"}]},"3":{name:"keyword.other.instance.haskell"}},end:/(?=#-\})/dgv,patterns:[{include:"#type_signature"}]},{begin:/\b(?<!')(SPECIALI(?:S|Z)E)\b(?!')(?:\p{space}+(INLINE)\b(?!'))?\p{space}*(\[[^\[\]]*\])?\p{space}*/dgiv,beginCaptures:{"1":{name:"keyword.other.preprocessor.pragma.haskell"},"2":{name:"keyword.other.preprocessor.pragma.haskell"},"3":{patterns:[{include:"#inline_phase"}]}},end:/(?=#-\})/dgv,patterns:[{include:"$self"}]},{match:/\b(?<!')(LANGUAGE|OPTIONS_GHC|INCLUDE|MINIMAL|UNPACK|OVERLAPS|INCOHERENT|NOUNPACK|SOURCE|OVERLAPPING|OVERLAPPABLE|INLINE|NOINLINE|INLINE?ABLE|CONLIKE|LINE|COLUMN|RULES|COMPLETE)\b(?!')/dgiv,name:"keyword.other.preprocessor.haskell"},{begin:/\b(DEPRECATED|WARNING)\b/dgiv,beginCaptures:{"1":{name:"keyword.other.preprocessor.pragma.haskell"}},end:/(?=#-\})/dgv,patterns:[{include:"#string_literal"}]}]},prefix_op:{patterns:[{captures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"entity.name.function.infix.haskell"},"3":{name:"punctuation.paren.haskell"}},match:/(\()\p{space}*(?!(?:--+|\.\.)\))(#+|[[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+(?<!#))\p{space}*(\))/dgv}]},qualifier:{match:/\b(?<!')[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*\./dgv,name:"entity.name.namespace.haskell"},quasi_quote:{patterns:[{begin:/(\[)(e|d|p)?(\|\|?)/dgv,beginCaptures:{"1":{name:"keyword.operator.quasi-quotation.begin.haskell"},"2":{name:"entity.name.quasi-quoter.haskell"},"3":{name:"keyword.operator.quasi-quotation.begin.haskell"}},end:/\3\]()()()/dgv,endCaptures:{"0":{name:"keyword.operator.quasi-quotation.end.haskell"}},name:"meta.quasi-quotation.haskell",patterns:[{include:"$self"}]},{begin:/(\[)(t)(\|\|?)/dgv,beginCaptures:{"1":{name:"keyword.operator.quasi-quotation.begin.haskell"},"2":{name:"entity.name.quasi-quoter.haskell"},"3":{name:"keyword.operator.quasi-quotation.begin.haskell"}},end:/\3\]()()()/dgv,endCaptures:{"0":{name:"keyword.operator.quasi-quotation.end.haskell"}},name:"meta.quasi-quotation.haskell",patterns:[{include:"#type_signature"}]},{begin:/(\[)(?:(\$\$)|(\$))?((?:[^\p{space}\p{S}\p{P}]|[\.'_])*)(\|\|?)/dgv,beginCaptures:{"1":{name:"keyword.operator.quasi-quotation.begin.haskell"},"2":{name:"keyword.operator.prefix.double-dollar.haskell"},"3":{name:"keyword.operator.prefix.dollar.haskell"},"4":{name:"entity.name.quasi-quoter.haskell",patterns:[{include:"#qualifier"}]},"5":{name:"keyword.operator.quasi-quotation.begin.haskell"}},end:/\5\]()()()()()/dgv,endCaptures:{"0":{name:"keyword.operator.quasi-quotation.end.haskell"}},name:"meta.quasi-quotation.haskell"}]},record:{begin:/(\{)(?!-)/dgv,beginCaptures:{"1":{name:"punctuation.brace.haskell"}},end:/(?<!-)(\})/dgv,endCaptures:{"1":{name:"punctuation.brace.haskell"}},name:"meta.record.haskell",patterns:[{include:"#comment_like"},{include:"#record_field"}]},record_decl:{begin:/(\{)(?!-)/dgv,beginCaptures:{"1":{name:"punctuation.brace.haskell"}},end:/(?<!-)(\})/dgv,endCaptures:{"1":{name:"punctuation.brace.haskell"}},name:"meta.record.definition.haskell",patterns:[{include:"#comment_like"},{include:"#record_decl_field"}]},record_decl_field:{begin:/(?:([\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)|(\()\p{space}*([[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+)\p{space}*(\)))/dgv,beginCaptures:{"1":{name:"variable.other.member.definition.haskell"},"2":{name:"punctuation.paren.haskell"},"3":{name:"variable.other.member.definition.haskell"},"4":{name:"punctuation.paren.haskell"}},end:/(,)|(?=\})/dgv,endCaptures:{"1":{name:"punctuation.comma.haskell"}},patterns:[{include:"#comment_like"},{include:"#comma"},{include:"#double_colon"},{include:"#type_signature"},{include:"#record_decl_field"}]},record_field:{patterns:[{begin:/(?:([\p{Ll}\p{Lu}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}\.']*)|(\()\p{space}*([[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+)\p{space}*(\)))/dgv,beginCaptures:{"1":{name:"variable.other.member.haskell",patterns:[{include:"#qualifier"}]},"2":{name:"punctuation.paren.haskell"},"3":{name:"variable.other.member.haskell"},"4":{name:"punctuation.paren.haskell"}},end:/(,)|(?=\})/dgv,endCaptures:{"1":{name:"punctuation.comma.haskell"}},patterns:[{include:"#comment_like"},{include:"#comma"},{include:"$self"}]},{include:"#record_wildcard"}]},record_wildcard:{captures:{"1":{name:"variable.other.member.wildcard.haskell"}},match:/(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(\.\.)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])/dgv},reserved_symbol:{patterns:[{captures:{"1":{name:"keyword.operator.double-dot.haskell"},"2":{name:"keyword.operator.colon.haskell"},"3":{name:"keyword.operator.eq.haskell"},"4":{name:"keyword.operator.lambda.haskell"},"5":{name:"keyword.operator.pipe.haskell"},"6":{name:"keyword.operator.arrow.left.haskell"},"7":{name:"keyword.operator.arrow.haskell"},"8":{name:"keyword.operator.arrow.left.tail.haskell"},"9":{name:"keyword.operator.arrow.left.tail.double.haskell"},"10":{name:"keyword.operator.arrow.tail.haskell"},"11":{name:"keyword.operator.arrow.tail.double.haskell"},"12":{name:"keyword.other.forall.haskell"}},match:/(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"'']])(?:(\.\.)|(:)|(=)|(\\)|(\|)|(<-|←)|(->|→)|(-<|↢)|(-<<|⤛)|(>-|⤚)|(>>-|⤜)|(∀))(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"'']])/dgv},{captures:{"1":{name:"keyword.operator.postfix.hash.haskell"}},match:/(?<=[[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}\p{S}\p{P}]&&[^\#\,\;\[\`\{]])(#+)(?![[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}\p{S}\p{P}]&&[^\)\,\;\]\`\}]])/dgv},{captures:{"1":{name:"keyword.operator.infix.tight.at.haskell"}},match:/(?<=[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}\)\}\]])(@)(?=[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}\(\[\{])/dgv},{captures:{"1":{name:"keyword.operator.prefix.tilde.haskell"},"2":{name:"keyword.operator.prefix.bang.haskell"},"3":{name:"keyword.operator.prefix.minus.haskell"},"4":{name:"keyword.operator.prefix.dollar.haskell"},"5":{name:"keyword.operator.prefix.double-dollar.haskell"}},match:/(?<![[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}\p{S}\p{P}]&&[^\(\,\;\[\`\{]])(?:(~)|(!)|(-)|(\$)|(\$\$))(?=[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}\(\{\[])/dgv}]},role_annotation:{patterns:[{begin:/^(\p{space}*)(type)\p{space}+(role)\b(?!')/dgv,beginCaptures:{"2":{name:"keyword.other.type.haskell"},"3":{name:"keyword.other.role.haskell"}},end:/(?=\}|;)|^(?!\1\p{space}+\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$)))()/dgv,name:"meta.role-annotation.haskell",patterns:[{include:"#comment_like"},{include:"#type_constructor"},{captures:{"1":{name:"keyword.other.role.$1.haskell"}},match:/\b(?<!')(nominal|representational|phantom)\b(?!')/dgv}]}]},start_type_signature:{patterns:[{begin:/^(\p{space}*)(::|∷)(?![[\p{S}\p{P}]&&[^\(\,\;\[\`\{_"']])\p{space}*/dgv,beginCaptures:{"2":{name:"keyword.operator.double-colon.haskell"}},end:/(?=#?\)|\]|,|(?<!')\b(in|then|else|of)\b(?!')|(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(?:(\\|λ)|(<-|←)|(=)|(-<|↢)|(-<<|⤛))([\(\)\,\;\[\]\`\{\}_"']|[^\p{S}\p{P}])|(#|@)-\}|(?=\}|;)|^(?!(?!)\p{space}*\P{space}|\p{space}*(?:(?=\n?$)|\{-[^\@]|--+(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\{\}\`_"']])[^\n]*(?=\n?$))))/dgv,name:"meta.type-declaration.haskell",patterns:[{include:"#type_signature"}]},{begin:/(?<![[\p{S}\p{P}]&&[^\(\,\;\[\`\{_"']])(::|∷)(?![[\p{S}\p{P}]&&[^\(\,\;\[\`\{_"']])/dgv,beginCaptures:{"1":{name:"keyword.operator.double-colon.haskell"}},end:/(?=#?\)|\]|,|\b(?<!')(in|then|else|of)\b(?!')|(#|@)-\}|(?<![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])(?:(\\|λ)|(<-|←)|(=)|(-<|↢)|(-<<|⤛))([\(\)\,\;\[\]\`\{\}_"']|[^\p{S}\p{P}])|(?=\}|;)|(?=\n?$))/dgv,patterns:[{include:"#type_signature"}]}]},string_literal:{begin:/"/dgv,beginCaptures:{"0":{name:"punctuation.definition.string.begin.haskell"}},end:/"/dgv,endCaptures:{"0":{name:"punctuation.definition.string.end.haskell"}},name:"string.quoted.double.haskell",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\\"'\&])/dgv,name:"constant.character.escape.haskell"},{match:/\\o[0-7]+|\\x[0-9A-Fa-f]+|\\[0-9]+/dgv,name:"constant.character.escape.octal.haskell"},{match:/\\\^[A-Z\@\[\]\\\^_]/dgv,name:"constant.character.escape.control.haskell"},{begin:/\\\p{space}/dgv,beginCaptures:{"0":{name:"constant.character.escape.begin.haskell"}},end:/\\/dgv,endCaptures:{"0":{name:"constant.character.escape.end.haskell"}},patterns:[{match:/\P{space}+/dgv,name:"invalid.illegal.character-not-allowed-here.haskell"}]}]},type_application:{patterns:[{begin:/(?<=[\p{space}\,\;\[\]\{\}"])(@)(')?(\()/dgv,beginCaptures:{"1":{name:"keyword.operator.prefix.at.haskell"},"2":{name:"keyword.operator.promotion.haskell"},"3":{name:"punctuation.paren.haskell"}},end:/\)/dgv,endCaptures:{"0":{name:"punctuation.paren.haskell"}},name:"meta.type-application.haskell",patterns:[{include:"#type_signature"}]},{begin:/(?<=[\p{space}\,\;\[\]\{\}"])(@)(')?(\[)/dgv,beginCaptures:{"1":{name:"keyword.operator.prefix.at.haskell"},"2":{name:"keyword.operator.promotion.haskell"},"3":{name:"punctuation.bracket.haskell"}},end:/\]/dgv,endCaptures:{"0":{name:"punctuation.bracket.haskell"}},name:"meta.type-application.haskell",patterns:[{include:"#type_signature"}]},{begin:/(?<=[\p{space}\,\;\[\]\{\}"])(@)(?=")/dgv,beginCaptures:{"1":{name:"keyword.operator.prefix.at.haskell"}},end:/(?<=")/dgv,name:"meta.type-application.haskell",patterns:[{include:"#string_literal"}]},{begin:/(?<=[\p{space}\,\;\[\]\{\}"])(@)(?=[\p{Ll}_\p{Lu}\p{Lt}\p{Nd}'])/dgv,beginCaptures:{"1":{name:"keyword.operator.prefix.at.haskell"}},end:/(?![\p{Ll}_\p{Lu}\p{Lt}\p{Nd}'])/dgv,name:"meta.type-application.haskell",patterns:[{include:"#type_signature"}]}]},type_constructor:{patterns:[{captures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"entity.name.namespace.haskell"},"3":{name:"storage.type.haskell"}},match:/(')?((?:\b[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*\.)*)(\b[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*)/dgv},{captures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"punctuation.paren.haskell"},"3":{name:"entity.name.namespace.haskell"},"4":{name:"storage.type.operator.haskell"},"5":{name:"punctuation.paren.haskell"}},match:/(')?(\()\p{space}*((?:[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*\.)*)([[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+)\p{space}*(\))/dgv}]},type_operator:{patterns:[{captures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"entity.name.namespace.haskell"},"3":{name:"storage.type.operator.infix.haskell"}},match:/(?:(?<!')('))?((?:\b[\p{Lu}\p{Lt}][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*\.)*)(?![\#\@]?-\})(#+|[[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']]+(?<!#))/dgv},{captures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"punctuation.backtick.haskell"},"3":{name:"entity.name.namespace.haskell"},"4":{name:"storage.type.infix.haskell"},"5":{name:"punctuation.backtick.haskell"}},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}']*)(`)/dgv}]},type_signature:{patterns:[{include:"#comment_like"},{captures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"punctuation.paren.haskell"},"3":{name:"punctuation.paren.haskell"}},match:/(')?(\()\p{space}*(\))/dgv,name:"support.constant.unit.haskell"},{captures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"keyword.operator.hash.haskell"},"3":{name:"keyword.operator.hash.haskell"},"4":{name:"punctuation.paren.haskell"}},match:/(\()(#)\p{space}*(#)(\))/dgv,name:"support.constant.unit.unboxed.haskell"},{captures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"punctuation.paren.haskell"},"3":{name:"punctuation.paren.haskell"}},match:/(')?(\()\p{space}*,[\p{space}\,]*(\))/dgv,name:"support.constant.tuple.haskell"},{captures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"keyword.operator.hash.haskell"},"3":{name:"keyword.operator.hash.haskell"},"4":{name:"punctuation.paren.haskell"}},match:/(\()(#)\p{space}*(#)(\))/dgv,name:"support.constant.unit.unboxed.haskell"},{captures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"keyword.operator.hash.haskell"},"3":{name:"keyword.operator.hash.haskell"},"4":{name:"punctuation.paren.haskell"}},match:/(\()(#)\p{space}*,[\p{space}\,]*(#)(\))/dgv,name:"support.constant.tuple.unboxed.haskell"},{captures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"punctuation.bracket.haskell"},"3":{name:"punctuation.bracket.haskell"}},match:/(')?(\[)\p{space}*(\])/dgv,name:"support.constant.empty-list.haskell"},{include:"#integer_literals"},{match:/(::|∷)(?![[\p{S}\p{P}]&&[^\(\)\,\;\[\]\`\{\}_"']])/dgv,name:"keyword.operator.double-colon.haskell"},{include:"#forall"},{match:/=>|⇒/dgv,name:"keyword.operator.big-arrow.haskell"},{include:"#string_literal"},{match:/'[^']'/dgv,name:"invalid"},{include:"#type_application"},{include:"#reserved_symbol"},{include:"#type_operator"},{include:"#type_constructor"},{begin:/(\()(#)/dgv,beginCaptures:{"1":{name:"punctuation.paren.haskell"},"2":{name:"keyword.operator.hash.haskell"}},end:/(#)(\))/dgv,endCaptures:{"1":{name:"keyword.operator.hash.haskell"},"2":{name:"punctuation.paren.haskell"}},patterns:[{include:"#comma"},{include:"#type_signature"}]},{begin:/(')?(\()/dgv,beginCaptures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"punctuation.paren.haskell"}},end:/(\))/dgv,endCaptures:{"1":{name:"punctuation.paren.haskell"}},patterns:[{include:"#comma"},{include:"#type_signature"}]},{begin:/(')?(\[)/dgv,beginCaptures:{"1":{name:"keyword.operator.promotion.haskell"},"2":{name:"punctuation.bracket.haskell"}},end:/(\])/dgv,endCaptures:{"1":{name:"punctuation.bracket.haskell"}},patterns:[{include:"#comma"},{include:"#type_signature"}]},{include:"#type_variable"}]},type_variable:{match:/\b(?<!')(?!(?:forall|deriving)\b(?!'))[\p{Ll}_][\p{Ll}_\p{Lu}\p{Lt}\p{Nd}']*/dgv,name:"variable.other.generic-type.haskell"},where:{patterns:[{begin:/(?<!')\b(where)\p{space}*(\{)(?!-)/dgv,beginCaptures:{"1":{name:"keyword.other.where.haskell"},"2":{name:"punctuation.brace.haskell"}},end:/(\})/dgv,endCaptures:{"1":{name:"punctuation.brace.haskell"}},patterns:[{include:"$self"},{match:/;/dgv,name:"punctuation.semicolon.haskell"}]},{match:/\b(?<!')(where)\b(?!')/dgv,name:"keyword.other.where.haskell"}]}},scopeName:"source.haskell",embeddedLangs:undefined,aliases:["hs"]})
4
4
 
5
5
  export default [
6
6
  lang
package/dist/hcl.mjs CHANGED
@@ -1,4 +1,4 @@
1
- const lang = Object.freeze({displayName:"HashiCorp HCL",fileTypes:["hcl"],name:"hcl",patterns:[{include:"#comments"},{include:"#attribute_definition"},{include:"#block"},{include:"#expressions"}],repository:{attribute_access:{begin:/\.(?!\*)/dgv,beginCaptures:{"0":{name:"keyword.operator.accessor.hcl"}},comment:"Matches traversal attribute access such as .attr",end:/[\p{Alpha}][\p{L}\p{M}\p{N}\p{Pc}\-]*|\p{Nd}*/dgv,endCaptures:{"0":{patterns:[{comment:"Attribute name",match:/(?!null|false|true)[\p{Alpha}][\p{L}\p{M}\p{N}\p{Pc}\-]*/dgv,name:"variable.other.member.hcl"},{comment:"Optional attribute index",match:/\p{Nd}+/dgv,name:"constant.numeric.integer.hcl"}]}}},attribute_definition:{captures:{"1":{name:"punctuation.section.parens.begin.hcl"},"2":{name:"variable.other.readwrite.hcl"},"3":{name:"punctuation.section.parens.end.hcl"},"4":{name:"keyword.operator.assignment.hcl"}},comment:"Identifier \"=\" with optional parens",match:/(\()?(\b(?!null\b|false\b|true\b)[\p{Alpha}][\p{Alpha}\p{Nd}_\-]*)(\))?\p{space}*(=(?!=|>))\p{space}*/dgv,name:"variable.declaration.hcl"},attribute_splat:{begin:/\./dgv,beginCaptures:{"0":{name:"keyword.operator.accessor.hcl"}},comment:"Legacy attribute-only splat",end:/\*/dgv,endCaptures:{"0":{name:"keyword.operator.splat.hcl"}}},block:{begin:/([\p{L}\p{M}\p{N}\p{Pc}][\-\p{L}\p{M}\p{N}\p{Pc}]*)(([^\P{space}\r\n]+([\p{L}\p{M}\p{N}\p{Pc}][\-_\p{L}\p{M}\p{N}\p{Pc}]*|"[^"\r\n]*"))*)[^\P{space}\r\n]*(\{)/dgv,beginCaptures:{"1":{patterns:[{comment:"Block type",match:/\b(?!null|false|true)[\p{Alpha}][\p{Alpha}\p{Nd}_\-]*\b/dgv,name:"entity.name.type.hcl"}]},"2":{patterns:[{comment:"Block label (String Literal)",match:/"[^"\r\n]*"/dgv,name:"variable.other.enummember.hcl"},{comment:"Block label (Identifier)",match:/[\p{Alpha}][\p{Alpha}\p{Nd}_\-]*/dgv,name:"variable.other.enummember.hcl"}]},"5":{name:"punctuation.section.block.begin.hcl"}},comment:"This will match HCL blocks like `thing1 \"one\" \"two\" {` or `thing2 {`",end:/\}/dgv,endCaptures:{"0":{name:"punctuation.section.block.end.hcl"}},name:"meta.block.hcl",patterns:[{include:"#comments"},{include:"#attribute_definition"},{include:"#expressions"},{include:"#block"}]},block_inline_comments:{begin:/\/\*/dgv,captures:{"0":{name:"punctuation.definition.comment.hcl"}},comment:"Inline comments start with the /* sequence and end with the */ sequence, and may have any characters within except the ending sequence. An inline comment is considered equivalent to a whitespace sequence",end:/\*\//dgv,name:"comment.block.hcl"},brackets:{begin:/\[/dgv,beginCaptures:{"0":{name:"punctuation.section.brackets.begin.hcl"}},end:/\]/dgv,endCaptures:{"0":{name:"punctuation.section.brackets.end.hcl"}},patterns:[{comment:"Splat operator",match:/\*/dgv,name:"keyword.operator.splat.hcl"},{include:"#comma"},{include:"#comments"},{include:"#inline_for_expression"},{include:"#inline_if_expression"},{include:"#expressions"},{include:"#local_identifiers"}]},char_escapes:{comment:"Character Escapes",match:/\\[nrt"\\]|\\u(\p{AHex}{8}|\p{AHex}{4})/dgv,name:"constant.character.escape.hcl"},comma:{comment:"Commas - used in certain expressions",match:/,/dgv,name:"punctuation.separator.hcl"},comments:{patterns:[{include:"#hash_line_comments"},{include:"#double_slash_line_comments"},{include:"#block_inline_comments"}]},double_slash_line_comments:{begin:/\/\//dgv,captures:{"0":{name:"punctuation.definition.comment.hcl"}},comment:"Line comments start with // sequence and end with the next newline sequence. A line comment is considered equivalent to a newline sequence",end:/(?=\n?$)\n?/dgv,name:"comment.line.double-slash.hcl"},expressions:{patterns:[{include:"#literal_values"},{include:"#operators"},{include:"#tuple_for_expression"},{include:"#object_for_expression"},{include:"#brackets"},{include:"#objects"},{include:"#attribute_access"},{include:"#attribute_splat"},{include:"#functions"},{include:"#parens"}]},for_expression_body:{patterns:[{comment:"in keyword",match:/\bin\b/dgv,name:"keyword.operator.word.hcl"},{comment:"if keyword",match:/\bif\b/dgv,name:"keyword.control.conditional.hcl"},{match:/:/dgv,name:"keyword.operator.hcl"},{include:"#expressions"},{include:"#comments"},{include:"#comma"},{include:"#local_identifiers"}]},functions:{begin:/([\:\-\p{L}\p{M}\p{N}\p{Pc}]+)(\()/dgv,beginCaptures:{"1":{patterns:[{match:/\b[\p{Alpha}][\p{L}\p{M}\p{N}\p{Pc}_\-]*::([\p{Alpha}][\p{L}\p{M}\p{N}\p{Pc}_\-]*::)?[\p{Alpha}][\p{L}\p{M}\p{N}\p{Pc}_\-]*\b/dgv,name:"support.function.namespaced.hcl"},{match:/\b[\p{Alpha}][\p{L}\p{M}\p{N}\p{Pc}_\-]*\b/dgv,name:"support.function.builtin.hcl"}]},"2":{name:"punctuation.section.parens.begin.hcl"}},comment:"Built-in function calls",end:/\)/dgv,endCaptures:{"0":{name:"punctuation.section.parens.end.hcl"}},name:"meta.function-call.hcl",patterns:[{include:"#comments"},{include:"#expressions"},{include:"#comma"}]},hash_line_comments:{begin:/#/dgv,captures:{"0":{name:"punctuation.definition.comment.hcl"}},comment:"Line comments start with # sequence and end with the next newline sequence. A line comment is considered equivalent to a newline sequence",end:/(?=\n?$)\n?/dgv,name:"comment.line.number-sign.hcl"},hcl_type_keywords:{comment:"Type keywords known to HCL.",match:/\b(any|string|number|bool|list|set|map|tuple|object)\b/dgv,name:"storage.type.hcl"},heredoc:{begin:/(<<-?)\p{space}*([\p{L}\p{M}\p{N}\p{Pc}]+)\p{space}*(?=\n?$)/dgv,beginCaptures:{"1":{name:"keyword.operator.heredoc.hcl"},"2":{name:"keyword.control.heredoc.hcl"}},comment:"String Heredoc",end:/^\p{space}*\2\p{space}*(?=\n?$)()()/dgv,endCaptures:{"0":{name:"keyword.control.heredoc.hcl"}},name:"string.unquoted.heredoc.hcl",patterns:[{include:"#string_interpolation"}]},inline_for_expression:{captures:{"1":{name:"keyword.control.hcl"},"2":{patterns:[{match:/=>/dgv,name:"storage.type.function.hcl"},{include:"#for_expression_body"}]}},match:/(for)\b([^\n]*)\n/dgv},inline_if_expression:{begin:/(if)\b/dgv,beginCaptures:{"1":{name:"keyword.control.conditional.hcl"}},end:/\n/dgv,patterns:[{include:"#expressions"},{include:"#comments"},{include:"#comma"},{include:"#local_identifiers"}]},language_constants:{comment:"Language Constants",match:/\b(true|false|null)\b/dgv,name:"constant.language.hcl"},literal_values:{patterns:[{include:"#numeric_literals"},{include:"#language_constants"},{include:"#string_literals"},{include:"#heredoc"},{include:"#hcl_type_keywords"}]},local_identifiers:{comment:"Local Identifiers",match:/\b(?!null|false|true)[\p{Alpha}][\p{Alpha}\p{Nd}_\-]*\b/dgv,name:"variable.other.readwrite.hcl"},numeric_literals:{patterns:[{captures:{"1":{name:"punctuation.separator.exponent.hcl"}},comment:"Integer, no fraction, optional exponent",match:/\b\p{Nd}+([Ee][\+\-]?)\p{Nd}+\b/dgv,name:"constant.numeric.float.hcl"},{captures:{"1":{name:"punctuation.separator.decimal.hcl"},"2":{name:"punctuation.separator.exponent.hcl"}},comment:"Integer, fraction, optional exponent",match:/\b\p{Nd}+(\.)\p{Nd}+(?:([Ee][\+\-]?)\p{Nd}+)?\b/dgv,name:"constant.numeric.float.hcl"},{comment:"Integers",match:/\b\p{Nd}+\b/dgv,name:"constant.numeric.integer.hcl"}]},object_for_expression:{begin:/(\{)\p{space}?(for)\b/dgv,beginCaptures:{"1":{name:"punctuation.section.braces.begin.hcl"},"2":{name:"keyword.control.hcl"}},end:/\}/dgv,endCaptures:{"0":{name:"punctuation.section.braces.end.hcl"}},patterns:[{match:/=>/dgv,name:"storage.type.function.hcl"},{include:"#for_expression_body"}]},object_key_values:{patterns:[{include:"#comments"},{include:"#literal_values"},{include:"#operators"},{include:"#tuple_for_expression"},{include:"#object_for_expression"},{include:"#heredoc"},{include:"#functions"}]},objects:{begin:/\{/dgv,beginCaptures:{"0":{name:"punctuation.section.braces.begin.hcl"}},end:/\}/dgv,endCaptures:{"0":{name:"punctuation.section.braces.end.hcl"}},name:"meta.braces.hcl",patterns:[{include:"#comments"},{include:"#objects"},{include:"#inline_for_expression"},{include:"#inline_if_expression"},{captures:{"1":{name:"meta.mapping.key.hcl variable.other.readwrite.hcl"},"2":{name:"keyword.operator.assignment.hcl"}},comment:"Literal, named object key",match:/\b((?!null|false|true)[\p{Alpha}][\p{Alpha}\p{Nd}_\-]*)\p{space}*(=(?!=))\p{space}*/dgv},{captures:{"1":{name:"meta.mapping.key.hcl string.quoted.double.hcl"},"2":{name:"punctuation.definition.string.begin.hcl"},"3":{name:"punctuation.definition.string.end.hcl"},"4":{name:"keyword.operator.hcl"}},comment:"String object key",match:/^\p{space}*((")[^\n]*("))\p{space}*(=)\p{space}*/dgv},{begin:/^\p{space}*\(/dgv,beginCaptures:{"0":{name:"punctuation.section.parens.begin.hcl"}},comment:"Computed object key (any expression between parens)",end:/(\))\p{space}*(=|:)\p{space}*/dgv,endCaptures:{"1":{name:"punctuation.section.parens.end.hcl"},"2":{name:"keyword.operator.hcl"}},name:"meta.mapping.key.hcl",patterns:[{include:"#attribute_access"},{include:"#attribute_splat"}]},{include:"#object_key_values"}]},operators:{patterns:[{match:/>=/dgv,name:"keyword.operator.hcl"},{match:/<=/dgv,name:"keyword.operator.hcl"},{match:/==/dgv,name:"keyword.operator.hcl"},{match:/!=/dgv,name:"keyword.operator.hcl"},{match:/\+/dgv,name:"keyword.operator.arithmetic.hcl"},{match:/-/dgv,name:"keyword.operator.arithmetic.hcl"},{match:/\*/dgv,name:"keyword.operator.arithmetic.hcl"},{match:/\//dgv,name:"keyword.operator.arithmetic.hcl"},{match:/%/dgv,name:"keyword.operator.arithmetic.hcl"},{match:/&&/dgv,name:"keyword.operator.logical.hcl"},{match:/\|\|/dgv,name:"keyword.operator.logical.hcl"},{match:/!/dgv,name:"keyword.operator.logical.hcl"},{match:/>/dgv,name:"keyword.operator.hcl"},{match:/</dgv,name:"keyword.operator.hcl"},{match:/\?/dgv,name:"keyword.operator.hcl"},{match:/\.\.\./dgv,name:"keyword.operator.hcl"},{match:/:/dgv,name:"keyword.operator.hcl"},{match:/=>/dgv,name:"keyword.operator.hcl"}]},parens:{begin:/\(/dgv,beginCaptures:{"0":{name:"punctuation.section.parens.begin.hcl"}},comment:"Parens - matched *after* function syntax",end:/\)/dgv,endCaptures:{"0":{name:"punctuation.section.parens.end.hcl"}},patterns:[{include:"#comments"},{include:"#expressions"}]},string_interpolation:{begin:/(?<![\%\$])([\%\$]\{)/dgv,beginCaptures:{"1":{name:"keyword.other.interpolation.begin.hcl"}},comment:"String interpolation",end:/\}/dgv,endCaptures:{"0":{name:"keyword.other.interpolation.end.hcl"}},name:"meta.interpolation.hcl",patterns:[{comment:"Trim left whitespace",match:/~\p{space}/dgv,name:"keyword.operator.template.left.trim.hcl"},{comment:"Trim right whitespace",match:/\p{space}~/dgv,name:"keyword.operator.template.right.trim.hcl"},{comment:"if/else/endif and for/in/endfor directives",match:/\b(if|else|endif|for|in|endfor)\b/dgv,name:"keyword.control.hcl"},{include:"#expressions"},{include:"#local_identifiers"}]},string_literals:{begin:/"/dgv,beginCaptures:{"0":{name:"punctuation.definition.string.begin.hcl"}},comment:"Strings",end:/"/dgv,endCaptures:{"0":{name:"punctuation.definition.string.end.hcl"}},name:"string.quoted.double.hcl",patterns:[{include:"#string_interpolation"},{include:"#char_escapes"}]},tuple_for_expression:{begin:/(\[)\p{space}?(for)\b/dgv,beginCaptures:{"1":{name:"punctuation.section.brackets.begin.hcl"},"2":{name:"keyword.control.hcl"}},end:/\]/dgv,endCaptures:{"0":{name:"punctuation.section.brackets.end.hcl"}},patterns:[{include:"#for_expression_body"}]}},scopeName:"source.hcl",embeddedLangs:undefined,aliases:undefined})
1
+ const lang = Object.freeze({displayName:"HashiCorp HCL",fileTypes:["hcl"],name:"hcl",patterns:[{include:"#comments"},{include:"#attribute_definition"},{include:"#block"},{include:"#expressions"}],repository:{attribute_access:{begin:/\.(?!\*)/dgv,beginCaptures:{"0":{name:"keyword.operator.accessor.hcl"}},end:/[\p{Alpha}][\p{L}\p{M}\p{N}\p{Pc}\-]*|\p{Nd}*/dgv,endCaptures:{"0":{patterns:[{match:/(?!null|false|true)[\p{Alpha}][\p{L}\p{M}\p{N}\p{Pc}\-]*/dgv,name:"variable.other.member.hcl"},{match:/\p{Nd}+/dgv,name:"constant.numeric.integer.hcl"}]}}},attribute_definition:{captures:{"1":{name:"punctuation.section.parens.begin.hcl"},"2":{name:"variable.other.readwrite.hcl"},"3":{name:"punctuation.section.parens.end.hcl"},"4":{name:"keyword.operator.assignment.hcl"}},match:/(\()?(\b(?!null\b|false\b|true\b)[\p{Alpha}][\p{Alpha}\p{Nd}_\-]*)(\))?\p{space}*(=(?!=|>))\p{space}*/dgv,name:"variable.declaration.hcl"},attribute_splat:{begin:/\./dgv,beginCaptures:{"0":{name:"keyword.operator.accessor.hcl"}},end:/\*/dgv,endCaptures:{"0":{name:"keyword.operator.splat.hcl"}}},block:{begin:/([\p{L}\p{M}\p{N}\p{Pc}][\-\p{L}\p{M}\p{N}\p{Pc}]*)(([^\P{space}\r\n]+([\p{L}\p{M}\p{N}\p{Pc}][\-_\p{L}\p{M}\p{N}\p{Pc}]*|"[^"\r\n]*"))*)[^\P{space}\r\n]*(\{)/dgv,beginCaptures:{"1":{patterns:[{match:/\b(?!null|false|true)[\p{Alpha}][\p{Alpha}\p{Nd}_\-]*\b/dgv,name:"entity.name.type.hcl"}]},"2":{patterns:[{match:/"[^"\r\n]*"/dgv,name:"variable.other.enummember.hcl"},{match:/[\p{Alpha}][\p{Alpha}\p{Nd}_\-]*/dgv,name:"variable.other.enummember.hcl"}]},"5":{name:"punctuation.section.block.begin.hcl"}},end:/\}/dgv,endCaptures:{"0":{name:"punctuation.section.block.end.hcl"}},name:"meta.block.hcl",patterns:[{include:"#comments"},{include:"#attribute_definition"},{include:"#expressions"},{include:"#block"}]},block_inline_comments:{begin:/\/\*/dgv,captures:{"0":{name:"punctuation.definition.comment.hcl"}},end:/\*\//dgv,name:"comment.block.hcl"},brackets:{begin:/\[/dgv,beginCaptures:{"0":{name:"punctuation.section.brackets.begin.hcl"}},end:/\]/dgv,endCaptures:{"0":{name:"punctuation.section.brackets.end.hcl"}},patterns:[{match:/\*/dgv,name:"keyword.operator.splat.hcl"},{include:"#comma"},{include:"#comments"},{include:"#inline_for_expression"},{include:"#inline_if_expression"},{include:"#expressions"},{include:"#local_identifiers"}]},char_escapes:{match:/\\[nrt"\\]|\\u(\p{AHex}{8}|\p{AHex}{4})/dgv,name:"constant.character.escape.hcl"},comma:{match:/,/dgv,name:"punctuation.separator.hcl"},comments:{patterns:[{include:"#hash_line_comments"},{include:"#double_slash_line_comments"},{include:"#block_inline_comments"}]},double_slash_line_comments:{begin:/\/\//dgv,captures:{"0":{name:"punctuation.definition.comment.hcl"}},end:/(?=\n?$)\n?/dgv,name:"comment.line.double-slash.hcl"},expressions:{patterns:[{include:"#literal_values"},{include:"#operators"},{include:"#tuple_for_expression"},{include:"#object_for_expression"},{include:"#brackets"},{include:"#objects"},{include:"#attribute_access"},{include:"#attribute_splat"},{include:"#functions"},{include:"#parens"}]},for_expression_body:{patterns:[{match:/\bin\b/dgv,name:"keyword.operator.word.hcl"},{match:/\bif\b/dgv,name:"keyword.control.conditional.hcl"},{match:/:/dgv,name:"keyword.operator.hcl"},{include:"#expressions"},{include:"#comments"},{include:"#comma"},{include:"#local_identifiers"}]},functions:{begin:/([\:\-\p{L}\p{M}\p{N}\p{Pc}]+)(\()/dgv,beginCaptures:{"1":{patterns:[{match:/\b[\p{Alpha}][\p{L}\p{M}\p{N}\p{Pc}_\-]*::([\p{Alpha}][\p{L}\p{M}\p{N}\p{Pc}_\-]*::)?[\p{Alpha}][\p{L}\p{M}\p{N}\p{Pc}_\-]*\b/dgv,name:"support.function.namespaced.hcl"},{match:/\b[\p{Alpha}][\p{L}\p{M}\p{N}\p{Pc}_\-]*\b/dgv,name:"support.function.builtin.hcl"}]},"2":{name:"punctuation.section.parens.begin.hcl"}},end:/\)/dgv,endCaptures:{"0":{name:"punctuation.section.parens.end.hcl"}},name:"meta.function-call.hcl",patterns:[{include:"#comments"},{include:"#expressions"},{include:"#comma"}]},hash_line_comments:{begin:/#/dgv,captures:{"0":{name:"punctuation.definition.comment.hcl"}},end:/(?=\n?$)\n?/dgv,name:"comment.line.number-sign.hcl"},hcl_type_keywords:{match:/\b(any|string|number|bool|list|set|map|tuple|object)\b/dgv,name:"storage.type.hcl"},heredoc:{begin:/(<<-?)\p{space}*([\p{L}\p{M}\p{N}\p{Pc}]+)\p{space}*(?=\n?$)/dgv,beginCaptures:{"1":{name:"keyword.operator.heredoc.hcl"},"2":{name:"keyword.control.heredoc.hcl"}},end:/^\p{space}*\2\p{space}*(?=\n?$)()()/dgv,endCaptures:{"0":{name:"keyword.control.heredoc.hcl"}},name:"string.unquoted.heredoc.hcl",patterns:[{include:"#string_interpolation"}]},inline_for_expression:{captures:{"1":{name:"keyword.control.hcl"},"2":{patterns:[{match:/=>/dgv,name:"storage.type.function.hcl"},{include:"#for_expression_body"}]}},match:/(for)\b([^\n]*)\n/dgv},inline_if_expression:{begin:/(if)\b/dgv,beginCaptures:{"1":{name:"keyword.control.conditional.hcl"}},end:/\n/dgv,patterns:[{include:"#expressions"},{include:"#comments"},{include:"#comma"},{include:"#local_identifiers"}]},language_constants:{match:/\b(true|false|null)\b/dgv,name:"constant.language.hcl"},literal_values:{patterns:[{include:"#numeric_literals"},{include:"#language_constants"},{include:"#string_literals"},{include:"#heredoc"},{include:"#hcl_type_keywords"}]},local_identifiers:{match:/\b(?!null|false|true)[\p{Alpha}][\p{Alpha}\p{Nd}_\-]*\b/dgv,name:"variable.other.readwrite.hcl"},numeric_literals:{patterns:[{captures:{"1":{name:"punctuation.separator.exponent.hcl"}},match:/\b\p{Nd}+([Ee][\+\-]?)\p{Nd}+\b/dgv,name:"constant.numeric.float.hcl"},{captures:{"1":{name:"punctuation.separator.decimal.hcl"},"2":{name:"punctuation.separator.exponent.hcl"}},match:/\b\p{Nd}+(\.)\p{Nd}+(?:([Ee][\+\-]?)\p{Nd}+)?\b/dgv,name:"constant.numeric.float.hcl"},{match:/\b\p{Nd}+\b/dgv,name:"constant.numeric.integer.hcl"}]},object_for_expression:{begin:/(\{)\p{space}?(for)\b/dgv,beginCaptures:{"1":{name:"punctuation.section.braces.begin.hcl"},"2":{name:"keyword.control.hcl"}},end:/\}/dgv,endCaptures:{"0":{name:"punctuation.section.braces.end.hcl"}},patterns:[{match:/=>/dgv,name:"storage.type.function.hcl"},{include:"#for_expression_body"}]},object_key_values:{patterns:[{include:"#comments"},{include:"#literal_values"},{include:"#operators"},{include:"#tuple_for_expression"},{include:"#object_for_expression"},{include:"#heredoc"},{include:"#functions"}]},objects:{begin:/\{/dgv,beginCaptures:{"0":{name:"punctuation.section.braces.begin.hcl"}},end:/\}/dgv,endCaptures:{"0":{name:"punctuation.section.braces.end.hcl"}},name:"meta.braces.hcl",patterns:[{include:"#comments"},{include:"#objects"},{include:"#inline_for_expression"},{include:"#inline_if_expression"},{captures:{"1":{name:"meta.mapping.key.hcl variable.other.readwrite.hcl"},"2":{name:"keyword.operator.assignment.hcl"}},match:/\b((?!null|false|true)[\p{Alpha}][\p{Alpha}\p{Nd}_\-]*)\p{space}*(=(?!=))\p{space}*/dgv},{captures:{"1":{name:"meta.mapping.key.hcl string.quoted.double.hcl"},"2":{name:"punctuation.definition.string.begin.hcl"},"3":{name:"punctuation.definition.string.end.hcl"},"4":{name:"keyword.operator.hcl"}},match:/^\p{space}*((")[^\n]*("))\p{space}*(=)\p{space}*/dgv},{begin:/^\p{space}*\(/dgv,beginCaptures:{"0":{name:"punctuation.section.parens.begin.hcl"}},end:/(\))\p{space}*(=|:)\p{space}*/dgv,endCaptures:{"1":{name:"punctuation.section.parens.end.hcl"},"2":{name:"keyword.operator.hcl"}},name:"meta.mapping.key.hcl",patterns:[{include:"#attribute_access"},{include:"#attribute_splat"}]},{include:"#object_key_values"}]},operators:{patterns:[{match:/>=/dgv,name:"keyword.operator.hcl"},{match:/<=/dgv,name:"keyword.operator.hcl"},{match:/==/dgv,name:"keyword.operator.hcl"},{match:/!=/dgv,name:"keyword.operator.hcl"},{match:/\+/dgv,name:"keyword.operator.arithmetic.hcl"},{match:/-/dgv,name:"keyword.operator.arithmetic.hcl"},{match:/\*/dgv,name:"keyword.operator.arithmetic.hcl"},{match:/\//dgv,name:"keyword.operator.arithmetic.hcl"},{match:/%/dgv,name:"keyword.operator.arithmetic.hcl"},{match:/&&/dgv,name:"keyword.operator.logical.hcl"},{match:/\|\|/dgv,name:"keyword.operator.logical.hcl"},{match:/!/dgv,name:"keyword.operator.logical.hcl"},{match:/>/dgv,name:"keyword.operator.hcl"},{match:/</dgv,name:"keyword.operator.hcl"},{match:/\?/dgv,name:"keyword.operator.hcl"},{match:/\.\.\./dgv,name:"keyword.operator.hcl"},{match:/:/dgv,name:"keyword.operator.hcl"},{match:/=>/dgv,name:"keyword.operator.hcl"}]},parens:{begin:/\(/dgv,beginCaptures:{"0":{name:"punctuation.section.parens.begin.hcl"}},end:/\)/dgv,endCaptures:{"0":{name:"punctuation.section.parens.end.hcl"}},patterns:[{include:"#comments"},{include:"#expressions"}]},string_interpolation:{begin:/(?<![\%\$])([\%\$]\{)/dgv,beginCaptures:{"1":{name:"keyword.other.interpolation.begin.hcl"}},end:/\}/dgv,endCaptures:{"0":{name:"keyword.other.interpolation.end.hcl"}},name:"meta.interpolation.hcl",patterns:[{match:/~\p{space}/dgv,name:"keyword.operator.template.left.trim.hcl"},{match:/\p{space}~/dgv,name:"keyword.operator.template.right.trim.hcl"},{match:/\b(if|else|endif|for|in|endfor)\b/dgv,name:"keyword.control.hcl"},{include:"#expressions"},{include:"#local_identifiers"}]},string_literals:{begin:/"/dgv,beginCaptures:{"0":{name:"punctuation.definition.string.begin.hcl"}},end:/"/dgv,endCaptures:{"0":{name:"punctuation.definition.string.end.hcl"}},name:"string.quoted.double.hcl",patterns:[{include:"#string_interpolation"},{include:"#char_escapes"}]},tuple_for_expression:{begin:/(\[)\p{space}?(for)\b/dgv,beginCaptures:{"1":{name:"punctuation.section.brackets.begin.hcl"},"2":{name:"keyword.control.hcl"}},end:/\]/dgv,endCaptures:{"0":{name:"punctuation.section.brackets.end.hcl"}},patterns:[{include:"#for_expression_body"}]}},scopeName:"source.hcl",embeddedLangs:undefined,aliases:undefined})
2
2
 
3
3
  export default [
4
4
  lang