pygments.rb 1.2.1 → 2.0.0

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 (381) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +13 -0
  3. data/.github/workflows/ci.yml +28 -0
  4. data/.github/workflows/release.yml +24 -0
  5. data/.gitignore +5 -6
  6. data/CHANGELOG.adoc +128 -0
  7. data/Gemfile +3 -1
  8. data/LICENSE +1 -1
  9. data/README.adoc +160 -0
  10. data/Rakefile +11 -21
  11. data/bench.rb +8 -7
  12. data/cache-lexers.rb +3 -2
  13. data/lexers +0 -0
  14. data/lib/pygments/lexer.rb +5 -5
  15. data/lib/pygments/mentos.py +23 -110
  16. data/lib/pygments/popen.rb +148 -229
  17. data/lib/pygments/version.rb +2 -2
  18. data/lib/pygments.rb +10 -11
  19. data/pygments.rb.gemspec +12 -10
  20. data/test/test_pygments.rb +46 -104
  21. data/vendor/pygments-main/{AUTHORS → Pygments-2.7.3.dist-info/AUTHORS} +21 -3
  22. data/vendor/pygments-main/Pygments-2.7.3.dist-info/INSTALLER +1 -0
  23. data/vendor/pygments-main/{LICENSE → Pygments-2.7.3.dist-info/LICENSE} +1 -1
  24. data/vendor/pygments-main/Pygments-2.7.3.dist-info/METADATA +49 -0
  25. data/vendor/pygments-main/Pygments-2.7.3.dist-info/RECORD +482 -0
  26. data/vendor/pygments-main/Pygments-2.7.3.dist-info/REQUESTED +0 -0
  27. data/vendor/pygments-main/Pygments-2.7.3.dist-info/WHEEL +5 -0
  28. data/vendor/pygments-main/Pygments-2.7.3.dist-info/entry_points.txt +3 -0
  29. data/vendor/pygments-main/Pygments-2.7.3.dist-info/top_level.txt +1 -0
  30. data/vendor/pygments-main/bin/pygmentize +8 -0
  31. data/vendor/pygments-main/pygments/__init__.py +6 -11
  32. data/vendor/pygments-main/pygments/__main__.py +18 -0
  33. data/vendor/pygments-main/pygments/cmdline.py +38 -29
  34. data/vendor/pygments-main/pygments/console.py +6 -9
  35. data/vendor/pygments-main/pygments/filter.py +4 -6
  36. data/vendor/pygments-main/pygments/filters/__init__.py +609 -21
  37. data/vendor/pygments-main/pygments/formatter.py +4 -4
  38. data/vendor/pygments-main/pygments/formatters/__init__.py +9 -8
  39. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -3
  40. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  41. data/vendor/pygments-main/pygments/formatters/html.py +223 -135
  42. data/vendor/pygments-main/pygments/formatters/img.py +68 -41
  43. data/vendor/pygments-main/pygments/formatters/irc.py +39 -39
  44. data/vendor/pygments-main/pygments/formatters/latex.py +56 -26
  45. data/vendor/pygments-main/pygments/formatters/other.py +12 -8
  46. data/vendor/pygments-main/pygments/formatters/rtf.py +29 -29
  47. data/vendor/pygments-main/pygments/formatters/svg.py +38 -4
  48. data/vendor/pygments-main/pygments/formatters/terminal.py +25 -31
  49. data/vendor/pygments-main/pygments/formatters/terminal256.py +22 -12
  50. data/vendor/pygments-main/pygments/lexer.py +41 -39
  51. data/vendor/pygments-main/pygments/lexers/__init__.py +28 -15
  52. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +5 -5
  53. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +15 -15
  54. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +11 -12
  55. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1717 -1338
  56. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -1
  57. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +2 -4
  58. data/vendor/pygments-main/pygments/lexers/_mapping.py +74 -29
  59. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +2 -2
  60. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1282 -0
  61. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
  62. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +17 -20
  63. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +73 -16
  64. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +2 -2
  65. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -3
  66. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +151 -125
  67. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +6 -4
  68. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -1
  69. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +113 -0
  70. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +280 -0
  71. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -1
  72. data/vendor/pygments-main/pygments/lexers/actionscript.py +8 -3
  73. data/vendor/pygments-main/pygments/lexers/agile.py +1 -1
  74. data/vendor/pygments-main/pygments/lexers/algebra.py +20 -1
  75. data/vendor/pygments-main/pygments/lexers/ambient.py +1 -1
  76. data/vendor/pygments-main/pygments/lexers/ampl.py +3 -3
  77. data/vendor/pygments-main/pygments/lexers/apl.py +15 -15
  78. data/vendor/pygments-main/pygments/lexers/archetype.py +3 -3
  79. data/vendor/pygments-main/pygments/lexers/arrow.py +117 -0
  80. data/vendor/pygments-main/pygments/lexers/asm.py +440 -76
  81. data/vendor/pygments-main/pygments/lexers/automation.py +1 -1
  82. data/vendor/pygments-main/pygments/lexers/bare.py +104 -0
  83. data/vendor/pygments-main/pygments/lexers/basic.py +166 -4
  84. data/vendor/pygments-main/pygments/lexers/bibtex.py +5 -5
  85. data/vendor/pygments-main/pygments/lexers/boa.py +102 -0
  86. data/vendor/pygments-main/pygments/lexers/business.py +17 -2
  87. data/vendor/pygments-main/pygments/lexers/c_cpp.py +137 -45
  88. data/vendor/pygments-main/pygments/lexers/c_like.py +67 -42
  89. data/vendor/pygments-main/pygments/lexers/capnproto.py +7 -7
  90. data/vendor/pygments-main/pygments/lexers/chapel.py +23 -13
  91. data/vendor/pygments-main/pygments/lexers/clean.py +135 -244
  92. data/vendor/pygments-main/pygments/lexers/compiled.py +1 -1
  93. data/vendor/pygments-main/pygments/lexers/configs.py +187 -36
  94. data/vendor/pygments-main/pygments/lexers/console.py +1 -1
  95. data/vendor/pygments-main/pygments/lexers/crystal.py +3 -4
  96. data/vendor/pygments-main/pygments/lexers/csound.py +288 -187
  97. data/vendor/pygments-main/pygments/lexers/css.py +18 -16
  98. data/vendor/pygments-main/pygments/lexers/d.py +10 -5
  99. data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -1
  100. data/vendor/pygments-main/pygments/lexers/data.py +240 -97
  101. data/vendor/pygments-main/pygments/lexers/devicetree.py +109 -0
  102. data/vendor/pygments-main/pygments/lexers/diff.py +4 -4
  103. data/vendor/pygments-main/pygments/lexers/dotnet.py +40 -24
  104. data/vendor/pygments-main/pygments/lexers/dsls.py +144 -62
  105. data/vendor/pygments-main/pygments/lexers/dylan.py +16 -18
  106. data/vendor/pygments-main/pygments/lexers/ecl.py +16 -2
  107. data/vendor/pygments-main/pygments/lexers/eiffel.py +1 -1
  108. data/vendor/pygments-main/pygments/lexers/elm.py +5 -5
  109. data/vendor/pygments-main/pygments/lexers/email.py +151 -0
  110. data/vendor/pygments-main/pygments/lexers/erlang.py +29 -32
  111. data/vendor/pygments-main/pygments/lexers/esoteric.py +46 -19
  112. data/vendor/pygments-main/pygments/lexers/ezhil.py +21 -13
  113. data/vendor/pygments-main/pygments/lexers/factor.py +1 -1
  114. data/vendor/pygments-main/pygments/lexers/fantom.py +1 -1
  115. data/vendor/pygments-main/pygments/lexers/felix.py +1 -1
  116. data/vendor/pygments-main/pygments/lexers/floscript.py +83 -0
  117. data/vendor/pygments-main/pygments/lexers/forth.py +41 -40
  118. data/vendor/pygments-main/pygments/lexers/fortran.py +5 -4
  119. data/vendor/pygments-main/pygments/lexers/foxpro.py +2 -2
  120. data/vendor/pygments-main/pygments/lexers/freefem.py +898 -0
  121. data/vendor/pygments-main/pygments/lexers/functional.py +1 -1
  122. data/vendor/pygments-main/pygments/lexers/gdscript.py +346 -0
  123. data/vendor/pygments-main/pygments/lexers/go.py +1 -1
  124. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +62 -5
  125. data/vendor/pygments-main/pygments/lexers/graph.py +14 -9
  126. data/vendor/pygments-main/pygments/lexers/graphics.py +272 -25
  127. data/vendor/pygments-main/pygments/lexers/haskell.py +48 -21
  128. data/vendor/pygments-main/pygments/lexers/haxe.py +6 -6
  129. data/vendor/pygments-main/pygments/lexers/hdl.py +176 -86
  130. data/vendor/pygments-main/pygments/lexers/hexdump.py +1 -1
  131. data/vendor/pygments-main/pygments/lexers/html.py +31 -19
  132. data/vendor/pygments-main/pygments/lexers/idl.py +19 -8
  133. data/vendor/pygments-main/pygments/lexers/igor.py +244 -112
  134. data/vendor/pygments-main/pygments/lexers/inferno.py +2 -2
  135. data/vendor/pygments-main/pygments/lexers/installers.py +1 -1
  136. data/vendor/pygments-main/pygments/lexers/int_fiction.py +40 -15
  137. data/vendor/pygments-main/pygments/lexers/iolang.py +2 -2
  138. data/vendor/pygments-main/pygments/lexers/j.py +3 -3
  139. data/vendor/pygments-main/pygments/lexers/javascript.py +60 -45
  140. data/vendor/pygments-main/pygments/lexers/julia.py +44 -46
  141. data/vendor/pygments-main/pygments/lexers/jvm.py +265 -165
  142. data/vendor/pygments-main/pygments/lexers/lisp.py +882 -804
  143. data/vendor/pygments-main/pygments/lexers/make.py +10 -6
  144. data/vendor/pygments-main/pygments/lexers/markup.py +213 -43
  145. data/vendor/pygments-main/pygments/lexers/math.py +1 -1
  146. data/vendor/pygments-main/pygments/lexers/matlab.py +98 -41
  147. data/vendor/pygments-main/pygments/lexers/mime.py +226 -0
  148. data/vendor/pygments-main/pygments/lexers/ml.py +198 -9
  149. data/vendor/pygments-main/pygments/lexers/modeling.py +26 -18
  150. data/vendor/pygments-main/pygments/lexers/modula2.py +25 -6
  151. data/vendor/pygments-main/pygments/lexers/monte.py +1 -1
  152. data/vendor/pygments-main/pygments/lexers/mosel.py +448 -0
  153. data/vendor/pygments-main/pygments/lexers/ncl.py +1 -1
  154. data/vendor/pygments-main/pygments/lexers/nimrod.py +4 -4
  155. data/vendor/pygments-main/pygments/lexers/nit.py +1 -1
  156. data/vendor/pygments-main/pygments/lexers/nix.py +1 -1
  157. data/vendor/pygments-main/pygments/lexers/oberon.py +17 -1
  158. data/vendor/pygments-main/pygments/lexers/objective.py +16 -16
  159. data/vendor/pygments-main/pygments/lexers/ooc.py +1 -1
  160. data/vendor/pygments-main/pygments/lexers/other.py +1 -1
  161. data/vendor/pygments-main/pygments/lexers/parasail.py +1 -1
  162. data/vendor/pygments-main/pygments/lexers/parsers.py +23 -58
  163. data/vendor/pygments-main/pygments/lexers/pascal.py +22 -22
  164. data/vendor/pygments-main/pygments/lexers/pawn.py +30 -24
  165. data/vendor/pygments-main/pygments/lexers/perl.py +260 -148
  166. data/vendor/pygments-main/pygments/lexers/php.py +64 -10
  167. data/vendor/pygments-main/pygments/lexers/pointless.py +71 -0
  168. data/vendor/pygments-main/pygments/lexers/pony.py +94 -0
  169. data/vendor/pygments-main/pygments/lexers/praat.py +38 -30
  170. data/vendor/pygments-main/pygments/lexers/prolog.py +36 -36
  171. data/vendor/pygments-main/pygments/lexers/promql.py +183 -0
  172. data/vendor/pygments-main/pygments/lexers/python.py +439 -227
  173. data/vendor/pygments-main/pygments/lexers/qvt.py +6 -6
  174. data/vendor/pygments-main/pygments/lexers/r.py +13 -275
  175. data/vendor/pygments-main/pygments/lexers/rdf.py +232 -39
  176. data/vendor/pygments-main/pygments/lexers/rebol.py +8 -8
  177. data/vendor/pygments-main/pygments/lexers/resource.py +2 -2
  178. data/vendor/pygments-main/pygments/lexers/ride.py +139 -0
  179. data/vendor/pygments-main/pygments/lexers/rnc.py +1 -1
  180. data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -1
  181. data/vendor/pygments-main/pygments/lexers/robotframework.py +23 -31
  182. data/vendor/pygments-main/pygments/lexers/ruby.py +22 -24
  183. data/vendor/pygments-main/pygments/lexers/rust.py +76 -72
  184. data/vendor/pygments-main/pygments/lexers/sas.py +1 -1
  185. data/vendor/pygments-main/pygments/lexers/scdoc.py +83 -0
  186. data/vendor/pygments-main/pygments/lexers/scripting.py +75 -13
  187. data/vendor/pygments-main/pygments/lexers/sgf.py +61 -0
  188. data/vendor/pygments-main/pygments/lexers/shell.py +162 -42
  189. data/vendor/pygments-main/pygments/lexers/sieve.py +69 -0
  190. data/vendor/pygments-main/pygments/lexers/slash.py +185 -0
  191. data/vendor/pygments-main/pygments/lexers/smalltalk.py +2 -2
  192. data/vendor/pygments-main/pygments/lexers/smv.py +3 -3
  193. data/vendor/pygments-main/pygments/lexers/snobol.py +1 -1
  194. data/vendor/pygments-main/pygments/lexers/solidity.py +92 -0
  195. data/vendor/pygments-main/pygments/lexers/special.py +5 -3
  196. data/vendor/pygments-main/pygments/lexers/sql.py +333 -177
  197. data/vendor/pygments-main/pygments/lexers/stata.py +107 -44
  198. data/vendor/pygments-main/pygments/lexers/supercollider.py +6 -1
  199. data/vendor/pygments-main/pygments/lexers/tcl.py +1 -1
  200. data/vendor/pygments-main/pygments/lexers/templates.py +102 -121
  201. data/vendor/pygments-main/pygments/lexers/teraterm.py +335 -0
  202. data/vendor/pygments-main/pygments/lexers/testing.py +6 -6
  203. data/vendor/pygments-main/pygments/lexers/text.py +2 -1
  204. data/vendor/pygments-main/pygments/lexers/textedit.py +4 -4
  205. data/vendor/pygments-main/pygments/lexers/textfmts.py +146 -13
  206. data/vendor/pygments-main/pygments/lexers/theorem.py +69 -53
  207. data/vendor/pygments-main/pygments/lexers/tnt.py +263 -0
  208. data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -1
  209. data/vendor/pygments-main/pygments/lexers/typoscript.py +4 -11
  210. data/vendor/pygments-main/pygments/lexers/unicon.py +412 -0
  211. data/vendor/pygments-main/pygments/lexers/urbi.py +14 -1
  212. data/vendor/pygments-main/pygments/lexers/usd.py +90 -0
  213. data/vendor/pygments-main/pygments/lexers/varnish.py +3 -3
  214. data/vendor/pygments-main/pygments/lexers/verification.py +13 -10
  215. data/vendor/pygments-main/pygments/lexers/web.py +1 -1
  216. data/vendor/pygments-main/pygments/lexers/webidl.py +299 -0
  217. data/vendor/pygments-main/pygments/lexers/webmisc.py +31 -28
  218. data/vendor/pygments-main/pygments/lexers/whiley.py +5 -5
  219. data/vendor/pygments-main/pygments/lexers/x10.py +1 -1
  220. data/vendor/pygments-main/pygments/lexers/xorg.py +5 -4
  221. data/vendor/pygments-main/pygments/lexers/yang.py +104 -0
  222. data/vendor/pygments-main/pygments/lexers/zig.py +124 -0
  223. data/vendor/pygments-main/pygments/modeline.py +1 -1
  224. data/vendor/pygments-main/pygments/plugin.py +4 -2
  225. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  226. data/vendor/pygments-main/pygments/scanner.py +2 -2
  227. data/vendor/pygments-main/pygments/sphinxext.py +2 -4
  228. data/vendor/pygments-main/pygments/style.py +61 -24
  229. data/vendor/pygments-main/pygments/styles/__init__.py +10 -4
  230. data/vendor/pygments-main/pygments/styles/abap.py +1 -1
  231. data/vendor/pygments-main/pygments/styles/algol.py +1 -1
  232. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -1
  233. data/vendor/pygments-main/pygments/styles/arduino.py +2 -2
  234. data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
  235. data/vendor/pygments-main/pygments/styles/borland.py +1 -1
  236. data/vendor/pygments-main/pygments/styles/bw.py +1 -1
  237. data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
  238. data/vendor/pygments-main/pygments/styles/default.py +1 -1
  239. data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
  240. data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
  241. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  242. data/vendor/pygments-main/pygments/styles/igor.py +1 -1
  243. data/vendor/pygments-main/pygments/styles/inkpot.py +67 -0
  244. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -1
  245. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  246. data/vendor/pygments-main/pygments/styles/monokai.py +4 -3
  247. data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
  248. data/vendor/pygments-main/pygments/styles/native.py +1 -1
  249. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -1
  250. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -1
  251. data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
  252. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
  253. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -1
  254. data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
  255. data/vendor/pygments-main/pygments/styles/sas.py +1 -1
  256. data/vendor/pygments-main/pygments/styles/solarized.py +134 -0
  257. data/vendor/pygments-main/pygments/styles/stata_dark.py +41 -0
  258. data/vendor/pygments-main/pygments/styles/{stata.py → stata_light.py} +14 -15
  259. data/vendor/pygments-main/pygments/styles/tango.py +1 -1
  260. data/vendor/pygments-main/pygments/styles/trac.py +1 -1
  261. data/vendor/pygments-main/pygments/styles/vim.py +1 -1
  262. data/vendor/pygments-main/pygments/styles/vs.py +1 -1
  263. data/vendor/pygments-main/pygments/styles/xcode.py +1 -1
  264. data/vendor/pygments-main/pygments/token.py +1 -1
  265. data/vendor/pygments-main/pygments/unistring.py +47 -108
  266. data/vendor/pygments-main/pygments/util.py +15 -92
  267. metadata +68 -136
  268. data/CHANGELOG.md +0 -111
  269. data/README.md +0 -121
  270. data/circle.yml +0 -20
  271. data/test/test_data.c +0 -2581
  272. data/test/test_data.py +0 -514
  273. data/test/test_data_generated +0 -2582
  274. data/vendor/custom_lexers/github.py +0 -565
  275. data/vendor/pygments-main/CHANGES +0 -1186
  276. data/vendor/pygments-main/MANIFEST.in +0 -6
  277. data/vendor/pygments-main/Makefile +0 -65
  278. data/vendor/pygments-main/README.rst +0 -39
  279. data/vendor/pygments-main/REVISION +0 -1
  280. data/vendor/pygments-main/TODO +0 -12
  281. data/vendor/pygments-main/doc/Makefile +0 -153
  282. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  283. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  284. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  285. data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
  286. data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
  287. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
  288. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  289. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  290. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  291. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  292. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  293. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
  294. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
  295. data/vendor/pygments-main/doc/conf.py +0 -241
  296. data/vendor/pygments-main/doc/docs/api.rst +0 -354
  297. data/vendor/pygments-main/doc/docs/authors.rst +0 -4
  298. data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
  299. data/vendor/pygments-main/doc/docs/cmdline.rst +0 -166
  300. data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
  301. data/vendor/pygments-main/doc/docs/filters.rst +0 -41
  302. data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
  303. data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
  304. data/vendor/pygments-main/doc/docs/index.rst +0 -66
  305. data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
  306. data/vendor/pygments-main/doc/docs/java.rst +0 -70
  307. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -728
  308. data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
  309. data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
  310. data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
  311. data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
  312. data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
  313. data/vendor/pygments-main/doc/docs/styles.rst +0 -201
  314. data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
  315. data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
  316. data/vendor/pygments-main/doc/download.rst +0 -41
  317. data/vendor/pygments-main/doc/faq.rst +0 -139
  318. data/vendor/pygments-main/doc/index.rst +0 -54
  319. data/vendor/pygments-main/doc/languages.rst +0 -154
  320. data/vendor/pygments-main/doc/make.bat +0 -190
  321. data/vendor/pygments-main/doc/pygmentize.1 +0 -94
  322. data/vendor/pygments-main/external/autopygmentize +0 -101
  323. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
  324. data/vendor/pygments-main/external/markdown-processor.py +0 -67
  325. data/vendor/pygments-main/external/moin-parser.py +0 -112
  326. data/vendor/pygments-main/external/pygments.bashcomp +0 -38
  327. data/vendor/pygments-main/external/rst-directive.py +0 -82
  328. data/vendor/pygments-main/pygmentize +0 -8
  329. data/vendor/pygments-main/pygments/lexers/github.py +0 -565
  330. data/vendor/pygments-main/requirements.txt +0 -5
  331. data/vendor/pygments-main/scripts/check_sources.py +0 -211
  332. data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
  333. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
  334. data/vendor/pygments-main/scripts/epydoc.css +0 -280
  335. data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
  336. data/vendor/pygments-main/scripts/pylintrc +0 -301
  337. data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
  338. data/vendor/pygments-main/setup.cfg +0 -10
  339. data/vendor/pygments-main/setup.py +0 -77
  340. data/vendor/pygments-main/tox.ini +0 -7
  341. data/vendor/simplejson/.gitignore +0 -10
  342. data/vendor/simplejson/.travis.yml +0 -5
  343. data/vendor/simplejson/CHANGES.txt +0 -291
  344. data/vendor/simplejson/LICENSE.txt +0 -19
  345. data/vendor/simplejson/MANIFEST.in +0 -5
  346. data/vendor/simplejson/README.rst +0 -19
  347. data/vendor/simplejson/conf.py +0 -179
  348. data/vendor/simplejson/index.rst +0 -628
  349. data/vendor/simplejson/scripts/make_docs.py +0 -18
  350. data/vendor/simplejson/setup.py +0 -104
  351. data/vendor/simplejson/simplejson/__init__.py +0 -510
  352. data/vendor/simplejson/simplejson/_speedups.c +0 -2745
  353. data/vendor/simplejson/simplejson/decoder.py +0 -425
  354. data/vendor/simplejson/simplejson/encoder.py +0 -567
  355. data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
  356. data/vendor/simplejson/simplejson/scanner.py +0 -77
  357. data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
  358. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
  359. data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
  360. data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
  361. data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
  362. data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
  363. data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
  364. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
  365. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
  366. data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
  367. data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
  368. data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
  369. data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
  370. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
  371. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
  372. data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
  373. data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
  374. data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
  375. data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
  376. data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
  377. data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
  378. data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
  379. data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
  380. data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
  381. data/vendor/simplejson/simplejson/tool.py +0 -39
@@ -5,22 +5,23 @@
5
5
 
6
6
  Lexers for assembly languages.
7
7
 
8
- :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
12
12
  import re
13
13
 
14
14
  from pygments.lexer import RegexLexer, include, bygroups, using, words, \
15
- DelegatingLexer
15
+ DelegatingLexer, default
16
16
  from pygments.lexers.c_cpp import CppLexer, CLexer
17
17
  from pygments.lexers.d import DLexer
18
18
  from pygments.token import Text, Name, Number, String, Comment, Punctuation, \
19
- Other, Keyword, Operator
19
+ Other, Keyword, Operator, Literal
20
20
 
21
21
  __all__ = ['GasLexer', 'ObjdumpLexer', 'DObjdumpLexer', 'CppObjdumpLexer',
22
- 'CObjdumpLexer', 'HsailLexer', 'LlvmLexer', 'NasmLexer',
23
- 'NasmObjdumpLexer', 'TasmLexer', 'Ca65Lexer']
22
+ 'CObjdumpLexer', 'HsailLexer', 'LlvmLexer', 'LlvmMirBodyLexer',
23
+ 'LlvmMirLexer', 'NasmLexer', 'NasmObjdumpLexer', 'TasmLexer',
24
+ 'Ca65Lexer', 'Dasm16Lexer']
24
25
 
25
26
 
26
27
  class GasLexer(RegexLexer):
@@ -35,8 +36,9 @@ class GasLexer(RegexLexer):
35
36
  #: optional Comment or Whitespace
36
37
  string = r'"(\\"|[^"])*"'
37
38
  char = r'[\w$.@-]'
38
- identifier = r'(?:[a-zA-Z$_]' + char + '*|\.' + char + '+)'
39
- number = r'(?:0[xX][a-zA-Z0-9]+|\d+)'
39
+ identifier = r'(?:[a-zA-Z$_]' + char + r'*|\.' + char + '+)'
40
+ number = r'(?:0[xX][a-fA-F0-9]+|#?-?\d+)'
41
+ register = '%' + identifier
40
42
 
41
43
  tokens = {
42
44
  'root': [
@@ -52,7 +54,11 @@ class GasLexer(RegexLexer):
52
54
  (string, String),
53
55
  ('@' + identifier, Name.Attribute),
54
56
  (number, Number.Integer),
57
+ (register, Name.Variable),
55
58
  (r'[\r\n]+', Text, '#pop'),
59
+ (r'([;#]|//).*?\n', Comment.Single, '#pop'),
60
+ (r'/[*].*?[*]/', Comment.Multiline),
61
+ (r'/[*].*?\n[\w\W]*?[*]/', Comment.Multiline, '#pop'),
56
62
 
57
63
  include('punctuation'),
58
64
  include('whitespace')
@@ -71,11 +77,14 @@ class GasLexer(RegexLexer):
71
77
  (identifier, Name.Constant),
72
78
  (number, Number.Integer),
73
79
  # Registers
74
- ('%' + identifier, Name.Variable),
80
+ (register, Name.Variable),
75
81
  # Numeric constants
76
82
  ('$'+number, Number.Integer),
77
83
  (r"$'(.|\\')'", String.Char),
78
84
  (r'[\r\n]+', Text, '#pop'),
85
+ (r'([;#]|//).*?\n', Comment.Single, '#pop'),
86
+ (r'/[*].*?[*]/', Comment.Multiline),
87
+ (r'/[*].*?\n[\w\W]*?[*]/', Comment.Multiline, '#pop'),
79
88
 
80
89
  include('punctuation'),
81
90
  include('whitespace')
@@ -83,7 +92,8 @@ class GasLexer(RegexLexer):
83
92
  'whitespace': [
84
93
  (r'\n', Text),
85
94
  (r'\s+', Text),
86
- (r'[;#].*?\n', Comment)
95
+ (r'([;#]|//).*?\n', Comment.Single),
96
+ (r'/[*][\w\W]*?[*]/', Comment.Multiline)
87
97
  ],
88
98
  'punctuation': [
89
99
  (r'[-*,.()\[\]!:]+', Punctuation)
@@ -91,9 +101,9 @@ class GasLexer(RegexLexer):
91
101
  }
92
102
 
93
103
  def analyse_text(text):
94
- if re.match(r'^\.(text|data|section)', text, re.M):
104
+ if re.search(r'^\.(text|data|section)', text, re.M):
95
105
  return True
96
- elif re.match(r'^\.\w+', text, re.M):
106
+ elif re.search(r'^\.\w+', text, re.M):
97
107
  return 0.1
98
108
 
99
109
 
@@ -148,7 +158,7 @@ def _objdump_lexer_tokens(asm_lexer):
148
158
 
149
159
  class ObjdumpLexer(RegexLexer):
150
160
  """
151
- For the output of 'objdump -dr'
161
+ For the output of ``objdump -dr``.
152
162
  """
153
163
  name = 'objdump'
154
164
  aliases = ['objdump']
@@ -160,7 +170,7 @@ class ObjdumpLexer(RegexLexer):
160
170
 
161
171
  class DObjdumpLexer(DelegatingLexer):
162
172
  """
163
- For the output of 'objdump -Sr on compiled D files'
173
+ For the output of ``objdump -Sr`` on compiled D files.
164
174
  """
165
175
  name = 'd-objdump'
166
176
  aliases = ['d-objdump']
@@ -168,12 +178,12 @@ class DObjdumpLexer(DelegatingLexer):
168
178
  mimetypes = ['text/x-d-objdump']
169
179
 
170
180
  def __init__(self, **options):
171
- super(DObjdumpLexer, self).__init__(DLexer, ObjdumpLexer, **options)
181
+ super().__init__(DLexer, ObjdumpLexer, **options)
172
182
 
173
183
 
174
184
  class CppObjdumpLexer(DelegatingLexer):
175
185
  """
176
- For the output of 'objdump -Sr on compiled C++ files'
186
+ For the output of ``objdump -Sr`` on compiled C++ files.
177
187
  """
178
188
  name = 'cpp-objdump'
179
189
  aliases = ['cpp-objdump', 'c++-objdumb', 'cxx-objdump']
@@ -181,12 +191,12 @@ class CppObjdumpLexer(DelegatingLexer):
181
191
  mimetypes = ['text/x-cpp-objdump']
182
192
 
183
193
  def __init__(self, **options):
184
- super(CppObjdumpLexer, self).__init__(CppLexer, ObjdumpLexer, **options)
194
+ super().__init__(CppLexer, ObjdumpLexer, **options)
185
195
 
186
196
 
187
197
  class CObjdumpLexer(DelegatingLexer):
188
198
  """
189
- For the output of 'objdump -Sr on compiled C files'
199
+ For the output of ``objdump -Sr`` on compiled C files.
190
200
  """
191
201
  name = 'c-objdump'
192
202
  aliases = ['c-objdump']
@@ -194,7 +204,7 @@ class CObjdumpLexer(DelegatingLexer):
194
204
  mimetypes = ['text/x-c-objdump']
195
205
 
196
206
  def __init__(self, **options):
197
- super(CObjdumpLexer, self).__init__(CLexer, ObjdumpLexer, **options)
207
+ super().__init__(CLexer, ObjdumpLexer, **options)
198
208
 
199
209
 
200
210
  class HsailLexer(RegexLexer):
@@ -256,7 +266,7 @@ class HsailLexer(RegexLexer):
256
266
  (r'0[xX][a-fA-F0-9]+', Number.Hex),
257
267
  (ieeefloat, Number.Float),
258
268
  (float, Number.Float),
259
- ('\d+', Number.Integer),
269
+ (r'\d+', Number.Integer),
260
270
 
261
271
  (r'[=<>{}\[\]()*.,:;!]|x\b', Punctuation)
262
272
  ],
@@ -350,7 +360,7 @@ class LlvmLexer(RegexLexer):
350
360
  include('whitespace'),
351
361
 
352
362
  # Before keywords, because keywords are valid label names :(...
353
- (identifier + '\s*:', Name.Label),
363
+ (identifier + r'\s*:', Name.Label),
354
364
 
355
365
  include('keyword'),
356
366
 
@@ -375,66 +385,298 @@ class LlvmLexer(RegexLexer):
375
385
  'keyword': [
376
386
  # Regular keywords
377
387
  (words((
378
- 'begin', 'end', 'true', 'false', 'declare', 'define', 'global',
379
- 'constant', 'private', 'linker_private', 'internal',
380
- 'available_externally', 'linkonce', 'linkonce_odr', 'weak',
381
- 'weak_odr', 'appending', 'dllimport', 'dllexport', 'common',
382
- 'default', 'hidden', 'protected', 'extern_weak', 'external',
383
- 'thread_local', 'zeroinitializer', 'undef', 'null', 'to', 'tail',
384
- 'target', 'triple', 'datalayout', 'volatile', 'nuw', 'nsw', 'nnan',
385
- 'ninf', 'nsz', 'arcp', 'fast', 'exact', 'inbounds', 'align',
386
- 'addrspace', 'section', 'alias', 'module', 'asm', 'sideeffect',
387
- 'gc', 'dbg', 'linker_private_weak', 'attributes', 'blockaddress',
388
- 'initialexec', 'localdynamic', 'localexec', 'prefix', 'unnamed_addr',
389
- 'ccc', 'fastcc', 'coldcc', 'x86_stdcallcc', 'x86_fastcallcc',
390
- 'arm_apcscc', 'arm_aapcscc', 'arm_aapcs_vfpcc', 'ptx_device',
391
- 'ptx_kernel', 'intel_ocl_bicc', 'msp430_intrcc', 'spir_func',
392
- 'spir_kernel', 'x86_64_sysvcc', 'x86_64_win64cc', 'x86_thiscallcc',
393
- 'cc', 'c', 'signext', 'zeroext', 'inreg', 'sret', 'nounwind',
394
- 'noreturn', 'noalias', 'nocapture', 'byval', 'nest', 'readnone',
395
- 'readonly', 'inlinehint', 'noinline', 'alwaysinline', 'optsize', 'ssp',
396
- 'sspreq', 'noredzone', 'noimplicitfloat', 'naked', 'builtin', 'cold',
397
- 'nobuiltin', 'noduplicate', 'nonlazybind', 'optnone', 'returns_twice',
398
- 'sanitize_address', 'sanitize_memory', 'sanitize_thread', 'sspstrong',
399
- 'uwtable', 'returned', 'type', 'opaque', 'eq', 'ne', 'slt', 'sgt',
400
- 'sle', 'sge', 'ult', 'ugt', 'ule', 'uge', 'oeq', 'one', 'olt', 'ogt',
401
- 'ole', 'oge', 'ord', 'uno', 'ueq', 'une', 'x', 'acq_rel', 'acquire',
402
- 'alignstack', 'atomic', 'catch', 'cleanup', 'filter', 'inteldialect',
403
- 'max', 'min', 'monotonic', 'nand', 'personality', 'release', 'seq_cst',
404
- 'singlethread', 'umax', 'umin', 'unordered', 'xchg', 'add', 'fadd',
405
- 'sub', 'fsub', 'mul', 'fmul', 'udiv', 'sdiv', 'fdiv', 'urem', 'srem',
406
- 'frem', 'shl', 'lshr', 'ashr', 'and', 'or', 'xor', 'icmp', 'fcmp',
407
- 'phi', 'call', 'trunc', 'zext', 'sext', 'fptrunc', 'fpext', 'uitofp',
408
- 'sitofp', 'fptoui', 'fptosi', 'inttoptr', 'ptrtoint', 'bitcast',
409
- 'addrspacecast', 'select', 'va_arg', 'ret', 'br', 'switch', 'invoke',
410
- 'unwind', 'unreachable', 'indirectbr', 'landingpad', 'resume',
411
- 'malloc', 'alloca', 'free', 'load', 'store', 'getelementptr',
412
- 'extractelement', 'insertelement', 'shufflevector', 'getresult',
413
- 'extractvalue', 'insertvalue', 'atomicrmw', 'cmpxchg', 'fence',
414
- 'allocsize', 'amdgpu_cs', 'amdgpu_gs', 'amdgpu_kernel', 'amdgpu_ps',
415
- 'amdgpu_vs', 'any', 'anyregcc', 'argmemonly', 'avr_intrcc',
416
- 'avr_signalcc', 'caller', 'catchpad', 'catchret', 'catchswitch',
417
- 'cleanuppad', 'cleanupret', 'comdat', 'convergent', 'cxx_fast_tlscc',
418
- 'deplibs', 'dereferenceable', 'dereferenceable_or_null', 'distinct',
419
- 'exactmatch', 'externally_initialized', 'from', 'ghccc', 'hhvm_ccc',
420
- 'hhvmcc', 'ifunc', 'inaccessiblemem_or_argmemonly', 'inaccessiblememonly',
421
- 'inalloca', 'jumptable', 'largest', 'local_unnamed_addr', 'minsize',
422
- 'musttail', 'noduplicates', 'none', 'nonnull', 'norecurse', 'notail',
423
- 'preserve_allcc', 'preserve_mostcc', 'prologue', 'safestack', 'samesize',
424
- 'source_filename', 'swiftcc', 'swifterror', 'swiftself', 'webkit_jscc',
425
- 'within', 'writeonly', 'x86_intrcc', 'x86_vectorcallcc'),
388
+ 'acq_rel', 'acquire', 'add', 'addrspace', 'addrspacecast', 'afn', 'alias',
389
+ 'aliasee', 'align', 'alignLog2', 'alignstack', 'alloca', 'allocsize', 'allOnes',
390
+ 'alwaysinline', 'amdgpu_cs', 'amdgpu_es', 'amdgpu_gs', 'amdgpu_hs',
391
+ 'amdgpu_kernel', 'amdgpu_ls', 'amdgpu_ps', 'amdgpu_vs', 'and', 'any',
392
+ 'anyregcc', 'appending', 'arcp', 'argmemonly', 'args', 'arm_aapcs_vfpcc',
393
+ 'arm_aapcscc', 'arm_apcscc', 'ashr', 'asm', 'atomic', 'atomicrmw', 'attributes',
394
+ 'available_externally', 'avr_intrcc', 'avr_signalcc', 'bit', 'bitcast',
395
+ 'bitMask', 'blockaddress', 'br', 'branchFunnel', 'builtin', 'byArg', 'byte',
396
+ 'byteArray', 'byval', 'c', 'call', 'callee', 'caller', 'calls', 'catch',
397
+ 'catchpad', 'catchret', 'catchswitch', 'cc', 'ccc', 'cleanup', 'cleanuppad',
398
+ 'cleanupret', 'cmpxchg', 'cold', 'coldcc', 'comdat', 'common', 'constant',
399
+ 'contract', 'convergent', 'critical', 'cxx_fast_tlscc', 'datalayout', 'declare',
400
+ 'default', 'define', 'deplibs', 'dereferenceable', 'dereferenceable_or_null',
401
+ 'distinct', 'dllexport', 'dllimport', 'dso_local', 'dso_preemptable',
402
+ 'dsoLocal', 'eq', 'exact', 'exactmatch', 'extern_weak', 'external',
403
+ 'externally_initialized', 'extractelement', 'extractvalue', 'fadd', 'false',
404
+ 'fast', 'fastcc', 'fcmp', 'fdiv', 'fence', 'filter', 'flags', 'fmul',
405
+ 'fpext', 'fptosi', 'fptoui', 'fptrunc', 'freeze', 'frem', 'from', 'fsub',
406
+ 'funcFlags', 'function', 'gc', 'getelementptr', 'ghccc', 'global', 'guid', 'gv',
407
+ 'hash', 'hhvm_ccc', 'hhvmcc', 'hidden', 'hot', 'hotness', 'icmp',
408
+ 'ifunc', 'inaccessiblemem_or_argmemonly', 'inaccessiblememonly', 'inalloca',
409
+ 'inbounds', 'indir', 'indirectbr', 'info', 'initialexec', 'inline',
410
+ 'inlineBits', 'inlinehint', 'inrange', 'inreg', 'insertelement', 'insertvalue',
411
+ 'insts', 'intel_ocl_bicc', 'inteldialect', 'internal', 'inttoptr', 'invoke',
412
+ 'jumptable', 'kind', 'landingpad', 'largest', 'linkage', 'linkonce',
413
+ 'linkonce_odr', 'live', 'load', 'local_unnamed_addr', 'localdynamic',
414
+ 'localexec', 'lshr', 'max', 'metadata', 'min', 'minsize', 'module', 'monotonic',
415
+ 'msp430_intrcc', 'mul', 'musttail', 'naked', 'name', 'nand', 'ne', 'nest',
416
+ 'ninf', 'nnan', 'noalias', 'nobuiltin', 'nocapture', 'nocf_check',
417
+ 'noduplicate', 'noduplicates', 'noimplicitfloat', 'noinline', 'none',
418
+ 'nonlazybind', 'nonnull', 'norecurse', 'noRecurse', 'noredzone', 'noreturn',
419
+ 'notail', 'notEligibleToImport', 'nounwind', 'nsw', 'nsz', 'null', 'nuw', 'oeq',
420
+ 'offset', 'oge', 'ogt', 'ole', 'olt', 'one', 'opaque', 'optforfuzzing',
421
+ 'optnone', 'optsize', 'or', 'ord', 'path', 'personality', 'phi', 'poison',
422
+ 'prefix', 'preserve_allcc', 'preserve_mostcc', 'private', 'prologue',
423
+ 'protected', 'ptrtoint', 'ptx_device', 'ptx_kernel', 'readnone', 'readNone',
424
+ 'readonly', 'readOnly', 'reassoc', 'refs', 'relbf', 'release', 'resByArg',
425
+ 'resume', 'ret', 'returnDoesNotAlias', 'returned', 'returns_twice', 'safestack',
426
+ 'samesize', 'sanitize_address', 'sanitize_hwaddress', 'sanitize_memory',
427
+ 'sanitize_thread', 'sdiv', 'section', 'select', 'seq_cst', 'sext', 'sge', 'sgt',
428
+ 'shadowcallstack', 'shl', 'shufflevector', 'sideeffect', 'signext', 'single',
429
+ 'singleImpl', 'singleImplName', 'sitofp', 'sizeM1', 'sizeM1BitWidth', 'sle',
430
+ 'slt', 'source_filename', 'speculatable', 'spir_func', 'spir_kernel', 'srem',
431
+ 'sret', 'ssp', 'sspreq', 'sspstrong', 'store', 'strictfp', 'sub', 'summaries',
432
+ 'summary', 'swiftcc', 'swifterror', 'swiftself', 'switch', 'syncscope', 'tail',
433
+ 'target', 'thread_local', 'to', 'token', 'triple', 'true', 'trunc', 'type',
434
+ 'typeCheckedLoadConstVCalls', 'typeCheckedLoadVCalls', 'typeid', 'typeIdInfo',
435
+ 'typeTestAssumeConstVCalls', 'typeTestAssumeVCalls', 'typeTestRes', 'typeTests',
436
+ 'udiv', 'ueq', 'uge', 'ugt', 'uitofp', 'ule', 'ult', 'umax', 'umin', 'undef',
437
+ 'une', 'uniformRetVal', 'uniqueRetVal', 'unknown', 'unnamed_addr', 'uno',
438
+ 'unordered', 'unreachable', 'unsat', 'unwind', 'urem', 'uselistorder',
439
+ 'uselistorder_bb', 'uwtable', 'va_arg', 'variable', 'vFuncId',
440
+ 'virtualConstProp', 'void', 'volatile', 'weak', 'weak_odr', 'webkit_jscc',
441
+ 'win64cc', 'within', 'wpdRes', 'wpdResolutions', 'writeonly',
442
+ 'x86_64_sysvcc', 'x86_fastcallcc', 'x86_intrcc', 'x86_mmx',
443
+ 'x86_regcallcc', 'x86_stdcallcc', 'x86_thiscallcc', 'x86_vectorcallcc', 'xchg',
444
+ 'xor', 'zeroext', 'zeroinitializer', 'zext', 'immarg', 'willreturn'),
426
445
  suffix=r'\b'), Keyword),
427
446
 
428
447
  # Types
429
- (words(('void', 'half', 'float', 'double', 'x86_fp80', 'fp128',
430
- 'ppc_fp128', 'label', 'metadata', 'token')), Keyword.Type),
448
+ (words(('void', 'half', 'bfloat', 'float', 'double', 'fp128',
449
+ 'x86_fp80', 'ppc_fp128', 'label', 'metadata', 'token')),
450
+ Keyword.Type),
431
451
 
432
452
  # Integer types
433
- (r'i[1-9]\d*', Keyword)
453
+ (r'i[1-9]\d*', Keyword.Type)
434
454
  ]
435
455
  }
436
456
 
437
457
 
458
+ class LlvmMirBodyLexer(RegexLexer):
459
+ """
460
+ For LLVM MIR examples without the YAML wrapper.
461
+
462
+ For more information on LLVM MIR see https://llvm.org/docs/MIRLangRef.html.
463
+
464
+ .. versionadded:: 2.6
465
+ """
466
+ name = 'LLVM-MIR Body'
467
+ aliases = ['llvm-mir-body']
468
+ filenames = []
469
+ mimetypes = []
470
+
471
+ tokens = {
472
+ 'root': [
473
+ # Attributes on basic blocks
474
+ (words(('liveins', 'successors'), suffix=':'), Keyword),
475
+ # Basic Block Labels
476
+ (r'bb\.[0-9]+(\.[a-zA-Z0-9_.-]+)?( \(address-taken\))?:', Name.Label),
477
+ (r'bb\.[0-9]+ \(%[a-zA-Z0-9_.-]+\)( \(address-taken\))?:', Name.Label),
478
+ (r'%bb\.[0-9]+(\.\w+)?', Name.Label),
479
+ # Stack references
480
+ (r'%stack\.[0-9]+(\.\w+\.addr)?', Name),
481
+ # Subreg indices
482
+ (r'%subreg\.\w+', Name),
483
+ # Virtual registers
484
+ (r'%[a-zA-Z0-9_]+ *', Name.Variable, 'vreg'),
485
+ # Reference to LLVM-IR global
486
+ include('global'),
487
+ # Reference to Intrinsic
488
+ (r'intrinsic\(\@[a-zA-Z0-9_.]+\)', Name.Variable.Global),
489
+ # Comparison predicates
490
+ (words(('eq', 'ne', 'sgt', 'sge', 'slt', 'sle', 'ugt', 'uge', 'ult',
491
+ 'ule'), prefix=r'intpred\(', suffix=r'\)'), Name.Builtin),
492
+ (words(('oeq', 'one', 'ogt', 'oge', 'olt', 'ole', 'ugt', 'uge',
493
+ 'ult', 'ule'), prefix=r'floatpred\(', suffix=r'\)'),
494
+ Name.Builtin),
495
+ # Physical registers
496
+ (r'\$\w+', String.Single),
497
+ # Assignment operator
498
+ (r'=', Operator),
499
+ # gMIR Opcodes
500
+ (r'(G_ANYEXT|G_[SZ]EXT|G_SEXT_INREG|G_TRUNC|G_IMPLICIT_DEF|G_PHI|'
501
+ r'G_FRAME_INDEX|G_GLOBAL_VALUE|G_INTTOPTR|G_PTRTOINT|G_BITCAST|'
502
+ r'G_CONSTANT|G_FCONSTANT|G_VASTART|G_VAARG|G_CTLZ|G_CTLZ_ZERO_UNDEF|'
503
+ r'G_CTTZ|G_CTTZ_ZERO_UNDEF|G_CTPOP|G_BSWAP|G_BITREVERSE|'
504
+ r'G_ADDRSPACE_CAST|G_BLOCK_ADDR|G_JUMP_TABLE|G_DYN_STACKALLOC|'
505
+ r'G_ADD|G_SUB|G_MUL|G_[SU]DIV|G_[SU]REM|G_AND|G_OR|G_XOR|G_SHL|'
506
+ r'G_[LA]SHR|G_[IF]CMP|G_SELECT|G_GEP|G_PTR_MASK|G_SMIN|G_SMAX|'
507
+ r'G_UMIN|G_UMAX|G_[US]ADDO|G_[US]ADDE|G_[US]SUBO|G_[US]SUBE|'
508
+ r'G_[US]MULO|G_[US]MULH|G_FNEG|G_FPEXT|G_FPTRUNC|G_FPTO[US]I|'
509
+ r'G_[US]ITOFP|G_FABS|G_FCOPYSIGN|G_FCANONICALIZE|G_FMINNUM|'
510
+ r'G_FMAXNUM|G_FMINNUM_IEEE|G_FMAXNUM_IEEE|G_FMINIMUM|G_FMAXIMUM|'
511
+ r'G_FADD|G_FSUB|G_FMUL|G_FMA|G_FMAD|G_FDIV|G_FREM|G_FPOW|G_FEXP|'
512
+ r'G_FEXP2|G_FLOG|G_FLOG2|G_FLOG10|G_FCEIL|G_FCOS|G_FSIN|G_FSQRT|'
513
+ r'G_FFLOOR|G_FRINT|G_FNEARBYINT|G_INTRINSIC_TRUNC|'
514
+ r'G_INTRINSIC_ROUND|G_LOAD|G_[ZS]EXTLOAD|G_INDEXED_LOAD|'
515
+ r'G_INDEXED_[ZS]EXTLOAD|G_STORE|G_INDEXED_STORE|'
516
+ r'G_ATOMIC_CMPXCHG_WITH_SUCCESS|G_ATOMIC_CMPXCHG|'
517
+ r'G_ATOMICRMW_(XCHG|ADD|SUB|AND|NAND|OR|XOR|MAX|MIN|UMAX|UMIN|FADD|'
518
+ r'FSUB)'
519
+ r'|G_FENCE|G_EXTRACT|G_UNMERGE_VALUES|G_INSERT|G_MERGE_VALUES|'
520
+ r'G_BUILD_VECTOR|G_BUILD_VECTOR_TRUNC|G_CONCAT_VECTORS|'
521
+ r'G_INTRINSIC|G_INTRINSIC_W_SIDE_EFFECTS|G_BR|G_BRCOND|'
522
+ r'G_BRINDIRECT|G_BRJT|G_INSERT_VECTOR_ELT|G_EXTRACT_VECTOR_ELT|'
523
+ r'G_SHUFFLE_VECTOR)\b',
524
+ Name.Builtin),
525
+ # Target independent opcodes
526
+ (r'(COPY|PHI|INSERT_SUBREG|EXTRACT_SUBREG|REG_SEQUENCE)\b',
527
+ Name.Builtin),
528
+ # Flags
529
+ (words(('killed', 'implicit')), Keyword),
530
+ # ConstantInt values
531
+ (r'i[0-9]+ +', Keyword.Type, 'constantint'),
532
+ # ConstantFloat values
533
+ (r'(half|float|double) +', Keyword.Type, 'constantfloat'),
534
+ # Bare immediates
535
+ include('integer'),
536
+ # MMO's
537
+ (r':: *', Operator, 'mmo'),
538
+ # MIR Comments
539
+ (r';.*', Comment),
540
+ # If we get here, assume it's a target instruction
541
+ (r'[a-zA-Z0-9_]+', Name),
542
+ # Everything else that isn't highlighted
543
+ (r'[(), \n]+', Text),
544
+ ],
545
+ # The integer constant from a ConstantInt value
546
+ 'constantint': [
547
+ include('integer'),
548
+ (r'(?=.)', Text, '#pop'),
549
+ ],
550
+ # The floating point constant from a ConstantFloat value
551
+ 'constantfloat': [
552
+ include('float'),
553
+ (r'(?=.)', Text, '#pop'),
554
+ ],
555
+ 'vreg': [
556
+ # The bank or class if there is one
557
+ (r' *:(?!:)', Keyword, ('#pop', 'vreg_bank_or_class')),
558
+ # The LLT if there is one
559
+ (r' *\(', Text, 'vreg_type'),
560
+ (r'(?=.)', Text, '#pop'),
561
+ ],
562
+ 'vreg_bank_or_class': [
563
+ # The unassigned bank/class
564
+ (r' *_', Name.Variable.Magic),
565
+ (r' *[a-zA-Z0-9_]+', Name.Variable),
566
+ # The LLT if there is one
567
+ (r' *\(', Text, 'vreg_type'),
568
+ (r'(?=.)', Text, '#pop'),
569
+ ],
570
+ 'vreg_type': [
571
+ # Scalar and pointer types
572
+ (r' *[sp][0-9]+', Keyword.Type),
573
+ (r' *<[0-9]+ *x *[sp][0-9]+>', Keyword.Type),
574
+ (r'\)', Text, '#pop'),
575
+ (r'(?=.)', Text, '#pop'),
576
+ ],
577
+ 'mmo': [
578
+ (r'\(', Text),
579
+ (r' +', Text),
580
+ (words(('load', 'store', 'on', 'into', 'from', 'align', 'monotonic',
581
+ 'acquire', 'release', 'acq_rel', 'seq_cst')),
582
+ Keyword),
583
+ # IR references
584
+ (r'%ir\.[a-zA-Z0-9_.-]+', Name),
585
+ (r'%ir-block\.[a-zA-Z0-9_.-]+', Name),
586
+ (r'[-+]', Operator),
587
+ include('integer'),
588
+ include('global'),
589
+ (r',', Punctuation),
590
+ (r'\), \(', Text),
591
+ (r'\)', Text, '#pop'),
592
+ ],
593
+ 'integer': [(r'-?[0-9]+', Number.Integer),],
594
+ 'float': [(r'-?[0-9]+\.[0-9]+(e[+-][0-9]+)?', Number.Float)],
595
+ 'global': [(r'\@[a-zA-Z0-9_.]+', Name.Variable.Global)],
596
+ }
597
+
598
+
599
+ class LlvmMirLexer(RegexLexer):
600
+ """
601
+ Lexer for the overall LLVM MIR document format.
602
+
603
+ MIR is a human readable serialization format that's used to represent LLVM's
604
+ machine specific intermediate representation. It allows LLVM's developers to
605
+ see the state of the compilation process at various points, as well as test
606
+ individual pieces of the compiler.
607
+
608
+ For more information on LLVM MIR see https://llvm.org/docs/MIRLangRef.html.
609
+
610
+ .. versionadded:: 2.6
611
+ """
612
+ name = 'LLVM-MIR'
613
+ aliases = ['llvm-mir']
614
+ filenames = ['*.mir']
615
+
616
+ tokens = {
617
+ 'root': [
618
+ # Comments are hashes at the YAML level
619
+ (r'#.*', Comment),
620
+ # Documents starting with | are LLVM-IR
621
+ (r'--- \|$', Keyword, 'llvm_ir'),
622
+ # Other documents are MIR
623
+ (r'---', Keyword, 'llvm_mir'),
624
+ # Consume everything else in one token for efficiency
625
+ (r'[^-#]+|.', Text),
626
+ ],
627
+ 'llvm_ir': [
628
+ # Documents end with '...' or '---'
629
+ (r'(\.\.\.|(?=---))', Keyword, '#pop'),
630
+ # Delegate to the LlvmLexer
631
+ (r'((?:.|\n)+?)(?=(\.\.\.|---))', bygroups(using(LlvmLexer))),
632
+ ],
633
+ 'llvm_mir': [
634
+ # Comments are hashes at the YAML level
635
+ (r'#.*', Comment),
636
+ # Documents end with '...' or '---'
637
+ (r'(\.\.\.|(?=---))', Keyword, '#pop'),
638
+ # Handle the simple attributes
639
+ (r'name:', Keyword, 'name'),
640
+ (words(('alignment', ),
641
+ suffix=':'), Keyword, 'number'),
642
+ (words(('legalized', 'regBankSelected', 'tracksRegLiveness',
643
+ 'selected', 'exposesReturnsTwice'),
644
+ suffix=':'), Keyword, 'boolean'),
645
+ # Handle the attributes don't highlight inside
646
+ (words(('registers', 'stack', 'fixedStack', 'liveins', 'frameInfo',
647
+ 'machineFunctionInfo'),
648
+ suffix=':'), Keyword),
649
+ # Delegate the body block to the LlvmMirBodyLexer
650
+ (r'body: *\|', Keyword, 'llvm_mir_body'),
651
+ # Consume everything else
652
+ (r'.+', Text),
653
+ (r'\n', Text),
654
+ ],
655
+ 'name': [
656
+ (r'[^\n]+', Name),
657
+ default('#pop'),
658
+ ],
659
+ 'boolean': [
660
+ (r' *(true|false)', Name.Builtin),
661
+ default('#pop'),
662
+ ],
663
+ 'number': [
664
+ (r' *[0-9]+', Number),
665
+ default('#pop'),
666
+ ],
667
+ 'llvm_mir_body': [
668
+ # Documents end with '...' or '---'.
669
+ # We have to pop llvm_mir_body and llvm_mir
670
+ (r'(\.\.\.|(?=---))', Keyword, '#pop:2'),
671
+ # Delegate the body block to the LlvmMirBodyLexer
672
+ (r'((?:.|\n)+?)(?=\.\.\.|---)', bygroups(using(LlvmMirBodyLexer))),
673
+ # The '...' is optional. If we didn't already find it then it isn't
674
+ # there. There might be a '---' instead though.
675
+ (r'(?!\.\.\.|---)((?:.|\n)+)', bygroups(using(LlvmMirBodyLexer))),
676
+ ],
677
+ }
678
+
679
+
438
680
  class NasmLexer(RegexLexer):
439
681
  """
440
682
  For Nasm (Intel) assembly code.
@@ -444,6 +686,10 @@ class NasmLexer(RegexLexer):
444
686
  filenames = ['*.asm', '*.ASM']
445
687
  mimetypes = ['text/x-nasm']
446
688
 
689
+ # Tasm uses the same file endings, but TASM is not as common as NASM, so
690
+ # we prioritize NASM higher by default
691
+ priority = 1.0
692
+
447
693
  identifier = r'[a-z$._?][\w$.?#@~]*'
448
694
  hexn = r'(?:0x[0-9a-f]+|$0[0-9a-f]*|[0-9]+[0-9a-f]*h)'
449
695
  octn = r'[0-7]+q'
@@ -452,14 +698,16 @@ class NasmLexer(RegexLexer):
452
698
  floatn = decn + r'\.e?' + decn
453
699
  string = r'"(\\"|[^"\n])*"|' + r"'(\\'|[^'\n])*'|" + r"`(\\`|[^`\n])*`"
454
700
  declkw = r'(?:res|d)[bwdqt]|times'
455
- register = (r'r[0-9][0-5]?[bwd]|'
701
+ register = (r'r[0-9][0-5]?[bwd]?|'
456
702
  r'[a-d][lh]|[er]?[a-d]x|[er]?[sb]p|[er]?[sd]i|[c-gs]s|st[0-7]|'
457
703
  r'mm[0-7]|cr[0-4]|dr[0-367]|tr[3-7]')
458
704
  wordop = r'seg|wrt|strict'
459
705
  type = r'byte|[dq]?word'
460
- directives = (r'BITS|USE16|USE32|SECTION|SEGMENT|ABSOLUTE|EXTERN|GLOBAL|'
706
+ # Directives must be followed by whitespace, otherwise CPU will match
707
+ # cpuid for instance.
708
+ directives = (r'(?:BITS|USE16|USE32|SECTION|SEGMENT|ABSOLUTE|EXTERN|GLOBAL|'
461
709
  r'ORG|ALIGN|STRUC|ENDSTRUC|COMMON|CPU|GROUP|UPPERCASE|IMPORT|'
462
- r'EXPORT|LIBRARY|MODULE')
710
+ r'EXPORT|LIBRARY|MODULE)\s+')
463
711
 
464
712
  flags = re.IGNORECASE | re.MULTILINE
465
713
  tokens = {
@@ -507,10 +755,15 @@ class NasmLexer(RegexLexer):
507
755
  ],
508
756
  }
509
757
 
758
+ def analyse_text(text):
759
+ # Probably TASM
760
+ if re.match(r'PROC', text, re.IGNORECASE):
761
+ return False
762
+
510
763
 
511
764
  class NasmObjdumpLexer(ObjdumpLexer):
512
765
  """
513
- For the output of 'objdump -d -M intel'.
766
+ For the output of ``objdump -d -M intel``.
514
767
 
515
768
  .. versionadded:: 2.0
516
769
  """
@@ -601,6 +854,11 @@ class TasmLexer(RegexLexer):
601
854
  ],
602
855
  }
603
856
 
857
+ def analyse_text(text):
858
+ # See above
859
+ if re.match(r'PROC', text, re.I):
860
+ return True
861
+
604
862
 
605
863
  class Ca65Lexer(RegexLexer):
606
864
  """
@@ -637,5 +895,111 @@ class Ca65Lexer(RegexLexer):
637
895
 
638
896
  def analyse_text(self, text):
639
897
  # comments in GAS start with "#"
640
- if re.match(r'^\s*;', text, re.MULTILINE):
898
+ if re.search(r'^\s*;', text, re.MULTILINE):
641
899
  return 0.9
900
+
901
+
902
+ class Dasm16Lexer(RegexLexer):
903
+ """
904
+ For DCPU-16 Assembly.
905
+
906
+ Check http://0x10c.com/doc/dcpu-16.txt
907
+
908
+ .. versionadded:: 2.4
909
+ """
910
+ name = 'DASM16'
911
+ aliases = ['dasm16']
912
+ filenames = ['*.dasm16', '*.dasm']
913
+ mimetypes = ['text/x-dasm16']
914
+
915
+ INSTRUCTIONS = [
916
+ 'SET',
917
+ 'ADD', 'SUB',
918
+ 'MUL', 'MLI',
919
+ 'DIV', 'DVI',
920
+ 'MOD', 'MDI',
921
+ 'AND', 'BOR', 'XOR',
922
+ 'SHR', 'ASR', 'SHL',
923
+ 'IFB', 'IFC', 'IFE', 'IFN', 'IFG', 'IFA', 'IFL', 'IFU',
924
+ 'ADX', 'SBX',
925
+ 'STI', 'STD',
926
+ 'JSR',
927
+ 'INT', 'IAG', 'IAS', 'RFI', 'IAQ', 'HWN', 'HWQ', 'HWI',
928
+ ]
929
+
930
+ REGISTERS = [
931
+ 'A', 'B', 'C',
932
+ 'X', 'Y', 'Z',
933
+ 'I', 'J',
934
+ 'SP', 'PC', 'EX',
935
+ 'POP', 'PEEK', 'PUSH'
936
+ ]
937
+
938
+ # Regexes yo
939
+ char = r'[a-zA-Z0-9_$@.]'
940
+ identifier = r'(?:[a-zA-Z$_]' + char + r'*|\.' + char + '+)'
941
+ number = r'[+-]?(?:0[xX][a-zA-Z0-9]+|\d+)'
942
+ binary_number = r'0b[01_]+'
943
+ instruction = r'(?i)(' + '|'.join(INSTRUCTIONS) + ')'
944
+ single_char = r"'\\?" + char + "'"
945
+ string = r'"(\\"|[^"])*"'
946
+
947
+ def guess_identifier(lexer, match):
948
+ ident = match.group(0)
949
+ klass = Name.Variable if ident.upper() in lexer.REGISTERS else Name.Label
950
+ yield match.start(), klass, ident
951
+
952
+ tokens = {
953
+ 'root': [
954
+ include('whitespace'),
955
+ (':' + identifier, Name.Label),
956
+ (identifier + ':', Name.Label),
957
+ (instruction, Name.Function, 'instruction-args'),
958
+ (r'\.' + identifier, Name.Function, 'data-args'),
959
+ (r'[\r\n]+', Text)
960
+ ],
961
+
962
+ 'numeric' : [
963
+ (binary_number, Number.Integer),
964
+ (number, Number.Integer),
965
+ (single_char, String),
966
+ ],
967
+
968
+ 'arg' : [
969
+ (identifier, guess_identifier),
970
+ include('numeric')
971
+ ],
972
+
973
+ 'deref' : [
974
+ (r'\+', Punctuation),
975
+ (r'\]', Punctuation, '#pop'),
976
+ include('arg'),
977
+ include('whitespace')
978
+ ],
979
+
980
+ 'instruction-line' : [
981
+ (r'[\r\n]+', Text, '#pop'),
982
+ (r';.*?$', Comment, '#pop'),
983
+ include('whitespace')
984
+ ],
985
+
986
+ 'instruction-args': [
987
+ (r',', Punctuation),
988
+ (r'\[', Punctuation, 'deref'),
989
+ include('arg'),
990
+ include('instruction-line')
991
+ ],
992
+
993
+ 'data-args' : [
994
+ (r',', Punctuation),
995
+ include('numeric'),
996
+ (string, String),
997
+ include('instruction-line')
998
+ ],
999
+
1000
+ 'whitespace': [
1001
+ (r'\n', Text),
1002
+ (r'\s+', Text),
1003
+ (r';.*?\n', Comment)
1004
+ ],
1005
+ }