pygments.rb 1.2.1 → 2.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (378) 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 +119 -0
  7. data/Gemfile +3 -1
  8. data/LICENSE +1 -1
  9. data/README.adoc +161 -0
  10. data/Rakefile +10 -21
  11. data/bench.rb +8 -7
  12. data/cache-lexers.rb +3 -2
  13. data/lib/pygments.rb +10 -11
  14. data/lib/pygments/lexer.rb +5 -5
  15. data/lib/pygments/mentos.py +23 -66
  16. data/lib/pygments/popen.rb +152 -204
  17. data/lib/pygments/version.rb +2 -2
  18. data/pygments.rb.gemspec +11 -9
  19. data/test/test_pygments.rb +51 -84
  20. data/vendor/pygments-main/{AUTHORS → Pygments-2.7.3.dist-info/AUTHORS} +21 -3
  21. data/vendor/pygments-main/Pygments-2.7.3.dist-info/INSTALLER +1 -0
  22. data/vendor/pygments-main/{LICENSE → Pygments-2.7.3.dist-info/LICENSE} +1 -1
  23. data/vendor/pygments-main/Pygments-2.7.3.dist-info/METADATA +49 -0
  24. data/vendor/pygments-main/Pygments-2.7.3.dist-info/RECORD +482 -0
  25. data/vendor/pygments-main/Pygments-2.7.3.dist-info/REQUESTED +0 -0
  26. data/vendor/pygments-main/Pygments-2.7.3.dist-info/WHEEL +5 -0
  27. data/vendor/pygments-main/Pygments-2.7.3.dist-info/entry_points.txt +3 -0
  28. data/vendor/pygments-main/Pygments-2.7.3.dist-info/top_level.txt +1 -0
  29. data/vendor/pygments-main/bin/pygmentize +8 -0
  30. data/vendor/pygments-main/pygments/__init__.py +6 -11
  31. data/vendor/pygments-main/pygments/__main__.py +18 -0
  32. data/vendor/pygments-main/pygments/cmdline.py +38 -29
  33. data/vendor/pygments-main/pygments/console.py +6 -9
  34. data/vendor/pygments-main/pygments/filter.py +4 -6
  35. data/vendor/pygments-main/pygments/filters/__init__.py +609 -21
  36. data/vendor/pygments-main/pygments/formatter.py +4 -4
  37. data/vendor/pygments-main/pygments/formatters/__init__.py +9 -8
  38. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -3
  39. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  40. data/vendor/pygments-main/pygments/formatters/html.py +223 -135
  41. data/vendor/pygments-main/pygments/formatters/img.py +68 -41
  42. data/vendor/pygments-main/pygments/formatters/irc.py +39 -39
  43. data/vendor/pygments-main/pygments/formatters/latex.py +56 -26
  44. data/vendor/pygments-main/pygments/formatters/other.py +12 -8
  45. data/vendor/pygments-main/pygments/formatters/rtf.py +29 -29
  46. data/vendor/pygments-main/pygments/formatters/svg.py +38 -4
  47. data/vendor/pygments-main/pygments/formatters/terminal.py +25 -31
  48. data/vendor/pygments-main/pygments/formatters/terminal256.py +22 -12
  49. data/vendor/pygments-main/pygments/lexer.py +41 -39
  50. data/vendor/pygments-main/pygments/lexers/__init__.py +342 -0
  51. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1645 -0
  52. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +232 -0
  53. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +71 -0
  54. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1725 -0
  55. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +5327 -0
  56. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +293 -0
  57. data/vendor/pygments-main/pygments/lexers/_mapping.py +551 -0
  58. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1172 -0
  59. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1282 -0
  60. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +2547 -0
  61. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +4753 -0
  62. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +678 -0
  63. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +3094 -0
  64. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1161 -0
  65. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +558 -0
  66. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +421 -0
  67. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1004 -0
  68. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +113 -0
  69. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +280 -0
  70. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1939 -0
  71. data/vendor/pygments-main/pygments/lexers/actionscript.py +245 -0
  72. data/vendor/pygments-main/pygments/lexers/agile.py +24 -0
  73. data/vendor/pygments-main/pygments/lexers/algebra.py +240 -0
  74. data/vendor/pygments-main/pygments/lexers/ambient.py +76 -0
  75. data/vendor/pygments-main/pygments/lexers/ampl.py +87 -0
  76. data/vendor/pygments-main/pygments/lexers/apl.py +101 -0
  77. data/vendor/pygments-main/pygments/lexers/archetype.py +318 -0
  78. data/vendor/pygments-main/pygments/lexers/arrow.py +117 -0
  79. data/vendor/pygments-main/pygments/lexers/asm.py +1005 -0
  80. data/vendor/pygments-main/pygments/lexers/automation.py +374 -0
  81. data/vendor/pygments-main/pygments/lexers/bare.py +104 -0
  82. data/vendor/pygments-main/pygments/lexers/basic.py +662 -0
  83. data/vendor/pygments-main/pygments/lexers/bibtex.py +160 -0
  84. data/vendor/pygments-main/pygments/lexers/boa.py +102 -0
  85. data/vendor/pygments-main/pygments/lexers/business.py +627 -0
  86. data/vendor/pygments-main/pygments/lexers/c_cpp.py +344 -0
  87. data/vendor/pygments-main/pygments/lexers/c_like.py +566 -0
  88. data/vendor/pygments-main/pygments/lexers/capnproto.py +78 -0
  89. data/vendor/pygments-main/pygments/lexers/chapel.py +112 -0
  90. data/vendor/pygments-main/pygments/lexers/clean.py +179 -0
  91. data/vendor/pygments-main/pygments/lexers/compiled.py +34 -0
  92. data/vendor/pygments-main/pygments/lexers/configs.py +984 -0
  93. data/vendor/pygments-main/pygments/lexers/console.py +114 -0
  94. data/vendor/pygments-main/pygments/lexers/crystal.py +392 -0
  95. data/vendor/pygments-main/pygments/lexers/csound.py +467 -0
  96. data/vendor/pygments-main/pygments/lexers/css.py +691 -0
  97. data/vendor/pygments-main/pygments/lexers/d.py +256 -0
  98. data/vendor/pygments-main/pygments/lexers/dalvik.py +125 -0
  99. data/vendor/pygments-main/pygments/lexers/data.py +698 -0
  100. data/vendor/pygments-main/pygments/lexers/devicetree.py +109 -0
  101. data/vendor/pygments-main/pygments/lexers/diff.py +165 -0
  102. data/vendor/pygments-main/pygments/lexers/dotnet.py +707 -0
  103. data/vendor/pygments-main/pygments/lexers/dsls.py +960 -0
  104. data/vendor/pygments-main/pygments/lexers/dylan.py +287 -0
  105. data/vendor/pygments-main/pygments/lexers/ecl.py +139 -0
  106. data/vendor/pygments-main/pygments/lexers/eiffel.py +65 -0
  107. data/vendor/pygments-main/pygments/lexers/elm.py +121 -0
  108. data/vendor/pygments-main/pygments/lexers/email.py +151 -0
  109. data/vendor/pygments-main/pygments/lexers/erlang.py +530 -0
  110. data/vendor/pygments-main/pygments/lexers/esoteric.py +304 -0
  111. data/vendor/pygments-main/pygments/lexers/ezhil.py +77 -0
  112. data/vendor/pygments-main/pygments/lexers/factor.py +344 -0
  113. data/vendor/pygments-main/pygments/lexers/fantom.py +250 -0
  114. data/vendor/pygments-main/pygments/lexers/felix.py +273 -0
  115. data/vendor/pygments-main/pygments/lexers/floscript.py +83 -0
  116. data/vendor/pygments-main/pygments/lexers/forth.py +178 -0
  117. data/vendor/pygments-main/pygments/lexers/fortran.py +206 -0
  118. data/vendor/pygments-main/pygments/lexers/foxpro.py +428 -0
  119. data/vendor/pygments-main/pygments/lexers/freefem.py +898 -0
  120. data/vendor/pygments-main/pygments/lexers/functional.py +21 -0
  121. data/vendor/pygments-main/pygments/lexers/gdscript.py +346 -0
  122. data/vendor/pygments-main/pygments/lexers/go.py +101 -0
  123. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +270 -0
  124. data/vendor/pygments-main/pygments/lexers/graph.py +85 -0
  125. data/vendor/pygments-main/pygments/lexers/graphics.py +800 -0
  126. data/vendor/pygments-main/pygments/lexers/haskell.py +870 -0
  127. data/vendor/pygments-main/pygments/lexers/haxe.py +936 -0
  128. data/vendor/pygments-main/pygments/lexers/hdl.py +472 -0
  129. data/vendor/pygments-main/pygments/lexers/hexdump.py +103 -0
  130. data/vendor/pygments-main/pygments/lexers/html.py +614 -0
  131. data/vendor/pygments-main/pygments/lexers/idl.py +281 -0
  132. data/vendor/pygments-main/pygments/lexers/igor.py +420 -0
  133. data/vendor/pygments-main/pygments/lexers/inferno.py +96 -0
  134. data/vendor/pygments-main/pygments/lexers/installers.py +322 -0
  135. data/vendor/pygments-main/pygments/lexers/int_fiction.py +1368 -0
  136. data/vendor/pygments-main/pygments/lexers/iolang.py +63 -0
  137. data/vendor/pygments-main/pygments/lexers/j.py +146 -0
  138. data/vendor/pygments-main/pygments/lexers/javascript.py +1540 -0
  139. data/vendor/pygments-main/pygments/lexers/julia.py +331 -0
  140. data/vendor/pygments-main/pygments/lexers/jvm.py +1673 -0
  141. data/vendor/pygments-main/pygments/lexers/lisp.py +2699 -0
  142. data/vendor/pygments-main/pygments/lexers/make.py +206 -0
  143. data/vendor/pygments-main/pygments/lexers/markup.py +765 -0
  144. data/vendor/pygments-main/pygments/lexers/math.py +21 -0
  145. data/vendor/pygments-main/pygments/lexers/matlab.py +720 -0
  146. data/vendor/pygments-main/pygments/lexers/mime.py +226 -0
  147. data/vendor/pygments-main/pygments/lexers/ml.py +958 -0
  148. data/vendor/pygments-main/pygments/lexers/modeling.py +366 -0
  149. data/vendor/pygments-main/pygments/lexers/modula2.py +1580 -0
  150. data/vendor/pygments-main/pygments/lexers/monte.py +204 -0
  151. data/vendor/pygments-main/pygments/lexers/mosel.py +448 -0
  152. data/vendor/pygments-main/pygments/lexers/ncl.py +894 -0
  153. data/vendor/pygments-main/pygments/lexers/nimrod.py +159 -0
  154. data/vendor/pygments-main/pygments/lexers/nit.py +64 -0
  155. data/vendor/pygments-main/pygments/lexers/nix.py +136 -0
  156. data/vendor/pygments-main/pygments/lexers/oberon.py +121 -0
  157. data/vendor/pygments-main/pygments/lexers/objective.py +504 -0
  158. data/vendor/pygments-main/pygments/lexers/ooc.py +85 -0
  159. data/vendor/pygments-main/pygments/lexers/other.py +41 -0
  160. data/vendor/pygments-main/pygments/lexers/parasail.py +79 -0
  161. data/vendor/pygments-main/pygments/lexers/parsers.py +800 -0
  162. data/vendor/pygments-main/pygments/lexers/pascal.py +644 -0
  163. data/vendor/pygments-main/pygments/lexers/pawn.py +205 -0
  164. data/vendor/pygments-main/pygments/lexers/perl.py +732 -0
  165. data/vendor/pygments-main/pygments/lexers/php.py +321 -0
  166. data/vendor/pygments-main/pygments/lexers/pointless.py +71 -0
  167. data/vendor/pygments-main/pygments/lexers/pony.py +94 -0
  168. data/vendor/pygments-main/pygments/lexers/praat.py +302 -0
  169. data/vendor/pygments-main/pygments/lexers/prolog.py +306 -0
  170. data/vendor/pygments-main/pygments/lexers/promql.py +183 -0
  171. data/vendor/pygments-main/pygments/lexers/python.py +1151 -0
  172. data/vendor/pygments-main/pygments/lexers/qvt.py +152 -0
  173. data/vendor/pygments-main/pygments/lexers/r.py +191 -0
  174. data/vendor/pygments-main/pygments/lexers/rdf.py +463 -0
  175. data/vendor/pygments-main/pygments/lexers/rebol.py +431 -0
  176. data/vendor/pygments-main/pygments/lexers/resource.py +85 -0
  177. data/vendor/pygments-main/pygments/lexers/ride.py +139 -0
  178. data/vendor/pygments-main/pygments/lexers/rnc.py +67 -0
  179. data/vendor/pygments-main/pygments/lexers/roboconf.py +82 -0
  180. data/vendor/pygments-main/pygments/lexers/robotframework.py +552 -0
  181. data/vendor/pygments-main/pygments/lexers/ruby.py +517 -0
  182. data/vendor/pygments-main/pygments/lexers/rust.py +224 -0
  183. data/vendor/pygments-main/pygments/lexers/sas.py +228 -0
  184. data/vendor/pygments-main/pygments/lexers/scdoc.py +83 -0
  185. data/vendor/pygments-main/pygments/lexers/scripting.py +1284 -0
  186. data/vendor/pygments-main/pygments/lexers/sgf.py +61 -0
  187. data/vendor/pygments-main/pygments/lexers/shell.py +914 -0
  188. data/vendor/pygments-main/pygments/lexers/sieve.py +69 -0
  189. data/vendor/pygments-main/pygments/lexers/slash.py +185 -0
  190. data/vendor/pygments-main/pygments/lexers/smalltalk.py +195 -0
  191. data/vendor/pygments-main/pygments/lexers/smv.py +79 -0
  192. data/vendor/pygments-main/pygments/lexers/snobol.py +83 -0
  193. data/vendor/pygments-main/pygments/lexers/solidity.py +92 -0
  194. data/vendor/pygments-main/pygments/lexers/special.py +105 -0
  195. data/vendor/pygments-main/pygments/lexers/sql.py +837 -0
  196. data/vendor/pygments-main/pygments/lexers/stata.py +171 -0
  197. data/vendor/pygments-main/pygments/lexers/supercollider.py +95 -0
  198. data/vendor/pygments-main/pygments/lexers/tcl.py +145 -0
  199. data/vendor/pygments-main/pygments/lexers/templates.py +2264 -0
  200. data/vendor/pygments-main/pygments/lexers/teraterm.py +335 -0
  201. data/vendor/pygments-main/pygments/lexers/testing.py +207 -0
  202. data/vendor/pygments-main/pygments/lexers/text.py +26 -0
  203. data/vendor/pygments-main/pygments/lexers/textedit.py +169 -0
  204. data/vendor/pygments-main/pygments/lexers/textfmts.py +430 -0
  205. data/vendor/pygments-main/pygments/lexers/theorem.py +474 -0
  206. data/vendor/pygments-main/pygments/lexers/tnt.py +263 -0
  207. data/vendor/pygments-main/pygments/lexers/trafficscript.py +54 -0
  208. data/vendor/pygments-main/pygments/lexers/typoscript.py +219 -0
  209. data/vendor/pygments-main/pygments/lexers/unicon.py +412 -0
  210. data/vendor/pygments-main/pygments/lexers/urbi.py +146 -0
  211. data/vendor/pygments-main/pygments/lexers/usd.py +90 -0
  212. data/vendor/pygments-main/pygments/lexers/varnish.py +190 -0
  213. data/vendor/pygments-main/pygments/lexers/verification.py +114 -0
  214. data/vendor/pygments-main/pygments/lexers/web.py +24 -0
  215. data/vendor/pygments-main/pygments/lexers/webidl.py +299 -0
  216. data/vendor/pygments-main/pygments/lexers/webmisc.py +991 -0
  217. data/vendor/pygments-main/pygments/lexers/whiley.py +116 -0
  218. data/vendor/pygments-main/pygments/lexers/x10.py +69 -0
  219. data/vendor/pygments-main/pygments/lexers/xorg.py +37 -0
  220. data/vendor/pygments-main/pygments/lexers/yang.py +104 -0
  221. data/vendor/pygments-main/pygments/lexers/zig.py +124 -0
  222. data/vendor/pygments-main/pygments/modeline.py +1 -1
  223. data/vendor/pygments-main/pygments/plugin.py +4 -2
  224. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  225. data/vendor/pygments-main/pygments/scanner.py +2 -2
  226. data/vendor/pygments-main/pygments/sphinxext.py +2 -4
  227. data/vendor/pygments-main/pygments/style.py +61 -24
  228. data/vendor/pygments-main/pygments/styles/__init__.py +10 -4
  229. data/vendor/pygments-main/pygments/styles/abap.py +1 -1
  230. data/vendor/pygments-main/pygments/styles/algol.py +1 -1
  231. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -1
  232. data/vendor/pygments-main/pygments/styles/arduino.py +2 -2
  233. data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
  234. data/vendor/pygments-main/pygments/styles/borland.py +1 -1
  235. data/vendor/pygments-main/pygments/styles/bw.py +1 -1
  236. data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
  237. data/vendor/pygments-main/pygments/styles/default.py +1 -1
  238. data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
  239. data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
  240. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  241. data/vendor/pygments-main/pygments/styles/igor.py +1 -1
  242. data/vendor/pygments-main/pygments/styles/inkpot.py +67 -0
  243. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -1
  244. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  245. data/vendor/pygments-main/pygments/styles/monokai.py +4 -3
  246. data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
  247. data/vendor/pygments-main/pygments/styles/native.py +1 -1
  248. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -1
  249. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -1
  250. data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
  251. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
  252. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -1
  253. data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
  254. data/vendor/pygments-main/pygments/styles/sas.py +1 -1
  255. data/vendor/pygments-main/pygments/styles/solarized.py +134 -0
  256. data/vendor/pygments-main/pygments/styles/stata_dark.py +41 -0
  257. data/vendor/pygments-main/pygments/styles/{stata.py → stata_light.py} +14 -15
  258. data/vendor/pygments-main/pygments/styles/tango.py +1 -1
  259. data/vendor/pygments-main/pygments/styles/trac.py +1 -1
  260. data/vendor/pygments-main/pygments/styles/vim.py +1 -1
  261. data/vendor/pygments-main/pygments/styles/vs.py +1 -1
  262. data/vendor/pygments-main/pygments/styles/xcode.py +1 -1
  263. data/vendor/pygments-main/pygments/token.py +1 -1
  264. data/vendor/pygments-main/pygments/unistring.py +47 -108
  265. data/vendor/pygments-main/pygments/util.py +15 -92
  266. metadata +69 -136
  267. data/CHANGELOG.md +0 -111
  268. data/README.md +0 -121
  269. data/circle.yml +0 -20
  270. data/test/test_data.py +0 -514
  271. data/test/test_data_generated +0 -2582
  272. data/vendor/custom_lexers/github.py +0 -565
  273. data/vendor/pygments-main/CHANGES +0 -1186
  274. data/vendor/pygments-main/MANIFEST.in +0 -6
  275. data/vendor/pygments-main/Makefile +0 -65
  276. data/vendor/pygments-main/README.rst +0 -39
  277. data/vendor/pygments-main/REVISION +0 -1
  278. data/vendor/pygments-main/TODO +0 -12
  279. data/vendor/pygments-main/doc/Makefile +0 -153
  280. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  281. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  282. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  283. data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
  284. data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
  285. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
  286. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  287. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  288. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  289. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  290. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  291. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
  292. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
  293. data/vendor/pygments-main/doc/conf.py +0 -241
  294. data/vendor/pygments-main/doc/docs/api.rst +0 -354
  295. data/vendor/pygments-main/doc/docs/authors.rst +0 -4
  296. data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
  297. data/vendor/pygments-main/doc/docs/cmdline.rst +0 -166
  298. data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
  299. data/vendor/pygments-main/doc/docs/filters.rst +0 -41
  300. data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
  301. data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
  302. data/vendor/pygments-main/doc/docs/index.rst +0 -66
  303. data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
  304. data/vendor/pygments-main/doc/docs/java.rst +0 -70
  305. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -728
  306. data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
  307. data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
  308. data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
  309. data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
  310. data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
  311. data/vendor/pygments-main/doc/docs/styles.rst +0 -201
  312. data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
  313. data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
  314. data/vendor/pygments-main/doc/download.rst +0 -41
  315. data/vendor/pygments-main/doc/faq.rst +0 -139
  316. data/vendor/pygments-main/doc/index.rst +0 -54
  317. data/vendor/pygments-main/doc/languages.rst +0 -154
  318. data/vendor/pygments-main/doc/make.bat +0 -190
  319. data/vendor/pygments-main/doc/pygmentize.1 +0 -94
  320. data/vendor/pygments-main/external/autopygmentize +0 -101
  321. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
  322. data/vendor/pygments-main/external/markdown-processor.py +0 -67
  323. data/vendor/pygments-main/external/moin-parser.py +0 -112
  324. data/vendor/pygments-main/external/pygments.bashcomp +0 -38
  325. data/vendor/pygments-main/external/rst-directive.py +0 -82
  326. data/vendor/pygments-main/pygmentize +0 -8
  327. data/vendor/pygments-main/requirements.txt +0 -5
  328. data/vendor/pygments-main/scripts/check_sources.py +0 -211
  329. data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
  330. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
  331. data/vendor/pygments-main/scripts/epydoc.css +0 -280
  332. data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
  333. data/vendor/pygments-main/scripts/pylintrc +0 -301
  334. data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
  335. data/vendor/pygments-main/setup.cfg +0 -10
  336. data/vendor/pygments-main/setup.py +0 -77
  337. data/vendor/pygments-main/tox.ini +0 -7
  338. data/vendor/simplejson/.gitignore +0 -10
  339. data/vendor/simplejson/.travis.yml +0 -5
  340. data/vendor/simplejson/CHANGES.txt +0 -291
  341. data/vendor/simplejson/LICENSE.txt +0 -19
  342. data/vendor/simplejson/MANIFEST.in +0 -5
  343. data/vendor/simplejson/README.rst +0 -19
  344. data/vendor/simplejson/conf.py +0 -179
  345. data/vendor/simplejson/index.rst +0 -628
  346. data/vendor/simplejson/scripts/make_docs.py +0 -18
  347. data/vendor/simplejson/setup.py +0 -104
  348. data/vendor/simplejson/simplejson/__init__.py +0 -510
  349. data/vendor/simplejson/simplejson/_speedups.c +0 -2745
  350. data/vendor/simplejson/simplejson/decoder.py +0 -425
  351. data/vendor/simplejson/simplejson/encoder.py +0 -567
  352. data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
  353. data/vendor/simplejson/simplejson/scanner.py +0 -77
  354. data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
  355. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
  356. data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
  357. data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
  358. data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
  359. data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
  360. data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
  361. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
  362. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
  363. data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
  364. data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
  365. data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
  366. data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
  367. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
  368. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
  369. data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
  370. data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
  371. data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
  372. data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
  373. data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
  374. data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
  375. data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
  376. data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
  377. data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
  378. data/vendor/simplejson/simplejson/tool.py +0 -39
@@ -0,0 +1,117 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.lexers.arrow
4
+ ~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ Lexer for Arrow.
7
+
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
+ :license: BSD, see LICENSE for details.
10
+ """
11
+
12
+ from pygments.lexer import RegexLexer, bygroups, default, include
13
+ from pygments.token import Text, Operator, Keyword, Punctuation, Name, \
14
+ String, Number
15
+
16
+ __all__ = ['ArrowLexer']
17
+
18
+ TYPES = r'\b(int|bool|char)((?:\[\])*)(?=\s+)'
19
+ IDENT = r'([a-zA-Z_][a-zA-Z0-9_]*)'
20
+ DECL = TYPES + r'(\s+)' + IDENT
21
+
22
+
23
+ class ArrowLexer(RegexLexer):
24
+ """
25
+ Lexer for Arrow: https://pypi.org/project/py-arrow-lang/
26
+
27
+ .. versionadded:: 2.7
28
+ """
29
+
30
+ name = 'Arrow'
31
+ aliases = ['arrow']
32
+ filenames = ['*.arw']
33
+
34
+ tokens = {
35
+ 'root': [
36
+ (r'\s+', Text),
37
+ (r'^[|\s]+', Punctuation),
38
+ include('blocks'),
39
+ include('statements'),
40
+ include('expressions'),
41
+ ],
42
+ 'blocks': [
43
+ (r'(function)(\n+)(/-->)(\s*)' +
44
+ DECL + # 4 groups
45
+ r'(\()', bygroups(
46
+ Keyword.Reserved, Text, Punctuation,
47
+ Text, Keyword.Type, Punctuation, Text,
48
+ Name.Function, Punctuation
49
+ ), 'fparams'),
50
+ (r'/-->$|\\-->$|/--<|\\--<|\^', Punctuation),
51
+ ],
52
+ 'statements': [
53
+ (DECL, bygroups(Keyword.Type, Punctuation, Text, Name.Variable)),
54
+ (r'\[', Punctuation, 'index'),
55
+ (r'=', Operator),
56
+ (r'require|main', Keyword.Reserved),
57
+ (r'print', Keyword.Reserved, 'print'),
58
+ ],
59
+ 'expressions': [
60
+ (r'\s+', Text),
61
+ (r'[0-9]+', Number.Integer),
62
+ (r'true|false', Keyword.Constant),
63
+ (r"'", String.Char, 'char'),
64
+ (r'"', String.Double, 'string'),
65
+ (r'\{', Punctuation, 'array'),
66
+ (r'==|!=|<|>|\+|-|\*|/|%', Operator),
67
+ (r'and|or|not|length', Operator.Word),
68
+ (r'(input)(\s+)(int|char\[\])', bygroups(
69
+ Keyword.Reserved, Text, Keyword.Type
70
+ )),
71
+ (IDENT + r'(\()', bygroups(
72
+ Name.Function, Punctuation
73
+ ), 'fargs'),
74
+ (IDENT, Name.Variable),
75
+ (r'\[', Punctuation, 'index'),
76
+ (r'\(', Punctuation, 'expressions'),
77
+ (r'\)', Punctuation, '#pop'),
78
+ ],
79
+ 'print': [
80
+ include('expressions'),
81
+ (r',', Punctuation),
82
+ default('#pop'),
83
+ ],
84
+ 'fparams': [
85
+ (DECL, bygroups(Keyword.Type, Punctuation, Text, Name.Variable)),
86
+ (r',', Punctuation),
87
+ (r'\)', Punctuation, '#pop'),
88
+ ],
89
+ 'escape': [
90
+ (r'\\(["\\/abfnrtv]|[0-9]{1,3}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})',
91
+ String.Escape),
92
+ ],
93
+ 'char': [
94
+ (r"'", String.Char, '#pop'),
95
+ include('escape'),
96
+ (r"[^'\\]", String.Char),
97
+ ],
98
+ 'string': [
99
+ (r'"', String.Double, '#pop'),
100
+ include('escape'),
101
+ (r'[^"\\]+', String.Double),
102
+ ],
103
+ 'array': [
104
+ include('expressions'),
105
+ (r'\}', Punctuation, '#pop'),
106
+ (r',', Punctuation),
107
+ ],
108
+ 'fargs': [
109
+ include('expressions'),
110
+ (r'\)', Punctuation, '#pop'),
111
+ (r',', Punctuation),
112
+ ],
113
+ 'index': [
114
+ include('expressions'),
115
+ (r'\]', Punctuation, '#pop'),
116
+ ],
117
+ }
@@ -0,0 +1,1005 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.lexers.asm
4
+ ~~~~~~~~~~~~~~~~~~~
5
+
6
+ Lexers for assembly languages.
7
+
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
+ :license: BSD, see LICENSE for details.
10
+ """
11
+
12
+ import re
13
+
14
+ from pygments.lexer import RegexLexer, include, bygroups, using, words, \
15
+ DelegatingLexer, default
16
+ from pygments.lexers.c_cpp import CppLexer, CLexer
17
+ from pygments.lexers.d import DLexer
18
+ from pygments.token import Text, Name, Number, String, Comment, Punctuation, \
19
+ Other, Keyword, Operator, Literal
20
+
21
+ __all__ = ['GasLexer', 'ObjdumpLexer', 'DObjdumpLexer', 'CppObjdumpLexer',
22
+ 'CObjdumpLexer', 'HsailLexer', 'LlvmLexer', 'LlvmMirBodyLexer',
23
+ 'LlvmMirLexer', 'NasmLexer', 'NasmObjdumpLexer', 'TasmLexer',
24
+ 'Ca65Lexer', 'Dasm16Lexer']
25
+
26
+
27
+ class GasLexer(RegexLexer):
28
+ """
29
+ For Gas (AT&T) assembly code.
30
+ """
31
+ name = 'GAS'
32
+ aliases = ['gas', 'asm']
33
+ filenames = ['*.s', '*.S']
34
+ mimetypes = ['text/x-gas']
35
+
36
+ #: optional Comment or Whitespace
37
+ string = r'"(\\"|[^"])*"'
38
+ char = r'[\w$.@-]'
39
+ identifier = r'(?:[a-zA-Z$_]' + char + r'*|\.' + char + '+)'
40
+ number = r'(?:0[xX][a-fA-F0-9]+|#?-?\d+)'
41
+ register = '%' + identifier
42
+
43
+ tokens = {
44
+ 'root': [
45
+ include('whitespace'),
46
+ (identifier + ':', Name.Label),
47
+ (r'\.' + identifier, Name.Attribute, 'directive-args'),
48
+ (r'lock|rep(n?z)?|data\d+', Name.Attribute),
49
+ (identifier, Name.Function, 'instruction-args'),
50
+ (r'[\r\n]+', Text)
51
+ ],
52
+ 'directive-args': [
53
+ (identifier, Name.Constant),
54
+ (string, String),
55
+ ('@' + identifier, Name.Attribute),
56
+ (number, Number.Integer),
57
+ (register, Name.Variable),
58
+ (r'[\r\n]+', Text, '#pop'),
59
+ (r'([;#]|//).*?\n', Comment.Single, '#pop'),
60
+ (r'/[*].*?[*]/', Comment.Multiline),
61
+ (r'/[*].*?\n[\w\W]*?[*]/', Comment.Multiline, '#pop'),
62
+
63
+ include('punctuation'),
64
+ include('whitespace')
65
+ ],
66
+ 'instruction-args': [
67
+ # For objdump-disassembled code, shouldn't occur in
68
+ # actual assembler input
69
+ ('([a-z0-9]+)( )(<)('+identifier+')(>)',
70
+ bygroups(Number.Hex, Text, Punctuation, Name.Constant,
71
+ Punctuation)),
72
+ ('([a-z0-9]+)( )(<)('+identifier+')([-+])('+number+')(>)',
73
+ bygroups(Number.Hex, Text, Punctuation, Name.Constant,
74
+ Punctuation, Number.Integer, Punctuation)),
75
+
76
+ # Address constants
77
+ (identifier, Name.Constant),
78
+ (number, Number.Integer),
79
+ # Registers
80
+ (register, Name.Variable),
81
+ # Numeric constants
82
+ ('$'+number, Number.Integer),
83
+ (r"$'(.|\\')'", String.Char),
84
+ (r'[\r\n]+', Text, '#pop'),
85
+ (r'([;#]|//).*?\n', Comment.Single, '#pop'),
86
+ (r'/[*].*?[*]/', Comment.Multiline),
87
+ (r'/[*].*?\n[\w\W]*?[*]/', Comment.Multiline, '#pop'),
88
+
89
+ include('punctuation'),
90
+ include('whitespace')
91
+ ],
92
+ 'whitespace': [
93
+ (r'\n', Text),
94
+ (r'\s+', Text),
95
+ (r'([;#]|//).*?\n', Comment.Single),
96
+ (r'/[*][\w\W]*?[*]/', Comment.Multiline)
97
+ ],
98
+ 'punctuation': [
99
+ (r'[-*,.()\[\]!:]+', Punctuation)
100
+ ]
101
+ }
102
+
103
+ def analyse_text(text):
104
+ if re.search(r'^\.(text|data|section)', text, re.M):
105
+ return True
106
+ elif re.search(r'^\.\w+', text, re.M):
107
+ return 0.1
108
+
109
+
110
+ def _objdump_lexer_tokens(asm_lexer):
111
+ """
112
+ Common objdump lexer tokens to wrap an ASM lexer.
113
+ """
114
+ hex_re = r'[0-9A-Za-z]'
115
+ return {
116
+ 'root': [
117
+ # File name & format:
118
+ ('(.*?)(:)( +file format )(.*?)$',
119
+ bygroups(Name.Label, Punctuation, Text, String)),
120
+ # Section header
121
+ ('(Disassembly of section )(.*?)(:)$',
122
+ bygroups(Text, Name.Label, Punctuation)),
123
+ # Function labels
124
+ # (With offset)
125
+ ('('+hex_re+'+)( )(<)(.*?)([-+])(0[xX][A-Za-z0-9]+)(>:)$',
126
+ bygroups(Number.Hex, Text, Punctuation, Name.Function,
127
+ Punctuation, Number.Hex, Punctuation)),
128
+ # (Without offset)
129
+ ('('+hex_re+'+)( )(<)(.*?)(>:)$',
130
+ bygroups(Number.Hex, Text, Punctuation, Name.Function,
131
+ Punctuation)),
132
+ # Code line with disassembled instructions
133
+ ('( *)('+hex_re+r'+:)(\t)((?:'+hex_re+hex_re+' )+)( *\t)([a-zA-Z].*?)$',
134
+ bygroups(Text, Name.Label, Text, Number.Hex, Text,
135
+ using(asm_lexer))),
136
+ # Code line with ascii
137
+ ('( *)('+hex_re+r'+:)(\t)((?:'+hex_re+hex_re+' )+)( *)(.*?)$',
138
+ bygroups(Text, Name.Label, Text, Number.Hex, Text, String)),
139
+ # Continued code line, only raw opcodes without disassembled
140
+ # instruction
141
+ ('( *)('+hex_re+r'+:)(\t)((?:'+hex_re+hex_re+' )+)$',
142
+ bygroups(Text, Name.Label, Text, Number.Hex)),
143
+ # Skipped a few bytes
144
+ (r'\t\.\.\.$', Text),
145
+ # Relocation line
146
+ # (With offset)
147
+ (r'(\t\t\t)('+hex_re+r'+:)( )([^\t]+)(\t)(.*?)([-+])(0x'+hex_re+'+)$',
148
+ bygroups(Text, Name.Label, Text, Name.Property, Text,
149
+ Name.Constant, Punctuation, Number.Hex)),
150
+ # (Without offset)
151
+ (r'(\t\t\t)('+hex_re+r'+:)( )([^\t]+)(\t)(.*?)$',
152
+ bygroups(Text, Name.Label, Text, Name.Property, Text,
153
+ Name.Constant)),
154
+ (r'[^\n]+\n', Other)
155
+ ]
156
+ }
157
+
158
+
159
+ class ObjdumpLexer(RegexLexer):
160
+ """
161
+ For the output of ``objdump -dr``.
162
+ """
163
+ name = 'objdump'
164
+ aliases = ['objdump']
165
+ filenames = ['*.objdump']
166
+ mimetypes = ['text/x-objdump']
167
+
168
+ tokens = _objdump_lexer_tokens(GasLexer)
169
+
170
+
171
+ class DObjdumpLexer(DelegatingLexer):
172
+ """
173
+ For the output of ``objdump -Sr`` on compiled D files.
174
+ """
175
+ name = 'd-objdump'
176
+ aliases = ['d-objdump']
177
+ filenames = ['*.d-objdump']
178
+ mimetypes = ['text/x-d-objdump']
179
+
180
+ def __init__(self, **options):
181
+ super().__init__(DLexer, ObjdumpLexer, **options)
182
+
183
+
184
+ class CppObjdumpLexer(DelegatingLexer):
185
+ """
186
+ For the output of ``objdump -Sr`` on compiled C++ files.
187
+ """
188
+ name = 'cpp-objdump'
189
+ aliases = ['cpp-objdump', 'c++-objdumb', 'cxx-objdump']
190
+ filenames = ['*.cpp-objdump', '*.c++-objdump', '*.cxx-objdump']
191
+ mimetypes = ['text/x-cpp-objdump']
192
+
193
+ def __init__(self, **options):
194
+ super().__init__(CppLexer, ObjdumpLexer, **options)
195
+
196
+
197
+ class CObjdumpLexer(DelegatingLexer):
198
+ """
199
+ For the output of ``objdump -Sr`` on compiled C files.
200
+ """
201
+ name = 'c-objdump'
202
+ aliases = ['c-objdump']
203
+ filenames = ['*.c-objdump']
204
+ mimetypes = ['text/x-c-objdump']
205
+
206
+ def __init__(self, **options):
207
+ super().__init__(CLexer, ObjdumpLexer, **options)
208
+
209
+
210
+ class HsailLexer(RegexLexer):
211
+ """
212
+ For HSAIL assembly code.
213
+
214
+ .. versionadded:: 2.2
215
+ """
216
+ name = 'HSAIL'
217
+ aliases = ['hsail', 'hsa']
218
+ filenames = ['*.hsail']
219
+ mimetypes = ['text/x-hsail']
220
+
221
+ string = r'"[^"]*?"'
222
+ identifier = r'[a-zA-Z_][\w.]*'
223
+ # Registers
224
+ register_number = r'[0-9]+'
225
+ register = r'(\$(c|s|d|q)' + register_number + ')'
226
+ # Qualifiers
227
+ alignQual = r'(align\(\d+\))'
228
+ widthQual = r'(width\((\d+|all)\))'
229
+ allocQual = r'(alloc\(agent\))'
230
+ # Instruction Modifiers
231
+ roundingMod = (r'((_ftz)?(_up|_down|_zero|_near))')
232
+ datatypeMod = (r'_('
233
+ # packedTypes
234
+ r'u8x4|s8x4|u16x2|s16x2|u8x8|s8x8|u16x4|s16x4|u32x2|s32x2|'
235
+ r'u8x16|s8x16|u16x8|s16x8|u32x4|s32x4|u64x2|s64x2|'
236
+ r'f16x2|f16x4|f16x8|f32x2|f32x4|f64x2|'
237
+ # baseTypes
238
+ r'u8|s8|u16|s16|u32|s32|u64|s64|'
239
+ r'b128|b8|b16|b32|b64|b1|'
240
+ r'f16|f32|f64|'
241
+ # opaqueType
242
+ r'roimg|woimg|rwimg|samp|sig32|sig64)')
243
+
244
+ # Numeric Constant
245
+ float = r'((\d+\.)|(\d*\.\d+))[eE][+-]?\d+'
246
+ hexfloat = r'0[xX](([0-9a-fA-F]+\.[0-9a-fA-F]*)|([0-9a-fA-F]*\.[0-9a-fA-F]+))[pP][+-]?\d+'
247
+ ieeefloat = r'0((h|H)[0-9a-fA-F]{4}|(f|F)[0-9a-fA-F]{8}|(d|D)[0-9a-fA-F]{16})'
248
+
249
+ tokens = {
250
+ 'root': [
251
+ include('whitespace'),
252
+ include('comments'),
253
+
254
+ (string, String),
255
+
256
+ (r'@' + identifier + ':?', Name.Label),
257
+
258
+ (register, Name.Variable.Anonymous),
259
+
260
+ include('keyword'),
261
+
262
+ (r'&' + identifier, Name.Variable.Global),
263
+ (r'%' + identifier, Name.Variable),
264
+
265
+ (hexfloat, Number.Hex),
266
+ (r'0[xX][a-fA-F0-9]+', Number.Hex),
267
+ (ieeefloat, Number.Float),
268
+ (float, Number.Float),
269
+ (r'\d+', Number.Integer),
270
+
271
+ (r'[=<>{}\[\]()*.,:;!]|x\b', Punctuation)
272
+ ],
273
+ 'whitespace': [
274
+ (r'(\n|\s)+', Text),
275
+ ],
276
+ 'comments': [
277
+ (r'/\*.*?\*/', Comment.Multiline),
278
+ (r'//.*?\n', Comment.Single),
279
+ ],
280
+ 'keyword': [
281
+ # Types
282
+ (r'kernarg' + datatypeMod, Keyword.Type),
283
+
284
+ # Regular keywords
285
+ (r'\$(full|base|small|large|default|zero|near)', Keyword),
286
+ (words((
287
+ 'module', 'extension', 'pragma', 'prog', 'indirect', 'signature',
288
+ 'decl', 'kernel', 'function', 'enablebreakexceptions',
289
+ 'enabledetectexceptions', 'maxdynamicgroupsize', 'maxflatgridsize',
290
+ 'maxflatworkgroupsize', 'requireddim', 'requiredgridsize',
291
+ 'requiredworkgroupsize', 'requirenopartialworkgroups'),
292
+ suffix=r'\b'), Keyword),
293
+
294
+ # instructions
295
+ (roundingMod, Keyword),
296
+ (datatypeMod, Keyword),
297
+ (r'_(' + alignQual + '|' + widthQual + ')', Keyword),
298
+ (r'_kernarg', Keyword),
299
+ (r'(nop|imagefence)\b', Keyword),
300
+ (words((
301
+ 'cleardetectexcept', 'clock', 'cuid', 'debugtrap', 'dim',
302
+ 'getdetectexcept', 'groupbaseptr', 'kernargbaseptr', 'laneid',
303
+ 'maxcuid', 'maxwaveid', 'packetid', 'setdetectexcept', 'waveid',
304
+ 'workitemflatabsid', 'workitemflatid', 'nullptr', 'abs', 'bitrev',
305
+ 'currentworkgroupsize', 'currentworkitemflatid', 'fract', 'ncos',
306
+ 'neg', 'nexp2', 'nlog2', 'nrcp', 'nrsqrt', 'nsin', 'nsqrt',
307
+ 'gridgroups', 'gridsize', 'not', 'sqrt', 'workgroupid',
308
+ 'workgroupsize', 'workitemabsid', 'workitemid', 'ceil', 'floor',
309
+ 'rint', 'trunc', 'add', 'bitmask', 'borrow', 'carry', 'copysign',
310
+ 'div', 'rem', 'sub', 'shl', 'shr', 'and', 'or', 'xor', 'unpackhi',
311
+ 'unpacklo', 'max', 'min', 'fma', 'mad', 'bitextract', 'bitselect',
312
+ 'shuffle', 'cmov', 'bitalign', 'bytealign', 'lerp', 'nfma', 'mul',
313
+ 'mulhi', 'mul24hi', 'mul24', 'mad24', 'mad24hi', 'bitinsert',
314
+ 'combine', 'expand', 'lda', 'mov', 'pack', 'unpack', 'packcvt',
315
+ 'unpackcvt', 'sad', 'sementp', 'ftos', 'stof', 'cmp', 'ld', 'st',
316
+ '_eq', '_ne', '_lt', '_le', '_gt', '_ge', '_equ', '_neu', '_ltu',
317
+ '_leu', '_gtu', '_geu', '_num', '_nan', '_seq', '_sne', '_slt',
318
+ '_sle', '_sgt', '_sge', '_snum', '_snan', '_sequ', '_sneu', '_sltu',
319
+ '_sleu', '_sgtu', '_sgeu', 'atomic', '_ld', '_st', '_cas', '_add',
320
+ '_and', '_exch', '_max', '_min', '_or', '_sub', '_wrapdec',
321
+ '_wrapinc', '_xor', 'ret', 'cvt', '_readonly', '_kernarg', '_global',
322
+ 'br', 'cbr', 'sbr', '_scacq', '_screl', '_scar', '_rlx', '_wave',
323
+ '_wg', '_agent', '_system', 'ldimage', 'stimage', '_v2', '_v3', '_v4',
324
+ '_1d', '_2d', '_3d', '_1da', '_2da', '_1db', '_2ddepth', '_2dadepth',
325
+ '_width', '_height', '_depth', '_array', '_channelorder',
326
+ '_channeltype', 'querysampler', '_coord', '_filter', '_addressing',
327
+ 'barrier', 'wavebarrier', 'initfbar', 'joinfbar', 'waitfbar',
328
+ 'arrivefbar', 'leavefbar', 'releasefbar', 'ldf', 'activelaneid',
329
+ 'activelanecount', 'activelanemask', 'activelanepermute', 'call',
330
+ 'scall', 'icall', 'alloca', 'packetcompletionsig',
331
+ 'addqueuewriteindex', 'casqueuewriteindex', 'ldqueuereadindex',
332
+ 'stqueuereadindex', 'readonly', 'global', 'private', 'group',
333
+ 'spill', 'arg', '_upi', '_downi', '_zeroi', '_neari', '_upi_sat',
334
+ '_downi_sat', '_zeroi_sat', '_neari_sat', '_supi', '_sdowni',
335
+ '_szeroi', '_sneari', '_supi_sat', '_sdowni_sat', '_szeroi_sat',
336
+ '_sneari_sat', '_pp', '_ps', '_sp', '_ss', '_s', '_p', '_pp_sat',
337
+ '_ps_sat', '_sp_sat', '_ss_sat', '_s_sat', '_p_sat')), Keyword),
338
+
339
+ # Integer types
340
+ (r'i[1-9]\d*', Keyword)
341
+ ]
342
+ }
343
+
344
+
345
+ class LlvmLexer(RegexLexer):
346
+ """
347
+ For LLVM assembly code.
348
+ """
349
+ name = 'LLVM'
350
+ aliases = ['llvm']
351
+ filenames = ['*.ll']
352
+ mimetypes = ['text/x-llvm']
353
+
354
+ #: optional Comment or Whitespace
355
+ string = r'"[^"]*?"'
356
+ identifier = r'([-a-zA-Z$._][\w\-$.]*|' + string + ')'
357
+
358
+ tokens = {
359
+ 'root': [
360
+ include('whitespace'),
361
+
362
+ # Before keywords, because keywords are valid label names :(...
363
+ (identifier + r'\s*:', Name.Label),
364
+
365
+ include('keyword'),
366
+
367
+ (r'%' + identifier, Name.Variable),
368
+ (r'@' + identifier, Name.Variable.Global),
369
+ (r'%\d+', Name.Variable.Anonymous),
370
+ (r'@\d+', Name.Variable.Global),
371
+ (r'#\d+', Name.Variable.Global),
372
+ (r'!' + identifier, Name.Variable),
373
+ (r'!\d+', Name.Variable.Anonymous),
374
+ (r'c?' + string, String),
375
+
376
+ (r'0[xX][a-fA-F0-9]+', Number),
377
+ (r'-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?', Number),
378
+
379
+ (r'[=<>{}\[\]()*.,!]|x\b', Punctuation)
380
+ ],
381
+ 'whitespace': [
382
+ (r'(\n|\s)+', Text),
383
+ (r';.*?\n', Comment)
384
+ ],
385
+ 'keyword': [
386
+ # Regular keywords
387
+ (words((
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'),
445
+ suffix=r'\b'), Keyword),
446
+
447
+ # Types
448
+ (words(('void', 'half', 'bfloat', 'float', 'double', 'fp128',
449
+ 'x86_fp80', 'ppc_fp128', 'label', 'metadata', 'token')),
450
+ Keyword.Type),
451
+
452
+ # Integer types
453
+ (r'i[1-9]\d*', Keyword.Type)
454
+ ]
455
+ }
456
+
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
+
680
+ class NasmLexer(RegexLexer):
681
+ """
682
+ For Nasm (Intel) assembly code.
683
+ """
684
+ name = 'NASM'
685
+ aliases = ['nasm']
686
+ filenames = ['*.asm', '*.ASM']
687
+ mimetypes = ['text/x-nasm']
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
+
693
+ identifier = r'[a-z$._?][\w$.?#@~]*'
694
+ hexn = r'(?:0x[0-9a-f]+|$0[0-9a-f]*|[0-9]+[0-9a-f]*h)'
695
+ octn = r'[0-7]+q'
696
+ binn = r'[01]+b'
697
+ decn = r'[0-9]+'
698
+ floatn = decn + r'\.e?' + decn
699
+ string = r'"(\\"|[^"\n])*"|' + r"'(\\'|[^'\n])*'|" + r"`(\\`|[^`\n])*`"
700
+ declkw = r'(?:res|d)[bwdqt]|times'
701
+ register = (r'r[0-9][0-5]?[bwd]?|'
702
+ r'[a-d][lh]|[er]?[a-d]x|[er]?[sb]p|[er]?[sd]i|[c-gs]s|st[0-7]|'
703
+ r'mm[0-7]|cr[0-4]|dr[0-367]|tr[3-7]')
704
+ wordop = r'seg|wrt|strict'
705
+ type = r'byte|[dq]?word'
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|'
709
+ r'ORG|ALIGN|STRUC|ENDSTRUC|COMMON|CPU|GROUP|UPPERCASE|IMPORT|'
710
+ r'EXPORT|LIBRARY|MODULE)\s+')
711
+
712
+ flags = re.IGNORECASE | re.MULTILINE
713
+ tokens = {
714
+ 'root': [
715
+ (r'^\s*%', Comment.Preproc, 'preproc'),
716
+ include('whitespace'),
717
+ (identifier + ':', Name.Label),
718
+ (r'(%s)(\s+)(equ)' % identifier,
719
+ bygroups(Name.Constant, Keyword.Declaration, Keyword.Declaration),
720
+ 'instruction-args'),
721
+ (directives, Keyword, 'instruction-args'),
722
+ (declkw, Keyword.Declaration, 'instruction-args'),
723
+ (identifier, Name.Function, 'instruction-args'),
724
+ (r'[\r\n]+', Text)
725
+ ],
726
+ 'instruction-args': [
727
+ (string, String),
728
+ (hexn, Number.Hex),
729
+ (octn, Number.Oct),
730
+ (binn, Number.Bin),
731
+ (floatn, Number.Float),
732
+ (decn, Number.Integer),
733
+ include('punctuation'),
734
+ (register, Name.Builtin),
735
+ (identifier, Name.Variable),
736
+ (r'[\r\n]+', Text, '#pop'),
737
+ include('whitespace')
738
+ ],
739
+ 'preproc': [
740
+ (r'[^;\n]+', Comment.Preproc),
741
+ (r';.*?\n', Comment.Single, '#pop'),
742
+ (r'\n', Comment.Preproc, '#pop'),
743
+ ],
744
+ 'whitespace': [
745
+ (r'\n', Text),
746
+ (r'[ \t]+', Text),
747
+ (r';.*', Comment.Single)
748
+ ],
749
+ 'punctuation': [
750
+ (r'[,():\[\]]+', Punctuation),
751
+ (r'[&|^<>+*/%~-]+', Operator),
752
+ (r'[$]+', Keyword.Constant),
753
+ (wordop, Operator.Word),
754
+ (type, Keyword.Type)
755
+ ],
756
+ }
757
+
758
+ def analyse_text(text):
759
+ # Probably TASM
760
+ if re.match(r'PROC', text, re.IGNORECASE):
761
+ return False
762
+
763
+
764
+ class NasmObjdumpLexer(ObjdumpLexer):
765
+ """
766
+ For the output of ``objdump -d -M intel``.
767
+
768
+ .. versionadded:: 2.0
769
+ """
770
+ name = 'objdump-nasm'
771
+ aliases = ['objdump-nasm']
772
+ filenames = ['*.objdump-intel']
773
+ mimetypes = ['text/x-nasm-objdump']
774
+
775
+ tokens = _objdump_lexer_tokens(NasmLexer)
776
+
777
+
778
+ class TasmLexer(RegexLexer):
779
+ """
780
+ For Tasm (Turbo Assembler) assembly code.
781
+ """
782
+ name = 'TASM'
783
+ aliases = ['tasm']
784
+ filenames = ['*.asm', '*.ASM', '*.tasm']
785
+ mimetypes = ['text/x-tasm']
786
+
787
+ identifier = r'[@a-z$._?][\w$.?#@~]*'
788
+ hexn = r'(?:0x[0-9a-f]+|$0[0-9a-f]*|[0-9]+[0-9a-f]*h)'
789
+ octn = r'[0-7]+q'
790
+ binn = r'[01]+b'
791
+ decn = r'[0-9]+'
792
+ floatn = decn + r'\.e?' + decn
793
+ string = r'"(\\"|[^"\n])*"|' + r"'(\\'|[^'\n])*'|" + r"`(\\`|[^`\n])*`"
794
+ declkw = r'(?:res|d)[bwdqt]|times'
795
+ register = (r'r[0-9][0-5]?[bwd]|'
796
+ r'[a-d][lh]|[er]?[a-d]x|[er]?[sb]p|[er]?[sd]i|[c-gs]s|st[0-7]|'
797
+ r'mm[0-7]|cr[0-4]|dr[0-367]|tr[3-7]')
798
+ wordop = r'seg|wrt|strict'
799
+ type = r'byte|[dq]?word'
800
+ directives = (r'BITS|USE16|USE32|SECTION|SEGMENT|ABSOLUTE|EXTERN|GLOBAL|'
801
+ r'ORG|ALIGN|STRUC|ENDSTRUC|ENDS|COMMON|CPU|GROUP|UPPERCASE|INCLUDE|'
802
+ r'EXPORT|LIBRARY|MODULE|PROC|ENDP|USES|ARG|DATASEG|UDATASEG|END|IDEAL|'
803
+ r'P386|MODEL|ASSUME|CODESEG|SIZE')
804
+ # T[A-Z][a-z] is more of a convention. Lexer should filter out STRUC definitions
805
+ # and then 'add' them to datatype somehow.
806
+ datatype = (r'db|dd|dw|T[A-Z][a-z]+')
807
+
808
+ flags = re.IGNORECASE | re.MULTILINE
809
+ tokens = {
810
+ 'root': [
811
+ (r'^\s*%', Comment.Preproc, 'preproc'),
812
+ include('whitespace'),
813
+ (identifier + ':', Name.Label),
814
+ (directives, Keyword, 'instruction-args'),
815
+ (r'(%s)(\s+)(%s)' % (identifier, datatype),
816
+ bygroups(Name.Constant, Keyword.Declaration, Keyword.Declaration),
817
+ 'instruction-args'),
818
+ (declkw, Keyword.Declaration, 'instruction-args'),
819
+ (identifier, Name.Function, 'instruction-args'),
820
+ (r'[\r\n]+', Text)
821
+ ],
822
+ 'instruction-args': [
823
+ (string, String),
824
+ (hexn, Number.Hex),
825
+ (octn, Number.Oct),
826
+ (binn, Number.Bin),
827
+ (floatn, Number.Float),
828
+ (decn, Number.Integer),
829
+ include('punctuation'),
830
+ (register, Name.Builtin),
831
+ (identifier, Name.Variable),
832
+ # Do not match newline when it's preceeded by a backslash
833
+ (r'(\\\s*)(;.*)([\r\n])', bygroups(Text, Comment.Single, Text)),
834
+ (r'[\r\n]+', Text, '#pop'),
835
+ include('whitespace')
836
+ ],
837
+ 'preproc': [
838
+ (r'[^;\n]+', Comment.Preproc),
839
+ (r';.*?\n', Comment.Single, '#pop'),
840
+ (r'\n', Comment.Preproc, '#pop'),
841
+ ],
842
+ 'whitespace': [
843
+ (r'[\n\r]', Text),
844
+ (r'\\[\n\r]', Text),
845
+ (r'[ \t]+', Text),
846
+ (r';.*', Comment.Single)
847
+ ],
848
+ 'punctuation': [
849
+ (r'[,():\[\]]+', Punctuation),
850
+ (r'[&|^<>+*=/%~-]+', Operator),
851
+ (r'[$]+', Keyword.Constant),
852
+ (wordop, Operator.Word),
853
+ (type, Keyword.Type)
854
+ ],
855
+ }
856
+
857
+ def analyse_text(text):
858
+ # See above
859
+ if re.match(r'PROC', text, re.I):
860
+ return True
861
+
862
+
863
+ class Ca65Lexer(RegexLexer):
864
+ """
865
+ For ca65 assembler sources.
866
+
867
+ .. versionadded:: 1.6
868
+ """
869
+ name = 'ca65 assembler'
870
+ aliases = ['ca65']
871
+ filenames = ['*.s']
872
+
873
+ flags = re.IGNORECASE
874
+
875
+ tokens = {
876
+ 'root': [
877
+ (r';.*', Comment.Single),
878
+ (r'\s+', Text),
879
+ (r'[a-z_.@$][\w.@$]*:', Name.Label),
880
+ (r'((ld|st)[axy]|(in|de)[cxy]|asl|lsr|ro[lr]|adc|sbc|cmp|cp[xy]'
881
+ r'|cl[cvdi]|se[cdi]|jmp|jsr|bne|beq|bpl|bmi|bvc|bvs|bcc|bcs'
882
+ r'|p[lh][ap]|rt[is]|brk|nop|ta[xy]|t[xy]a|txs|tsx|and|ora|eor'
883
+ r'|bit)\b', Keyword),
884
+ (r'\.\w+', Keyword.Pseudo),
885
+ (r'[-+~*/^&|!<>=]', Operator),
886
+ (r'"[^"\n]*.', String),
887
+ (r"'[^'\n]*.", String.Char),
888
+ (r'\$[0-9a-f]+|[0-9a-f]+h\b', Number.Hex),
889
+ (r'\d+', Number.Integer),
890
+ (r'%[01]+', Number.Bin),
891
+ (r'[#,.:()=\[\]]', Punctuation),
892
+ (r'[a-z_.@$][\w.@$]*', Name),
893
+ ]
894
+ }
895
+
896
+ def analyse_text(self, text):
897
+ # comments in GAS start with "#"
898
+ if re.search(r'^\s*;', text, re.MULTILINE):
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
+ }