haskell.json 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. {
  2. "aliases": [
  3. "hs"
  4. ],
  5. "keywords": "let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",
  6. "contains": [
  7. {
  8. "beginKeywords": "module",
  9. "end": "where",
  10. "keywords": "module where",
  11. "contains": [
  12. {
  13. "begin": "\\(",
  14. "end": "\\)",
  15. "illegal": "\"",
  16. "contains": [
  17. {
  18. "className": "meta",
  19. "begin": "{-#",
  20. "end": "#-}"
  21. },
  22. {
  23. "className": "meta",
  24. "begin": "^#",
  25. "end": "$"
  26. },
  27. {
  28. "className": "type",
  29. "begin": "\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"
  30. },
  31. {
  32. "className": "title",
  33. "begin": "[_a-z][\\w']*",
  34. "relevance": 0
  35. },
  36. {
  37. "variants": [
  38. {
  39. "className": "comment",
  40. "begin": "--",
  41. "end": "$",
  42. "contains": [
  43. {
  44. "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b"
  45. },
  46. {
  47. "className": "doctag",
  48. "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
  49. "relevance": 0
  50. }
  51. ]
  52. },
  53. {
  54. "className": "comment",
  55. "begin": "{-",
  56. "end": "-}",
  57. "contains": [
  58. "self",
  59. {
  60. "$ref": "#contains.0.contains.0.contains.4.variants.0.contains.0"
  61. },
  62. {
  63. "className": "doctag",
  64. "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
  65. "relevance": 0
  66. }
  67. ]
  68. }
  69. ]
  70. }
  71. ]
  72. },
  73. {
  74. "$ref": "#contains.0.contains.0.contains.4"
  75. }
  76. ],
  77. "illegal": "\\W\\.|;"
  78. },
  79. {
  80. "begin": "\\bimport\\b",
  81. "end": "$",
  82. "keywords": "import qualified as hiding",
  83. "contains": [
  84. {
  85. "$ref": "#contains.0.contains.0"
  86. },
  87. {
  88. "$ref": "#contains.0.contains.0.contains.4"
  89. }
  90. ],
  91. "illegal": "\\W\\.|;"
  92. },
  93. {
  94. "className": "class",
  95. "begin": "^(\\s*)?(class|instance)\\b",
  96. "end": "where",
  97. "keywords": "class family instance where",
  98. "contains": [
  99. {
  100. "className": "type",
  101. "begin": "\\b[A-Z][\\w']*",
  102. "relevance": 0
  103. },
  104. {
  105. "$ref": "#contains.0.contains.0"
  106. },
  107. {
  108. "$ref": "#contains.0.contains.0.contains.4"
  109. }
  110. ]
  111. },
  112. {
  113. "className": "class",
  114. "begin": "\\b(data|(new)?type)\\b",
  115. "end": "$",
  116. "keywords": "data family type newtype deriving",
  117. "contains": [
  118. {
  119. "$ref": "#contains.0.contains.0.contains.0"
  120. },
  121. {
  122. "$ref": "#contains.2.contains.0"
  123. },
  124. {
  125. "$ref": "#contains.0.contains.0"
  126. },
  127. {
  128. "begin": "{",
  129. "end": "}",
  130. "contains": {
  131. "$ref": "#contains.0.contains.0.contains"
  132. }
  133. },
  134. {
  135. "$ref": "#contains.0.contains.0.contains.4"
  136. }
  137. ]
  138. },
  139. {
  140. "beginKeywords": "default",
  141. "end": "$",
  142. "contains": [
  143. {
  144. "$ref": "#contains.2.contains.0"
  145. },
  146. {
  147. "$ref": "#contains.0.contains.0"
  148. },
  149. {
  150. "$ref": "#contains.0.contains.0.contains.4"
  151. }
  152. ]
  153. },
  154. {
  155. "beginKeywords": "infix infixl infixr",
  156. "end": "$",
  157. "contains": [
  158. {
  159. "className": "number",
  160. "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",
  161. "relevance": 0
  162. },
  163. {
  164. "$ref": "#contains.0.contains.0.contains.4"
  165. }
  166. ]
  167. },
  168. {
  169. "begin": "\\bforeign\\b",
  170. "end": "$",
  171. "keywords": "foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",
  172. "contains": [
  173. {
  174. "$ref": "#contains.2.contains.0"
  175. },
  176. {
  177. "className": "string",
  178. "begin": "\"",
  179. "end": "\"",
  180. "illegal": "\\n",
  181. "contains": [
  182. {
  183. "begin": "\\\\[\\s\\S]",
  184. "relevance": 0
  185. }
  186. ]
  187. },
  188. {
  189. "$ref": "#contains.0.contains.0.contains.4"
  190. }
  191. ]
  192. },
  193. {
  194. "className": "meta",
  195. "begin": "#!\\\/usr\\\/bin\\\/env runhaskell",
  196. "end": "$"
  197. },
  198. {
  199. "$ref": "#contains.0.contains.0.contains.0"
  200. },
  201. {
  202. "$ref": "#contains.0.contains.0.contains.1"
  203. },
  204. {
  205. "$ref": "#contains.6.contains.1"
  206. },
  207. {
  208. "$ref": "#contains.5.contains.0"
  209. },
  210. {
  211. "$ref": "#contains.2.contains.0"
  212. },
  213. {
  214. "className": "title",
  215. "begin": "^[_a-z][\\w']*",
  216. "relevance": 0
  217. },
  218. {
  219. "$ref": "#contains.0.contains.0.contains.4"
  220. },
  221. {
  222. "begin": "->|<-"
  223. }
  224. ]
  225. }