github-linguist 4.8.8 → 4.8.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/hint.haskell.json +1123 -0
  3. data/grammars/hint.message.haskell.json +1147 -0
  4. data/grammars/hint.type.haskell.json +1120 -0
  5. data/grammars/source.asn.json +59 -0
  6. data/grammars/source.blitzmax.json +0 -2
  7. data/grammars/source.bsl.json +372 -0
  8. data/grammars/source.c++.json +67 -0
  9. data/grammars/source.c2hs.json +27 -0
  10. data/grammars/source.cabal.json +66 -0
  11. data/grammars/source.coffee.json +6 -5
  12. data/grammars/source.crystal.json +0 -11
  13. data/grammars/source.csound-score.json +3 -3
  14. data/grammars/source.csound.json +51 -15
  15. data/grammars/source.css.json +1 -1
  16. data/grammars/source.css.less.json +9 -5
  17. data/grammars/source.cython.json +42 -193
  18. data/grammars/source.d.json +7 -7
  19. data/grammars/source.elixir.json +2 -2
  20. data/grammars/source.forth.json +0 -2
  21. data/grammars/source.graphql.json +8 -2
  22. data/grammars/source.haskell.json +1089 -323
  23. data/grammars/source.hsc2hs.json +12 -0
  24. data/grammars/source.ideal.json +356 -0
  25. data/grammars/source.java.json +3 -0
  26. data/grammars/source.js.json +262 -131
  27. data/grammars/source.js.jsx.json +848 -256
  28. data/grammars/source.lsl.json +51 -103
  29. data/grammars/source.objc.json +1 -1
  30. data/grammars/source.parrot.pir.json +49 -15
  31. data/grammars/source.pic.json +868 -0
  32. data/grammars/source.purescript.json +114 -90
  33. data/grammars/source.python.json +11 -9
  34. data/grammars/source.regexp.babel.json +1 -1
  35. data/grammars/source.renpy.json +7 -7
  36. data/grammars/source.rexx.json +59 -0
  37. data/grammars/source.sas.json +8 -75
  38. data/grammars/source.sdbl.json +97 -0
  39. data/grammars/source.shell.json +1 -0
  40. data/grammars/source.smali.json +2 -2
  41. data/grammars/source.sqf.json +11 -11
  42. data/grammars/source.stan.json +60 -25
  43. data/grammars/source.tla.json +18 -6
  44. data/grammars/source.toc.json +5 -1
  45. data/grammars/source.ts.json +134 -31
  46. data/grammars/source.tsx.json +134 -31
  47. data/grammars/source.vhdl.json +150 -117
  48. data/grammars/source.viml.json +4 -4
  49. data/grammars/source.xquery.json +23 -5
  50. data/grammars/source.yaml.json +35 -19
  51. data/grammars/text.html.handlebars.json +2 -2
  52. data/grammars/text.html.php.blade.json +1 -1
  53. data/grammars/text.html.twig.json +1 -4
  54. data/grammars/text.html.vue.json +41 -1
  55. data/grammars/text.restructuredtext.json +56 -1
  56. data/grammars/text.roff.json +5089 -0
  57. data/grammars/text.runoff.json +321 -0
  58. data/grammars/text.slim.json +126 -105
  59. data/grammars/text.tex.latex.haskell.json +1335 -21
  60. data/lib/linguist/heuristics.rb +8 -0
  61. data/lib/linguist/languages.json +1 -1
  62. data/lib/linguist/languages.yml +58 -3
  63. data/lib/linguist/samples.json +5257 -76
  64. data/lib/linguist/version.rb +1 -1
  65. metadata +16 -4
  66. data/grammars/source.man.json +0 -53
  67. data/grammars/text.groff.json +0 -113
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0f65f4f0a312b86b32f5230661bf8129dec1c951
4
- data.tar.gz: af7f3d1680d31406a50ed12fad5250834f6bfd02
3
+ metadata.gz: ba4192794847f2bd7bca0e364dda58c894ce338b
4
+ data.tar.gz: 5a792e393d7511857807b7eee02e101163ea2e7a
5
5
  SHA512:
6
- metadata.gz: a5d7a2040e29f66ec0a3154067e6b1ed5b199cd3d23fe1d949fa422179c998443e88ab88af232c979f70d4570522cc9fb46145ab308f5779a6fa2844db4b1d06
7
- data.tar.gz: 41a0d8f46204c1e4d27c8b1082ecdce673083d2f91b73b289d86ed7bc8673a7bb3c13b55102d68fb827755440425bb09a5c84e913b86920f06c23fe3ebae706c
6
+ metadata.gz: 792cfed955b8f405a502188d29878461b51be6af9aaa7e10ae6babd47004f6acdca441353affac808b973d19a898817d1b8ca13dbe2ac36ed6d53d04f468f977
7
+ data.tar.gz: a9df4af0a9a7687d30f8f994446188070c80e780abd5ddbb74b5d443b2062017c3a458fa4df919e90348075b75900dc72d10db36d4b8f434b359fd75a566ff4e
@@ -0,0 +1,1123 @@
1
+ {
2
+ "fileTypes": [
3
+
4
+ ],
5
+ "scopeName": "hint.haskell",
6
+ "macros": {
7
+ "identStartCharClass": "[\\p{Ll}_\\p{Lu}\\p{Lt}]",
8
+ "identCharClass": "[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']",
9
+ "functionNameOne": "[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
10
+ "classNameOne": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
11
+ "functionName": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
12
+ "className": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*",
13
+ "operatorChar": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]",
14
+ "operator": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+",
15
+ "operatorFun": "(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))",
16
+ "basicChar": "[\\ -\\[\\]-~]",
17
+ "escapeChar": "\\\\(?: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\\\\\\\"'\\&])",
18
+ "octalChar": "(?:\\\\o[0-7]+)",
19
+ "hexChar": "(?:\\\\x[0-9A-Fa-f]+)",
20
+ "controlChar": "(?:\\^[A-Z@\\[\\]\\\\\\^_])",
21
+ "character": "(?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\^[A-Z@\\[\\]\\\\\\^_]))",
22
+ "functionTypeDeclaration": "(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*(::|∷)))",
23
+ "ctorTypeDeclaration": "(?:(?:((?:[\\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{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:[\\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{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*(::|∷)))",
24
+ "ctorArgs": "(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)",
25
+ "ctor": "(?:(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*)(?:((?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+))(?:(?:\\s+)(?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)))*)?))",
26
+ "typeDeclOne": "(?:(?!(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))where(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\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}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))",
27
+ "typeDecl": "(?>(?:(?:(?!(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))where(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\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}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)))(?:\\s+(?:(?!(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))where(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\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}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)))*)",
28
+ "indentChar": "[ \\t]",
29
+ "indentBlockStart": "^([ \\t]*)",
30
+ "indentBlockEnd": "^(?!\\1[ \\t]|[ \\t]*$)",
31
+ "maybeBirdTrack": "^",
32
+ "lb": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))",
33
+ "rb": "(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
34
+ "b": "(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))|(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))"
35
+ },
36
+ "patterns": [
37
+ {
38
+ "include": "#function_type_declaration"
39
+ },
40
+ {
41
+ "include": "#ctor_type_declaration"
42
+ }
43
+ ],
44
+ "repository": {
45
+ "block_comment": {
46
+ "patterns": [
47
+ {
48
+ "name": "comment.block.haddock.haskell",
49
+ "begin": "\\{-\\s*[|^]",
50
+ "end": "-\\}",
51
+ "applyEndPatternLast": 1,
52
+ "beginCaptures": {
53
+ "0": {
54
+ "name": "punctuation.definition.comment.haddock.haskell"
55
+ }
56
+ },
57
+ "endCaptures": {
58
+ "0": {
59
+ "name": "punctuation.definition.comment.haddock.haskell"
60
+ }
61
+ },
62
+ "patterns": [
63
+ {
64
+ "include": "#block_comment"
65
+ }
66
+ ]
67
+ },
68
+ {
69
+ "name": "comment.block.haskell",
70
+ "begin": "\\{-",
71
+ "end": "-\\}",
72
+ "applyEndPatternLast": 1,
73
+ "beginCaptures": {
74
+ "0": {
75
+ "name": "punctuation.definition.comment.block.start.haskell"
76
+ }
77
+ },
78
+ "endCaptures": {
79
+ "0": {
80
+ "name": "punctuation.definition.comment.block.end.haskell"
81
+ }
82
+ },
83
+ "patterns": [
84
+ {
85
+ "include": "#block_comment"
86
+ }
87
+ ]
88
+ }
89
+ ]
90
+ },
91
+ "comments": {
92
+ "patterns": [
93
+ {
94
+ "begin": "(^[ \\t]+)?(?=--+\\s+[|^])",
95
+ "end": "(?!\\G)",
96
+ "beginCaptures": {
97
+ "1": {
98
+ "name": "punctuation.whitespace.comment.leading.haskell"
99
+ }
100
+ },
101
+ "patterns": [
102
+ {
103
+ "name": "comment.line.double-dash.haddock.haskell",
104
+ "begin": "(--+)\\s+([|^])",
105
+ "end": "\\n",
106
+ "beginCaptures": {
107
+ "1": {
108
+ "name": "punctuation.definition.comment.haskell"
109
+ },
110
+ "2": {
111
+ "name": "punctuation.definition.comment.haddock.haskell"
112
+ }
113
+ }
114
+ }
115
+ ]
116
+ },
117
+ {
118
+ "begin": "(^[ \\t]+)?(?=--+(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))",
119
+ "end": "(?!\\G)",
120
+ "beginCaptures": {
121
+ "1": {
122
+ "name": "punctuation.whitespace.comment.leading.haskell"
123
+ }
124
+ },
125
+ "patterns": [
126
+ {
127
+ "name": "comment.line.double-dash.haskell",
128
+ "begin": "--",
129
+ "end": "\\n",
130
+ "beginCaptures": {
131
+ "0": {
132
+ "name": "punctuation.definition.comment.haskell"
133
+ }
134
+ }
135
+ }
136
+ ]
137
+ },
138
+ {
139
+ "include": "#block_comment"
140
+ }
141
+ ]
142
+ },
143
+ "characters": {
144
+ "patterns": [
145
+ {
146
+ "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\\\\\\\"'\\&])",
147
+ "name": "constant.character.escape.haskell"
148
+ },
149
+ {
150
+ "match": "(?:\\\\o[0-7]+)",
151
+ "name": "constant.character.escape.octal.haskell"
152
+ },
153
+ {
154
+ "match": "(?:\\\\x[0-9A-Fa-f]+)",
155
+ "name": "constant.character.escape.hexadecimal.haskell"
156
+ },
157
+ {
158
+ "match": "(?:\\^[A-Z@\\[\\]\\\\\\^_])",
159
+ "name": "constant.character.escape.control.haskell"
160
+ }
161
+ ]
162
+ },
163
+ "infix_op": {
164
+ "patterns": [
165
+ {
166
+ "name": "entity.name.function.infix.haskell",
167
+ "match": "(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))"
168
+ }
169
+ ]
170
+ },
171
+ "module_exports": {
172
+ "patterns": [
173
+ {
174
+ "name": "meta.declaration.exports.haskell",
175
+ "begin": "\\(",
176
+ "end": "\\)",
177
+ "patterns": [
178
+ {
179
+ "include": "#comments"
180
+ },
181
+ {
182
+ "include": "#function_name"
183
+ },
184
+ {
185
+ "include": "#type_name"
186
+ },
187
+ {
188
+ "include": "#comma"
189
+ },
190
+ {
191
+ "name": "meta.other.constructor-list.haskell",
192
+ "begin": "(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))\\s*\\(",
193
+ "end": "\\)",
194
+ "patterns": [
195
+ {
196
+ "include": "#type_ctor"
197
+ },
198
+ {
199
+ "include": "#attribute_name"
200
+ },
201
+ {
202
+ "include": "#comma"
203
+ },
204
+ {
205
+ "match": "\\.\\.",
206
+ "name": "keyword.operator.wildcard.haskell"
207
+ }
208
+ ]
209
+ },
210
+ {
211
+ "include": "#infix_op"
212
+ }
213
+ ]
214
+ }
215
+ ]
216
+ },
217
+ "module_name": {
218
+ "patterns": [
219
+ {
220
+ "name": "support.other.module.haskell",
221
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
222
+ }
223
+ ]
224
+ },
225
+ "module_name_prefix": {
226
+ "patterns": [
227
+ {
228
+ "name": "support.other.module.haskell",
229
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\."
230
+ }
231
+ ]
232
+ },
233
+ "pragma": {
234
+ "patterns": [
235
+ {
236
+ "name": "meta.preprocessor.haskell",
237
+ "begin": "\\{-#",
238
+ "end": "#-\\}",
239
+ "patterns": [
240
+ {
241
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(NOTINLINE CONSTRUCTORLIKE|NOINLINE CONSTRUCTORLIKE|INLINE CONSTRUCTORLIKE|SPECIALISE NOTINLINE|SPECIALIZE NOTINLINE|SPECIALISE NOINLINE|SPECIALIZE NOINLINE|NOTINLINE CONLIKE|SPECIALISE INLINE|SPECIALIZE INLINE|NOINLINE CONLIKE|VECTORISE SCALAR|VECTORIZE SCALAR|OPTIONS_HADDOCK|INLINE CONLIKE|OPTIONS_DERIVE|OPTIONS_CATCH|OPTIONS_NHC98|OPTIONS_HUGS|OVERLAPPABLE|NOVECTORISE|NOVECTORIZE|OPTIONS_GHC|OPTIONS_JHC|OPTIONS_YHC|OVERLAPPING|DEPRECATED|INCOHERENT|INLINEABLE|SPECIALISE|SPECIALIZE|GENERATED|INLINABLE|NOTINLINE|VECTORISE|VECTORIZE|CONTRACT|LANGUAGE|NOINLINE|NOUNPACK|OVERLAPS|INCLUDE|MINIMAL|OPTIONS|WARNING|CFILES|INLINE|SOURCE|UNPACK|CTYPE|RULES|CORE|LINE|ANN|SCC)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
242
+ "name": "keyword.other.preprocessor.haskell"
243
+ }
244
+ ]
245
+ }
246
+ ]
247
+ },
248
+ "function_type_declaration": {
249
+ "patterns": [
250
+ {
251
+ "name": "meta.function.type-declaration.haskell",
252
+ "begin": "^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*(::|∷)))",
253
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
254
+ "contentName": "meta.type-signature.haskell",
255
+ "beginCaptures": {
256
+ "2": {
257
+ "patterns": [
258
+ {
259
+ "include": "#function_name"
260
+ },
261
+ {
262
+ "include": "#infix_op"
263
+ }
264
+ ]
265
+ },
266
+ "3": {
267
+ "name": "keyword.other.double-colon.haskell"
268
+ }
269
+ },
270
+ "patterns": [
271
+ {
272
+ "include": "#type_signature"
273
+ }
274
+ ]
275
+ }
276
+ ]
277
+ },
278
+ "ctor_type_declaration": {
279
+ "patterns": [
280
+ {
281
+ "name": "meta.ctor.type-declaration.haskell",
282
+ "begin": "^([ \\t]*)(?:(?:((?:[\\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{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:[\\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{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*(::|∷)))",
283
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
284
+ "contentName": "meta.type-signature.haskell",
285
+ "beginCaptures": {
286
+ "2": {
287
+ "patterns": [
288
+ {
289
+ "include": "#type_ctor"
290
+ },
291
+ {
292
+ "include": "#infix_op"
293
+ }
294
+ ]
295
+ },
296
+ "3": {
297
+ "name": "keyword.other.double-colon.haskell"
298
+ }
299
+ },
300
+ "patterns": [
301
+ {
302
+ "include": "#type_signature"
303
+ }
304
+ ]
305
+ }
306
+ ]
307
+ },
308
+ "record_field_declaration": {
309
+ "patterns": [
310
+ {
311
+ "name": "meta.record-field.type-declaration.haskell",
312
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*(::|∷)))",
313
+ "end": "(?=(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*(::|∷)))|})",
314
+ "contentName": "meta.type-signature.haskell",
315
+ "beginCaptures": {
316
+ "1": {
317
+ "patterns": [
318
+ {
319
+ "include": "#attribute_name"
320
+ },
321
+ {
322
+ "include": "#infix_op"
323
+ }
324
+ ]
325
+ },
326
+ "2": {
327
+ "name": "keyword.other.double-colon.haskell"
328
+ }
329
+ },
330
+ "patterns": [
331
+ {
332
+ "include": "#type_signature"
333
+ }
334
+ ]
335
+ }
336
+ ]
337
+ },
338
+ "type_signature": {
339
+ "patterns": [
340
+ {
341
+ "include": "#pragma"
342
+ },
343
+ {
344
+ "include": "#comments"
345
+ },
346
+ {
347
+ "name": "keyword.other.forall.haskell",
348
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))forall(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
349
+ },
350
+ {
351
+ "include": "#unit"
352
+ },
353
+ {
354
+ "include": "#empty_list"
355
+ },
356
+ {
357
+ "name": "keyword.other.arrow.haskell",
358
+ "match": "(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(->|→)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])"
359
+ },
360
+ {
361
+ "name": "keyword.other.big-arrow.haskell",
362
+ "match": "(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(=>|⇒)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])"
363
+ },
364
+ {
365
+ "include": "#operator"
366
+ },
367
+ {
368
+ "name": "variable.other.generic-type.haskell",
369
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
370
+ },
371
+ {
372
+ "include": "#type_name"
373
+ }
374
+ ]
375
+ },
376
+ "unit": {
377
+ "patterns": [
378
+ {
379
+ "name": "constant.language.unit.haskell",
380
+ "match": "\\(\\)"
381
+ }
382
+ ]
383
+ },
384
+ "empty_list": {
385
+ "patterns": [
386
+ {
387
+ "name": "constant.language.empty-list.haskell",
388
+ "match": "\\[\\]"
389
+ }
390
+ ]
391
+ },
392
+ "deriving": {
393
+ "patterns": [
394
+ {
395
+ "include": "#deriving_list"
396
+ },
397
+ {
398
+ "include": "#deriving_simple"
399
+ },
400
+ {
401
+ "include": "#deriving_keyword"
402
+ }
403
+ ]
404
+ },
405
+ "deriving_keyword": {
406
+ "patterns": [
407
+ {
408
+ "name": "meta.deriving.haskell",
409
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(deriving)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
410
+ "captures": {
411
+ "1": {
412
+ "name": "keyword.other.haskell"
413
+ }
414
+ }
415
+ }
416
+ ]
417
+ },
418
+ "deriving_list": {
419
+ "patterns": [
420
+ {
421
+ "name": "meta.deriving.haskell",
422
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(deriving)\\s*\\(",
423
+ "end": "\\)",
424
+ "beginCaptures": {
425
+ "1": {
426
+ "name": "keyword.other.haskell"
427
+ }
428
+ },
429
+ "patterns": [
430
+ {
431
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
432
+ "captures": {
433
+ "1": {
434
+ "name": "entity.other.inherited-class.haskell"
435
+ }
436
+ }
437
+ }
438
+ ]
439
+ }
440
+ ]
441
+ },
442
+ "deriving_simple": {
443
+ "patterns": [
444
+ {
445
+ "name": "meta.deriving.haskell",
446
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(deriving)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
447
+ "captures": {
448
+ "1": {
449
+ "name": "keyword.other.haskell"
450
+ },
451
+ "2": {
452
+ "name": "entity.other.inherited-class.haskell"
453
+ }
454
+ }
455
+ }
456
+ ]
457
+ },
458
+ "infix_function": {
459
+ "patterns": [
460
+ {
461
+ "name": "keyword.operator.function.infix.haskell",
462
+ "match": "(`)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(`)",
463
+ "captures": {
464
+ "1": {
465
+ "name": "punctuation.definition.entity.haskell"
466
+ },
467
+ "2": {
468
+ "name": "punctuation.definition.entity.haskell"
469
+ }
470
+ }
471
+ }
472
+ ]
473
+ },
474
+ "quasi_quotes": {
475
+ "patterns": [
476
+ {
477
+ "begin": "(\\[)([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(\\|)",
478
+ "end": "(\\|)(\\])",
479
+ "beginCaptures": {
480
+ "1": {
481
+ "name": "punctuation.definition.quasiquotes.begin.haskell"
482
+ },
483
+ "2": {
484
+ "name": "entity.name.tag.haskell"
485
+ }
486
+ },
487
+ "endCaptures": {
488
+ "2": {
489
+ "name": "punctuation.definition.quasiquotes.end.haskell"
490
+ }
491
+ },
492
+ "contentName": "string.quoted.quasiquotes.haskell"
493
+ }
494
+ ]
495
+ },
496
+ "module_decl": {
497
+ "patterns": [
498
+ {
499
+ "name": "meta.declaration.module.haskell",
500
+ "begin": "^([ \\t]*)(module)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
501
+ "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(where)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
502
+ "beginCaptures": {
503
+ "2": {
504
+ "name": "keyword.other.haskell"
505
+ }
506
+ },
507
+ "endCaptures": {
508
+ "1": {
509
+ "name": "keyword.other.haskell"
510
+ }
511
+ },
512
+ "patterns": [
513
+ {
514
+ "include": "#comments"
515
+ },
516
+ {
517
+ "include": "#module_name"
518
+ },
519
+ {
520
+ "include": "#module_exports"
521
+ },
522
+ {
523
+ "include": "#invalid"
524
+ }
525
+ ]
526
+ }
527
+ ]
528
+ },
529
+ "class_decl": {
530
+ "patterns": [
531
+ {
532
+ "name": "meta.declaration.class.haskell",
533
+ "begin": "^([ \\t]*)(class)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
534
+ "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(where)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|$",
535
+ "beginCaptures": {
536
+ "2": {
537
+ "name": "storage.type.class.haskell"
538
+ }
539
+ },
540
+ "endCaptures": {
541
+ "1": {
542
+ "name": "keyword.other.haskell"
543
+ }
544
+ },
545
+ "patterns": [
546
+ {
547
+ "include": "#type_signature"
548
+ }
549
+ ]
550
+ }
551
+ ]
552
+ },
553
+ "instance_decl": {
554
+ "patterns": [
555
+ {
556
+ "name": "meta.declaration.instance.haskell",
557
+ "begin": "^([ \\t]*)(instance)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
558
+ "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(where)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|$",
559
+ "contentName": "meta.type-signature.haskell",
560
+ "beginCaptures": {
561
+ "2": {
562
+ "name": "keyword.other.haskell"
563
+ }
564
+ },
565
+ "endCaptures": {
566
+ "1": {
567
+ "name": "keyword.other.haskell"
568
+ }
569
+ },
570
+ "patterns": [
571
+ {
572
+ "include": "#pragma"
573
+ },
574
+ {
575
+ "include": "#type_signature"
576
+ }
577
+ ]
578
+ }
579
+ ]
580
+ },
581
+ "foreign_import": {
582
+ "patterns": [
583
+ {
584
+ "name": "meta.foreign.haskell",
585
+ "begin": "^([ \\t]*)(foreign)\\s+(import|export)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
586
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
587
+ "beginCaptures": {
588
+ "2": {
589
+ "name": "keyword.other.haskell"
590
+ },
591
+ "3": {
592
+ "name": "keyword.other.haskell"
593
+ }
594
+ },
595
+ "patterns": [
596
+ {
597
+ "match": "(?:un)?safe",
598
+ "captures": {
599
+ "0": {
600
+ "name": "keyword.other.haskell"
601
+ }
602
+ }
603
+ },
604
+ {
605
+ "include": "$self"
606
+ }
607
+ ]
608
+ }
609
+ ]
610
+ },
611
+ "regular_import": {
612
+ "patterns": [
613
+ {
614
+ "name": "meta.import.haskell",
615
+ "begin": "^([ \\t]*)(import)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
616
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
617
+ "beginCaptures": {
618
+ "2": {
619
+ "name": "keyword.other.haskell"
620
+ }
621
+ },
622
+ "patterns": [
623
+ {
624
+ "include": "#module_name"
625
+ },
626
+ {
627
+ "include": "#module_exports"
628
+ },
629
+ {
630
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(qualified|as|hiding)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
631
+ "captures": {
632
+ "1": {
633
+ "name": "keyword.other.haskell"
634
+ }
635
+ }
636
+ }
637
+ ]
638
+ }
639
+ ]
640
+ },
641
+ "data_decl": {
642
+ "patterns": [
643
+ {
644
+ "name": "meta.declaration.type.data.haskell",
645
+ "begin": "^([ \\t]*)(data|newtype)\\s+((?:(?!=|where).)*)",
646
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
647
+ "beginCaptures": {
648
+ "2": {
649
+ "name": "storage.type.data.haskell"
650
+ },
651
+ "3": {
652
+ "name": "meta.type-signature.haskell",
653
+ "patterns": [
654
+ {
655
+ "include": "#family_and_instance"
656
+ },
657
+ {
658
+ "include": "#type_signature"
659
+ }
660
+ ]
661
+ }
662
+ },
663
+ "patterns": [
664
+ {
665
+ "include": "#comments"
666
+ },
667
+ {
668
+ "include": "#where"
669
+ },
670
+ {
671
+ "include": "#deriving"
672
+ },
673
+ {
674
+ "include": "#assignment_op"
675
+ },
676
+ {
677
+ "match": "(?:(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*)(?:((?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+))(?:(?:\\s+)(?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)))*)?))",
678
+ "captures": {
679
+ "1": {
680
+ "patterns": [
681
+ {
682
+ "include": "#type_ctor"
683
+ }
684
+ ]
685
+ },
686
+ "2": {
687
+ "name": "meta.type-signature.haskell",
688
+ "patterns": [
689
+ {
690
+ "include": "#type_signature"
691
+ }
692
+ ]
693
+ }
694
+ }
695
+ },
696
+ {
697
+ "match": "\\|",
698
+ "captures": {
699
+ "0": {
700
+ "name": "punctuation.separator.pipe.haskell"
701
+ }
702
+ }
703
+ },
704
+ {
705
+ "name": "meta.declaration.type.data.record.block.haskell",
706
+ "begin": "\\{",
707
+ "beginCaptures": {
708
+ "0": {
709
+ "name": "keyword.operator.record.begin.haskell"
710
+ }
711
+ },
712
+ "end": "\\}",
713
+ "endCaptures": {
714
+ "0": {
715
+ "name": "keyword.operator.record.end.haskell"
716
+ }
717
+ },
718
+ "patterns": [
719
+ {
720
+ "include": "#comments"
721
+ },
722
+ {
723
+ "include": "#comma"
724
+ },
725
+ {
726
+ "include": "#record_field_declaration"
727
+ }
728
+ ]
729
+ },
730
+ {
731
+ "include": "#ctor_type_declaration"
732
+ }
733
+ ]
734
+ }
735
+ ]
736
+ },
737
+ "type_alias": {
738
+ "patterns": [
739
+ {
740
+ "name": "meta.declaration.type.type.haskell",
741
+ "begin": "^([ \\t]*)(type)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
742
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
743
+ "contentName": "meta.type-signature.haskell",
744
+ "beginCaptures": {
745
+ "2": {
746
+ "name": "storage.type.data.haskell"
747
+ }
748
+ },
749
+ "patterns": [
750
+ {
751
+ "include": "#comments"
752
+ },
753
+ {
754
+ "include": "#family_and_instance"
755
+ },
756
+ {
757
+ "include": "#where"
758
+ },
759
+ {
760
+ "include": "#assignment_op"
761
+ },
762
+ {
763
+ "include": "#type_signature"
764
+ }
765
+ ]
766
+ }
767
+ ]
768
+ },
769
+ "keywords": {
770
+ "patterns": [
771
+ {
772
+ "name": "keyword.other.haskell",
773
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(deriving|where|data|type|newtype)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
774
+ },
775
+ {
776
+ "name": "storage.type.haskell",
777
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(data|type|newtype)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
778
+ },
779
+ {
780
+ "name": "keyword.operator.haskell",
781
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))infix[lr]?(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
782
+ },
783
+ {
784
+ "name": "keyword.control.haskell",
785
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(do|if|then|else|case|of|let|in|default)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
786
+ }
787
+ ]
788
+ },
789
+ "c_preprocessor": {
790
+ "patterns": [
791
+ {
792
+ "name": "meta.preprocessor.c.haskell",
793
+ "begin": "^(?=#)",
794
+ "end": "(?<!\\\\)(?=\\n)",
795
+ "patterns": [
796
+ {
797
+ "include": "source.c"
798
+ }
799
+ ]
800
+ }
801
+ ]
802
+ },
803
+ "string": {
804
+ "patterns": [
805
+ {
806
+ "name": "string.quoted.double.haskell",
807
+ "begin": "\"",
808
+ "end": "\"",
809
+ "beginCaptures": {
810
+ "0": {
811
+ "name": "punctuation.definition.string.begin.haskell"
812
+ }
813
+ },
814
+ "endCaptures": {
815
+ "0": {
816
+ "name": "punctuation.definition.string.end.haskell"
817
+ }
818
+ },
819
+ "patterns": [
820
+ {
821
+ "include": "#characters"
822
+ },
823
+ {
824
+ "begin": "\\\\\\s",
825
+ "end": "\\\\",
826
+ "beginCaptures": {
827
+ "0": {
828
+ "name": "markup.other.escape.newline.begin.haskell"
829
+ }
830
+ },
831
+ "endCaptures": {
832
+ "0": {
833
+ "name": "markup.other.escape.newline.end.haskell"
834
+ }
835
+ },
836
+ "patterns": [
837
+ {
838
+ "include": "#invalid"
839
+ }
840
+ ]
841
+ }
842
+ ]
843
+ }
844
+ ]
845
+ },
846
+ "newline_escape": {
847
+ "patterns": [
848
+ {
849
+ "name": "markup.other.escape.newline.haskell",
850
+ "match": "\\\\$"
851
+ }
852
+ ]
853
+ },
854
+ "quoted_character": {
855
+ "patterns": [
856
+ {
857
+ "name": "string.quoted.single.haskell",
858
+ "match": "(')((?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\^[A-Z@\\[\\]\\\\\\^_])))(')",
859
+ "captures": {
860
+ "1": {
861
+ "name": "punctuation.definition.string.begin.haskell"
862
+ },
863
+ "2": {
864
+ "patterns": [
865
+ {
866
+ "include": "#characters"
867
+ }
868
+ ]
869
+ },
870
+ "3": {
871
+ "name": "punctuation.definition.string.end.haskell"
872
+ }
873
+ }
874
+ }
875
+ ]
876
+ },
877
+ "scoped_type": {
878
+ "patterns": [
879
+ {
880
+ "match": "\\((?<paren>(?:[^()]|\\(\\g<paren>\\))*)(::|∷)(?<paren2>(?:[^()]|\\(\\g<paren2>\\))*)\\)",
881
+ "captures": {
882
+ "1": {
883
+ "patterns": [
884
+ {
885
+ "include": "source.haskell"
886
+ }
887
+ ]
888
+ },
889
+ "2": {
890
+ "name": "keyword.other.double-colon.haskell"
891
+ },
892
+ "3": {
893
+ "name": "meta.type-signature.haskell",
894
+ "patterns": [
895
+ {
896
+ "include": "#type_signature"
897
+ }
898
+ ]
899
+ }
900
+ }
901
+ },
902
+ {
903
+ "match": "(::|∷)(.*?)(?:(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(<-|=)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])|$)",
904
+ "captures": {
905
+ "1": {
906
+ "name": "keyword.other.double-colon.haskell"
907
+ },
908
+ "2": {
909
+ "name": "meta.type-signature.haskell",
910
+ "patterns": [
911
+ {
912
+ "include": "#type_signature"
913
+ }
914
+ ]
915
+ },
916
+ "3": {
917
+ "patterns": [
918
+ {
919
+ "include": "#assignment_op"
920
+ },
921
+ {
922
+ "include": "#operator"
923
+ }
924
+ ]
925
+ }
926
+ }
927
+ }
928
+ ]
929
+ },
930
+ "scoped_type_override": {
931
+ "patterns": [
932
+ {
933
+ "match": "^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*(::|∷)))(.*)(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(<-|=)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
934
+ "captures": {
935
+ "2": {
936
+ "patterns": [
937
+ {
938
+ "include": "#identifier"
939
+ }
940
+ ]
941
+ },
942
+ "3": {
943
+ "name": "keyword.other.double-colon.haskell"
944
+ },
945
+ "4": {
946
+ "name": "meta.type-signature.haskell",
947
+ "patterns": [
948
+ {
949
+ "include": "#type_signature"
950
+ }
951
+ ]
952
+ },
953
+ "5": {
954
+ "patterns": [
955
+ {
956
+ "include": "#assignment_op"
957
+ },
958
+ {
959
+ "include": "#operator"
960
+ }
961
+ ]
962
+ }
963
+ }
964
+ }
965
+ ]
966
+ },
967
+ "comma": {
968
+ "patterns": [
969
+ {
970
+ "name": "punctuation.separator.comma.haskell",
971
+ "match": ","
972
+ }
973
+ ]
974
+ },
975
+ "lit_num": {
976
+ "patterns": [
977
+ {
978
+ "name": "constant.numeric.hexadecimal.haskell",
979
+ "match": "0[xX][0-9a-fA-F]+"
980
+ },
981
+ {
982
+ "name": "constant.numeric.octal.haskell",
983
+ "match": "0[oO][0-7]+"
984
+ },
985
+ {
986
+ "name": "constant.numeric.float.haskell",
987
+ "match": "[0-9]+(\\.[0-9]+[eE][+-]?|\\.|[eE][+-]?)[0-9]+"
988
+ },
989
+ {
990
+ "name": "constant.numeric.decimal.haskell",
991
+ "match": "[0-9]+"
992
+ }
993
+ ]
994
+ },
995
+ "operator": {
996
+ "patterns": [
997
+ {
998
+ "name": "keyword.operator.haskell",
999
+ "match": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+"
1000
+ }
1001
+ ]
1002
+ },
1003
+ "identifier": {
1004
+ "patterns": [
1005
+ {
1006
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1007
+ "name": "identifier.haskell",
1008
+ "captures": {
1009
+ "0": {
1010
+ "patterns": [
1011
+ {
1012
+ "include": "#module_name_prefix"
1013
+ },
1014
+ {
1015
+ "name": "support.function.prelude.haskell",
1016
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(abs|acos|acosh|all|and|any|appendFile|asTypeOf|asin|asinh|atan|atan2|atanh|break|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldMap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|mappend|max|maxBound|maximum|maybe|mconcat|mempty|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|pure|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequenceA|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|traverse|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1017
+ }
1018
+ ]
1019
+ }
1020
+ }
1021
+ }
1022
+ ]
1023
+ },
1024
+ "type_name": {
1025
+ "patterns": [
1026
+ {
1027
+ "name": "entity.name.type.haskell",
1028
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1029
+ "captures": {
1030
+ "0": {
1031
+ "patterns": [
1032
+ {
1033
+ "include": "#module_name_prefix"
1034
+ },
1035
+ {
1036
+ "name": "entity.other.inherited-class.prelude.haskell",
1037
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(Applicative|Bounded|Enum|Eq|Floating|Foldable|Fractional|Functor|Integral|Monad|Monoid|Num|Ord|Read|Real|RealFloat|RealFrac|Show|Traversable)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1038
+ },
1039
+ {
1040
+ "name": "support.class.prelude.haskell",
1041
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(Either|FilePath|IO|IOError|Integer|Maybe|Ordering|Rational|ReadS|ShowS|String|Bool|Char|Double|Float|Int|Word)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1042
+ }
1043
+ ]
1044
+ }
1045
+ }
1046
+ }
1047
+ ]
1048
+ },
1049
+ "type_ctor": {
1050
+ "patterns": [
1051
+ {
1052
+ "name": "entity.name.tag.haskell",
1053
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1054
+ "captures": {
1055
+ "0": {
1056
+ "patterns": [
1057
+ {
1058
+ "include": "#module_name_prefix"
1059
+ },
1060
+ {
1061
+ "name": "support.tag.prelude.haskell",
1062
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(EQ|GT|Just|LT|Left|Nothing|Right|True|False)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1063
+ }
1064
+ ]
1065
+ }
1066
+ }
1067
+ }
1068
+ ]
1069
+ },
1070
+ "where": {
1071
+ "patterns": [
1072
+ {
1073
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))where(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1074
+ "name": "keyword.other.haskell"
1075
+ }
1076
+ ]
1077
+ },
1078
+ "family_and_instance": {
1079
+ "patterns": [
1080
+ {
1081
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(family|instance)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1082
+ "name": "keyword.other.haskell"
1083
+ }
1084
+ ]
1085
+ },
1086
+ "invalid": {
1087
+ "patterns": [
1088
+ {
1089
+ "match": "\\S+",
1090
+ "name": "invalid.illegal.character-not-allowed-here.haskell"
1091
+ }
1092
+ ]
1093
+ },
1094
+ "function_name": {
1095
+ "patterns": [
1096
+ {
1097
+ "name": "entity.name.function.haskell",
1098
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1099
+ }
1100
+ ]
1101
+ },
1102
+ "assignment_op": {
1103
+ "patterns": [
1104
+ {
1105
+ "match": "=",
1106
+ "captures": {
1107
+ "0": {
1108
+ "name": "keyword.operator.assignment.haskell"
1109
+ }
1110
+ }
1111
+ }
1112
+ ]
1113
+ },
1114
+ "attribute_name": {
1115
+ "patterns": [
1116
+ {
1117
+ "name": "entity.other.attribute-name.haskell",
1118
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}]))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1119
+ }
1120
+ ]
1121
+ }
1122
+ }
1123
+ }