github-linguist 7.6.1 → 7.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +5 -5
  2. data/bin/github-linguist +17 -4
  3. data/grammars/annotation.liquidhaskell.haskell.json +58 -11
  4. data/grammars/etc.json +212 -3
  5. data/grammars/hidden.manref.json +29 -0
  6. data/grammars/hint.haskell.json +58 -11
  7. data/grammars/hint.message.haskell.json +58 -11
  8. data/grammars/hint.type.haskell.json +58 -11
  9. data/grammars/injections.etc.json +601 -1
  10. data/grammars/markdown.plantuml.codeblock.json +26 -0
  11. data/grammars/source.4dm.json +1100 -0
  12. data/grammars/source.abap.json +7 -7
  13. data/grammars/source.abnf.json +23 -1
  14. data/grammars/source.agda.json +32 -202
  15. data/grammars/source.ahk.json +9 -5
  16. data/grammars/source.angelscript.json +1 -1
  17. data/grammars/source.ballerina.json +54 -18
  18. data/grammars/source.chapel.json +4 -4
  19. data/grammars/source.csound.json +1 -1
  20. data/grammars/source.css.json +2 -2
  21. data/grammars/source.css.scss.json +164 -15
  22. data/grammars/source.curlrc.json +869 -65
  23. data/grammars/source.dart.json +58 -32
  24. data/grammars/source.dircolors.json +137 -0
  25. data/grammars/source.direct-x.json +135 -0
  26. data/grammars/source.ebnf.json +67 -39
  27. data/grammars/source.editorconfig.json +23 -5
  28. data/grammars/source.elixir.json +51 -0
  29. data/grammars/source.elm.json +1 -1
  30. data/grammars/source.emacs.lisp.json +10 -0
  31. data/grammars/source.faust.json +119 -0
  32. data/grammars/source.gcode.json +166 -8
  33. data/grammars/source.gfm.json +1 -1
  34. data/grammars/source.gitconfig.json +1 -1
  35. data/grammars/source.hack.json +200 -98
  36. data/grammars/source.haskell.json +58 -11
  37. data/grammars/source.hlsl.json +9 -5
  38. data/grammars/source.hosts.json +40 -0
  39. data/grammars/source.hsig.json +58 -11
  40. data/grammars/source.hx.json +4 -0
  41. data/grammars/source.igor.json +46 -2
  42. data/grammars/source.ini.npmrc.json +311 -0
  43. data/grammars/source.inno.json +133 -0
  44. data/grammars/source.inputrc.json +500 -0
  45. data/grammars/source.js.json +4 -4
  46. data/grammars/source.julia.json +69 -23
  47. data/grammars/source.kotlin.json +1 -1
  48. data/grammars/source.lean.json +19 -3
  49. data/grammars/source.lean.markdown.json +2598 -0
  50. data/grammars/source.lex.json +4 -4
  51. data/grammars/source.m4.json +141 -99
  52. data/grammars/source.man-conf.json +46 -34
  53. data/grammars/source.matlab.json +437 -184
  54. data/grammars/source.mcfunction-snapshot.json +21388 -561
  55. data/grammars/source.mcfunction.json +55 -5
  56. data/grammars/source.meson.json +1 -1
  57. data/grammars/source.mlir.json +37 -317
  58. data/grammars/source.mrc.json +740 -0
  59. data/grammars/source.nasl.json +155 -0
  60. data/grammars/source.nextflow.json +2 -2
  61. data/grammars/source.odin-ehr.json +806 -0
  62. data/grammars/source.odin.json +402 -0
  63. data/grammars/source.opts.json +12 -2
  64. data/grammars/source.p4.json +21 -5
  65. data/grammars/source.prisma.json +435 -0
  66. data/grammars/source.python.json +2 -0
  67. data/grammars/source.qasm.json +66 -0
  68. data/grammars/source.ql.json +1408 -0
  69. data/grammars/source.reason.json +28 -16
  70. data/grammars/source.rego.json +124 -0
  71. data/grammars/source.sass.json +158 -3
  72. data/grammars/source.scala.json +53 -18
  73. data/grammars/source.ssh-config.json +1 -14
  74. data/grammars/source.swift.json +162 -2
  75. data/grammars/source.sy.json +2088 -183
  76. data/grammars/source.terraform.json +576 -132
  77. data/grammars/source.tnsaudit.json +256 -0
  78. data/grammars/source.ts.json +159 -51
  79. data/grammars/source.tsx.json +160 -52
  80. data/grammars/source.v.json +559 -764
  81. data/grammars/source.vim-snippet.json +645 -0
  82. data/grammars/source.viml.json +6 -6
  83. data/grammars/source.webassembly.json +10 -0
  84. data/grammars/source.wgetrc.json +1640 -0
  85. data/grammars/source.wsd.json +775 -0
  86. data/grammars/source.zig.json +169 -304
  87. data/grammars/text.html.php.blade.json +1 -1
  88. data/grammars/text.html.riot.json +788 -0
  89. data/grammars/text.muse.json +1471 -0
  90. data/grammars/text.tex.latex.haskell.json +58 -11
  91. data/grammars/text.vim-help.json +383 -0
  92. data/grammars/version +1 -1
  93. data/lib/linguist/VERSION +1 -1
  94. data/lib/linguist/blob_helper.rb +4 -2
  95. data/lib/linguist/file_blob.rb +1 -1
  96. data/lib/linguist/generated.rb +60 -13
  97. data/lib/linguist/heuristics.yml +64 -4
  98. data/lib/linguist/languages.json +1 -1
  99. data/lib/linguist/languages.yml +336 -45
  100. data/lib/linguist/lazy_blob.rb +10 -10
  101. data/lib/linguist/linguist.bundle +0 -0
  102. data/lib/linguist/samples.json +43560 -31457
  103. data/lib/linguist/shebang.rb +5 -3
  104. data/lib/linguist/vendor.yml +9 -0
  105. metadata +29 -10
  106. data/grammars/source.LS.json +0 -85
  107. data/grammars/source.MCPOST.json +0 -54
  108. data/grammars/source.MOD.json +0 -55
  109. data/grammars/source.apt.json +0 -18
  110. data/grammars/source.jlex.json +0 -322
  111. data/grammars/source.yaml-ext.json +0 -324
@@ -14,6 +14,9 @@
14
14
  {
15
15
  "include": "#strings"
16
16
  },
17
+ {
18
+ "include": "#comments"
19
+ },
17
20
  {
18
21
  "name": "keyword.other.import.dart",
19
22
  "match": "\\b(as|show|hide)\\b"
@@ -40,10 +43,10 @@
40
43
  "include": "#annotations"
41
44
  },
42
45
  {
43
- "include": "#constants-and-special-vars"
46
+ "include": "#keywords"
44
47
  },
45
48
  {
46
- "include": "#keywords"
49
+ "include": "#constants-and-special-vars"
47
50
  },
48
51
  {
49
52
  "include": "#strings"
@@ -80,34 +83,31 @@
80
83
  }
81
84
  ]
82
85
  },
83
- "comments-doc": {
86
+ "comments-block": {
84
87
  "patterns": [
85
88
  {
86
- "match": "(///) (.*?)$",
87
- "captures": {
88
- "1": {
89
- "name": "comment.block.triple-slash.dart"
90
- },
91
- "2": {
92
- "name": "variable.other.source.dart"
89
+ "name": "comment.block.dart",
90
+ "begin": "/\\*",
91
+ "end": "\\*/",
92
+ "patterns": [
93
+ {
94
+ "include": "#comments-block"
93
95
  }
94
- }
95
- },
96
+ ]
97
+ }
98
+ ]
99
+ },
100
+ "comments-doc": {
101
+ "patterns": [
96
102
  {
97
- "match": "(///)(.*?)$",
98
- "captures": {
99
- "1": {
100
- "name": "comment.block.triple-slash.dart"
101
- },
102
- "2": {
103
- "name": "comment.block.documentation.dart",
104
- "patterns": [
105
- {
106
- "include": "#dartdoc"
107
- }
108
- ]
103
+ "name": "comment.block.documentation.dart",
104
+ "begin": "///",
105
+ "while": "^\\s*///",
106
+ "patterns": [
107
+ {
108
+ "include": "#dartdoc"
109
109
  }
110
- }
110
+ ]
111
111
  }
112
112
  ]
113
113
  },
@@ -121,6 +121,9 @@
121
121
  {
122
122
  "include": "#comments-doc-oldschool"
123
123
  },
124
+ {
125
+ "include": "#comments-block"
126
+ },
124
127
  {
125
128
  "include": "#dartdoc"
126
129
  }
@@ -131,9 +134,7 @@
131
134
  "comments-inline": {
132
135
  "patterns": [
133
136
  {
134
- "name": "comment.block.dart",
135
- "begin": "/\\*",
136
- "end": "\\*/"
137
+ "include": "#comments-block"
137
138
  },
138
139
  {
139
140
  "match": "((//).*)$",
@@ -161,7 +162,7 @@
161
162
  },
162
163
  {
163
164
  "name": "support.class.dart",
164
- "match": "(?\u003c![a-zA-Z0-9_$])[_$]*[A-Z][a-zA-Z0-9_$]*"
165
+ "match": "(?\u003c![a-zA-Z0-9_$])([_$]*[A-Z][a-zA-Z0-9_$]*|bool\\b|num\\b|int\\b|double\\b|dynamic\\b)"
165
166
  },
166
167
  {
167
168
  "match": "([_$]*[a-z][a-zA-Z0-9_$]*)(\u003c|\\(|\\s+=\u003e)",
@@ -183,6 +184,27 @@
183
184
  }
184
185
  }
185
186
  },
187
+ {
188
+ "match": "^ {4,}(?![ \\*]).*",
189
+ "captures": {
190
+ "0": {
191
+ "name": "variable.name.source.dart"
192
+ }
193
+ }
194
+ },
195
+ {
196
+ "contentName": "variable.other.source.dart",
197
+ "begin": "```.*?$",
198
+ "end": "```"
199
+ },
200
+ {
201
+ "match": "(`.*?`)",
202
+ "captures": {
203
+ "0": {
204
+ "name": "variable.other.source.dart"
205
+ }
206
+ }
207
+ },
186
208
  {
187
209
  "match": "(`.*?`)",
188
210
  "captures": {
@@ -232,7 +254,7 @@
232
254
  },
233
255
  {
234
256
  "name": "keyword.declaration.dart",
235
- "match": "(?\u003c!\\$)\\b(abstract|class|enum|extends|external|factory|implements|get|mixin|native|operator|set|typedef|with|covariant)\\b(?!\\$)"
257
+ "match": "(?\u003c!\\$)\\b(abstract|class|enum|extends|extension|external|factory|implements|get|mixin|native|operator|set|typedef|with|covariant)\\b(?!\\$)"
236
258
  },
237
259
  {
238
260
  "name": "keyword.operator.dart",
@@ -250,6 +272,10 @@
250
272
  "name": "keyword.operator.assignment.bitwise.dart",
251
273
  "match": "((\u0026|\\^|\\||\u003c\u003c|\u003e\u003e\u003e?)=)"
252
274
  },
275
+ {
276
+ "name": "keyword.operator.closure.dart",
277
+ "match": "(=\u003e)"
278
+ },
253
279
  {
254
280
  "name": "keyword.operator.comparison.dart",
255
281
  "match": "(==|!=|\u003c=?|\u003e=?)"
@@ -276,11 +302,11 @@
276
302
  },
277
303
  {
278
304
  "name": "storage.modifier.dart",
279
- "match": "(?\u003c!\\$)\\b(static|final|const)\\b(?!\\$)"
305
+ "match": "(?\u003c!\\$)\\b(static|final|const|required|late)\\b(?!\\$)"
280
306
  },
281
307
  {
282
308
  "name": "storage.type.primitive.dart",
283
- "match": "(?\u003c!\\$)\\b(?:void|bool|num|int|double|dynamic|var)\\b(?!\\$)"
309
+ "match": "(?\u003c!\\$)\\b(?:void|var)\\b(?!\\$)"
284
310
  }
285
311
  ]
286
312
  },
@@ -0,0 +1,137 @@
1
+ {
2
+ "name": "dircolors",
3
+ "scopeName": "source.dircolors",
4
+ "patterns": [
5
+ {
6
+ "begin": "(^\\s+)?(?\u003c!\\S)(?=#)(?!#\\{)",
7
+ "end": "(?!\\G)",
8
+ "patterns": [
9
+ {
10
+ "name": "comment.line.number-sign.dircolors",
11
+ "begin": "#",
12
+ "end": "\\n",
13
+ "beginCaptures": {
14
+ "0": {
15
+ "name": "punctuation.definition.comment.dircolors"
16
+ }
17
+ }
18
+ }
19
+ ],
20
+ "beginCaptures": {
21
+ "1": {
22
+ "name": "punctuation.whitespace.comment.leading.dircolors"
23
+ }
24
+ }
25
+ },
26
+ {
27
+ "name": "constant.numeric.radix.dircolors",
28
+ "match": "\\b[0-3]?[0-9]#[0-9a-zA-Z]+\\b"
29
+ },
30
+ {
31
+ "name": "constant.numeric.dircolors",
32
+ "match": "\\b\\d+?\\b"
33
+ },
34
+ {
35
+ "name": "punctuation.delimiter.semicolon.dircolors",
36
+ "match": ";"
37
+ },
38
+ {
39
+ "match": "(?i)^(\\s*)(TERM)\\s+((?:[^\\s#\\\\]|\\\\.)+)",
40
+ "captures": {
41
+ "1": {
42
+ "name": "punctuation.whitespace.comment.leading.dircolors"
43
+ },
44
+ "2": {
45
+ "name": "keyword.other.dircolors"
46
+ },
47
+ "3": {
48
+ "name": "variable.parameter.function.terminal-type.dircolors"
49
+ }
50
+ }
51
+ },
52
+ {
53
+ "match": "(?i)^(\\s*)(COLOR|EIGHTBIT)\\s+(all|none|no|tty|yes)\\b",
54
+ "captures": {
55
+ "1": {
56
+ "name": "punctuation.whitespace.comment.leading.dircolors"
57
+ },
58
+ "2": {
59
+ "name": "keyword.other.dircolors"
60
+ },
61
+ "3": {
62
+ "name": "constant.language.${3:/downcase}.dircolors"
63
+ }
64
+ }
65
+ },
66
+ {
67
+ "match": "(?i)^(\\s*)(OPTIONS)\\s+((?:[^\\s#\\\\]|\\\\.)+)",
68
+ "captures": {
69
+ "1": {
70
+ "name": "punctuation.whitespace.comment.leading.dircolors"
71
+ },
72
+ "2": {
73
+ "name": "keyword.other.dircolors"
74
+ },
75
+ "3": {
76
+ "patterns": [
77
+ {
78
+ "include": "source.opts"
79
+ }
80
+ ]
81
+ }
82
+ }
83
+ },
84
+ {
85
+ "match": "(?ix)\n^ (\\s*)\n(TERM|COLOR|EIGHTBIT|OPTION|NORMAL|NORM|FILE|RESET|DIR|LNK|LINK|SYMLINK|ORPHAN|MISSING\n|FIFO|PIPE|SOCK|BLK|BLOCK|CHR|CHAR|DOOR|EXEC|LEFT|LEFTCODE|RIGHT|RIGHTCODE|END|ENDCODE\n|SUID|SETUID|SGID|SETGID|STICKY|OTHER_WRITABLE|OWR|STICKY_OTHER_WRITABLE|OWT|CAPABILITY\n|MULTIHARDLINK|CLRTOEOL)\n(?=\\s|\\#|$)",
86
+ "captures": {
87
+ "1": {
88
+ "name": "punctuation.whitespace.comment.leading.dircolors"
89
+ },
90
+ "2": {
91
+ "name": "keyword.other.dircolors"
92
+ }
93
+ }
94
+ },
95
+ {
96
+ "match": "^(\\s*)((?:[^\\s#\\\\]|\\\\.)+)",
97
+ "captures": {
98
+ "1": {
99
+ "name": "punctuation.whitespace.comment.leading.dircolors"
100
+ },
101
+ "2": {
102
+ "name": "keyword.other.extension.dircolors",
103
+ "patterns": [
104
+ {
105
+ "include": "#escape"
106
+ }
107
+ ]
108
+ }
109
+ }
110
+ },
111
+ {
112
+ "include": "#escape"
113
+ }
114
+ ],
115
+ "repository": {
116
+ "escape": {
117
+ "patterns": [
118
+ {
119
+ "name": "constant.character.escape.caret-notation.dircolors",
120
+ "match": "\\^[?@A-Za-z\\[\\\\\\]^_]"
121
+ },
122
+ {
123
+ "name": "constant.character.escape.codepoint.hexadecimal.dircolors",
124
+ "match": "\\\\x[0-9A-Fa-f]{1,3}"
125
+ },
126
+ {
127
+ "name": "constant.character.escape.codepoint.octal.dircolors",
128
+ "match": "\\\\[0-7]{1,3}"
129
+ },
130
+ {
131
+ "name": "constant.character.escape.dircolors",
132
+ "match": "(?i)\\\\[abefnrtv?\\_^#]"
133
+ }
134
+ ]
135
+ }
136
+ }
137
+ }
@@ -0,0 +1,135 @@
1
+ {
2
+ "name": "DirectX 3D File",
3
+ "scopeName": "source.direct-x",
4
+ "patterns": [
5
+ {
6
+ "include": "#main"
7
+ }
8
+ ],
9
+ "repository": {
10
+ "header": {
11
+ "name": "meta.signature.header.direct-x",
12
+ "match": "^\\s*(xof)\\s*(\\d+)\\s*(txt|bin|tzip|bzip)\\s*(.*)",
13
+ "captures": {
14
+ "1": {
15
+ "name": "keyword.control.magic-number.direct-x"
16
+ },
17
+ "2": {
18
+ "name": "constant.numeric.integer.int.version-number.direct-x"
19
+ },
20
+ "3": {
21
+ "name": "storage.type.var.format.direct-x"
22
+ },
23
+ "4": {
24
+ "patterns": [
25
+ {
26
+ "include": "etc"
27
+ }
28
+ ]
29
+ }
30
+ }
31
+ },
32
+ "keywords": {
33
+ "name": "keyword.operator.reserved.direct-x",
34
+ "match": "(?ix) \\b\n(ARRAY|BINARY_RESOURCE|BINARY|CHAR|CSTRING|DOUBLE|DWORD|FLOAT\n|SDWORD|STRING|SWORD|TEMPLATE|UCHAR|ULONGLONG|UNICODE|WORD)\\b"
35
+ },
36
+ "main": {
37
+ "patterns": [
38
+ {
39
+ "include": "#header"
40
+ },
41
+ {
42
+ "include": "#template"
43
+ },
44
+ {
45
+ "include": "#uuid"
46
+ },
47
+ {
48
+ "include": "#keywords"
49
+ },
50
+ {
51
+ "include": "#templateTypes"
52
+ },
53
+ {
54
+ "include": "#name"
55
+ },
56
+ {
57
+ "include": "etc#ellipsis"
58
+ },
59
+ {
60
+ "include": "etc#commentHash"
61
+ },
62
+ {
63
+ "include": "etc#commentSlash"
64
+ },
65
+ {
66
+ "include": "etc"
67
+ }
68
+ ]
69
+ },
70
+ "name": {
71
+ "name": "variable.other.direct-x",
72
+ "match": "(?!\\d)\\w+"
73
+ },
74
+ "template": {
75
+ "name": "meta.template.direct-x",
76
+ "begin": "\\b([A-Za-z_]\\w*)\\s+((?!\\d)\\w+)\\s*({)",
77
+ "end": "}",
78
+ "patterns": [
79
+ {
80
+ "include": "#main"
81
+ }
82
+ ],
83
+ "beginCaptures": {
84
+ "1": {
85
+ "name": "storage.type.function.template.direct-x"
86
+ },
87
+ "2": {
88
+ "name": "entity.name.function.direct-x"
89
+ },
90
+ "3": {
91
+ "name": "punctuation.section.scope.begin.direct-x"
92
+ }
93
+ },
94
+ "endCaptures": {
95
+ "0": {
96
+ "name": "punctuation.section.scope.end.direct-x"
97
+ }
98
+ }
99
+ },
100
+ "templateTypes": {
101
+ "name": "storage.type.var.template.direct-x",
102
+ "match": "(?ix) \\b\n(AnimTicksPerSecond|AnimationKey|AnimationOptions|AnimationSet|Animation|Boolean2d|Boolean|ColorRGBA?|CompressedAnimationSet\n|Coords2d|DeclData|EffectDWord|EffectFloats|EffectInstance|EffectParamDWord|EffectParamFloats|EffectParamString|EffectString\n|FVFData|FaceAdjacency|FloatKeys|FrameTransformMatrix|Frame|Guid|IndexedColor|MaterialWrap|Material|Matrix4x4|MeshFaceWraps\n|MeshFace|MeshMaterialList|MeshNormals|MeshTextureCoords|MeshVertexColors|Mesh|PMAttributeRange|PMInfo|PMVSplitRecord\n|PatchMesh9|PatchMesh|Patch|SkinWeights|Templates|TextureFilename|TimedFloatKeys|Vector|VertexDuplicationIndices\n|VertexElement|XSkinMeshHeader) \\b"
103
+ },
104
+ "uuid": {
105
+ "name": "meta.uuid.direct-x",
106
+ "match": "(\u003c)([-\\sA-Fa-f0-9]+)(\u003e)",
107
+ "captures": {
108
+ "1": {
109
+ "patterns": [
110
+ {
111
+ "include": "etc#bracket"
112
+ }
113
+ ]
114
+ },
115
+ "2": {
116
+ "patterns": [
117
+ {
118
+ "include": "etc#dash"
119
+ },
120
+ {
121
+ "include": "etc#hexNoSign"
122
+ }
123
+ ]
124
+ },
125
+ "3": {
126
+ "patterns": [
127
+ {
128
+ "include": "etc#bracket"
129
+ }
130
+ ]
131
+ }
132
+ }
133
+ }
134
+ }
135
+ }
@@ -22,13 +22,46 @@
22
22
  }
23
23
  }
24
24
  },
25
+ "lhs": {
26
+ "patterns": [
27
+ {
28
+ "name": "meta.lhs.ebnf",
29
+ "match": "(?x)\n(?: \\s++\n| ^|\\G\n| (?= ^|\\G )\n| (?\u003c= ;|\\*\\) )\n)\n\n# Exclude leading whitespace\n\\s*\n\n([A-Za-z][A-Za-z0-9_]*+)",
30
+ "captures": {
31
+ "1": {
32
+ "name": "entity.name.rule.identifier.ebnf"
33
+ }
34
+ }
35
+ },
36
+ {
37
+ "name": "meta.lhs.non-standard.ebnf",
38
+ "contentName": "entity.name.rule.identifier.non-standard.ebnf",
39
+ "begin": "(?x)\n(?: \\s++\n| ^|\\G\n| (?= ^|\\G )\n| (?\u003c= \\*\\) )\n)\n\n# Exclude leading whitespace\n\\s*\n\n# Check for at least one “invalid” character\n(?=\n\t# Starts with a digit\n\t[0-9]\n\t|\n\t\n\t# Contains at least one non-“word” character\n\t[A-Za-z0-9_]* # Skip any legal characters\n\t(?: [^:;=()] # Don't swallow symbols for comments, terminators, or assignments\n\t| \\((?!\\*) # Permit open brackets if they don't introduce a comment\n\t)\n)",
40
+ "end": "(?x)\n# Exclude trailing whitespace\n\\s*\n\n# Stop before an...\n(?= :*= # Assignment operator separating `#lhs` from `#rhs`\n| ; # Unexpected terminator\n| \\(\\* # Embedded comment\n)",
41
+ "patterns": [
42
+ {
43
+ "include": "#comment"
44
+ }
45
+ ]
46
+ },
47
+ {
48
+ "include": "#comment"
49
+ }
50
+ ]
51
+ },
25
52
  "main": {
26
53
  "patterns": [
27
54
  {
28
55
  "include": "#comment"
29
56
  },
30
57
  {
31
- "include": "#rule"
58
+ "include": "#semicolon"
59
+ },
60
+ {
61
+ "include": "#lhs"
62
+ },
63
+ {
64
+ "include": "#rhs"
32
65
  },
33
66
  {
34
67
  "include": "#special"
@@ -36,6 +69,27 @@
36
69
  ]
37
70
  },
38
71
  "rhs": {
72
+ "name": "meta.rhs.ebnf",
73
+ "begin": "(::=)|(:=)|(=)",
74
+ "end": "(?=;|^\\s*(?:\u003c?[A-Za-z][A-Za-z0-9_]*\u003e?\\s*)?:*=)",
75
+ "patterns": [
76
+ {
77
+ "include": "#rhs-innards"
78
+ }
79
+ ],
80
+ "beginCaptures": {
81
+ "1": {
82
+ "name": "keyword.operator.assignment.non-standard.double-colon.ebnf"
83
+ },
84
+ "2": {
85
+ "name": "keyword.operator.assignment.non-standard.single-colon.ebnf"
86
+ },
87
+ "3": {
88
+ "name": "keyword.operator.assignment.ebnf"
89
+ }
90
+ }
91
+ },
92
+ "rhs-innards": {
39
93
  "patterns": [
40
94
  {
41
95
  "name": "punctuation.delimiter.comma.ebnf",
@@ -92,7 +146,7 @@
92
146
  "end": "\\]",
93
147
  "patterns": [
94
148
  {
95
- "include": "#rhs"
149
+ "include": "#rhs-innards"
96
150
  }
97
151
  ],
98
152
  "beginCaptures": {
@@ -112,7 +166,7 @@
112
166
  "end": "}",
113
167
  "patterns": [
114
168
  {
115
- "include": "#rhs"
169
+ "include": "#rhs-innards"
116
170
  }
117
171
  ],
118
172
  "beginCaptures": {
@@ -132,7 +186,7 @@
132
186
  "end": "\\)",
133
187
  "patterns": [
134
188
  {
135
- "include": "#rhs"
189
+ "include": "#rhs-innards"
136
190
  }
137
191
  ],
138
192
  "beginCaptures": {
@@ -152,45 +206,19 @@
152
206
  {
153
207
  "name": "variable.parameter.argument.identifier.reference.ebnf",
154
208
  "match": "[A-Za-z][A-Za-z0-9_]*"
155
- }
156
- ]
157
- },
158
- "rule": {
159
- "begin": "(?=[A-Za-z][A-Za-z0-9_]*)",
160
- "end": ";",
161
- "patterns": [
209
+ },
162
210
  {
163
- "name": "meta.lhs.ebnf",
164
- "begin": "\\G",
165
- "end": "(?=[=;])",
166
- "patterns": [
167
- {
168
- "name": "entity.name.rule.identifier.ebnf",
169
- "match": "[A-Za-z][A-Za-z0-9_]*"
170
- }
171
- ]
211
+ "name": "keyword.operator.logical.not.negation.non-standard.ebnf",
212
+ "match": "!"
172
213
  },
173
214
  {
174
- "name": "meta.rhs.ebnf",
175
- "begin": "=",
176
- "end": "(?=;)",
177
- "patterns": [
178
- {
179
- "include": "#rhs"
180
- }
181
- ],
182
- "beginCaptures": {
183
- "0": {
184
- "name": "keyword.operator.assignment.ebnf"
185
- }
186
- }
215
+ "include": "source.lex.regexp#quantifier"
187
216
  }
188
- ],
189
- "endCaptures": {
190
- "0": {
191
- "name": "punctuation.terminator.statement.ebnf"
192
- }
193
- }
217
+ ]
218
+ },
219
+ "semicolon": {
220
+ "name": "punctuation.terminator.statement.ebnf",
221
+ "match": ";"
194
222
  },
195
223
  "special": {
196
224
  "name": "meta.pragma.directive.special.ebnf",