@vc-shell/framework 1.1.2 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/apl-B2DGVGxc.js +76 -0
  3. package/dist/asciiarmor-2LVJmxlE.js +34 -0
  4. package/dist/asn1-jKiBa2Ya.js +95 -0
  5. package/dist/asterisk-DS281yxp.js +271 -0
  6. package/dist/brainfuck-C_p9pTT8.js +34 -0
  7. package/dist/clike-BUuHEmgZ.js +620 -0
  8. package/dist/clojure-CCKyeQKf.js +800 -0
  9. package/dist/cmake-CuaCgAKt.js +28 -0
  10. package/dist/cobol-BlTKFDRj.js +72 -0
  11. package/dist/coffeescript-BVCvwO8I.js +179 -0
  12. package/dist/commonlisp-D_kxz07b.js +75 -0
  13. package/dist/crystal-D309uH6_.js +217 -0
  14. package/dist/css-bIlmDBTK.js +1560 -0
  15. package/dist/cypher-BMq4Fwjl.js +68 -0
  16. package/dist/d-BZcgY6La.js +127 -0
  17. package/dist/diff-Cg9d_RX2.js +18 -0
  18. package/dist/{assets/dockerfile-D0MivFIF.js → dockerfile-DIy8NleC.js} +36 -41
  19. package/dist/dtd-CtLokQ-U.js +84 -0
  20. package/dist/dylan-QYeExnWK.js +234 -0
  21. package/dist/ebnf-DUPDuY4r.js +78 -0
  22. package/dist/ecl-CiXN-g_D.js +121 -0
  23. package/dist/eiffel-yQhjl4T1.js +110 -0
  24. package/dist/elm-CNT9vbN0.js +108 -0
  25. package/dist/erlang-CFOYdy9e.js +487 -0
  26. package/dist/factor-DDOC7X6P.js +65 -0
  27. package/dist/fcl-CPC2WYrI.js +103 -0
  28. package/dist/forth-BmxRyE9S.js +60 -0
  29. package/dist/fortran-9bvPyrOW.js +442 -0
  30. package/dist/framework.js +288 -29
  31. package/dist/gas-BdfkXJT_.js +183 -0
  32. package/dist/gherkin-CJuwpceU.js +34 -0
  33. package/dist/groovy-DZeT_VM-.js +146 -0
  34. package/dist/haskell-Bvt3Qq1t.js +375 -0
  35. package/dist/haxe-70NVW1pR.js +359 -0
  36. package/dist/http-D9LttvKF.js +44 -0
  37. package/dist/idl-B6TRFYjl.js +947 -0
  38. package/dist/{assets/index-BKF-A58l.js → index-BBYKbiRX.js} +79 -92
  39. package/dist/index-BDm0tcWn.js +145680 -0
  40. package/dist/{assets/index-CeeaNa4F.js → index-BDqUaIyQ.js} +136 -167
  41. package/dist/index-BdflTsg6.js +308 -0
  42. package/dist/{assets/index-CtmpJVwa.js → index-BpBTtmQ6.js} +270 -312
  43. package/dist/index-Br0y2YMn.js +58 -0
  44. package/dist/index-CIcET-ZI.js +71 -0
  45. package/dist/index-CYAMpxnu.js +341 -0
  46. package/dist/index-Cf2H7YZ1.js +98 -0
  47. package/dist/{assets/index-Bv_z_qRq.js → index-Ck055pN8.js} +121 -124
  48. package/dist/index-D-fPN3yf.js +75 -0
  49. package/dist/{assets/index-BT8o9-M5.js → index-DJOis7Nc.js} +267 -386
  50. package/dist/index-DKtQMsy4.js +538 -0
  51. package/dist/{assets/index-DMTL7O1s.js → index-DWTsz5bC.js} +570 -586
  52. package/dist/{assets/index-C7zlEJy8.js → index-DuY7BIGm.js} +229 -302
  53. package/dist/{assets/index-B1srGfDb.js → index-o6aSdNED.js} +119 -165
  54. package/dist/index-wfv8ehcx.js +249 -0
  55. package/dist/index.css +9 -18
  56. package/dist/javascript-WMWNx-Vj.js +690 -0
  57. package/dist/jinja2-DnB6dQmV.js +154 -0
  58. package/dist/julia-DpvXAuO6.js +241 -0
  59. package/dist/livescript-CanGTf8u.js +272 -0
  60. package/dist/lua-XplVlWi_.js +217 -0
  61. package/dist/mathematica-jaRHnSxC.js +35 -0
  62. package/dist/mbox-BctzC1hL.js +76 -0
  63. package/dist/mirc-CFBPAOaF.js +72 -0
  64. package/dist/mllike-BSnXJBGA.js +272 -0
  65. package/dist/modelica-vUgVs--1.js +93 -0
  66. package/dist/mscgen-Cpl0NYLN.js +104 -0
  67. package/dist/mumps-CQoS1kWX.js +25 -0
  68. package/dist/nginx-zDPm3Z74.js +89 -0
  69. package/dist/nsis-fePjrhq7.js +62 -0
  70. package/dist/ntriples-CsNjv2QF.js +79 -0
  71. package/dist/octave-C8PmmSRH.js +143 -0
  72. package/dist/oz-Ce8aN8oE.js +151 -0
  73. package/dist/pascal-De0D6mP7.js +77 -0
  74. package/dist/perl-B4bSCe1C.js +915 -0
  75. package/dist/pig-D24Z8EXi.js +54 -0
  76. package/dist/powershell-DkYVfTzP.js +249 -0
  77. package/dist/properties-Dn9wna3M.js +26 -0
  78. package/dist/protobuf-BPIjwpzm.js +49 -0
  79. package/dist/pug-BqUR2bBq.js +248 -0
  80. package/dist/puppet-nyd4dhjf.js +45 -0
  81. package/dist/python-B5QdSKoL.js +313 -0
  82. package/dist/q-DXjKs-tC.js +83 -0
  83. package/dist/r-LKEuhEGI.js +104 -0
  84. package/dist/rpm-IznJm2Xc.js +57 -0
  85. package/dist/ruby-CcYfvIk6.js +228 -0
  86. package/dist/sas-7E8yHoCW.js +105 -0
  87. package/dist/scheme-DjibxsNh.js +124 -0
  88. package/dist/shell-C0C2sNA_.js +182 -0
  89. package/dist/sieve-Bwz7vjP5.js +72 -0
  90. package/dist/simple-mode-B0dvCdAA.js +89 -0
  91. package/dist/smalltalk-Bhddl2pB.js +48 -0
  92. package/dist/solr-BNlsLglM.js +41 -0
  93. package/dist/sparql-FarWu_Gb.js +197 -0
  94. package/dist/spreadsheet-C-cy4P5N.js +49 -0
  95. package/dist/sql-mMre1Bo3.js +282 -0
  96. package/dist/stex-92raWT1r.js +129 -0
  97. package/dist/stylus-CAdqWld3.js +250 -0
  98. package/dist/swift-DSxqR9R6.js +230 -0
  99. package/dist/tcl-xfoLljhY.js +81 -0
  100. package/dist/textile-D1AWE-pc.js +295 -0
  101. package/dist/tiddlywiki-5wqsXtSk.js +155 -0
  102. package/dist/tiki-__Kn3CeS.js +181 -0
  103. package/dist/toml-BHiuTcfn.js +49 -0
  104. package/dist/troff-D2UO-fKf.js +35 -0
  105. package/dist/tsconfig.tsbuildinfo +1 -1
  106. package/dist/ttcn-Bsa4sfRm.js +123 -0
  107. package/dist/ttcn-cfg-Bac_acMi.js +88 -0
  108. package/dist/turtle-xwJUxoPV.js +80 -0
  109. package/dist/ui/components/atoms/vc-widget/vc-widget.vue.d.ts.map +1 -1
  110. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue.d.ts.map +1 -1
  111. package/dist/vb-c2kQGd6-.js +74 -0
  112. package/dist/vbscript-Dz1TtKsy.js +324 -0
  113. package/dist/velocity-DJd0pTTC.js +96 -0
  114. package/dist/verilog-C4VGD9n1.js +263 -0
  115. package/dist/vhdl-T9HkrbI2.js +106 -0
  116. package/dist/webidl-CjfDENEo.js +155 -0
  117. package/dist/xquery-BUQdORAS.js +422 -0
  118. package/dist/yacas-C0absKBh.js +73 -0
  119. package/dist/z80-C8rPtw-0.js +61 -0
  120. package/package.json +4 -4
  121. package/ui/components/atoms/vc-widget/vc-widget.vue +2 -0
  122. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue +65 -32
  123. package/dist/assets/apl-NdZ6-T1z.js +0 -142
  124. package/dist/assets/asciiarmor-CmJEbAuq.js +0 -56
  125. package/dist/assets/asn1-Ctc8K72v.js +0 -192
  126. package/dist/assets/asterisk-D6r__RMF.js +0 -187
  127. package/dist/assets/brainfuck-COwWCBpq.js +0 -70
  128. package/dist/assets/clike-C-PtfL50.js +0 -1019
  129. package/dist/assets/clojure-C2XPrGCa.js +0 -274
  130. package/dist/assets/cmake-BGrEgXCL.js +0 -81
  131. package/dist/assets/cobol-DShPmpZe.js +0 -234
  132. package/dist/assets/coffeescript-BG8vTfSz.js +0 -329
  133. package/dist/assets/commonlisp-8oE2EpEe.js +0 -108
  134. package/dist/assets/core-api-BMLS9FrT.js +0 -8288
  135. package/dist/assets/core-composables-DYxpIWyY.js +0 -1799
  136. package/dist/assets/core-constants-DiKDBbnD.js +0 -83
  137. package/dist/assets/core-directives-QhJx9kWh.js +0 -41
  138. package/dist/assets/core-interceptors-CSjUvxQ0.js +0 -78
  139. package/dist/assets/core-plugins-wv2bDZ0l.js +0 -4919
  140. package/dist/assets/core-services-CAfJRsjs.js +0 -4
  141. package/dist/assets/core-utilities-BTktq_a-.js +0 -33
  142. package/dist/assets/crystal--rIRMl16.js +0 -419
  143. package/dist/assets/css/core-directives-FL4vIIkN.css +0 -73
  144. package/dist/assets/css/fonts-M1mtyV8L.css +0 -305
  145. package/dist/assets/css/icons-css-DbCVsovz.css +0 -41
  146. package/dist/assets/css/shared-components-bnLHdCtf.css +0 -429
  147. package/dist/assets/css/shared-modules-CNOICmYQ.css +0 -45
  148. package/dist/assets/css/styles-C62nDZwV.css +0 -4096
  149. package/dist/assets/css/ui-app-Bh9hmlIB.css +0 -1287
  150. package/dist/assets/css/ui-content-B29jsmK7.css +0 -1187
  151. package/dist/assets/css/ui-controls-CRtfFczw.css +0 -387
  152. package/dist/assets/css/ui-data-CYLxfdUa.css +0 -1555
  153. package/dist/assets/css/ui-form-C3WrWfVl.css +0 -71
  154. package/dist/assets/css/ui-form-fields-DOtHhDeM.css +0 -1360
  155. package/dist/assets/css/ui-helpers-bOoNv5dS.css +0 -37
  156. package/dist/assets/css/ui-indicators-CybQnCoU.css +0 -628
  157. package/dist/assets/css/ui-layout-DyGKgizy.css +0 -251
  158. package/dist/assets/css/ui-media-TWYep8js.css +0 -298
  159. package/dist/assets/css/ui-media-advanced-BGxy3VSB.css +0 -183
  160. package/dist/assets/css/ui-navigation-DcPRn8SB.css +0 -1693
  161. package/dist/assets/css-C_ZeEwz2.js +0 -847
  162. package/dist/assets/cypher-Bayei42D.js +0 -122
  163. package/dist/assets/d-B0hhz6be.js +0 -205
  164. package/dist/assets/diff-DQutOIXs.js +0 -30
  165. package/dist/assets/dtd-C1CeYVnM.js +0 -121
  166. package/dist/assets/dylan-Dm9-uD-A.js +0 -337
  167. package/dist/assets/ebnf-jWG_1Yly.js +0 -151
  168. package/dist/assets/ecl-CgJPA6z9.js +0 -190
  169. package/dist/assets/eiffel-lj7uLahq.js +0 -146
  170. package/dist/assets/elm-Cz7o1ijk.js +0 -230
  171. package/dist/assets/erlang-CyL5QOyR.js +0 -581
  172. package/dist/assets/factor-BVWHwYpu.js +0 -65
  173. package/dist/assets/fcl-DiozYjc8.js +0 -154
  174. package/dist/assets/forth-B7vn5ze0.js +0 -164
  175. package/dist/assets/fortran-D2XNEnBT.js +0 -172
  176. package/dist/assets/gas-B_Tj57Ve.js +0 -343
  177. package/dist/assets/gherkin-CJ6Qk4EZ.js +0 -147
  178. package/dist/assets/groovy-ioGz2WSV.js +0 -228
  179. package/dist/assets/haskell-BHnm1B83.js +0 -239
  180. package/dist/assets/haxe-Bn6Yo6N3.js +0 -490
  181. package/dist/assets/http-BOd5SYCT.js +0 -89
  182. package/dist/assets/idl-FSFk8_xX.js +0 -274
  183. package/dist/assets/index--5fKpGeN.js +0 -792
  184. package/dist/assets/index-0lME64YH.js +0 -342
  185. package/dist/assets/index-B6Ip0FgO.js +0 -437
  186. package/dist/assets/index-BmV05E5M.js +0 -479
  187. package/dist/assets/index-C6MavZDA.js +0 -131
  188. package/dist/assets/index-CwKpgcYl.js +0 -85
  189. package/dist/assets/index-DRUmDL0J.js +0 -59
  190. package/dist/assets/index-DgFC-M9G.js +0 -96
  191. package/dist/assets/javascript-DGrAs70C.js +0 -922
  192. package/dist/assets/jinja2-D9k5QrXv.js +0 -171
  193. package/dist/assets/julia-DM42tOPB.js +0 -369
  194. package/dist/assets/livescript-Dci8HnOi.js +0 -259
  195. package/dist/assets/lua-CByQu4v6.js +0 -137
  196. package/dist/assets/lucide-icons-af0BY3bi.js +0 -34555
  197. package/dist/assets/mathematica-Dkv0uCYF.js +0 -153
  198. package/dist/assets/mbox-CYTvs5kC.js +0 -114
  199. package/dist/assets/mirc-DpgP3GCo.js +0 -176
  200. package/dist/assets/mllike-C6tNn2Yt.js +0 -343
  201. package/dist/assets/modelica-CR6hTSce.js +0 -192
  202. package/dist/assets/mscgen-D0GXtzMS.js +0 -149
  203. package/dist/assets/mumps-Bf1EyDa6.js +0 -129
  204. package/dist/assets/nginx-By9Phklj.js +0 -163
  205. package/dist/assets/nsis-B5ggMLQ9.js +0 -80
  206. package/dist/assets/ntriples-C7VJ7pnm.js +0 -141
  207. package/dist/assets/octave-6yR_ix15.js +0 -112
  208. package/dist/assets/oz-CEUnktiQ.js +0 -235
  209. package/dist/assets/pascal-Dksf1EyF.js +0 -124
  210. package/dist/assets/perl-B99DUQQt.js +0 -819
  211. package/dist/assets/pig-DFeDRta6.js +0 -149
  212. package/dist/assets/powershell-DhwsNWMx.js +0 -381
  213. package/dist/assets/properties-o21uErwC.js +0 -62
  214. package/dist/assets/protobuf-YxlANsmD.js +0 -54
  215. package/dist/assets/pug-bUgjeODZ.js +0 -504
  216. package/dist/assets/puppet-B8WICGYE.js +0 -205
  217. package/dist/assets/python-D3FFx1Id.js +0 -389
  218. package/dist/assets/q-D2Hjhl2C.js +0 -123
  219. package/dist/assets/r-D73k5lac.js +0 -174
  220. package/dist/assets/rpm-Duv_WH0z.js +0 -89
  221. package/dist/assets/ruby-DGCVqZDt.js +0 -287
  222. package/dist/assets/sas-XjPv1Vy5.js +0 -268
  223. package/dist/assets/scheme-DeaA28vt.js +0 -263
  224. package/dist/assets/shared-components-CfAt2hC6.js +0 -1501
  225. package/dist/assets/shared-composables-v9NkNuAe.js +0 -35
  226. package/dist/assets/shared-modules-CDP-H5ZB.js +0 -3588
  227. package/dist/assets/shared-pages-BGRRA5WB.js +0 -20
  228. package/dist/assets/shell-Bx6QZTgx.js +0 -145
  229. package/dist/assets/sieve-CWCD62sW.js +0 -178
  230. package/dist/assets/simple-mode-BAO9cD7H.js +0 -136
  231. package/dist/assets/smalltalk-DSQbF4MF.js +0 -153
  232. package/dist/assets/solr-v_XRf31C.js +0 -80
  233. package/dist/assets/sparql-BrfDqf0-.js +0 -170
  234. package/dist/assets/spreadsheet-Csn84Pef.js +0 -98
  235. package/dist/assets/sql-D4utlq1l.js +0 -480
  236. package/dist/assets/stex-DBkktma-.js +0 -246
  237. package/dist/assets/stylus-ByG-Fd6f.js +0 -750
  238. package/dist/assets/swift-CHbTprt3.js +0 -202
  239. package/dist/assets/tcl-BRlMUELr.js +0 -125
  240. package/dist/assets/textile-CqfTUjd4.js +0 -441
  241. package/dist/assets/tiddlywiki-BrsoM8KB.js +0 -278
  242. package/dist/assets/tiki-D-ivWPkc.js +0 -289
  243. package/dist/assets/toml-t_IhJu83.js +0 -75
  244. package/dist/assets/troff-DckGF2AE.js +0 -64
  245. package/dist/assets/ttcn-B8TAFbRR.js +0 -253
  246. package/dist/assets/ttcn-cfg-NHh25oCM.js +0 -197
  247. package/dist/assets/turtle-D9Js0BlL.js +0 -141
  248. package/dist/assets/ui-app-D31Pr1WY.js +0 -1993
  249. package/dist/assets/ui-content-B7SxH8y9.js +0 -52887
  250. package/dist/assets/ui-controls-nmDJYLmC.js +0 -348
  251. package/dist/assets/ui-data-Ci3b1ye0.js +0 -22901
  252. package/dist/assets/ui-form-Cs5ooOo7.js +0 -159
  253. package/dist/assets/ui-form-fields-DFQi31jT.js +0 -40575
  254. package/dist/assets/ui-helpers-CF-EUlOg.js +0 -1736
  255. package/dist/assets/ui-indicators-mIQeEqha.js +0 -199
  256. package/dist/assets/ui-layout-v2XBQky3.js +0 -320
  257. package/dist/assets/ui-media-WWYrwmZw.js +0 -1259
  258. package/dist/assets/ui-media-advanced-T8ibi153.js +0 -492
  259. package/dist/assets/ui-modals-BdZXzI85.js +0 -2
  260. package/dist/assets/ui-navigation-BtHa6ovW.js +0 -24269
  261. package/dist/assets/utils-DZK5fu48.js +0 -17216
  262. package/dist/assets/vb-CbIGLrpY.js +0 -249
  263. package/dist/assets/vbscript-8ANWle9n.js +0 -320
  264. package/dist/assets/velocity-D6hz3Hzw.js +0 -186
  265. package/dist/assets/verilog-DIV442at.js +0 -565
  266. package/dist/assets/vhdl-BlTiZo_v.js +0 -174
  267. package/dist/assets/vueuse-CTQm4Zh0.js +0 -9308
  268. package/dist/assets/webidl-Cp3tcqdk.js +0 -179
  269. package/dist/assets/xquery-Dd4TBzXv.js +0 -411
  270. package/dist/assets/yacas-DQ1WucF0.js +0 -182
  271. package/dist/assets/z80-P1j44jDI.js +0 -102
@@ -1,565 +0,0 @@
1
- function mkVerilog(parserConfig) {
2
-
3
- var statementIndentUnit = parserConfig.statementIndentUnit,
4
- dontAlignCalls = parserConfig.dontAlignCalls,
5
- noIndentKeywords = parserConfig.noIndentKeywords || [],
6
- multiLineStrings = parserConfig.multiLineStrings,
7
- hooks = parserConfig.hooks || {};
8
-
9
- function words(str) {
10
- var obj = {}, words = str.split(" ");
11
- for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
12
- return obj;
13
- }
14
-
15
- /**
16
- * Keywords from IEEE 1800-2012
17
- */
18
- var keywords = words(
19
- "accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind " +
20
- "bins binsof bit break buf bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config " +
21
- "const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable " +
22
- "dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup " +
23
- "endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask " +
24
- "enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin " +
25
- "function generate genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import " +
26
- "incdir include initial inout input inside instance int integer interconnect interface intersect join join_any " +
27
- "join_none large let liblist library local localparam logic longint macromodule matches medium modport module " +
28
- "nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 null or output package packed " +
29
- "parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup " +
30
- "pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg " +
31
- "reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime " +
32
- "s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify " +
33
- "specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on " +
34
- "table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior " +
35
- "trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void " +
36
- "wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor");
37
-
38
- /** Operators from IEEE 1800-2012
39
- unary_operator ::=
40
- + | - | ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~
41
- binary_operator ::=
42
- + | - | * | / | % | == | != | === | !== | ==? | !=? | && | || | **
43
- | < | <= | > | >= | & | | | ^ | ^~ | ~^ | >> | << | >>> | <<<
44
- | -> | <->
45
- inc_or_dec_operator ::= ++ | --
46
- unary_module_path_operator ::=
47
- ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~
48
- binary_module_path_operator ::=
49
- == | != | && | || | & | | | ^ | ^~ | ~^
50
- */
51
- var isOperatorChar = /[\+\-\*\/!~&|^%=?:]/;
52
- var isBracketChar = /[\[\]{}()]/;
53
-
54
- var unsignedNumber = /\d[0-9_]*/;
55
- var decimalLiteral = /\d*\s*'s?d\s*\d[0-9_]*/i;
56
- var binaryLiteral = /\d*\s*'s?b\s*[xz01][xz01_]*/i;
57
- var octLiteral = /\d*\s*'s?o\s*[xz0-7][xz0-7_]*/i;
58
- var hexLiteral = /\d*\s*'s?h\s*[0-9a-fxz?][0-9a-fxz?_]*/i;
59
- var realLiteral = /(\d[\d_]*(\.\d[\d_]*)?E-?[\d_]+)|(\d[\d_]*\.\d[\d_]*)/i;
60
-
61
- var closingBracketOrWord = /^((\w+)|[)}\]])/;
62
- var closingBracket = /[)}\]]/;
63
-
64
- var curPunc;
65
- var curKeyword;
66
-
67
- // Block openings which are closed by a matching keyword in the form of ("end" + keyword)
68
- // E.g. "task" => "endtask"
69
- var blockKeywords = words(
70
- "case checker class clocking config function generate interface module package " +
71
- "primitive program property specify sequence table task"
72
- );
73
-
74
- // Opening/closing pairs
75
- var openClose = {};
76
- for (var keyword in blockKeywords) {
77
- openClose[keyword] = "end" + keyword;
78
- }
79
- openClose["begin"] = "end";
80
- openClose["casex"] = "endcase";
81
- openClose["casez"] = "endcase";
82
- openClose["do" ] = "while";
83
- openClose["fork" ] = "join;join_any;join_none";
84
- openClose["covergroup"] = "endgroup";
85
-
86
- for (var i in noIndentKeywords) {
87
- var keyword = noIndentKeywords[i];
88
- if (openClose[keyword]) {
89
- openClose[keyword] = undefined;
90
- }
91
- }
92
-
93
- // Keywords which open statements that are ended with a semi-colon
94
- var statementKeywords = words("always always_comb always_ff always_latch assert assign assume else export for foreach forever if import initial repeat while");
95
-
96
- function tokenBase(stream, state) {
97
- var ch = stream.peek(), style;
98
- if (hooks[ch] && (style = hooks[ch](stream, state)) != false) return style;
99
- if (hooks.tokenBase && (style = hooks.tokenBase(stream, state)) != false)
100
- return style;
101
-
102
- if (/[,;:\.]/.test(ch)) {
103
- curPunc = stream.next();
104
- return null;
105
- }
106
- if (isBracketChar.test(ch)) {
107
- curPunc = stream.next();
108
- return "bracket";
109
- }
110
- // Macros (tick-defines)
111
- if (ch == '`') {
112
- stream.next();
113
- if (stream.eatWhile(/[\w\$_]/)) {
114
- return "def";
115
- } else {
116
- return null;
117
- }
118
- }
119
- // System calls
120
- if (ch == '$') {
121
- stream.next();
122
- if (stream.eatWhile(/[\w\$_]/)) {
123
- return "meta";
124
- } else {
125
- return null;
126
- }
127
- }
128
- // Time literals
129
- if (ch == '#') {
130
- stream.next();
131
- stream.eatWhile(/[\d_.]/);
132
- return "def";
133
- }
134
- // Strings
135
- if (ch == '"') {
136
- stream.next();
137
- state.tokenize = tokenString(ch);
138
- return state.tokenize(stream, state);
139
- }
140
- // Comments
141
- if (ch == "/") {
142
- stream.next();
143
- if (stream.eat("*")) {
144
- state.tokenize = tokenComment;
145
- return tokenComment(stream, state);
146
- }
147
- if (stream.eat("/")) {
148
- stream.skipToEnd();
149
- return "comment";
150
- }
151
- stream.backUp(1);
152
- }
153
-
154
- // Numeric literals
155
- if (stream.match(realLiteral) ||
156
- stream.match(decimalLiteral) ||
157
- stream.match(binaryLiteral) ||
158
- stream.match(octLiteral) ||
159
- stream.match(hexLiteral) ||
160
- stream.match(unsignedNumber) ||
161
- stream.match(realLiteral)) {
162
- return "number";
163
- }
164
-
165
- // Operators
166
- if (stream.eatWhile(isOperatorChar)) {
167
- return "meta";
168
- }
169
-
170
- // Keywords / plain variables
171
- if (stream.eatWhile(/[\w\$_]/)) {
172
- var cur = stream.current();
173
- if (keywords[cur]) {
174
- if (openClose[cur]) {
175
- curPunc = "newblock";
176
- }
177
- if (statementKeywords[cur]) {
178
- curPunc = "newstatement";
179
- }
180
- curKeyword = cur;
181
- return "keyword";
182
- }
183
- return "variable";
184
- }
185
-
186
- stream.next();
187
- return null;
188
- }
189
-
190
- function tokenString(quote) {
191
- return function(stream, state) {
192
- var escaped = false, next, end = false;
193
- while ((next = stream.next()) != null) {
194
- if (next == quote && !escaped) {end = true; break;}
195
- escaped = !escaped && next == "\\";
196
- }
197
- if (end || !(escaped || multiLineStrings))
198
- state.tokenize = tokenBase;
199
- return "string";
200
- };
201
- }
202
-
203
- function tokenComment(stream, state) {
204
- var maybeEnd = false, ch;
205
- while (ch = stream.next()) {
206
- if (ch == "/" && maybeEnd) {
207
- state.tokenize = tokenBase;
208
- break;
209
- }
210
- maybeEnd = (ch == "*");
211
- }
212
- return "comment";
213
- }
214
-
215
- function Context(indented, column, type, align, prev) {
216
- this.indented = indented;
217
- this.column = column;
218
- this.type = type;
219
- this.align = align;
220
- this.prev = prev;
221
- }
222
- function pushContext(state, col, type) {
223
- var indent = state.indented;
224
- var c = new Context(indent, col, type, null, state.context);
225
- return state.context = c;
226
- }
227
- function popContext(state) {
228
- var t = state.context.type;
229
- if (t == ")" || t == "]" || t == "}") {
230
- state.indented = state.context.indented;
231
- }
232
- return state.context = state.context.prev;
233
- }
234
-
235
- function isClosing(text, contextClosing) {
236
- if (text == contextClosing) {
237
- return true;
238
- } else {
239
- // contextClosing may be multiple keywords separated by ;
240
- var closingKeywords = contextClosing.split(";");
241
- for (var i in closingKeywords) {
242
- if (text == closingKeywords[i]) {
243
- return true;
244
- }
245
- }
246
- return false;
247
- }
248
- }
249
-
250
- function buildElectricInputRegEx() {
251
- // Reindentation should occur on any bracket char: {}()[]
252
- // or on a match of any of the block closing keywords, at
253
- // the end of a line
254
- var allClosings = [];
255
- for (var i in openClose) {
256
- if (openClose[i]) {
257
- var closings = openClose[i].split(";");
258
- for (var j in closings) {
259
- allClosings.push(closings[j]);
260
- }
261
- }
262
- }
263
- var re = new RegExp("[{}()\\[\\]]|(" + allClosings.join("|") + ")$");
264
- return re;
265
- }
266
-
267
- // Interface
268
- return {
269
- name: "verilog",
270
-
271
- startState: function(indentUnit) {
272
- var state = {
273
- tokenize: null,
274
- context: new Context(-indentUnit, 0, "top", false),
275
- indented: 0,
276
- startOfLine: true
277
- };
278
- if (hooks.startState) hooks.startState(state);
279
- return state;
280
- },
281
-
282
- token: function(stream, state) {
283
- var ctx = state.context;
284
- if (stream.sol()) {
285
- if (ctx.align == null) ctx.align = false;
286
- state.indented = stream.indentation();
287
- state.startOfLine = true;
288
- }
289
- if (hooks.token) {
290
- // Call hook, with an optional return value of a style to override verilog styling.
291
- var style = hooks.token(stream, state);
292
- if (style !== undefined) {
293
- return style;
294
- }
295
- }
296
- if (stream.eatSpace()) return null;
297
- curPunc = null;
298
- curKeyword = null;
299
- var style = (state.tokenize || tokenBase)(stream, state);
300
- if (style == "comment" || style == "meta" || style == "variable") return style;
301
- if (ctx.align == null) ctx.align = true;
302
-
303
- if (curPunc == ctx.type) {
304
- popContext(state);
305
- } else if ((curPunc == ";" && ctx.type == "statement") ||
306
- (ctx.type && isClosing(curKeyword, ctx.type))) {
307
- ctx = popContext(state);
308
- while (ctx && ctx.type == "statement") ctx = popContext(state);
309
- } else if (curPunc == "{") {
310
- pushContext(state, stream.column(), "}");
311
- } else if (curPunc == "[") {
312
- pushContext(state, stream.column(), "]");
313
- } else if (curPunc == "(") {
314
- pushContext(state, stream.column(), ")");
315
- } else if (ctx && ctx.type == "endcase" && curPunc == ":") {
316
- pushContext(state, stream.column(), "statement");
317
- } else if (curPunc == "newstatement") {
318
- pushContext(state, stream.column(), "statement");
319
- } else if (curPunc == "newblock") {
320
- if (curKeyword == "function" && ctx && (ctx.type == "statement" || ctx.type == "endgroup")) ; else if (curKeyword == "task" && ctx && ctx.type == "statement") ; else {
321
- var close = openClose[curKeyword];
322
- pushContext(state, stream.column(), close);
323
- }
324
- }
325
-
326
- state.startOfLine = false;
327
- return style;
328
- },
329
-
330
- indent: function(state, textAfter, cx) {
331
- if (state.tokenize != tokenBase && state.tokenize != null) return null;
332
- if (hooks.indent) {
333
- var fromHook = hooks.indent(state);
334
- if (fromHook >= 0) return fromHook;
335
- }
336
- var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);
337
- if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev;
338
- var closing = false;
339
- var possibleClosing = textAfter.match(closingBracketOrWord);
340
- if (possibleClosing)
341
- closing = isClosing(possibleClosing[0], ctx.type);
342
- if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit || cx.unit);
343
- else if (closingBracket.test(ctx.type) && ctx.align && !dontAlignCalls) return ctx.column + (closing ? 0 : 1);
344
- else if (ctx.type == ")" && !closing) return ctx.indented + (statementIndentUnit || cx.unit);
345
- else return ctx.indented + (closing ? 0 : cx.unit);
346
- },
347
-
348
- languageData: {
349
- indentOnInput: buildElectricInputRegEx(),
350
- commentTokens: {line: "//", block: {open: "/*", close: "*/"}}
351
- }
352
- };
353
- }
354
- const verilog = mkVerilog({});
355
-
356
- // TL-Verilog mode.
357
- // See tl-x.org for language spec.
358
- // See the mode in action at makerchip.com.
359
- // Contact: steve.hoover@redwoodeda.com
360
-
361
- // TLV Identifier prefixes.
362
- // Note that sign is not treated separately, so "+/-" versions of numeric identifiers
363
- // are included.
364
- var tlvIdentifierStyle = {
365
- "|": "link",
366
- ">": "property", // Should condition this off for > TLV 1c.
367
- "$": "variable",
368
- "$$": "variable",
369
- "?$": "qualifier",
370
- "?*": "qualifier",
371
- "-": "contentSeparator",
372
- "/": "property",
373
- "/-": "property",
374
- "@": "variableName.special",
375
- "@-": "variableName.special",
376
- "@++": "variableName.special",
377
- "@+=": "variableName.special",
378
- "@+=-": "variableName.special",
379
- "@--": "variableName.special",
380
- "@-=": "variableName.special",
381
- "%+": "tag",
382
- "%-": "tag",
383
- "%": "tag",
384
- ">>": "tag",
385
- "<<": "tag",
386
- "<>": "tag",
387
- "#": "tag", // Need to choose a style for this.
388
- "^": "attribute",
389
- "^^": "attribute",
390
- "^!": "attribute",
391
- "*": "variable",
392
- "**": "variable",
393
- "\\": "keyword",
394
- "\"": "comment"
395
- };
396
-
397
- // Lines starting with these characters define scope (result in indentation).
398
- var tlvScopePrefixChars = {
399
- "/": "beh-hier",
400
- ">": "beh-hier",
401
- "-": "phys-hier",
402
- "|": "pipe",
403
- "?": "when",
404
- "@": "stage",
405
- "\\": "keyword"
406
- };
407
- var tlvIndentUnit = 3;
408
- var tlvIdentMatch = /^([~!@#\$%\^&\*-\+=\?\/\\\|'"<>]+)([\d\w_]*)/; // Matches an identifier.
409
- // Note that ':' is excluded, because of it's use in [:].
410
- var tlvLineIndentationMatch = /^[! ] */;
411
- var tlvCommentMatch = /^\/[\/\*]/;
412
-
413
- const tlv = mkVerilog({
414
- hooks: {
415
- electricInput: false,
416
-
417
- // Return undefined for verilog tokenizing, or style for TLV token (null not used).
418
- // Standard CM styles are used for most formatting, but some TL-Verilog-specific highlighting
419
- // can be enabled with the definition of cm-tlv-* styles, including highlighting for:
420
- // - M4 tokens
421
- // - TLV scope indentation
422
- // - Statement delimitation (enabled by tlvTrackStatements)
423
- token: function(stream, state) {
424
- var style = undefined;
425
- var match; // Return value of pattern matches.
426
-
427
- // Set highlighting mode based on code region (TLV or SV).
428
- if (stream.sol() && ! state.tlvInBlockComment) {
429
- // Process region.
430
- if (stream.peek() == '\\') {
431
- style = "def";
432
- stream.skipToEnd();
433
- if (stream.string.match(/\\SV/)) {
434
- state.tlvCodeActive = false;
435
- } else if (stream.string.match(/\\TLV/)){
436
- state.tlvCodeActive = true;
437
- }
438
- }
439
- // Correct indentation in the face of a line prefix char.
440
- if (state.tlvCodeActive && stream.pos == 0 &&
441
- (state.indented == 0) && (match = stream.match(tlvLineIndentationMatch, false))) {
442
- state.indented = match[0].length;
443
- }
444
-
445
- // Compute indentation state:
446
- // o Auto indentation on next line
447
- // o Indentation scope styles
448
- var indented = state.indented;
449
- var depth = indented / tlvIndentUnit;
450
- if (depth <= state.tlvIndentationStyle.length) {
451
- // not deeper than current scope
452
-
453
- var blankline = stream.string.length == indented;
454
- var chPos = depth * tlvIndentUnit;
455
- if (chPos < stream.string.length) {
456
- var bodyString = stream.string.slice(chPos);
457
- var ch = bodyString[0];
458
- if (tlvScopePrefixChars[ch] && ((match = bodyString.match(tlvIdentMatch)) &&
459
- tlvIdentifierStyle[match[1]])) {
460
- // This line begins scope.
461
- // Next line gets indented one level.
462
- indented += tlvIndentUnit;
463
- // Style the next level of indentation (except non-region keyword identifiers,
464
- // which are statements themselves)
465
- if (!(ch == "\\" && chPos > 0)) {
466
- state.tlvIndentationStyle[depth] = tlvScopePrefixChars[ch];
467
- depth++;
468
- }
469
- }
470
- }
471
- // Clear out deeper indentation levels unless line is blank.
472
- if (!blankline) {
473
- while (state.tlvIndentationStyle.length > depth) {
474
- state.tlvIndentationStyle.pop();
475
- }
476
- }
477
- }
478
- // Set next level of indentation.
479
- state.tlvNextIndent = indented;
480
- }
481
-
482
- if (state.tlvCodeActive) {
483
-
484
- var match;
485
- if (style !== undefined) ; else if (state.tlvInBlockComment) {
486
- // In a block comment.
487
- if (stream.match(/^.*?\*\//)) {
488
- // Exit block comment.
489
- state.tlvInBlockComment = false;
490
- } else {
491
- stream.skipToEnd();
492
- }
493
- style = "comment";
494
- } else if ((match = stream.match(tlvCommentMatch)) && !state.tlvInBlockComment) {
495
- // Start comment.
496
- if (match[0] == "//") {
497
- // Line comment.
498
- stream.skipToEnd();
499
- } else {
500
- // Block comment.
501
- state.tlvInBlockComment = true;
502
- }
503
- style = "comment";
504
- } else if (match = stream.match(tlvIdentMatch)) {
505
- // looks like an identifier (or identifier prefix)
506
- var prefix = match[1];
507
- var mnemonic = match[2];
508
- if (// is identifier prefix
509
- tlvIdentifierStyle.hasOwnProperty(prefix) &&
510
- // has mnemonic or we're at the end of the line (maybe it hasn't been typed yet)
511
- (mnemonic.length > 0 || stream.eol())) {
512
- style = tlvIdentifierStyle[prefix];
513
- } else {
514
- // Just swallow one character and try again.
515
- // This enables subsequent identifier match with preceding symbol character, which
516
- // is legal within a statement. (Eg, !$reset). It also enables detection of
517
- // comment start with preceding symbols.
518
- stream.backUp(stream.current().length - 1);
519
- }
520
- } else if (stream.match(/^\t+/)) {
521
- // Highlight tabs, which are illegal.
522
- style = "invalid";
523
- } else if (stream.match(/^[\[\]{}\(\);\:]+/)) {
524
- // [:], (), {}, ;.
525
- style = "meta";
526
- } else if (match = stream.match(/^[mM]4([\+_])?[\w\d_]*/)) {
527
- // m4 pre proc
528
- style = (match[1] == "+") ? "keyword.special" : "keyword";
529
- } else if (stream.match(/^ +/)){
530
- // Skip over spaces.
531
- if (stream.eol()) {
532
- // Trailing spaces.
533
- style = "error";
534
- }
535
- } else if (stream.match(/^[\w\d_]+/)) {
536
- // alpha-numeric token.
537
- style = "number";
538
- } else {
539
- // Eat the next char w/ no formatting.
540
- stream.next();
541
- }
542
- } else {
543
- if (stream.match(/^[mM]4([\w\d_]*)/)) {
544
- // m4 pre proc
545
- style = "keyword";
546
- }
547
- }
548
- return style;
549
- },
550
-
551
- indent: function(state) {
552
- return (state.tlvCodeActive == true) ? state.tlvNextIndent : -1;
553
- },
554
-
555
- startState: function(state) {
556
- state.tlvIndentationStyle = []; // Styles to use for each level of indentation.
557
- state.tlvCodeActive = true; // True when we're in a TLV region (and at beginning of file).
558
- state.tlvNextIndent = -1; // The number of spaces to autoindent the next line if tlvCodeActive.
559
- state.tlvInBlockComment = false; // True inside /**/ comment.
560
- }
561
-
562
- }
563
- });
564
-
565
- export { tlv, verilog };