github-linguist 5.2.0 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/annotation.liquidhaskell.haskell.json +1445 -0
  3. data/grammars/hint.haskell.json +134 -17
  4. data/grammars/hint.message.haskell.json +134 -17
  5. data/grammars/hint.type.haskell.json +134 -17
  6. data/grammars/source.abl.json +48 -48
  7. data/grammars/source.afm.json +8 -1
  8. data/grammars/source.angelscript.json +195 -0
  9. data/grammars/source.ats.json +128 -58
  10. data/grammars/source.awk.json +138 -138
  11. data/grammars/source.ballerina.json +434 -0
  12. data/grammars/source.chapel.json +1 -1
  13. data/grammars/source.clips.json +20 -20
  14. data/grammars/source.cobol.json +4 -3
  15. data/grammars/source.coffee.json +556 -109
  16. data/grammars/source.cs.json +10 -5
  17. data/grammars/source.csound-document.json +1 -1
  18. data/grammars/source.csound-score.json +9 -9
  19. data/grammars/source.csound.json +23 -28
  20. data/grammars/source.css.json +6 -5
  21. data/grammars/source.data-weave.json +1584 -0
  22. data/grammars/source.elixir.json +3 -61
  23. data/grammars/source.elm.json +88 -88
  24. data/grammars/source.emacs.lisp.json +12 -1
  25. data/grammars/source.haskell.json +134 -17
  26. data/grammars/source.hsig.json +1376 -0
  27. data/grammars/source.httpspec.json +128 -128
  28. data/grammars/source.jison.json +6 -14
  29. data/grammars/source.jisonlex.json +1 -9
  30. data/grammars/source.js.json +1 -0
  31. data/grammars/source.js.regexp.json +0 -4
  32. data/grammars/source.js.regexp.replacement.json +0 -4
  33. data/grammars/source.jsdoc.json +3 -3
  34. data/grammars/source.lsl.json +146 -53
  35. data/grammars/source.mercury.json +166 -166
  36. data/grammars/source.ne.json +108 -0
  37. data/grammars/source.nim_filter.json +51 -51
  38. data/grammars/source.nut.json +266 -0
  39. data/grammars/source.opal.json +112 -112
  40. data/grammars/source.opalsysdefs.json +16 -16
  41. data/grammars/source.pan.json +1 -1
  42. data/grammars/source.papyrus.skyrim.json +720 -720
  43. data/grammars/source.pawn.json +2 -2
  44. data/grammars/source.prolog.eclipse.json +42 -42
  45. data/grammars/source.prolog.json +41 -41
  46. data/grammars/source.purescript.json +41 -25
  47. data/grammars/source.python.json +47 -34
  48. data/grammars/source.racket.json +54 -54
  49. data/grammars/source.reason.json +37 -3
  50. data/grammars/source.regexp.python.json +31 -0
  51. data/grammars/source.ruby.gemfile.json +27 -0
  52. data/grammars/source.ruby.json +1057 -356
  53. data/grammars/source.rust.json +1 -1
  54. data/grammars/source.sbt.json +13 -3
  55. data/grammars/source.scala.json +74 -55
  56. data/grammars/source.shaderlab.json +1 -1
  57. data/grammars/source.shell.json +26 -21
  58. data/grammars/source.shen.json +91 -91
  59. data/grammars/source.sqf.json +1 -1
  60. data/grammars/source.supercollider.json +1 -1
  61. data/grammars/source.swift.json +4 -0
  62. data/grammars/source.terra.json +36 -37
  63. data/grammars/source.terraform.json +98 -98
  64. data/grammars/source.ts.json +2231 -1677
  65. data/grammars/source.tsx.json +142 -3520
  66. data/grammars/source.vbnet.json +201 -263
  67. data/grammars/source.viml.json +2 -2
  68. data/grammars/source.wdl.json +200 -0
  69. data/grammars/source.yaml.json +34 -16
  70. data/grammars/text.find-refs.json +3 -3
  71. data/grammars/text.haml.json +1 -1
  72. data/grammars/text.html.abl.json +6 -6
  73. data/grammars/text.html.erb.json +8 -11
  74. data/grammars/text.html.php.blade.json +256 -220
  75. data/grammars/text.html.vue.json +1 -1
  76. data/grammars/text.slim.json +31 -17
  77. data/grammars/text.tex.latex.haskell.json +150 -33
  78. data/lib/linguist/heuristics.rb +8 -0
  79. data/lib/linguist/languages.json +1 -1
  80. data/lib/linguist/languages.yml +82 -26
  81. data/lib/linguist/samples.json +134512 -132868
  82. data/lib/linguist/vendor.yml +3 -0
  83. data/lib/linguist/version.rb +1 -1
  84. metadata +13 -4
@@ -0,0 +1,108 @@
1
+ {
2
+ "fileTypes": [
3
+ "ne"
4
+ ],
5
+ "name": "nearley",
6
+ "patterns": [
7
+ {
8
+ "match": "@include|@builtin|@lexer",
9
+ "name": "keyword.control.ne"
10
+ },
11
+ {
12
+ "captures": {
13
+ "1": {
14
+ "name": "entity.name.type.ne"
15
+ },
16
+ "2": {
17
+ "name": "variable.parameter.ne"
18
+ },
19
+ "3": {
20
+ "name": "keyword.operator.ne"
21
+ }
22
+ },
23
+ "match": "([\\w+?]+)(\\[.+\\])?\\s+((-|=)+>)"
24
+ },
25
+ {
26
+ "match": "\\$[\\w+?]+",
27
+ "name": "variable.parameter.ne"
28
+ },
29
+ {
30
+ "match": "%[\\w+?]+",
31
+ "name": "storage.type.ne"
32
+ },
33
+ {
34
+ "match": "null",
35
+ "name": "constant.language.ne"
36
+ },
37
+ {
38
+ "begin": "([\\w+?]+\\[)",
39
+ "captures": {
40
+ "1": {
41
+ "name": "entity.name.function"
42
+ },
43
+ "2": {
44
+ "name": "entity.name.function"
45
+ }
46
+ },
47
+ "end": "(\\])",
48
+ "patterns": [
49
+ {
50
+ "include": "$self"
51
+ }
52
+ ]
53
+ },
54
+ {
55
+ "match": "[\\w+?]+",
56
+ "name": "entity.name.type.ne"
57
+ },
58
+ {
59
+ "match": "(\\|)|(:\\+)|(:\\*)|(:\\?)|(\\()|(\\))",
60
+ "name": "keyword.operator.ne"
61
+ },
62
+ {
63
+ "begin": "#",
64
+ "end": "\\n",
65
+ "name": "comment.line.ne"
66
+ },
67
+ {
68
+ "begin": "\\[",
69
+ "end": "\\]",
70
+ "name": "string.regex.ne",
71
+ "patterns": [
72
+ {
73
+ "match": "\\\\.",
74
+ "name": "constant.character.escape.ne"
75
+ }
76
+ ]
77
+ },
78
+ {
79
+ "begin": "\"",
80
+ "end": "\"",
81
+ "name": "string.quoted.double.ne",
82
+ "patterns": [
83
+ {
84
+ "match": "\\\\.",
85
+ "name": "constant.character.escape.ne"
86
+ }
87
+ ]
88
+ },
89
+ {
90
+ "begin": "(@?{%)",
91
+ "captures": {
92
+ "1": {
93
+ "name": "comment.block.ne"
94
+ },
95
+ "2": {
96
+ "name": "comment.block.ne"
97
+ }
98
+ },
99
+ "end": "(%})",
100
+ "patterns": [
101
+ {
102
+ "include": "source.js"
103
+ }
104
+ ]
105
+ }
106
+ ],
107
+ "scopeName": "source.ne"
108
+ }
@@ -1,106 +1,106 @@
1
1
  {
2
+ "name": "Nim Source Code Filter",
3
+ "scopeName": "source.nim_filter",
2
4
  "fileTypes": [
3
5
  "nimf"
4
6
  ],
5
- "name": "Nim Source Code Filter",
7
+ "uuid": "c6396a10-4bb4-4929-aee5-1d893828b098",
6
8
  "patterns": [
7
9
  {
8
- "begin": "\\A(#!)",
9
- "end": "\\z(!?\\n)",
10
10
  "name": "meta.start.nim_filter",
11
+ "begin": "\\A(#!)",
11
12
  "patterns": [
12
13
  {
13
- "begin": "^\\s*#",
14
- "end": "\\n",
15
14
  "name": "comment.line.nim_filter",
15
+ "begin": "^\\s*#",
16
16
  "patterns": [
17
17
  {
18
- "match": "\\b((\\d[_\\d]*\\.[_\\d]+([eE][\\+\\-]?\\d[_\\d]*)?)|([eE][\\+\\-]?\\d[_\\d]*))('[fF](32|64))?",
19
- "name": "constant.numeric.float.decimal.nim_filter"
18
+ "name": "constant.numeric.float.decimal.nim_filter",
19
+ "match": "\\b((\\d[_\\d]*\\.[_\\d]+([eE][\\+\\-]?\\d[_\\d]*)?)|([eE][\\+\\-]?\\d[_\\d]*))('[fF](32|64))?"
20
20
  },
21
21
  {
22
- "match": "\\b(0[xX][0-9A-Fa-f][_0-9A-Fa-f]*)('[iIuU](8|16|32|64))?",
23
- "name": "constant.numeric.integer.hexadecimal.nim_filter"
22
+ "name": "constant.numeric.integer.hexadecimal.nim_filter",
23
+ "match": "\\b(0[xX][0-9A-Fa-f][_0-9A-Fa-f]*)('[iIuU](8|16|32|64))?"
24
24
  },
25
25
  {
26
26
  "comment": "For simplicity's sake, we don't enforce floats only having 32 and 64 prefix types.",
27
- "match": "\\b(0o[0-7][_0-7]*)('[iIuUfF](8|16|32|64))?",
28
- "name": "constant.numeric.integer.octal.nim_filter"
27
+ "name": "constant.numeric.integer.octal.nim_filter",
28
+ "match": "\\b(0o[0-7][_0-7]*)('[iIuUfF](8|16|32|64))?"
29
29
  },
30
30
  {
31
- "match": "\\b(0(b|B)[01][_01]*)('[iIuUfF](8|16|32|64))?",
32
- "name": "constant.numeric.integer.binary.nim_filter"
31
+ "name": "constant.numeric.integer.binary.nim_filter",
32
+ "match": "\\b(0(b|B)[01][_01]*)('[iIuUfF](8|16|32|64))?"
33
33
  },
34
34
  {
35
- "match": "\\b(\\d[_\\d]*)('[iIuUfF](8|16|32|64))?",
36
- "name": "constant.numeric.integer.decimal.nim_filter"
35
+ "name": "constant.numeric.integer.decimal.nim_filter",
36
+ "match": "\\b(\\d[_\\d]*)('[iIuUfF](8|16|32|64))?"
37
37
  },
38
38
  {
39
39
  "comment": "Language Constants.",
40
- "match": "\\b(true|false|inf|nil)\\b",
41
- "name": "constant.language.nim_filter"
40
+ "name": "constant.language.nim_filter",
41
+ "match": "\\b(true|false|inf|nil)\\b"
42
42
  },
43
43
  {
44
44
  "comment": "Keywords that affect program control flow or scope.",
45
- "match": "\\b(block|break|case|continue|do|elif|else|end|except|finally|for|if|raise|return|try|when|while|yield)\\b",
46
- "name": "keyword.control.nim_filter"
45
+ "name": "keyword.control.nim_filter",
46
+ "match": "\\b(block|break|case|continue|do|elif|else|end|except|finally|for|if|raise|return|try|when|while|yield)\\b"
47
47
  },
48
48
  {
49
49
  "comment": "Keyword boolean operators for expressions.",
50
- "match": "(\\b(and|in|is|isnot|not|notin|or|xor)\\b)",
51
- "name": "keyword.operator.boolean.nim_filter"
50
+ "name": "keyword.operator.boolean.nim_filter",
51
+ "match": "(\\b(and|in|is|isnot|not|notin|or|xor)\\b)"
52
52
  },
53
53
  {
54
54
  "comment": "Generic operators for expressions.",
55
- "match": "(\\b()\\b|(=|\\+|-|\\*|/|<|>|@|\\$|~|&|%|!|\\?|\\^|\\.|:|\\\\)+)",
56
- "name": "keyword.operator.nim_filter"
55
+ "name": "keyword.operator.nim_filter",
56
+ "match": "(\\b()\\b|(=|\\+|-|\\*|/|<|>|@|\\$|~|&|%|!|\\?|\\^|\\.|:|\\\\)+)"
57
57
  },
58
58
  {
59
59
  "comment": "Other keywords.",
60
- "match": "(\\b(addr|as|asm|atomic|bind|cast|concept|const|discard|distinct|div|enum|export|from|import|include|let|mod|object|of|ptr|ref|shl|shr|static|tuple|type|var)\\b)",
61
- "name": "keyword.other.nim_filter"
60
+ "name": "keyword.other.nim_filter",
61
+ "match": "(\\b(addr|as|asm|atomic|bind|cast|concept|const|discard|distinct|div|enum|export|from|import|include|let|mod|object|of|ptr|ref|shl|shr|static|tuple|type|var)\\b)"
62
62
  },
63
63
  {
64
64
  "comment": "Invalid and unused keywords.",
65
- "match": "(\\b(converter|generic|interface|lambda|mixin|out|shared|with|without)\\b)",
66
- "name": "keyword.invalid.nim_filter"
65
+ "name": "keyword.invalid.nim_filter",
66
+ "match": "(\\b(converter|generic|interface|lambda|mixin|out|shared|with|without)\\b)"
67
67
  },
68
68
  {
69
69
  "comment": "Built-in, concrete types.",
70
- "match": "\\b(((uint|int|float)(8|16|32|64)?)|bool|string|cstring|char|tobject|typedesc)\\b",
71
- "name": "storage.type.concrete.nim_filter"
70
+ "name": "storage.type.concrete.nim_filter",
71
+ "match": "\\b(((uint|int|float)(8|16|32|64)?)|bool|string|cstring|char|tobject|typedesc)\\b"
72
72
  },
73
73
  {
74
74
  "comment": "Built-in, generic types.",
75
- "match": "\\b(range|array|seq|natural|set|ref|ptr)\\b",
76
- "name": "storage.type.generic.nim_filter"
75
+ "name": "storage.type.generic.nim_filter",
76
+ "match": "\\b(range|array|seq|natural|set|ref|ptr)\\b"
77
77
  },
78
78
  {
79
79
  "comment": "Function types",
80
- "match": "\\b(proc|iterator|method|template|macro)\\b",
81
- "name": "storage.type.function.nim_filter"
80
+ "name": "storage.type.function.nim_filter",
81
+ "match": "\\b(proc|iterator|method|template|macro)\\b"
82
82
  },
83
83
  {
84
84
  "comment": "Common functions",
85
- "match": "\\b(echo|newException)\\b",
86
- "name": "keyword.function.nim_filter"
85
+ "name": "keyword.function.nim_filter",
86
+ "match": "\\b(echo|newException)\\b"
87
87
  },
88
88
  {
89
89
  "comment": "Special types.",
90
- "match": "\\b(openarray|varargs|void)\\b",
91
- "name": "storage.type.generic.nim_filter"
90
+ "name": "storage.type.generic.nim_filter",
91
+ "match": "\\b(openarray|varargs|void)\\b"
92
92
  },
93
93
  {
94
- "begin": "(\\w[_\\w]*)?\\\"\\\"\\\"",
95
94
  "comment": "(Raw) Triple Quoted String",
96
- "end": "\\\"\\\"\\\"[^\"]",
97
- "name": "string.quoted.triple.nim_filter"
95
+ "name": "string.quoted.triple.nim_filter",
96
+ "begin": "(\\w[_\\w]*)?\\\"\\\"\\\"",
97
+ "end": "\\\"\\\"\\\"[^\"]"
98
98
  },
99
99
  {
100
- "begin": "r\\\"",
101
100
  "comment": "Raw Double Quoted String",
102
- "end": "\\\"",
103
101
  "name": "string.quoted.double.raw.nim_filter",
102
+ "begin": "r\\\"",
103
+ "end": "\\\"",
104
104
  "patterns": [
105
105
  {
106
106
  "match": "\\\"\\\""
@@ -108,10 +108,10 @@
108
108
  ]
109
109
  },
110
110
  {
111
- "begin": "(\\w[_\\w]*)?\\\"",
112
111
  "comment": "Double Quoted String",
113
- "end": "\\\"",
114
112
  "name": "string.quoted.double.nim_filter",
113
+ "begin": "(\\w[_\\w]*)?\\\"",
114
+ "end": "\\\"",
115
115
  "patterns": [
116
116
  {
117
117
  "match": "(\\\\([abenrclftv]|[\"']|[0-9])|x[0-9A-Fa-f]{2})"
@@ -120,14 +120,14 @@
120
120
  },
121
121
  {
122
122
  "comment": "Single quoted character literal",
123
- "match": "\\'(\\\\\\d{1,3}|\\\\?[^\\n]?)\\'",
124
- "name": "string.quoted.single.nim_filter"
123
+ "name": "string.quoted.single.nim_filter",
124
+ "match": "\\'(\\\\\\d{1,3}|\\\\?[^\\n]?)\\'"
125
125
  }
126
- ]
126
+ ],
127
+ "end": "\\n"
127
128
  }
128
- ]
129
+ ],
130
+ "end": "\\z(!?\\n)"
129
131
  }
130
- ],
131
- "scopeName": "source.nim_filter",
132
- "uuid": "c6396a10-4bb4-4929-aee5-1d893828b098"
132
+ ]
133
133
  }
@@ -0,0 +1,266 @@
1
+ {
2
+ "comment": "Squirrel Syntax: version 0.2.1",
3
+ "fileTypes": [
4
+ "nut"
5
+ ],
6
+ "name": "Squirrel",
7
+ "patterns": [
8
+ {
9
+ "include": "#special-block"
10
+ },
11
+ {
12
+ "include": "#comments"
13
+ },
14
+ {
15
+ "match": "\\b(break|case|catch|default|do|else|for|foreach|if|resume|return|switch|throw|try|while|yield)\\b",
16
+ "name": "keyword.control.squirrel"
17
+ },
18
+ {
19
+ "match": "\\b(clone|delete|in|instanceof|typeof)\\b",
20
+ "name": "keyword.control.squirrel"
21
+ },
22
+ {
23
+ "match": "\\b(base|this)\\b",
24
+ "name": "variable.language.squirrel"
25
+ },
26
+ {
27
+ "match": "\\b(class|constructor|function|local)\\b",
28
+ "name": "storage.type.squirrel"
29
+ },
30
+ {
31
+ "match": "\\b(const|extends|static)\\b",
32
+ "name": "storage.modifier.squirrel"
33
+ },
34
+ {
35
+ "match": "\\b(null|true|false)\\b",
36
+ "name": "constant.squirrel.squirrel"
37
+ },
38
+ {
39
+ "match": "!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|==|=|!=|<=>|<=|>=|<-|>>>|<<|>>|<|>|!|&&|\\|\\||\\?\\:|\\*=|(?<!\\()/=|%=|\\+=|\\-=|&=|%=|\\.",
40
+ "name": "keyword.operator.squirrel"
41
+ },
42
+ {
43
+ "match": "\\b((0(x|X)[0-9a-fA-F]+)|([0-9]+(\\.[0-9]+)?))\\b",
44
+ "name": "constant.numeric.squirrel"
45
+ },
46
+ {
47
+ "match": "\\b([_A-Za-z][_A-Za-z0-9]\\w*)\\b(?=\\s*(?:[({\"']|\\[\\[))",
48
+ "name": "support.function.any-method.squirrel"
49
+ },
50
+ {
51
+ "match": "(?<=[^.]\\.)\\b([_A-Za-z][_A-Za-z0-9]\\w*)",
52
+ "name": "variable.other.squirrel"
53
+ },
54
+ {
55
+ "include": "#attributes"
56
+ },
57
+ {
58
+ "include": "#block"
59
+ },
60
+ {
61
+ "include": "#strings"
62
+ }
63
+ ],
64
+ "repository": {
65
+ "attributes": {
66
+ "begin": "</",
67
+ "end": "/>",
68
+ "name": "meta.attributes.squirrel",
69
+ "patterns": [
70
+ {
71
+ "include": "$base"
72
+ }
73
+ ]
74
+ },
75
+ "block": {
76
+ "patterns": [
77
+ {
78
+ "begin": "\\{",
79
+ "beginCaptures": {
80
+ "0": {
81
+ "name": "punctuation.section.block.begin.bracket.curly.squirrel"
82
+ }
83
+ },
84
+ "end": "\\}",
85
+ "endCaptures": {
86
+ "0": {
87
+ "name": "punctuation.section.block.end.bracket.curly.squirrel"
88
+ }
89
+ },
90
+ "name": "meta.block.squirrel",
91
+ "patterns": [
92
+ {
93
+ "include": "$base"
94
+ }
95
+ ]
96
+ }
97
+ ]
98
+ },
99
+ "special-block": {
100
+ "patterns": [
101
+ {
102
+ "begin": "\\b(class)\\b\\s*([_A-Za-z][_A-Za-z0-9]*\\b)?+(\\s*(extends)\\s*([_A-Za-z][_A-Za-z0-9]*\\b))?",
103
+ "beginCaptures": {
104
+ "1": {
105
+ "name": "storage.type.squirrel"
106
+ },
107
+ "2": {
108
+ "name": "entity.name.type.squirrel"
109
+ },
110
+ "4": {
111
+ "name": "storage.type.modifier.squirrel"
112
+ },
113
+ "5": {
114
+ "name": "entity.name.type.inherited.squirrel"
115
+ }
116
+ },
117
+ "end": "(?<=\\})|(?=(=))",
118
+ "name": "meta.class-block.squirrel",
119
+ "patterns": [
120
+ {
121
+ "include": "#block"
122
+ }
123
+ ]
124
+ },
125
+ {
126
+ "begin": "\\b(function)\\b\\s*([_A-Za-z][_A-Za-z0-9]*\\b)?+(\\s*(::)\\s*([_A-Za-z][_A-Za-z0-9]*\\b))?",
127
+ "beginCaptures": {
128
+ "1": {
129
+ "name": "storage.type.squirrel"
130
+ },
131
+ "2": {
132
+ "name": "entity.name.type.squirrel"
133
+ },
134
+ "4": {
135
+ "name": "punctuation.separator.global.access.squirrel"
136
+ },
137
+ "5": {
138
+ "name": "entity.name.function.squirrel"
139
+ }
140
+ },
141
+ "end": "(?<=\\})|(?=(=))",
142
+ "name": "meta.function-block.squirrel",
143
+ "patterns": [
144
+ {
145
+ "include": "#block"
146
+ }
147
+ ]
148
+ },
149
+ {
150
+ "begin": "\\b([_A-Za-z][_A-Za-z0-9]*\\b)?+(\\s*(<-))",
151
+ "beginCaptures": {
152
+ "1": {
153
+ "name": "entity.name.type.squirrel"
154
+ },
155
+ "3": {
156
+ "name": "punctuation.separator.namespace.access.squirrel"
157
+ }
158
+ },
159
+ "end": "(?<=\\})|(?=(;|,|\\(|\\)|>|\\[|\\]|=))",
160
+ "name": "meta.namespace-block.squirrel",
161
+ "patterns": [
162
+ {
163
+ "include": "#block"
164
+ }
165
+ ]
166
+ }
167
+ ]
168
+ },
169
+ "comments": {
170
+ "patterns": [
171
+ {
172
+ "captures": {
173
+ "1": {
174
+ "name": "meta.toc-list.banner.block.squirrel"
175
+ }
176
+ },
177
+ "match": "^/\\* =(\\s*.*?)\\s*= \\*/$\\n?",
178
+ "name": "comment.block.squirrel"
179
+ },
180
+ {
181
+ "begin": "/\\*",
182
+ "beginCaptures": {
183
+ "0": {
184
+ "name": "punctuation.definition.comment.begin.squirrel"
185
+ }
186
+ },
187
+ "end": "\\*/",
188
+ "endCaptures": {
189
+ "0": {
190
+ "name": "punctuation.definition.comment.end.squirrel"
191
+ }
192
+ },
193
+ "name": "comment.block.squirrel"
194
+ },
195
+ {
196
+ "begin": "(^[ \\t]+)?(?=//)",
197
+ "beginCaptures": {
198
+ "1": {
199
+ "name": "punctuation.whitespace.comment.leading.squirrel"
200
+ }
201
+ },
202
+ "end": "(?!\\G)",
203
+ "patterns": [
204
+ {
205
+ "begin": "//",
206
+ "beginCaptures": {
207
+ "0": {
208
+ "name": "punctuation.definition.comment.squirrel"
209
+ }
210
+ },
211
+ "end": "(?=\\n)",
212
+ "name": "comment.line.double-slash.squirrel"
213
+ }
214
+ ]
215
+ },
216
+ {
217
+ "begin": "(^[ \\t]+)?(?=#)",
218
+ "beginCaptures": {
219
+ "1": {
220
+ "name": "punctuation.whitespace.comment.leading.squirrel"
221
+ }
222
+ },
223
+ "end": "(?!\\G)",
224
+ "patterns": [
225
+ {
226
+ "begin": "#",
227
+ "beginCaptures": {
228
+ "0": {
229
+ "name": "punctuation.definition.comment.squirrel"
230
+ }
231
+ },
232
+ "end": "(?=\\n)",
233
+ "name": "comment.line.hash.squirrel"
234
+ }
235
+ ]
236
+ }
237
+ ]
238
+ },
239
+ "strings": {
240
+ "patterns": [
241
+ {
242
+ "begin": "@?\"",
243
+ "beginCaptures": {
244
+ "0": {
245
+ "name": "punctuation.definition.string.begin.squirrel"
246
+ }
247
+ },
248
+ "end": "\"",
249
+ "endCaptures": {
250
+ "0": {
251
+ "name": "punctuation.definition.string.end.squirrel"
252
+ }
253
+ },
254
+ "name": "string.quoted.double.squirrel",
255
+ "patterns": [
256
+ {
257
+ "match": "\\\\.",
258
+ "name": "constant.character.escape.squirrel"
259
+ }
260
+ ]
261
+ }
262
+ ]
263
+ }
264
+ },
265
+ "scopeName": "source.nut"
266
+ }