github-linguist-grammars 4.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (335) hide show
  1. checksums.yaml +7 -0
  2. data/grammars/file.lasso.json +713 -0
  3. data/grammars/module.ceylon.json +54 -0
  4. data/grammars/objdump.x86asm.json +73 -0
  5. data/grammars/source.Inform7.json +45 -0
  6. data/grammars/source.Kotlin.json +774 -0
  7. data/grammars/source.LS.json +104 -0
  8. data/grammars/source.MCPOST.json +68 -0
  9. data/grammars/source.MOD.json +70 -0
  10. data/grammars/source.abap.json +176 -0
  11. data/grammars/source.abl.json +138 -0
  12. data/grammars/source.actionscript.3.json +1571 -0
  13. data/grammars/source.acucobol.json +16 -0
  14. data/grammars/source.ada.json +140 -0
  15. data/grammars/source.agda.json +254 -0
  16. data/grammars/source.ahk.json +171 -0
  17. data/grammars/source.alloy.json +44 -0
  18. data/grammars/source.ampl.json +157 -0
  19. data/grammars/source.antlr.json +300 -0
  20. data/grammars/source.apache-config.json +352 -0
  21. data/grammars/source.apache-config.mod_perl.json +70 -0
  22. data/grammars/source.apl.json +442 -0
  23. data/grammars/source.applescript.json +1385 -0
  24. data/grammars/source.apt.json +25 -0
  25. data/grammars/source.asm.x86.json +182 -0
  26. data/grammars/source.asp.json +157 -0
  27. data/grammars/source.aspectj.json +963 -0
  28. data/grammars/source.ats.json +170 -0
  29. data/grammars/source.autoit.3.json +132 -0
  30. data/grammars/source.awk.json +388 -0
  31. data/grammars/source.befunge.json +38 -0
  32. data/grammars/source.bf.json +36 -0
  33. data/grammars/source.bison.json +59 -0
  34. data/grammars/source.blitzmax.json +912 -0
  35. data/grammars/source.boo.json +452 -0
  36. data/grammars/source.brightauthorproject.json +29 -0
  37. data/grammars/source.brightscript.json +158 -0
  38. data/grammars/source.bro.json +409 -0
  39. data/grammars/source.bsv.json +283 -0
  40. data/grammars/source.c++.json +364 -0
  41. data/grammars/source.c++.qt.json +37 -0
  42. data/grammars/source.c.ec.json +39 -0
  43. data/grammars/source.c.json +727 -0
  44. data/grammars/source.c.platform.json +154 -0
  45. data/grammars/source.cache.cmake.json +75 -0
  46. data/grammars/source.cake.json +16 -0
  47. data/grammars/source.camlp4.ocaml.json +63 -0
  48. data/grammars/source.capnp.json +93 -0
  49. data/grammars/source.ceylon.json +77 -0
  50. data/grammars/source.cfscript.cfc.json +170 -0
  51. data/grammars/source.cfscript.json +744 -0
  52. data/grammars/source.chapel.json +240 -0
  53. data/grammars/source.cirru.json +66 -0
  54. data/grammars/source.clarion.json +159 -0
  55. data/grammars/source.clips.json +80 -0
  56. data/grammars/source.clojure.json +397 -0
  57. data/grammars/source.cm.json +54 -0
  58. data/grammars/source.cmake.json +181 -0
  59. data/grammars/source.cobol.json +528 -0
  60. data/grammars/source.coffee.json +678 -0
  61. data/grammars/source.compiled-papyrus.json +11 -0
  62. data/grammars/source.cool.json +103 -0
  63. data/grammars/source.coq.json +62 -0
  64. data/grammars/source.crystal.json +2760 -0
  65. data/grammars/source.cs.json +556 -0
  66. data/grammars/source.css.json +630 -0
  67. data/grammars/source.css.less.json +276 -0
  68. data/grammars/source.css.mss.json +256 -0
  69. data/grammars/source.csx.json +16 -0
  70. data/grammars/source.cuda-c++.json +137 -0
  71. data/grammars/source.cython.json +2108 -0
  72. data/grammars/source.d.json +722 -0
  73. data/grammars/source.dart.json +763 -0
  74. data/grammars/source.desktop.json +90 -0
  75. data/grammars/source.diff.json +162 -0
  76. data/grammars/source.dockerfile.json +89 -0
  77. data/grammars/source.dosbatch.json +70 -0
  78. data/grammars/source.dot.json +126 -0
  79. data/grammars/source.dylan.json +217 -0
  80. data/grammars/source.eiffel.json +138 -0
  81. data/grammars/source.elixir.json +737 -0
  82. data/grammars/source.elm.json +355 -0
  83. data/grammars/source.erazor.json +126 -0
  84. data/grammars/source.erlang.json +1674 -0
  85. data/grammars/source.essl.json +50 -0
  86. data/grammars/source.factor.json +260 -0
  87. data/grammars/source.fan.json +188 -0
  88. data/grammars/source.fancy.json +270 -0
  89. data/grammars/source.fish.json +214 -0
  90. data/grammars/source.forth.json +101 -0
  91. data/grammars/source.fortran.json +499 -0
  92. data/grammars/source.fortran.modern.json +226 -0
  93. data/grammars/source.fsharp.json +403 -0
  94. data/grammars/source.gap.json +167 -0
  95. data/grammars/source.gcode.json +25 -0
  96. data/grammars/source.gdscript.json +154 -0
  97. data/grammars/source.gfm.json +1270 -0
  98. data/grammars/source.glsl.json +71 -0
  99. data/grammars/source.gnuplot.json +276 -0
  100. data/grammars/source.go.json +552 -0
  101. data/grammars/source.golo.json +182 -0
  102. data/grammars/source.gosu.2.json +163 -0
  103. data/grammars/source.grace.json +679 -0
  104. data/grammars/source.groovy.gradle.json +73 -0
  105. data/grammars/source.groovy.json +1385 -0
  106. data/grammars/source.harbour.json +450 -0
  107. data/grammars/source.haskell.json +449 -0
  108. data/grammars/source.haxe.2.json +1243 -0
  109. data/grammars/source.hss.1.json +464 -0
  110. data/grammars/source.httpspec.json +287 -0
  111. data/grammars/source.hxml.json +26 -0
  112. data/grammars/source.hy.json +270 -0
  113. data/grammars/source.idl-dlm.json +112 -0
  114. data/grammars/source.idl.json +267 -0
  115. data/grammars/source.idris.json +537 -0
  116. data/grammars/source.ini.json +113 -0
  117. data/grammars/source.inno.json +65 -0
  118. data/grammars/source.io.json +164 -0
  119. data/grammars/source.ioke.json +272 -0
  120. data/grammars/source.isabelle.root.json +68 -0
  121. data/grammars/source.isabelle.theory.json +106 -0
  122. data/grammars/source.j.json +49 -0
  123. data/grammars/source.jade.json +1009 -0
  124. data/grammars/source.jasmin.json +299 -0
  125. data/grammars/source.java-properties.json +97 -0
  126. data/grammars/source.java.json +1026 -0
  127. data/grammars/source.jcl.json +49 -0
  128. data/grammars/source.jflex.json +490 -0
  129. data/grammars/source.jq.json +218 -0
  130. data/grammars/source.js.json +948 -0
  131. data/grammars/source.js.jsx.json +2937 -0
  132. data/grammars/source.js.objj.json +424 -0
  133. data/grammars/source.js.regexp.json +150 -0
  134. data/grammars/source.js.regexp.replacement.json +30 -0
  135. data/grammars/source.json.json +149 -0
  136. data/grammars/source.julia.json +407 -0
  137. data/grammars/source.lean.json +145 -0
  138. data/grammars/source.lid.json +23 -0
  139. data/grammars/source.lilypond.json +623 -0
  140. data/grammars/source.lisp.json +111 -0
  141. data/grammars/source.litcoffee.json +669 -0
  142. data/grammars/source.livescript.json +616 -0
  143. data/grammars/source.llvm.json +71 -0
  144. data/grammars/source.logos.json +31 -0
  145. data/grammars/source.logtalk.json +315 -0
  146. data/grammars/source.loomscript.json +214 -0
  147. data/grammars/source.lsl.json +216 -0
  148. data/grammars/source.lua.json +191 -0
  149. data/grammars/source.makefile.json +474 -0
  150. data/grammars/source.makegen.json +13 -0
  151. data/grammars/source.man.json +53 -0
  152. data/grammars/source.mask.json +701 -0
  153. data/grammars/source.mata.json +133 -0
  154. data/grammars/source.mathematica.json +429 -0
  155. data/grammars/source.matlab.json +776 -0
  156. data/grammars/source.mercury.json +251 -0
  157. data/grammars/source.ml.json +291 -0
  158. data/grammars/source.modelica.json +142 -0
  159. data/grammars/source.modula2.json +103 -0
  160. data/grammars/source.monkey.json +701 -0
  161. data/grammars/source.moonscript.json +149 -0
  162. data/grammars/source.mupad.json +149 -0
  163. data/grammars/source.nant-build.json +86 -0
  164. data/grammars/source.ncl.json +66 -0
  165. data/grammars/source.nemerle.json +137 -0
  166. data/grammars/source.nesc.json +27 -0
  167. data/grammars/source.netlinx.erb.json +47 -0
  168. data/grammars/source.netlinx.json +768 -0
  169. data/grammars/source.nginx.json +797 -0
  170. data/grammars/source.nim.json +1150 -0
  171. data/grammars/source.nim_filter.json +133 -0
  172. data/grammars/source.nimcfg.json +116 -0
  173. data/grammars/source.ninja.json +66 -0
  174. data/grammars/source.nit.json +238 -0
  175. data/grammars/source.nix.json +1200 -0
  176. data/grammars/source.nmml.json +87 -0
  177. data/grammars/source.nsis.json +150 -0
  178. data/grammars/source.objc++.json +19 -0
  179. data/grammars/source.objc.json +918 -0
  180. data/grammars/source.objc.platform.json +277 -0
  181. data/grammars/source.ocaml.json +1426 -0
  182. data/grammars/source.ocamllex.json +305 -0
  183. data/grammars/source.ocamlyacc.json +346 -0
  184. data/grammars/source.octave.json +451 -0
  185. data/grammars/source.ooc.json +692 -0
  186. data/grammars/source.opa.json +206 -0
  187. data/grammars/source.opal.json +415 -0
  188. data/grammars/source.opalsysdefs.json +70 -0
  189. data/grammars/source.opencobol.json +65 -0
  190. data/grammars/source.ox.json +97 -0
  191. data/grammars/source.oz.json +84 -0
  192. data/grammars/source.papyrus-assembly.json +266 -0
  193. data/grammars/source.papyrus.json +231 -0
  194. data/grammars/source.parrot.pir.json +117 -0
  195. data/grammars/source.pascal.json +150 -0
  196. data/grammars/source.perl.6.json +310 -0
  197. data/grammars/source.perl.json +2413 -0
  198. data/grammars/source.php.zephir.json +362 -0
  199. data/grammars/source.pig_latin.json +172 -0
  200. data/grammars/source.pike.json +62 -0
  201. data/grammars/source.plsql.oracle.json +642 -0
  202. data/grammars/source.po.json +232 -0
  203. data/grammars/source.pogoscript.json +85 -0
  204. data/grammars/source.postscript.json +231 -0
  205. data/grammars/source.powershell.json +755 -0
  206. data/grammars/source.processing.json +885 -0
  207. data/grammars/source.prolog.eclipse.json +206 -0
  208. data/grammars/source.prolog.json +292 -0
  209. data/grammars/source.protobuf.json +395 -0
  210. data/grammars/source.pubspec.json +13 -0
  211. data/grammars/source.puppet.json +494 -0
  212. data/grammars/source.purescript.json +818 -0
  213. data/grammars/source.pyjade.json +1010 -0
  214. data/grammars/source.python.django.json +34 -0
  215. data/grammars/source.python.json +1960 -0
  216. data/grammars/source.python.salt.json +13 -0
  217. data/grammars/source.qmake.json +217 -0
  218. data/grammars/source.qml.json +195 -0
  219. data/grammars/source.r.json +203 -0
  220. data/grammars/source.racket.json +119 -0
  221. data/grammars/source.rebol.json +647 -0
  222. data/grammars/source.red.json +652 -0
  223. data/grammars/source.regexp.babel.json +190 -0
  224. data/grammars/source.regexp.python.json +187 -0
  225. data/grammars/source.regexp.spin.json +188 -0
  226. data/grammars/source.ruby.json +1956 -0
  227. data/grammars/source.ruby.rspec.cucumber.steps.json +274 -0
  228. data/grammars/source.rust.json +269 -0
  229. data/grammars/source.sas.json +322 -0
  230. data/grammars/source.sas_log.json +26 -0
  231. data/grammars/source.sass.json +248 -0
  232. data/grammars/source.sbt.json +36 -0
  233. data/grammars/source.scad.json +152 -0
  234. data/grammars/source.scala.json +739 -0
  235. data/grammars/source.scaml.json +466 -0
  236. data/grammars/source.scheme.json +370 -0
  237. data/grammars/source.scilab.json +103 -0
  238. data/grammars/source.scss.json +1321 -0
  239. data/grammars/source.shell.json +1212 -0
  240. data/grammars/source.smali.json +1668 -0
  241. data/grammars/source.smalltalk.json +135 -0
  242. data/grammars/source.smt.json +173 -0
  243. data/grammars/source.sp.json +118 -0
  244. data/grammars/source.sparql.json +23 -0
  245. data/grammars/source.spin.json +936 -0
  246. data/grammars/source.sqf.json +112 -0
  247. data/grammars/source.sql.json +473 -0
  248. data/grammars/source.stata.json +208 -0
  249. data/grammars/source.strings.json +53 -0
  250. data/grammars/source.stylus.json +1021 -0
  251. data/grammars/source.swift.json +965 -0
  252. data/grammars/source.systemverilog.json +1050 -0
  253. data/grammars/source.tcl.json +277 -0
  254. data/grammars/source.tea.json +180 -0
  255. data/grammars/source.thrift.json +704 -0
  256. data/grammars/source.toml.json +327 -0
  257. data/grammars/source.ts.json +1094 -0
  258. data/grammars/source.tsx.json +1324 -0
  259. data/grammars/source.turtle.json +505 -0
  260. data/grammars/source.txl.json +62 -0
  261. data/grammars/source.ucfconstraints.json +72 -0
  262. data/grammars/source.vala.json +814 -0
  263. data/grammars/source.varnish.vcl.json +343 -0
  264. data/grammars/source.vbnet.json +338 -0
  265. data/grammars/source.verilog.json +302 -0
  266. data/grammars/source.vhdl.json +1349 -0
  267. data/grammars/source.viml.json +224 -0
  268. data/grammars/source.webidl.json +814 -0
  269. data/grammars/source.x10.json +68 -0
  270. data/grammars/source.x86asm.json +47 -0
  271. data/grammars/source.xc.json +379 -0
  272. data/grammars/source.xq.json +241 -0
  273. data/grammars/source.xquery.json +193 -0
  274. data/grammars/source.xtend.json +733 -0
  275. data/grammars/source.yaml.json +334 -0
  276. data/grammars/source.yaml.salt.json +348 -0
  277. data/grammars/text.bibtex.json +251 -0
  278. data/grammars/text.cfml.basic.json +736 -0
  279. data/grammars/text.dart-analysis-output.json +162 -0
  280. data/grammars/text.dart-doccomments.json +19 -0
  281. data/grammars/text.elixir.json +45 -0
  282. data/grammars/text.gherkin.feature.json +135 -0
  283. data/grammars/text.groff.json +113 -0
  284. data/grammars/text.haml.json +299 -0
  285. data/grammars/text.html.abl.json +24 -0
  286. data/grammars/text.html.asciidoc.json +492 -0
  287. data/grammars/text.html.asdoc.json +541 -0
  288. data/grammars/text.html.asp.json +58 -0
  289. data/grammars/text.html.basic.json +552 -0
  290. data/grammars/text.html.cfm.json +811 -0
  291. data/grammars/text.html.creole.json +329 -0
  292. data/grammars/text.html.django.json +69 -0
  293. data/grammars/text.html.elixir.json +18 -0
  294. data/grammars/text.html.erb.json +157 -0
  295. data/grammars/text.html.erlang.yaws.json +72 -0
  296. data/grammars/text.html.factor.json +27 -0
  297. data/grammars/text.html.handlebars.json +783 -0
  298. data/grammars/text.html.jsp.json +1203 -0
  299. data/grammars/text.html.liquid.json +35 -0
  300. data/grammars/text.html.mako.json +729 -0
  301. data/grammars/text.html.markdown.source.gfm.apib.json +1297 -0
  302. data/grammars/text.html.markdown.source.gfm.mson.json +1165 -0
  303. data/grammars/text.html.mediawiki.json +972 -0
  304. data/grammars/text.html.php.json +2607 -0
  305. data/grammars/text.html.slash.json +313 -0
  306. data/grammars/text.html.smarty.json +216 -0
  307. data/grammars/text.html.ssp.json +49 -0
  308. data/grammars/text.html.tcl.json +44 -0
  309. data/grammars/text.html.twig.json +1353 -0
  310. data/grammars/text.html.vue.json +642 -0
  311. data/grammars/text.idl-idldoc.json +14 -0
  312. data/grammars/text.junit-test-report.json +92 -0
  313. data/grammars/text.log.latex.json +86 -0
  314. data/grammars/text.python.console.json +25 -0
  315. data/grammars/text.python.traceback.json +46 -0
  316. data/grammars/text.rdoc.json +48 -0
  317. data/grammars/text.restructuredtext.json +561 -0
  318. data/grammars/text.robot.json +73 -0
  319. data/grammars/text.shell-session.json +48 -0
  320. data/grammars/text.slim.json +527 -0
  321. data/grammars/text.tex.json +271 -0
  322. data/grammars/text.tex.latex.beamer.json +63 -0
  323. data/grammars/text.tex.latex.haskell.json +56 -0
  324. data/grammars/text.tex.latex.json +1013 -0
  325. data/grammars/text.tex.latex.memoir.json +99 -0
  326. data/grammars/text.tex.latex.rd.json +117 -0
  327. data/grammars/text.xml.ant.json +202 -0
  328. data/grammars/text.xml.flex-config.json +2634 -0
  329. data/grammars/text.xml.genshi.json +34 -0
  330. data/grammars/text.xml.json +364 -0
  331. data/grammars/text.xml.pom.json +774 -0
  332. data/grammars/text.xml.xsl.json +94 -0
  333. data/grammars/text.zone_file.json +72 -0
  334. data/lib/linguist/grammars.rb +13 -0
  335. metadata +389 -0
@@ -0,0 +1,302 @@
1
+ {
2
+ "fileTypes": [
3
+ "v",
4
+ "vh"
5
+ ],
6
+ "keyEquivalent": "^~V",
7
+ "name": "Verilog",
8
+ "patterns": [
9
+ {
10
+ "include": "#comments"
11
+ },
12
+ {
13
+ "include": "#module_pattern"
14
+ },
15
+ {
16
+ "include": "#keywords"
17
+ },
18
+ {
19
+ "include": "#constants"
20
+ },
21
+ {
22
+ "include": "#strings"
23
+ },
24
+ {
25
+ "include": "#operators"
26
+ }
27
+ ],
28
+ "repository": {
29
+ "comments": {
30
+ "patterns": [
31
+ {
32
+ "begin": "(^[ \\t]+)?(?=//)",
33
+ "beginCaptures": {
34
+ "1": {
35
+ "name": "punctuation.whitespace.comment.leading.verilog"
36
+ }
37
+ },
38
+ "end": "(?!\\G)",
39
+ "patterns": [
40
+ {
41
+ "begin": "//",
42
+ "beginCaptures": {
43
+ "0": {
44
+ "name": "punctuation.definition.comment.verilog"
45
+ }
46
+ },
47
+ "end": "\\n",
48
+ "name": "comment.line.double-slash.verilog"
49
+ }
50
+ ]
51
+ },
52
+ {
53
+ "begin": "/\\*",
54
+ "end": "\\*/",
55
+ "name": "comment.block.c-style.verilog"
56
+ }
57
+ ]
58
+ },
59
+ "constants": {
60
+ "patterns": [
61
+ {
62
+ "match": "\\b[0-9]+'[bBoOdDhH][a-fA-F0-9_xXzZ]+\\b",
63
+ "name": "constant.numeric.sized_integer.verilog"
64
+ },
65
+ {
66
+ "captures": {
67
+ "1": {
68
+ "name": "constant.numeric.integer.verilog"
69
+ },
70
+ "2": {
71
+ "name": "punctuation.separator.range.verilog"
72
+ },
73
+ "3": {
74
+ "name": "constant.numeric.integer.verilog"
75
+ }
76
+ },
77
+ "match": "\\b(\\d+)(:)(\\d+)\\b",
78
+ "name": "meta.block.numeric.range.verilog"
79
+ },
80
+ {
81
+ "match": "\\b\\d+(?i:e\\d+)?\\b",
82
+ "name": "constant.numeric.integer.verilog"
83
+ },
84
+ {
85
+ "match": "\\b\\d+\\.\\d+(?i:e\\d+)?\\b",
86
+ "name": "constant.numeric.real.verilog"
87
+ },
88
+ {
89
+ "match": "#\\d+",
90
+ "name": "constant.numeric.delay.verilog"
91
+ },
92
+ {
93
+ "match": "\\b[01xXzZ]+\\b",
94
+ "name": "constant.numeric.logic.verilog"
95
+ }
96
+ ]
97
+ },
98
+ "instantiation_patterns": {
99
+ "patterns": [
100
+ {
101
+ "include": "#keywords"
102
+ },
103
+ {
104
+ "begin": "^\\s*([a-zA-Z][a-zA-Z0-9_]*)\\s+([a-zA-Z][a-zA-Z0-9_]*)(?<!begin|if)\\s*(?=\\(|$)",
105
+ "beginCaptures": {
106
+ "1": {
107
+ "name": "entity.name.tag.module.reference.verilog"
108
+ },
109
+ "2": {
110
+ "name": "entity.name.tag.module.identifier.verilog"
111
+ }
112
+ },
113
+ "end": ";",
114
+ "endCaptures": {
115
+ "0": {
116
+ "name": "punctuation.terminator.expression.verilog"
117
+ }
118
+ },
119
+ "name": "meta.block.instantiation.parameterless.verilog",
120
+ "patterns": [
121
+ {
122
+ "include": "#comments"
123
+ },
124
+ {
125
+ "include": "#constants"
126
+ },
127
+ {
128
+ "include": "#strings"
129
+ }
130
+ ]
131
+ },
132
+ {
133
+ "begin": "^\\s*([a-zA-Z][a-zA-Z0-9_]*)\\s*(#)(?=\\s*\\()",
134
+ "beginCaptures": {
135
+ "1": {
136
+ "name": "entity.name.tag.module.reference.verilog"
137
+ }
138
+ },
139
+ "end": ";",
140
+ "endCaptures": {
141
+ "0": {
142
+ "name": "punctuation.terminator.expression.verilog"
143
+ }
144
+ },
145
+ "name": "meta.block.instantiation.with.parameters.verilog",
146
+ "patterns": [
147
+ {
148
+ "include": "#parenthetical_list"
149
+ },
150
+ {
151
+ "match": "[a-zA-Z][a-zA-Z0-9_]*",
152
+ "name": "entity.name.tag.module.identifier.verilog"
153
+ }
154
+ ]
155
+ }
156
+ ]
157
+ },
158
+ "keywords": {
159
+ "patterns": [
160
+ {
161
+ "match": "\\b(always|and|assign|attribute|begin|buf|bufif0|bufif1|case(xz)?|cmos|deassign|default|defparam|disable|edge|else|end(attribute|case|function|module|primitive|specify|table|task)?|event|for|force|forever|fork|function|highz(01)|if(none)?|initial|inout|input|integer|join|medium|module|large|macromodule|nand|negedge|nmos|nor|not|notif(01)|or|output|parameter|pmos|posedge|primitive|pull0|pull1|pulldown|pullup|rcmos|real|realtime|reg|release|repeat|rnmos|rpmos|rtran|rtranif(01)|scalared|signed|small|specify|specparam|strength|strong0|strong1|supply0|supply1|table|task|time|tran|tranif(01)|tri(01)?|tri(and|or|reg)|unsigned|vectored|wait|wand|weak(01)|while|wire|wor|xnor|xor)\\b",
162
+ "name": "keyword.other.verilog"
163
+ },
164
+ {
165
+ "match": "^\\s*`((cell)?define|default_(decay_time|nettype|trireg_strength)|delay_mode_(path|unit|zero)|ifdef|include|end(if|celldefine)|else|(no)?unconnected_drive|resetall|timescale|undef)\\b",
166
+ "name": "keyword.other.compiler.directive.verilog"
167
+ },
168
+ {
169
+ "match": "\\$(f(open|close)|readmem(b|h)|timeformat|printtimescale|stop|finish|(s|real)?time|realtobits|bitstoreal|rtoi|itor|(f)?(display|write(h|b)))\\b",
170
+ "name": "support.function.system.console.tasks.verilog"
171
+ },
172
+ {
173
+ "match": "\\$(random|dist_(chi_square|erlang|exponential|normal|poisson|t|uniform))\\b",
174
+ "name": "support.function.system.random_number.tasks.verilog"
175
+ },
176
+ {
177
+ "match": "\\$((a)?sync\\$((n)?and|(n)or)\\$(array|plane))\\b",
178
+ "name": "support.function.system.pld_modeling.tasks.verilog"
179
+ },
180
+ {
181
+ "match": "\\$(q_(initialize|add|remove|full|exam))\\b",
182
+ "name": "support.function.system.stochastic.tasks.verilog"
183
+ },
184
+ {
185
+ "match": "\\$(hold|nochange|period|recovery|setup(hold)?|skew|width)\\b",
186
+ "name": "support.function.system.timing.tasks.verilog"
187
+ },
188
+ {
189
+ "match": "\\$(dump(file|vars|off|on|all|limit|flush))\\b",
190
+ "name": "support.function.system.vcd.tasks.verilog"
191
+ },
192
+ {
193
+ "match": "\\$(countdrivers|list|input|scope|showscopes|(no)?(key|log)|reset(_count|_value)?|(inc)?save|restart|showvars|getpattern|sreadmem(b|h)|scale)",
194
+ "name": "support.function.non-standard.tasks.verilog"
195
+ }
196
+ ]
197
+ },
198
+ "module_pattern": {
199
+ "patterns": [
200
+ {
201
+ "begin": "\\b(module)\\s+([a-zA-Z][a-zA-Z0-9_]*)",
202
+ "beginCaptures": {
203
+ "1": {
204
+ "name": "storage.type.module.verilog"
205
+ },
206
+ "2": {
207
+ "name": "entity.name.type.module.verilog"
208
+ }
209
+ },
210
+ "end": "\\bendmodule\\b",
211
+ "endCaptures": {
212
+ "0": {
213
+ "name": "storage.type.module.verilog"
214
+ }
215
+ },
216
+ "name": "meta.block.module.verilog",
217
+ "patterns": [
218
+ {
219
+ "include": "#comments"
220
+ },
221
+ {
222
+ "include": "#keywords"
223
+ },
224
+ {
225
+ "include": "#constants"
226
+ },
227
+ {
228
+ "include": "#strings"
229
+ },
230
+ {
231
+ "include": "#instantiation_patterns"
232
+ },
233
+ {
234
+ "include": "#operators"
235
+ }
236
+ ]
237
+ }
238
+ ]
239
+ },
240
+ "operators": {
241
+ "patterns": [
242
+ {
243
+ "match": "\\+|-|\\*|/|%|(<|>)=?|(!|=)?==?|!|&&?|\\|\\|?|\\^?~|~\\^?",
244
+ "name": "keyword.operator.verilog"
245
+ }
246
+ ]
247
+ },
248
+ "parenthetical_list": {
249
+ "patterns": [
250
+ {
251
+ "begin": "\\(",
252
+ "beginCaptures": {
253
+ "0": {
254
+ "name": "punctuation.section.list.verilog"
255
+ }
256
+ },
257
+ "end": "\\)",
258
+ "endCaptures": {
259
+ "0": {
260
+ "name": "punctuation.section.list.verilog"
261
+ }
262
+ },
263
+ "name": "meta.block.parenthetical_list.verilog",
264
+ "patterns": [
265
+ {
266
+ "include": "#parenthetical_list"
267
+ },
268
+ {
269
+ "include": "#comments"
270
+ },
271
+ {
272
+ "include": "#keywords"
273
+ },
274
+ {
275
+ "include": "#constants"
276
+ },
277
+ {
278
+ "include": "#strings"
279
+ }
280
+ ]
281
+ }
282
+ ]
283
+ },
284
+ "strings": {
285
+ "patterns": [
286
+ {
287
+ "begin": "\"",
288
+ "end": "\"",
289
+ "name": "string.quoted.double.verilog",
290
+ "patterns": [
291
+ {
292
+ "match": "\\\\.",
293
+ "name": "constant.character.escape.verilog"
294
+ }
295
+ ]
296
+ }
297
+ ]
298
+ }
299
+ },
300
+ "scopeName": "source.verilog",
301
+ "uuid": "7F4396B3-A33E-44F0-8502-98CA6C25971F"
302
+ }
@@ -0,0 +1,1349 @@
1
+ {
2
+ "comment": "VHDL Bundle by Brian Padalino (ocnqnyvab@tznvy.pbz)",
3
+ "fileTypes": [
4
+ "vhd",
5
+ "vhdl",
6
+ "vho"
7
+ ],
8
+ "foldingStartMarker": "(?x)\r\n\t\t# From the start of the line make sure we are not going into a comment ...\r\n\t\t^(\r\n\t\t\t([^-]-?(?!-))*?\r\n\t\t\t\t(\r\n\t\t\t\t# Check for \"keyword ... is\"\r\n\t\t\t\t (\\b(?i:architecture|case|entity|function|package|procedure)\\b(.+?)(?i:\\bis)\\b)\r\n\r\n\t\t\t\t# Check for if statements\r\n\t\t\t\t|(\\b(?i:if)\\b(.+?)(?i:generate|then)\\b)\r\n\r\n\t\t\t\t# Check for and while statements\r\n\t\t\t\t|(\\b(?i:for|while)(.+?)(?i:loop|generate)\\b)\r\n\r\n\t\t\t\t# Check for keywords that do not require an is after it\r\n\t\t\t\t|(\\b(?i:component|process|record)\\b[^;]*?$)\r\n\r\n\t\t\t\t# From the beginning of the line, check for instantiation maps\r\n\t\t\t\t|(^\\s*\\b(?i:port|generic)\\b(?i:\\s+map\\b)?\\s*\\()\r\n\t\t\t)\r\n\t\t)\r\n\t",
9
+ "foldingStopMarker": "(?x)\r\n\t\t# From the start of the line ...\r\n\t\t^(\r\n\t\t\t(\r\n\t\t\t\t(\r\n\t\t\t\t\t# Make sure we are not going into a comment ...\r\n\t\t\t\t\t([^-]-?(?!-))*?\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# The word end to the end of the line\r\n\t\t\t \t\t\t\t(?i:\\bend\\b).*$\\n?\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\r\n\t\t\t\t# ... a close paren followed by an optional semicolon as the only thing on the line\r\n\t\t\t |(\\s*?\\)\\s*?;?\\s*?$\\n?\r\n\t\t\t)\r\n\t\t)\r\n\t",
10
+ "keyEquivalent": "^~V",
11
+ "name": "VHDL",
12
+ "patterns": [
13
+ {
14
+ "include": "#block_processing"
15
+ },
16
+ {
17
+ "include": "#cleanup"
18
+ }
19
+ ],
20
+ "repository": {
21
+ "architecture_pattern": {
22
+ "patterns": [
23
+ {
24
+ "begin": "(?x)\r\n\r\n\t\t\t\t\t\t# The word architecture $1\r\n\t\t\t\t\t\t\\b((?i:architecture))\\s+\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t# Followed up by a valid $3 or invalid identifier $4\r\n\t\t\t\t\t\t(([a-zA-z][a-zA-z0-9_]*)|(.+))(?=\\s)\\s+\r\n\r\n\t\t\t\t\t\t# The word of $5\r\n\t\t\t\t\t\t((?i:of))\\s+\r\n\r\n\t\t\t\t\t\t# Followed by a valid $7 or invalid identifier $8\r\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))(?=\\s*(?i:is))\\b\r\n\t\t\t\t\t",
25
+ "beginCaptures": {
26
+ "1": {
27
+ "name": "keyword.language.vhdl"
28
+ },
29
+ "3": {
30
+ "name": "entity.name.type.architecture.begin.vhdl"
31
+ },
32
+ "4": {
33
+ "name": "invalid.illegal.invalid.identifier.vhdl"
34
+ },
35
+ "5": {
36
+ "name": "keyword.language.vhdl"
37
+ },
38
+ "7": {
39
+ "name": "entity.name.type.entity.reference.vhdl"
40
+ },
41
+ "8": {
42
+ "name": "invalid.illegal.invalid.identifier.vhdl"
43
+ }
44
+ },
45
+ "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end))\r\n\r\n\t\t\t\t\t\t# Optional word architecture $3\r\n\t\t\t\t\t\t(\\s+((?i:architecture)))?\r\n\r\n\t\t\t\t\t\t# Optional same identifier $6 or illegal identifier $7\r\n\t\t\t\t\t\t(\\s+((\\3)|(.+?)))?\r\n\r\n\t\t\t\t\t\t# This will cause the previous to capture until just before the ; or $\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
46
+ "endCaptures": {
47
+ "1": {
48
+ "name": "keyword.language.vhdl"
49
+ },
50
+ "3": {
51
+ "name": "keyword.language.vhdl"
52
+ },
53
+ "6": {
54
+ "name": "entity.name.type.architecture.end.vhdl"
55
+ },
56
+ "7": {
57
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
58
+ }
59
+ },
60
+ "name": "meta.block.architecture",
61
+ "patterns": [
62
+ {
63
+ "include": "#function_definition_pattern"
64
+ },
65
+ {
66
+ "include": "#procedure_definition_pattern"
67
+ },
68
+ {
69
+ "include": "#component_pattern"
70
+ },
71
+ {
72
+ "include": "#if_pattern"
73
+ },
74
+ {
75
+ "include": "#process_pattern"
76
+ },
77
+ {
78
+ "include": "#type_pattern"
79
+ },
80
+ {
81
+ "include": "#record_pattern"
82
+ },
83
+ {
84
+ "include": "#for_pattern"
85
+ },
86
+ {
87
+ "include": "#entity_instantiation_pattern"
88
+ },
89
+ {
90
+ "include": "#component_instantiation_pattern"
91
+ },
92
+ {
93
+ "include": "#cleanup"
94
+ }
95
+ ]
96
+ }
97
+ ]
98
+ },
99
+ "attribute_list": {
100
+ "patterns": [
101
+ {
102
+ "begin": "\\'\\(",
103
+ "beginCaptures": {
104
+ "0": {
105
+ "name": "punctuation.vhdl"
106
+ }
107
+ },
108
+ "end": "\\)",
109
+ "endCaptures": {
110
+ "0": {
111
+ "name": "punctuation.vhdl"
112
+ }
113
+ },
114
+ "name": "meta.block.attribute_list",
115
+ "patterns": [
116
+ {
117
+ "include": "#parenthetical_list"
118
+ },
119
+ {
120
+ "include": "#cleanup"
121
+ }
122
+ ]
123
+ }
124
+ ]
125
+ },
126
+ "block_processing": {
127
+ "patterns": [
128
+ {
129
+ "include": "#package_pattern"
130
+ },
131
+ {
132
+ "include": "#package_body_pattern"
133
+ },
134
+ {
135
+ "include": "#entity_pattern"
136
+ },
137
+ {
138
+ "include": "#architecture_pattern"
139
+ }
140
+ ]
141
+ },
142
+ "case_pattern": {
143
+ "patterns": [
144
+ {
145
+ "begin": "(?x)\r\n\t\t\t\t\t\t# Beginning of line ...\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# Optional identifier ... $3 or invalid identifier $4\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t ([a-zA-Z][a-zA-Z0-9_]*)\r\n\t\t\t\t\t\t\t\t|(.+?)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\\s*:\\s*\r\n\t\t\t\t\t\t)?\r\n\r\n\t\t\t\t\t\t# The word case $5\r\n\t\t\t\t\t\t\\b((?i:case))\\b\r\n\t\t\t\t\t",
146
+ "beginCaptures": {
147
+ "3": {
148
+ "name": "entity.name.tag.case.begin.vhdl"
149
+ },
150
+ "4": {
151
+ "name": "invalid.illegal.invalid.identifier.vhdl"
152
+ },
153
+ "5": {
154
+ "name": "keyword.language.vhdl"
155
+ }
156
+ },
157
+ "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end))\\s*\r\n\r\n\t\t\t\t\t\t# The word case $4 or invalid word $5\r\n\t\t\t\t\t\t(\\s+(((?i:case))|(.*?)))\r\n\r\n\t\t\t\t\t\t# Optional identifier from before $8 or illegal $9\r\n\t\t\t\t\t\t(\\s+((\\2)|(.*?)))?\r\n\r\n\t\t\t\t\t\t# Ending with a semicolon\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
158
+ "endCaptures": {
159
+ "1": {
160
+ "name": "keyword.language.vhdl"
161
+ },
162
+ "4": {
163
+ "name": "keyword.language.vhdl"
164
+ },
165
+ "5": {
166
+ "name": "invalid.illegal.case.required.vhdl"
167
+ },
168
+ "8": {
169
+ "name": "entity.name.tag.case.end.vhdl"
170
+ },
171
+ "9": {
172
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
173
+ }
174
+ },
175
+ "name": "meta.block.case.vhdl",
176
+ "patterns": [
177
+ {
178
+ "include": "#control_patterns"
179
+ },
180
+ {
181
+ "include": "#cleanup"
182
+ }
183
+ ]
184
+ }
185
+ ]
186
+ },
187
+ "cleanup": {
188
+ "patterns": [
189
+ {
190
+ "include": "#comments"
191
+ },
192
+ {
193
+ "include": "#constants_numeric"
194
+ },
195
+ {
196
+ "include": "#strings"
197
+ },
198
+ {
199
+ "include": "#attribute_list"
200
+ },
201
+ {
202
+ "include": "#syntax_highlighting"
203
+ }
204
+ ]
205
+ },
206
+ "comments": {
207
+ "patterns": [
208
+ {
209
+ "match": "--.*$\\n?",
210
+ "name": "comment.line.double-dash.vhdl"
211
+ }
212
+ ]
213
+ },
214
+ "component_instantiation_pattern": {
215
+ "patterns": [
216
+ {
217
+ "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line ...\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# Match a valid identifier $1\r\n\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\r\n\r\n\t\t\t\t\t\t# Colon! $2\r\n\t\t\t\t\t\t\\s*(:)\\s*\r\n\r\n\t\t\t\t\t\t# Another valid identifier $3\r\n\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\\b\r\n\r\n\t\t\t\t\t\t# Make sure we are just the other word, or the beginning of\r\n\t\t\t\t\t\t# a generic or port mapping\r\n\t\t\t\t\t\t(?=\\s*($|generic|port))\r\n\t\t\t\t\t",
218
+ "beginCaptures": {
219
+ "1": {
220
+ "name": "entity.name.section.component_instantiation.vhdl"
221
+ },
222
+ "2": {
223
+ "name": "punctuation.vhdl"
224
+ },
225
+ "3": {
226
+ "name": "entity.name.tag.component.reference.vhdl"
227
+ }
228
+ },
229
+ "end": ";",
230
+ "endCaptures": {
231
+ "0": {
232
+ "name": "punctuation.vhdl"
233
+ }
234
+ },
235
+ "name": "meta.block.component_instantiation.vhdl",
236
+ "patterns": [
237
+ {
238
+ "include": "#parenthetical_list"
239
+ },
240
+ {
241
+ "include": "#cleanup"
242
+ }
243
+ ]
244
+ }
245
+ ]
246
+ },
247
+ "component_pattern": {
248
+ "patterns": [
249
+ {
250
+ "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line ...\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# The word component $1\r\n\t\t\t\t\t\t\\b((?i:component))\\s+\r\n\r\n\t\t\t\t\t\t# A valid identifier $3 or invalid identifier $4\r\n\t\t\t\t\t\t(([a-zA-Z_][a-zA-Z0-9_]*)\\s*|(.+?))(?=\\b(?i:is|port)\\b|$|--)\r\n\r\n\t\t\t\t\t\t# Optional word is $6\r\n\t\t\t\t\t\t(\\b((?i:is\\b)))?\r\n\t\t\t\t\t",
251
+ "beginCaptures": {
252
+ "1": {
253
+ "name": "keyword.language.vhdl"
254
+ },
255
+ "3": {
256
+ "name": "entity.name.type.component.begin.vhdl"
257
+ },
258
+ "4": {
259
+ "name": "invalid.illegal.invalid.identifier.vhdl"
260
+ },
261
+ "6": {
262
+ "name": "keyword.language.vhdl"
263
+ }
264
+ },
265
+ "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?:end))\\s+\r\n\r\n\t\t\t\t\t\t# The word component $3 or illegal word $4\r\n\t\t\t\t\t\t(((?i:component\\b))|(.+?))(?=\\s*|;)\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t# Optional identifier $7 or illegal mismatched $8\r\n\t\t\t\t\t\t(\\s+((\\3)|(.+?)))?(?=\\s*;)\r\n\t\t\t\t\t",
266
+ "endCaptures": {
267
+ "1": {
268
+ "name": "keyword.language.vhdl"
269
+ },
270
+ "3": {
271
+ "name": "keyword.language.vhdl"
272
+ },
273
+ "4": {
274
+ "name": "invalid.illegal.component.keyword.required.vhdl"
275
+ },
276
+ "7": {
277
+ "name": "entity.name.type.component.end.vhdl"
278
+ },
279
+ "8": {
280
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
281
+ }
282
+ },
283
+ "name": "meta.block.component.vhdl",
284
+ "patterns": [
285
+ {
286
+ "include": "#generic_list_pattern"
287
+ },
288
+ {
289
+ "include": "#port_list_pattern"
290
+ },
291
+ {
292
+ "include": "#comments"
293
+ }
294
+ ]
295
+ }
296
+ ]
297
+ },
298
+ "constants_numeric": {
299
+ "patterns": [
300
+ {
301
+ "match": "\\b([+\\-]?[\\d_]+\\.[\\d_]+([eE][+\\-]?[\\d_]+)?)\\b",
302
+ "name": "constant.numeric.floating_point.vhdl"
303
+ },
304
+ {
305
+ "match": "\\b\\d+#[\\h_]+#\\b",
306
+ "name": "constant.numeric.base_pound_number_pound.vhdl"
307
+ },
308
+ {
309
+ "match": "\\b[\\d_]+([eE][\\d_]+)?\\b",
310
+ "name": "constant.numeric.integer.vhdl"
311
+ },
312
+ {
313
+ "match": "[xX]\"[0-9a-fA-F_uUxXzZwWlLhH\\-]+\"",
314
+ "name": "constant.numeric.quoted.double.string.hex.vhdl"
315
+ },
316
+ {
317
+ "match": "[oO]\"[0-7_uUxXzZwWlLhH\\-]+\"",
318
+ "name": "constant.numeric.quoted.double.string.octal.vhdl"
319
+ },
320
+ {
321
+ "match": "[bB]?\"[01_uUxXzZwWlLhH\\-]+\"",
322
+ "name": "constant.numeric.quoted.double.string.binary.vhdl"
323
+ },
324
+ {
325
+ "captures": {
326
+ "1": {
327
+ "name": "invalid.illegal.quoted.double.string.vhdl"
328
+ }
329
+ },
330
+ "match": "([bBoOxX]\".+?\")",
331
+ "name": "constant.numeric.quoted.double.string.illegal.vhdl"
332
+ },
333
+ {
334
+ "match": "'[01uUxXzZwWlLhH\\-]'",
335
+ "name": "constant.numeric.quoted.single.std_logic"
336
+ }
337
+ ]
338
+ },
339
+ "control_patterns": {
340
+ "patterns": [
341
+ {
342
+ "include": "#case_pattern"
343
+ },
344
+ {
345
+ "include": "#if_pattern"
346
+ },
347
+ {
348
+ "include": "#for_pattern"
349
+ },
350
+ {
351
+ "include": "#while_pattern"
352
+ }
353
+ ]
354
+ },
355
+ "entity_instantiation_pattern": {
356
+ "patterns": [
357
+ {
358
+ "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# Component identifier or illegal identifier $1\r\n\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\r\n\r\n\t\t\t\t\t\t# Colon! $2\r\n\t\t\t\t\t\t\\s*(:)\\s*\r\n\r\n\t\t\t\t\t\t# Optional word use $4\r\n\t\t\t\t\t\t(((?i:use))\\s+)?\r\n\r\n\t\t\t\t\t\t# Required word entity $5\r\n\t\t\t\t\t\t((?i:entity))\\s+\r\n\r\n\t\t\t\t\t\t# Optional library unit identifier $8 for invalid identifier $9 followed by a dot $10\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\r\n\t\t\t\t\t\t\t(\\.)\r\n\t\t\t\t\t\t)?\r\n\r\n\t\t\t\t\t\t# Entity name reference $12 or illegal identifier $13\r\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\r\n\r\n\t\t\t\t\t\t# Check to see if we are being followed by either open paren, end of line, or port or generic words\r\n\t\t\t\t\t\t(?=\\s*(\\(|$|(?i:port|generic)))\r\n\r\n\t\t\t\t\t\t# Optional architecture elaboration\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# Open paren $16\r\n\t\t\t\t\t\t\t\\s*(\\()\\s*\r\n\r\n\t\t\t\t\t\t\t# Arch identifier $18 or invalid identifier $19\r\n\t\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))(?=\\s*\\))\r\n\r\n\t\t\t\t\t\t\t# Close paren $21\r\n\t\t\t\t\t\t\t\\s*(\\))\r\n\t\t\t\t\t\t)?\r\n\t\t\t\t\t",
359
+ "beginCaptures": {
360
+ "1": {
361
+ "name": "entity.name.section.entity_instantiation.vhdl"
362
+ },
363
+ "10": {
364
+ "name": "punctuation.vhdl"
365
+ },
366
+ "12": {
367
+ "name": "entity.name.tag.entity.reference.vhdl"
368
+ },
369
+ "13": {
370
+ "name": "invalid.illegal.invalid.identifier.vhdl"
371
+ },
372
+ "16": {
373
+ "name": "punctuation.vhdl"
374
+ },
375
+ "18": {
376
+ "name": "entity.name.tag.architecture.reference.vhdl"
377
+ },
378
+ "19": {
379
+ "name": "invalid.illegal.invalid.identifier.vhdl"
380
+ },
381
+ "2": {
382
+ "name": "punctuation.vhdl"
383
+ },
384
+ "21": {
385
+ "name": "punctuation.vhdl"
386
+ },
387
+ "4": {
388
+ "name": "keyword.language.vhdl"
389
+ },
390
+ "5": {
391
+ "name": "keyword.language.vhdl"
392
+ },
393
+ "8": {
394
+ "name": "entity.name.tag.library.reference.vhdl"
395
+ },
396
+ "9": {
397
+ "name": "invalid.illegal.invalid.identifier.vhdl"
398
+ }
399
+ },
400
+ "end": ";",
401
+ "endCaptures": {
402
+ "0": {
403
+ "name": "punctuation.vhdl"
404
+ }
405
+ },
406
+ "name": "meta.block.entity_instantiation.vhdl",
407
+ "patterns": [
408
+ {
409
+ "include": "#parenthetical_list"
410
+ },
411
+ {
412
+ "include": "#cleanup"
413
+ }
414
+ ]
415
+ }
416
+ ]
417
+ },
418
+ "entity_pattern": {
419
+ "patterns": [
420
+ {
421
+ "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line ...\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# The word entity $1\r\n\t\t\t\t\t\t((?i:entity\\b))\\s+\r\n\r\n\t\t\t\t\t\t# The identifier $3 or an invalid identifier $4\r\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))(?=\\s)\r\n\t\t\t\t\t",
422
+ "beginCaptures": {
423
+ "1": {
424
+ "name": "keyword.language.vhdl"
425
+ },
426
+ "3": {
427
+ "name": "entity.name.type.entity.begin.vhdl"
428
+ },
429
+ "4": {
430
+ "name": "invalid.illegal.invalid.identifier.vhdl"
431
+ }
432
+ },
433
+ "end": "(?x)\r\n\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end\\b))\r\n\r\n\t\t\t\t\t\t# Optional word entity $3\r\n\t\t\t\t\t\t(\\s+((?i:entity)))?\r\n\r\n\t\t\t\t\t\t# Optional identifier match $6 or indentifier mismatch $7\r\n\t\t\t\t\t\t(\\s+((\\3)|(.+?)))?\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t# Make sure there is a semicolon following\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
434
+ "endCaptures": {
435
+ "1": {
436
+ "name": "keyword.language.vhdl"
437
+ },
438
+ "3": {
439
+ "name": "keyword.language.vhdl"
440
+ },
441
+ "6": {
442
+ "name": "entity.name.type.entity.end.vhdl"
443
+ },
444
+ "7": {
445
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
446
+ }
447
+ },
448
+ "name": "meta.block.entity.vhdl",
449
+ "patterns": [
450
+ {
451
+ "include": "#comments"
452
+ },
453
+ {
454
+ "include": "#generic_list_pattern"
455
+ },
456
+ {
457
+ "include": "#port_list_pattern"
458
+ },
459
+ {
460
+ "include": "#cleanup"
461
+ }
462
+ ]
463
+ }
464
+ ]
465
+ },
466
+ "for_pattern": {
467
+ "patterns": [
468
+ {
469
+ "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# Check for an identifier $2\r\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\r\n\r\n\t\t\t\t\t\t\t# Followed by a colon $3\r\n\t\t\t\t\t\t\t\\s*(:)\\s*\r\n\t\t\t\t\t\t)?\r\n\r\n\t\t\t\t\t\t# Make sure the next word is not wait\r\n\t\t\t\t\t\t(?!(?i:wait\\s*))\r\n\r\n\t\t\t\t\t\t# The for keyword $4\r\n\t\t\t\t\t\t\\b((?i:for))\\b\r\n\r\n\t\t\t\t\t\t# Make sure the next word is not all\r\n\t\t\t\t\t\t(?!\\s*(?i:all))\r\n\r\n\t\t\t\t\t",
470
+ "beginCaptures": {
471
+ "2": {
472
+ "name": "entity.name.tag.for.generate.begin.vhdl"
473
+ },
474
+ "3": {
475
+ "name": "punctuation.vhdl"
476
+ },
477
+ "4": {
478
+ "name": "keyword.language.vhdl"
479
+ }
480
+ },
481
+ "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end))\\s+\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# Followed by generate or loop $3\r\n\t\t\t\t\t\t\t ((?i:generate|loop))\r\n\r\n\t\t\t\t\t\t\t# But it really is required $4\r\n\t\t\t\t\t\t\t|(\\S+)\r\n\t\t\t\t\t\t)\\b\r\n\r\n\t\t\t\t\t\t# The matching identifier $7 or an invalid identifier $8\r\n\t\t\t\t\t\t(\\s+((\\2)|(.+?)))?\r\n\r\n\t\t\t\t\t\t# Only space and a semicolon left\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
482
+ "endCaptures": {
483
+ "1": {
484
+ "name": "keyword.language.vhdl"
485
+ },
486
+ "3": {
487
+ "name": "keyword.language.vhdl"
488
+ },
489
+ "4": {
490
+ "name": "invalid.illegal.loop.or.generate.required.vhdl"
491
+ },
492
+ "7": {
493
+ "name": "entity.name.tag.for.generate.end.vhdl"
494
+ },
495
+ "8": {
496
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
497
+ }
498
+ },
499
+ "name": "meta.block.for.vhdl",
500
+ "patterns": [
501
+ {
502
+ "include": "#control_patterns"
503
+ },
504
+ {
505
+ "include": "#entity_instantiation_pattern"
506
+ },
507
+ {
508
+ "include": "#component_pattern"
509
+ },
510
+ {
511
+ "include": "#component_instantiation_pattern"
512
+ },
513
+ {
514
+ "include": "#process_pattern"
515
+ },
516
+ {
517
+ "include": "#cleanup"
518
+ }
519
+ ]
520
+ }
521
+ ]
522
+ },
523
+ "function_definition_pattern": {
524
+ "patterns": [
525
+ {
526
+ "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# The word function $1\r\n\t\t\t\t\t\t((?i:function))\\s+\r\n\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# A valid normal identifier $3\r\n\t\t\t\t\t\t\t ([a-zA-Z][a-zA-Z\\d_]*)\r\n\t\t\t\t\t\t\t# A valid string quoted identifier $4\r\n\t\t\t\t\t\t\t|(\"\\S+\")\n\t\t\t\t\t\t\t# A valid backslash escaped identifier $5\n\t\t\t\t\t\t\t|(\\\\.+\\\\)\r\n\t\t\t\t\t\t\t# An invalid identifier $5\r\n\t\t\t\t\t\t\t|(.+?)\r\n\t\t\t\t\t\t)\r\n\r\n\t\t\t\t\t\t# Check to make sure we have a list or we return\r\n\t\t\t\t\t\t(?=\\s*\r\n\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t \\(\r\n\t\t\t\t\t\t\t\t|(?i:\\breturn\\b)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t",
527
+ "beginCaptures": {
528
+ "1": {
529
+ "name": "keyword.language.vhdl"
530
+ },
531
+ "3": {
532
+ "name": "entity.name.function.function.begin.vhdl"
533
+ },
534
+ "4": {
535
+ "name": "entity.name.function.function.begin.vhdl"
536
+ },
537
+ "5": {
538
+ "name": "entity.name.function.function.begin.vhdl"
539
+ },
540
+ "6": {
541
+ "name": "invalid.illegal.invalid.identifier.vhdl"
542
+ }
543
+ },
544
+ "end": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t((?i:end))\r\n\r\n\t\t\t\t\t\t# Optional word function $3\r\n\t\t\t\t\t\t(\\s+((?i:function)))?\r\n\r\n\t\t\t\t\t\t# Optional matched identifier $6 or mismatched identifier $7\r\n\t\t\t\t\t\t(\\s+((\\3|\\4|\\5)|(.+?)))?\r\n\r\n\t\t\t\t\t\t# Ending with whitespace and semicolon\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
545
+ "endCaptures": {
546
+ "1": {
547
+ "name": "keyword.language.vhdl"
548
+ },
549
+ "3": {
550
+ "name": "keyword.language.vhdl"
551
+ },
552
+ "6": {
553
+ "name": "entity.name.function.function.end.vhdl"
554
+ },
555
+ "7": {
556
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
557
+ }
558
+ },
559
+ "name": "meta.block.function_definition.vhdl",
560
+ "patterns": [
561
+ {
562
+ "include": "#control_patterns"
563
+ },
564
+ {
565
+ "include": "#parenthetical_list"
566
+ },
567
+ {
568
+ "include": "#type_pattern"
569
+ },
570
+ {
571
+ "include": "#record_pattern"
572
+ },
573
+ {
574
+ "include": "#cleanup"
575
+ }
576
+ ]
577
+ }
578
+ ]
579
+ },
580
+ "function_prototype_pattern": {
581
+ "patterns": [
582
+ {
583
+ "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# The word function $1\r\n\t\t\t\t\t\t((?i:function))\\s+\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# A valid normal identifier $3\r\n\t\t\t\t\t\t\t ([a-zA-Z][a-zA-Z\\d_]*)\r\n\t\t\t\t\t\t\t# A valid quoted identifier $4\r\n\t\t\t\t\t\t\t|(\"\\S+\")\n\t\t\t\t\t\t\t# A valid backslash escaped identifier $5\n\t\t\t\t\t\t\t|(\\\\.+\\\\)\r\n\t\t\t\t\t\t\t# An invalid identifier $6\r\n\t\t\t\t\t\t\t|(.+?)\r\n\t\t\t\t\t\t)\r\n\r\n\t\t\t\t\t\t# Check to make sure we have a list or we return\r\n\t\t\t\t\t\t(?=\\s*\r\n\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t \\(\r\n\t\t\t\t\t\t\t\t|(?i:\\breturn\\b)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t",
584
+ "beginCaptures": {
585
+ "1": {
586
+ "name": "keyword.language.vhdl"
587
+ },
588
+ "3": {
589
+ "name": "entity.name.function.function.prototype.vhdl"
590
+ },
591
+ "4": {
592
+ "name": "entity.name.function.function.prototype.vhdl"
593
+ },
594
+ "5": {
595
+ "name": "entity.name.function.function.prototype.vhdl"
596
+ },
597
+ "6": {
598
+ "name": "invalid.illegal.function.name.vhdl"
599
+ }
600
+ },
601
+ "end": "(?<=;)",
602
+ "name": "meta.block.function_prototype.vhdl",
603
+ "patterns": [
604
+ {
605
+ "begin": "\\b(?i:return)(?=\\s+[^;]+\\s*;)",
606
+ "beginCaptures": {
607
+ "0": {
608
+ "name": "keyword.language.vhdl"
609
+ }
610
+ },
611
+ "end": "\\;",
612
+ "endCaptures": {
613
+ "0": {
614
+ "name": "punctuation.terminator.function_prototype.vhdl"
615
+ }
616
+ },
617
+ "patterns": [
618
+ {
619
+ "include": "#parenthetical_list"
620
+ },
621
+ {
622
+ "include": "#cleanup"
623
+ }
624
+ ]
625
+ },
626
+ {
627
+ "include": "#parenthetical_list"
628
+ },
629
+ {
630
+ "include": "#cleanup"
631
+ }
632
+ ]
633
+ }
634
+ ]
635
+ },
636
+ "generic_list_pattern": {
637
+ "patterns": [
638
+ {
639
+ "begin": "\\b(?i:generic)\\b",
640
+ "beginCaptures": {
641
+ "0": {
642
+ "name": "keyword.language.vhdl"
643
+ }
644
+ },
645
+ "end": ";",
646
+ "endCaptures": {
647
+ "0": {
648
+ "name": "punctuation.vhdl"
649
+ }
650
+ },
651
+ "name": "meta.block.generic_list.vhdl",
652
+ "patterns": [
653
+ {
654
+ "include": "#parenthetical_list"
655
+ }
656
+ ]
657
+ }
658
+ ]
659
+ },
660
+ "if_pattern": {
661
+ "patterns": [
662
+ {
663
+ "begin": "(?x)\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# Optional identifier $2\r\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\r\n\r\n\t\t\t\t\t\t\t# Followed by a colon $3\r\n\t\t\t\t\t\t\t\\s*(:)\\s*\r\n\t\t\t\t\t\t)?\r\n\r\n\t\t\t\t\t\t# Keyword if $4\r\n\t\t\t\t\t\t\\b((?i:if))\\b\r\n\t\t\t\t\t",
664
+ "beginCaptures": {
665
+ "2": {
666
+ "name": "entity.name.tag.if.generate.begin.vhdl"
667
+ },
668
+ "3": {
669
+ "name": "punctuation.vhdl"
670
+ },
671
+ "4": {
672
+ "name": "keyword.language.vhdl"
673
+ }
674
+ },
675
+ "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end))\\s+\r\n\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t# Optional generate or if keyword $4\r\n\t\t\t\t\t\t\t\t ((?i:generate|if))\r\n\r\n\t\t\t\t\t\t\t\t# Keyword if or generate required $5\r\n\t\t\t\t\t\t\t\t|(\\S+)\r\n\t\t\t\t\t\t\t)\\b\r\n\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\\s+\r\n\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t# Optional matching identifier $8\r\n\t\t\t\t\t\t\t\t\t (\\2)\r\n\r\n\t\t\t\t\t\t\t\t\t# Mismatched identifier $9\r\n\t\t\t\t\t\t\t\t\t|(.+?)\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t)?\r\n\t\t\t\t\t\t)?\r\n\r\n\t\t\t\t\t\t# Followed by a semicolon\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
676
+ "endCaptures": {
677
+ "1": {
678
+ "name": "keyword.language.vhdl"
679
+ },
680
+ "4": {
681
+ "name": "keyword.language.vhdl"
682
+ },
683
+ "5": {
684
+ "name": "invalid.illegal.if.or.generate.required.vhdl"
685
+ },
686
+ "8": {
687
+ "name": "entity.name.tag.if.generate.end.vhdl"
688
+ },
689
+ "9": {
690
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
691
+ }
692
+ },
693
+ "name": "meta.block.if.vhdl",
694
+ "patterns": [
695
+ {
696
+ "include": "#control_patterns"
697
+ },
698
+ {
699
+ "include": "#process_pattern"
700
+ },
701
+ {
702
+ "include": "#entity_instantiation_pattern"
703
+ },
704
+ {
705
+ "include": "#component_pattern"
706
+ },
707
+ {
708
+ "include": "#component_instantiation_pattern"
709
+ },
710
+ {
711
+ "include": "#cleanup"
712
+ }
713
+ ]
714
+ }
715
+ ]
716
+ },
717
+ "keywords": {
718
+ "patterns": [
719
+ {
720
+ "match": "'(?i:active|ascending|base|delayed|driving|event|high|image|instance|last|left|leftof|length|low|path|pos|pred|quiet|range|reverse|right|rightof|simple|stable|succ|transaction|val|value)\\b",
721
+ "name": "keyword.attributes.vhdl"
722
+ },
723
+ {
724
+ "match": "\\b(?i:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)\\b",
725
+ "name": "keyword.language.vhdl"
726
+ },
727
+ {
728
+ "match": "(\\+|\\-|<=|=|=>|:=|>=|>|<|/|\\||&|(\\*{1,2}))",
729
+ "name": "keyword.operator.vhdl"
730
+ }
731
+ ]
732
+ },
733
+ "package_body_pattern": {
734
+ "patterns": [
735
+ {
736
+ "begin": "(?x)\r\n\t\t\t\t\t\t# The word package $1\r\n\t\t\t\t\t\t\\b((?i:package))\\s+\r\n\r\n\t\t\t\t\t\t# ... but we want to be a package body $2\r\n\t\t\t\t\t\t((?i:body))\\s+\r\n\r\n\t\t\t\t\t\t# The valid identifier $4 or the invalid one $5\r\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))\\s+\r\n\r\n\t\t\t\t\t\t# ... and we end it with an is $6\r\n\t\t\t\t\t\t((?i:is))\\b\r\n\t\t\t\t\t",
737
+ "beginCaptures": {
738
+ "1": {
739
+ "name": "keyword.language.vhdl"
740
+ },
741
+ "2": {
742
+ "name": "keyword.language.vhdl"
743
+ },
744
+ "4": {
745
+ "name": "entity.name.section.package_body.begin.vhdl"
746
+ },
747
+ "5": {
748
+ "name": "invalid.illegal.invalid.identifier.vhdl"
749
+ },
750
+ "6": {
751
+ "name": "keyword.language.vhdl"
752
+ }
753
+ },
754
+ "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end\\b))\r\n\r\n\t\t\t\t\t\t# Optional word package $3 body $4\r\n\t\t\t\t\t\t(\\s+((?i:package))\\s+((?i:body)))?\r\n\r\n\t\t\t\t\t\t# Optional identifier $7 or mismatched identifier $8\r\n\t\t\t\t\t\t(\\s+((\\4)|(.+?)))?(?=\\s*;)",
755
+ "endCaptures": {
756
+ "1": {
757
+ "name": "keyword.language.vhdl"
758
+ },
759
+ "3": {
760
+ "name": "keyword.language.vhdl"
761
+ },
762
+ "4": {
763
+ "name": "keyword.language.vhdl"
764
+ },
765
+ "7": {
766
+ "name": "entity.name.section.package_body.end.vhdl"
767
+ },
768
+ "8": {
769
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
770
+ }
771
+ },
772
+ "name": "meta.block.package_body.vhdl",
773
+ "patterns": [
774
+ {
775
+ "include": "#function_definition_pattern"
776
+ },
777
+ {
778
+ "include": "#procedure_definition_pattern"
779
+ },
780
+ {
781
+ "include": "#type_pattern"
782
+ },
783
+ {
784
+ "include": "#subtype_pattern"
785
+ },
786
+ {
787
+ "include": "#record_pattern"
788
+ },
789
+ {
790
+ "include": "#cleanup"
791
+ }
792
+ ]
793
+ }
794
+ ]
795
+ },
796
+ "package_pattern": {
797
+ "patterns": [
798
+ {
799
+ "begin": "(?x)\r\n\t\t\t\t\t\t# The word package $1\r\n\t\t\t\t\t\t\\b((?i:package))\\s+\r\n\r\n\t\t\t\t\t\t# ... but we do not want to be a package body\r\n\t\t\t\t\t\t(?!(?i:body))\r\n\r\n\t\t\t\t\t\t# The valid identifier $3 or the invalid one $4\r\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))\\s+\r\n\r\n\t\t\t\t\t\t# ... and we end it with an is $5\r\n\t\t\t\t\t\t((?i:is))\\b\r\n\t\t\t\t\t",
800
+ "beginCaptures": {
801
+ "1": {
802
+ "name": "keyword.language.vhdl"
803
+ },
804
+ "3": {
805
+ "name": "entity.name.section.package.begin.vhdl"
806
+ },
807
+ "4": {
808
+ "name": "invalid.illegal.invalid.identifier.vhdl"
809
+ },
810
+ "5": {
811
+ "name": "keyword.language.vhdl"
812
+ }
813
+ },
814
+ "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end\\b))\r\n\r\n\t\t\t\t\t\t# Optional word package $3\r\n\t\t\t\t\t\t(\\s+((?i:package)))?\r\n\r\n\t\t\t\t\t\t# Optional identifier $6 or mismatched identifier $7\r\n\t\t\t\t\t\t(\\s+((\\2)|(.+?)))?(?=\\s*;)",
815
+ "endCaptures": {
816
+ "1": {
817
+ "name": "keyword.language.vhdl"
818
+ },
819
+ "3": {
820
+ "name": "keyword.language.vhdl"
821
+ },
822
+ "6": {
823
+ "name": "entity.name.section.package.end.vhdl"
824
+ },
825
+ "7": {
826
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
827
+ }
828
+ },
829
+ "name": "meta.block.package.vhdl",
830
+ "patterns": [
831
+ {
832
+ "include": "#function_prototype_pattern"
833
+ },
834
+ {
835
+ "include": "#procedure_prototype_pattern"
836
+ },
837
+ {
838
+ "include": "#type_pattern"
839
+ },
840
+ {
841
+ "include": "#subtype_pattern"
842
+ },
843
+ {
844
+ "include": "#record_pattern"
845
+ },
846
+ {
847
+ "include": "#component_pattern"
848
+ },
849
+ {
850
+ "include": "#cleanup"
851
+ }
852
+ ]
853
+ }
854
+ ]
855
+ },
856
+ "parenthetical_list": {
857
+ "patterns": [
858
+ {
859
+ "begin": "\\(",
860
+ "beginCaptures": {
861
+ "0": {
862
+ "name": "punctuation.vhdl"
863
+ }
864
+ },
865
+ "end": "(?<=\\))",
866
+ "name": "meta.block.parenthetical_list.vhdl",
867
+ "patterns": [
868
+ {
869
+ "begin": "(?=['\"a-zA-Z0-9])",
870
+ "end": "(;|\\)|,)",
871
+ "endCaptures": {
872
+ "0": {
873
+ "name": "meta.item.stopping.character.vhdl"
874
+ }
875
+ },
876
+ "name": "meta.list.element.vhdl",
877
+ "patterns": [
878
+ {
879
+ "include": "#comments"
880
+ },
881
+ {
882
+ "include": "#parenthetical_pair"
883
+ },
884
+ {
885
+ "include": "#cleanup"
886
+ }
887
+ ]
888
+ },
889
+ {
890
+ "match": "\\)",
891
+ "name": "invalid.illegal.unexpected.parenthesis.vhdl"
892
+ },
893
+ {
894
+ "include": "#cleanup"
895
+ }
896
+ ]
897
+ }
898
+ ]
899
+ },
900
+ "parenthetical_pair": {
901
+ "patterns": [
902
+ {
903
+ "begin": "\\(",
904
+ "beginCaptures": {
905
+ "0": {
906
+ "name": "punctuation.vhdl"
907
+ }
908
+ },
909
+ "end": "\\)",
910
+ "endCaptures": {
911
+ "0": {
912
+ "name": "punctuation.vhdl"
913
+ }
914
+ },
915
+ "name": "meta.block.parenthetical_pair.vhdl",
916
+ "patterns": [
917
+ {
918
+ "include": "#parenthetical_pair"
919
+ },
920
+ {
921
+ "include": "#cleanup"
922
+ }
923
+ ]
924
+ }
925
+ ]
926
+ },
927
+ "port_list_pattern": {
928
+ "patterns": [
929
+ {
930
+ "begin": "\\b(?i:port)\\b",
931
+ "beginCaptures": {
932
+ "0": {
933
+ "name": "keyword.language.vhdl"
934
+ }
935
+ },
936
+ "end": ";",
937
+ "endCaptures": {
938
+ "0": {
939
+ "name": "punctuation.vhdl"
940
+ }
941
+ },
942
+ "name": "meta.block.port_list.vhdl",
943
+ "patterns": [
944
+ {
945
+ "include": "#parenthetical_list"
946
+ }
947
+ ]
948
+ }
949
+ ]
950
+ },
951
+ "procedure_definition_pattern": {
952
+ "patterns": [
953
+ {
954
+ "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# The word function $1\r\n\t\t\t\t\t\t((?i:procedure))\\s+\r\n\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# A valid normal identifier $3\r\n\t\t\t\t\t\t\t ([a-zA-Z][a-zA-Z\\d_]*)\r\n\t\t\t\t\t\t\t# A valid quoted identifier $4\r\n\t\t\t\t\t\t\t|(\"\\S+\")\r\n\t\t\t\t\t\t\t# An invalid identifier $5\r\n\t\t\t\t\t\t\t|(.+?)\r\n\t\t\t\t\t\t)\r\n\r\n\t\t\t\t\t\t# Check to make sure we have a list is\r\n\t\t\t\t\t\t(?=\\s*(\\(|(?i:is)))\r\n\t\t\t\t\t",
955
+ "beginCaptures": {
956
+ "1": {
957
+ "name": "keyword.language.vhdl"
958
+ },
959
+ "3": {
960
+ "name": "entity.name.function.procedure.begin.vhdl"
961
+ },
962
+ "4": {
963
+ "name": "entity.name.function.procedure.begin.vhdl"
964
+ },
965
+ "5": {
966
+ "name": "invalid.illegal.invalid.identifier.vhdl"
967
+ }
968
+ },
969
+ "end": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t((?i:end))\r\n\r\n\t\t\t\t\t\t# Optional word function $3\r\n\t\t\t\t\t\t(\\s+((?i:procedure)))?\r\n\r\n\t\t\t\t\t\t# Optional matched identifier $6 or mismatched identifier $7\r\n\t\t\t\t\t\t(\\s+((\\3|\\4)|(.+?)))?\r\n\r\n\t\t\t\t\t\t# Ending with whitespace and semicolon\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
970
+ "endCaptures": {
971
+ "1": {
972
+ "name": "keyword.language.vhdl"
973
+ },
974
+ "3": {
975
+ "name": "keyword.language.vhdl"
976
+ },
977
+ "6": {
978
+ "name": "entity.name.function.procedure.end.vhdl"
979
+ },
980
+ "7": {
981
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
982
+ }
983
+ },
984
+ "name": "meta.block.procedure_definition.vhdl",
985
+ "patterns": [
986
+ {
987
+ "include": "#parenthetical_list"
988
+ },
989
+ {
990
+ "include": "#control_patterns"
991
+ },
992
+ {
993
+ "include": "#type_pattern"
994
+ },
995
+ {
996
+ "include": "#record_pattern"
997
+ },
998
+ {
999
+ "include": "#cleanup"
1000
+ }
1001
+ ]
1002
+ }
1003
+ ]
1004
+ },
1005
+ "procedure_prototype_pattern": {
1006
+ "patterns": [
1007
+ {
1008
+ "begin": "(?x)\r\n\t\t\t\t\t\t\\b((?i:procedure))\\s+\r\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\r\n\t\t\t\t\t\t(?=\\s*(\\(|;))\r\n\t\t\t\t\t",
1009
+ "beginCaptures": {
1010
+ "1": {
1011
+ "name": "keyword.language.vhdl"
1012
+ },
1013
+ "3": {
1014
+ "name": "entity.name.function.procedure.begin.vhdl"
1015
+ },
1016
+ "4": {
1017
+ "name": "invalid.illegal.invalid.identifier.vhdl"
1018
+ }
1019
+ },
1020
+ "end": ";",
1021
+ "endCaptures": {
1022
+ "0": {
1023
+ "name": "punctual.vhdl"
1024
+ }
1025
+ },
1026
+ "name": "meta.block.procedure_prototype.vhdl",
1027
+ "patterns": [
1028
+ {
1029
+ "include": "#parenthetical_list"
1030
+ }
1031
+ ]
1032
+ }
1033
+ ]
1034
+ },
1035
+ "process_pattern": {
1036
+ "patterns": [
1037
+ {
1038
+ "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# Optional identifier $2\r\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\r\n\r\n\t\t\t\t\t\t\t# Colon $3\r\n\t\t\t\t\t\t\t\\s*(:)\\s*\r\n\t\t\t\t\t\t)?\r\n\r\n\t\t\t\t\t\t# The word process #4\r\n\t\t\t\t\t\t((?i:process))\r\n\t\t\t\t\t",
1039
+ "beginCaptures": {
1040
+ "2": {
1041
+ "name": "entity.name.section.process.begin.vhdl"
1042
+ },
1043
+ "3": {
1044
+ "name": "punctuation.vhdl"
1045
+ },
1046
+ "4": {
1047
+ "name": "keyword.language.vhdl"
1048
+ }
1049
+ },
1050
+ "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t((?i:end))\r\n\r\n\t\t\t\t\t\t# Optional word process $3\r\n\t\t\t\t\t\t(\\s+((?i:process)))\r\n\r\n\t\t\t\t\t\t# Optional identifier $6 or invalid identifier $7\r\n\t\t\t\t\t\t(\\s+((\\2)|(.+?)))?\r\n\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
1051
+ "endCaptures": {
1052
+ "1": {
1053
+ "name": "keyword.language.vhdl"
1054
+ },
1055
+ "3": {
1056
+ "name": "keyword.language.vhdl"
1057
+ },
1058
+ "6": {
1059
+ "name": "entity.name.section.process.end.vhdl"
1060
+ },
1061
+ "7": {
1062
+ "name": "invalid.illegal.invalid.identifier.vhdl"
1063
+ }
1064
+ },
1065
+ "name": "meta.block.process.vhdl",
1066
+ "patterns": [
1067
+ {
1068
+ "include": "#control_patterns"
1069
+ },
1070
+ {
1071
+ "include": "#cleanup"
1072
+ }
1073
+ ]
1074
+ }
1075
+ ]
1076
+ },
1077
+ "punctuation": {
1078
+ "patterns": [
1079
+ {
1080
+ "match": "(\\.|,|:|;|\\(|\\))",
1081
+ "name": "punctuation.vhdl"
1082
+ }
1083
+ ]
1084
+ },
1085
+ "record_pattern": {
1086
+ "patterns": [
1087
+ {
1088
+ "begin": "\\b(?i:record)\\b",
1089
+ "beginCaptures": {
1090
+ "0": {
1091
+ "name": "keyword.language.vhdl"
1092
+ }
1093
+ },
1094
+ "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end))\r\n\r\n\t\t\t\t\t\t# The word record $2\r\n\t\t\t\t\t\t\\s+((?i:record))\r\n\r\n\t\t\t\t\t\t# Optional identifier $5 or invalid identifier $6\r\n\t\t\t\t\t\t(\\s+(([a-zA-Z][a-zA-Z\\d_]*)|(.*?)))?\r\n\r\n\t\t\t\t\t\t# Only whitespace and semicolons can be left\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
1095
+ "endCaptures": {
1096
+ "1": {
1097
+ "name": "keyword.language.vhdl"
1098
+ },
1099
+ "2": {
1100
+ "name": "keyword.language.vhdl"
1101
+ },
1102
+ "5": {
1103
+ "name": "entity.name.type.record.vhdl"
1104
+ },
1105
+ "6": {
1106
+ "name": "invalid.illegal.invalid.identifier.vhdl"
1107
+ }
1108
+ },
1109
+ "name": "meta.block.record.vhdl",
1110
+ "patterns": [
1111
+ {
1112
+ "include": "#cleanup"
1113
+ }
1114
+ ]
1115
+ },
1116
+ {
1117
+ "include": "#cleanup"
1118
+ }
1119
+ ]
1120
+ },
1121
+ "strings": {
1122
+ "patterns": [
1123
+ {
1124
+ "match": "'.'",
1125
+ "name": "string.quoted.single.vhdl"
1126
+ },
1127
+ {
1128
+ "begin": "\"",
1129
+ "end": "\"",
1130
+ "name": "string.quoted.double.vhdl",
1131
+ "patterns": [
1132
+ {
1133
+ "match": "\\\\.",
1134
+ "name": "constant.character.escape.vhdl"
1135
+ }
1136
+ ]
1137
+ },
1138
+ {
1139
+ "begin": "\\\\",
1140
+ "end": "\\\\",
1141
+ "name": "string.other.backslash.vhdl"
1142
+ }
1143
+ ]
1144
+ },
1145
+ "subtype_pattern": {
1146
+ "patterns": [
1147
+ {
1148
+ "begin": "(?x)\r\n\t\t\t\t\t\t# The word subtype $1\r\n\t\t\t\t\t\t\\b((?i:subtype))\\s+\r\n\r\n\t\t\t\t\t\t# Valid identifier $3 or invalid identifier $4\r\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\\s+\r\n\r\n\t\t\t\t\t\t# The word is $5\r\n\t\t\t\t\t\t((?i:is))\\b\r\n\t\t\t\t\t",
1149
+ "beginCaptures": {
1150
+ "1": {
1151
+ "name": "keyword.language.vhdl"
1152
+ },
1153
+ "3": {
1154
+ "name": "entity.name.type.subtype.vhdl"
1155
+ },
1156
+ "4": {
1157
+ "name": "invalid.illegal.invalid.identifier.vhdl"
1158
+ },
1159
+ "5": {
1160
+ "name": "keyword.language.vhdl"
1161
+ }
1162
+ },
1163
+ "end": ";",
1164
+ "endCaptures": {
1165
+ "0": {
1166
+ "name": "punctuation.vhdl"
1167
+ }
1168
+ },
1169
+ "name": "meta.block.subtype.vhdl",
1170
+ "patterns": [
1171
+ {
1172
+ "include": "#cleanup"
1173
+ }
1174
+ ]
1175
+ }
1176
+ ]
1177
+ },
1178
+ "support_constants": {
1179
+ "patterns": [
1180
+ {
1181
+ "match": "\\b(?i:math_1_over_e|math_1_over_pi|math_1_over_sqrt_2|math_2_pi|math_3_pi_over_2|math_deg_to_rad|math_e|math_log10_of_e|math_log2_of_e|math_log_of_10|math_log_of_2|math_pi|math_pi_over_2|math_pi_over_3|math_pi_over_4|math_rad_to_deg|math_sqrt_2|math_sqrt_pi)\\b",
1182
+ "name": "support.constant.ieee.math_real.vhdl"
1183
+ },
1184
+ {
1185
+ "match": "\\b(?i:math_cbase_1|math_cbase_j|math_czero|positive_real|principal_value)\\b",
1186
+ "name": "support.constant.ieee.math_complex.vhdl"
1187
+ },
1188
+ {
1189
+ "match": "\\b(?i:true|false)\\b",
1190
+ "name": "support.constant.std.standard.vhdl"
1191
+ }
1192
+ ]
1193
+ },
1194
+ "support_functions": {
1195
+ "patterns": [
1196
+ {
1197
+ "match": "\\b(?i:finish|stop|resolution_limit)\\b",
1198
+ "name": "support.function.std.env.vhdl"
1199
+ },
1200
+ {
1201
+ "match": "\\b(?i:readline|read|writeline|write|endfile|endline)\\b",
1202
+ "name": "support.function.std.textio.vhdl"
1203
+ },
1204
+ {
1205
+ "match": "\\b(?i:rising_edge|falling_edge|to_bit|to_bitvector|to_stdulogic|to_stdlogicvector|to_stdulogicvector|is_x)\\b",
1206
+ "name": "support.function.ieee.std_logic_1164.vhdl"
1207
+ },
1208
+ {
1209
+ "match": "\\b(?i:shift_left|shift_right|rotate_left|rotate_right|resize|to_integer|to_unsigned|to_signed)\\b",
1210
+ "name": "support.function.ieee.numeric_std.vhdl"
1211
+ },
1212
+ {
1213
+ "match": "\\b(?i:arccos(h?)|arcsin(h?)|arctan|arctanh|cbrt|ceil|cos|cosh|exp|floor|log10|log2|log|realmax|realmin|round|sign|sin|sinh|sqrt|tan|tanh|trunc)\\b",
1214
+ "name": "support.function.ieee.math_real.vhdl"
1215
+ },
1216
+ {
1217
+ "match": "\\b(?i:arg|cmplx|complex_to_polar|conj|get_principal_value|polar_to_complex)\\b",
1218
+ "name": "support.function.ieee.math_complex.vhdl"
1219
+ }
1220
+ ]
1221
+ },
1222
+ "support_types": {
1223
+ "patterns": [
1224
+ {
1225
+ "match": "\\b(?i:boolean|bit|character|severity_level|integer|real|time|delay_length|now|natural|positive|string|bit_vector|file_open_kind|file_open_status|fs|ps|ns|us|ms|sec|min|hr|severity_level|note|warning|error|failure)\\b",
1226
+ "name": "support.type.std.standard.vhdl"
1227
+ },
1228
+ {
1229
+ "match": "\\b(?i:line|text|side|width|input|output)\\b",
1230
+ "name": "support.type.std.textio.vhdl"
1231
+ },
1232
+ {
1233
+ "match": "\\b(?i:std_logic|std_ulogic|std_logic_vector|std_ulogic_vector)\\b",
1234
+ "name": "support.type.ieee.std_logic_1164.vhdl"
1235
+ },
1236
+ {
1237
+ "match": "\\b(?i:signed|unsigned)\\b",
1238
+ "name": "support.type.ieee.numeric_std.vhdl"
1239
+ },
1240
+ {
1241
+ "match": "\\b(?i:complex|complex_polar)\\b",
1242
+ "name": "support.type.ieee.math_complex.vhdl"
1243
+ }
1244
+ ]
1245
+ },
1246
+ "syntax_highlighting": {
1247
+ "patterns": [
1248
+ {
1249
+ "include": "#keywords"
1250
+ },
1251
+ {
1252
+ "include": "#punctuation"
1253
+ },
1254
+ {
1255
+ "include": "#support_constants"
1256
+ },
1257
+ {
1258
+ "include": "#support_types"
1259
+ },
1260
+ {
1261
+ "include": "#support_functions"
1262
+ }
1263
+ ]
1264
+ },
1265
+ "type_pattern": {
1266
+ "patterns": [
1267
+ {
1268
+ "begin": "(?x)\r\n\t\t\t\t\t\t# The word type $1\r\n\t\t\t\t\t\t\\b((?i:type))\\s+\r\n\r\n\t\t\t\t\t\t# Valid identifier $3 or invalid identifier $4\r\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\r\n\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# A semicolon is coming up if we are incomplete\r\n\t\t\t\t\t\t\t (?=\\s*;)\r\n\r\n\t\t\t\t\t\t\t# Or the word is comes up $7\r\n\t\t\t\t\t\t\t|(\\s+((?i:is)))\r\n\t\t\t\t\t\t)\\b\r\n\t\t\t\t\t",
1269
+ "beginCaptures": {
1270
+ "1": {
1271
+ "name": "keyword.language.vhdl"
1272
+ },
1273
+ "3": {
1274
+ "name": "entity.name.type.type.vhdl"
1275
+ },
1276
+ "4": {
1277
+ "name": "invalid.illegal.invalid.identifier.vhdl"
1278
+ },
1279
+ "7": {
1280
+ "name": "keyword.language.vhdl"
1281
+ }
1282
+ },
1283
+ "end": ";",
1284
+ "endCaptures": {
1285
+ "0": {
1286
+ "name": "punctuation.vhdl"
1287
+ }
1288
+ },
1289
+ "name": "meta.block.type.vhdl",
1290
+ "patterns": [
1291
+ {
1292
+ "include": "#record_pattern"
1293
+ },
1294
+ {
1295
+ "include": "#cleanup"
1296
+ }
1297
+ ]
1298
+ }
1299
+ ]
1300
+ },
1301
+ "while_pattern": {
1302
+ "patterns": [
1303
+ {
1304
+ "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# Check for an identifier $2\r\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\r\n\r\n\t\t\t\t\t\t\t# Followed by a colon $3\r\n\t\t\t\t\t\t\t\\s*(:)\\s*\r\n\t\t\t\t\t\t)?\r\n\r\n\t\t\t\t\t\t# The for keyword $4\r\n\t\t\t\t\t\t\\b((?i:while))\\b\r\n\t\t\t\t\t",
1305
+ "beginCaptures": {
1306
+ "2": {
1307
+ "name": ""
1308
+ },
1309
+ "3": {
1310
+ "name": "punctuation.vhdl"
1311
+ },
1312
+ "4": {
1313
+ "name": "keyword.language.vhdl"
1314
+ }
1315
+ },
1316
+ "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end))\\s+\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# Followed by keyword loop $3\r\n\t\t\t\t\t\t\t ((?i:loop))\r\n\r\n\t\t\t\t\t\t\t# But it really is required $4\r\n\t\t\t\t\t\t\t|(\\S+)\r\n\t\t\t\t\t\t)\\b\r\n\r\n\t\t\t\t\t\t# The matching identifier $7 or an invalid identifier $8\r\n\t\t\t\t\t\t(\\s+((\\2)|(.+?)))?\r\n\r\n\t\t\t\t\t\t# Only space and a semicolon left\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
1317
+ "endCaptures": {
1318
+ "1": {
1319
+ "name": "keyword.language.vhdl"
1320
+ },
1321
+ "3": {
1322
+ "name": "keyword.language.vhdl"
1323
+ },
1324
+ "4": {
1325
+ "name": "invalid.illegal.loop.keyword.required.vhdl"
1326
+ },
1327
+ "7": {
1328
+ "name": "entity.name.tag.while.loop.vhdl"
1329
+ },
1330
+ "8": {
1331
+ "name": "invalid.illegal.mismatched.identifier"
1332
+ }
1333
+ },
1334
+ "name": "meta.block.while.vhdl",
1335
+ "patterns": [
1336
+ {
1337
+ "include": "#control_patterns"
1338
+ },
1339
+ {
1340
+ "include": "#cleanup"
1341
+ }
1342
+ ]
1343
+ }
1344
+ ]
1345
+ }
1346
+ },
1347
+ "scopeName": "source.vhdl",
1348
+ "uuid": "99A3EB51-FCCD-4EA4-A642-10C2E8B93112"
1349
+ }