pygments.rb 1.2.1 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (386) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +13 -0
  3. data/.github/workflows/ci.yml +40 -0
  4. data/.github/workflows/release.yml +24 -0
  5. data/.gitignore +4 -6
  6. data/.rubocop.yml +16 -0
  7. data/CHANGELOG.adoc +137 -0
  8. data/Gemfile +3 -1
  9. data/LICENSE +1 -1
  10. data/README.adoc +159 -0
  11. data/Rakefile +8 -32
  12. data/bench.rb +14 -8
  13. data/lib/pygments.rb +16 -14
  14. data/lib/pygments/lexer.rb +87 -65
  15. data/lib/pygments/mentos.py +23 -110
  16. data/lib/pygments/popen.rb +188 -284
  17. data/lib/pygments/version.rb +2 -2
  18. data/pygments.rb.gemspec +20 -13
  19. data/test/test_pygments.rb +50 -110
  20. data/vendor/pygments-main/{AUTHORS → Pygments-2.8.1.dist-info/AUTHORS} +26 -3
  21. data/vendor/pygments-main/Pygments-2.8.1.dist-info/INSTALLER +1 -0
  22. data/vendor/pygments-main/{LICENSE → Pygments-2.8.1.dist-info/LICENSE} +1 -1
  23. data/vendor/pygments-main/Pygments-2.8.1.dist-info/METADATA +48 -0
  24. data/vendor/pygments-main/Pygments-2.8.1.dist-info/RECORD +494 -0
  25. data/vendor/pygments-main/Pygments-2.8.1.dist-info/REQUESTED +0 -0
  26. data/vendor/pygments-main/Pygments-2.8.1.dist-info/WHEEL +5 -0
  27. data/vendor/pygments-main/Pygments-2.8.1.dist-info/entry_points.txt +3 -0
  28. data/vendor/pygments-main/Pygments-2.8.1.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 -12
  31. data/vendor/pygments-main/pygments/__main__.py +17 -0
  32. data/vendor/pygments-main/pygments/cmdline.py +213 -184
  33. data/vendor/pygments-main/pygments/console.py +6 -10
  34. data/vendor/pygments-main/pygments/filter.py +4 -7
  35. data/vendor/pygments-main/pygments/filters/__init__.py +609 -22
  36. data/vendor/pygments-main/pygments/formatter.py +4 -5
  37. data/vendor/pygments-main/pygments/formatters/__init__.py +10 -10
  38. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -4
  39. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -2
  40. data/vendor/pygments-main/pygments/formatters/html.py +242 -139
  41. data/vendor/pygments-main/pygments/formatters/img.py +91 -50
  42. data/vendor/pygments-main/pygments/formatters/irc.py +39 -40
  43. data/vendor/pygments-main/pygments/formatters/latex.py +62 -33
  44. data/vendor/pygments-main/pygments/formatters/other.py +18 -17
  45. data/vendor/pygments-main/pygments/formatters/rtf.py +29 -30
  46. data/vendor/pygments-main/pygments/formatters/svg.py +40 -5
  47. data/vendor/pygments-main/pygments/formatters/terminal.py +25 -32
  48. data/vendor/pygments-main/pygments/formatters/terminal256.py +45 -14
  49. data/vendor/pygments-main/pygments/lexer.py +47 -44
  50. data/vendor/pygments-main/pygments/lexers/__init__.py +341 -0
  51. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1644 -0
  52. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +231 -0
  53. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +75 -0
  54. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1724 -0
  55. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +5326 -0
  56. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +292 -0
  57. data/vendor/pygments-main/pygments/lexers/_mapping.py +554 -0
  58. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1171 -0
  59. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1281 -0
  60. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +2600 -0
  61. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +4752 -0
  62. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +677 -0
  63. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +3093 -0
  64. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1160 -0
  65. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +557 -0
  66. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +457 -0
  67. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1003 -0
  68. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +112 -0
  69. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +279 -0
  70. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1938 -0
  71. data/vendor/pygments-main/pygments/lexers/actionscript.py +244 -0
  72. data/vendor/pygments-main/pygments/lexers/agile.py +23 -0
  73. data/vendor/pygments-main/pygments/lexers/algebra.py +239 -0
  74. data/vendor/pygments-main/pygments/lexers/ambient.py +75 -0
  75. data/vendor/pygments-main/pygments/lexers/amdgpu.py +48 -0
  76. data/vendor/pygments-main/pygments/lexers/ampl.py +86 -0
  77. data/vendor/pygments-main/pygments/lexers/apl.py +100 -0
  78. data/vendor/pygments-main/pygments/lexers/archetype.py +317 -0
  79. data/vendor/pygments-main/pygments/lexers/arrow.py +116 -0
  80. data/vendor/pygments-main/pygments/lexers/asm.py +1004 -0
  81. data/vendor/pygments-main/pygments/lexers/automation.py +379 -0
  82. data/vendor/pygments-main/pygments/lexers/bare.py +103 -0
  83. data/vendor/pygments-main/pygments/lexers/basic.py +661 -0
  84. data/vendor/pygments-main/pygments/lexers/bibtex.py +159 -0
  85. data/vendor/pygments-main/pygments/lexers/boa.py +101 -0
  86. data/vendor/pygments-main/pygments/lexers/business.py +626 -0
  87. data/vendor/pygments-main/pygments/lexers/c_cpp.py +342 -0
  88. data/vendor/pygments-main/pygments/lexers/c_like.py +565 -0
  89. data/vendor/pygments-main/pygments/lexers/capnproto.py +77 -0
  90. data/vendor/pygments-main/pygments/lexers/cddl.py +190 -0
  91. data/vendor/pygments-main/pygments/lexers/chapel.py +111 -0
  92. data/vendor/pygments-main/pygments/lexers/clean.py +178 -0
  93. data/vendor/pygments-main/pygments/lexers/compiled.py +33 -0
  94. data/vendor/pygments-main/pygments/lexers/configs.py +985 -0
  95. data/vendor/pygments-main/pygments/lexers/console.py +113 -0
  96. data/vendor/pygments-main/pygments/lexers/crystal.py +366 -0
  97. data/vendor/pygments-main/pygments/lexers/csound.py +466 -0
  98. data/vendor/pygments-main/pygments/lexers/css.py +694 -0
  99. data/vendor/pygments-main/pygments/lexers/d.py +255 -0
  100. data/vendor/pygments-main/pygments/lexers/dalvik.py +124 -0
  101. data/vendor/pygments-main/pygments/lexers/data.py +697 -0
  102. data/vendor/pygments-main/pygments/lexers/devicetree.py +108 -0
  103. data/vendor/pygments-main/pygments/lexers/diff.py +164 -0
  104. data/vendor/pygments-main/pygments/lexers/dotnet.py +706 -0
  105. data/vendor/pygments-main/pygments/lexers/dsls.py +959 -0
  106. data/vendor/pygments-main/pygments/lexers/dylan.py +286 -0
  107. data/vendor/pygments-main/pygments/lexers/ecl.py +137 -0
  108. data/vendor/pygments-main/pygments/lexers/eiffel.py +64 -0
  109. data/vendor/pygments-main/pygments/lexers/elm.py +120 -0
  110. data/vendor/pygments-main/pygments/lexers/email.py +150 -0
  111. data/vendor/pygments-main/pygments/lexers/erlang.py +529 -0
  112. data/vendor/pygments-main/pygments/lexers/esoteric.py +303 -0
  113. data/vendor/pygments-main/pygments/lexers/ezhil.py +76 -0
  114. data/vendor/pygments-main/pygments/lexers/factor.py +343 -0
  115. data/vendor/pygments-main/pygments/lexers/fantom.py +249 -0
  116. data/vendor/pygments-main/pygments/lexers/felix.py +272 -0
  117. data/vendor/pygments-main/pygments/lexers/floscript.py +82 -0
  118. data/vendor/pygments-main/pygments/lexers/forth.py +177 -0
  119. data/vendor/pygments-main/pygments/lexers/fortran.py +208 -0
  120. data/vendor/pygments-main/pygments/lexers/foxpro.py +427 -0
  121. data/vendor/pygments-main/pygments/lexers/freefem.py +897 -0
  122. data/vendor/pygments-main/pygments/lexers/functional.py +20 -0
  123. data/vendor/pygments-main/pygments/lexers/futhark.py +110 -0
  124. data/vendor/pygments-main/pygments/lexers/gdscript.py +345 -0
  125. data/vendor/pygments-main/pygments/lexers/go.py +100 -0
  126. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +269 -0
  127. data/vendor/pygments-main/pygments/lexers/graph.py +84 -0
  128. data/vendor/pygments-main/pygments/lexers/graphics.py +799 -0
  129. data/vendor/pygments-main/pygments/lexers/graphviz.py +57 -0
  130. data/vendor/pygments-main/pygments/lexers/haskell.py +869 -0
  131. data/vendor/pygments-main/pygments/lexers/haxe.py +935 -0
  132. data/vendor/pygments-main/pygments/lexers/hdl.py +468 -0
  133. data/vendor/pygments-main/pygments/lexers/hexdump.py +102 -0
  134. data/vendor/pygments-main/pygments/lexers/html.py +613 -0
  135. data/vendor/pygments-main/pygments/lexers/idl.py +280 -0
  136. data/vendor/pygments-main/pygments/lexers/igor.py +419 -0
  137. data/vendor/pygments-main/pygments/lexers/inferno.py +95 -0
  138. data/vendor/pygments-main/pygments/lexers/installers.py +321 -0
  139. data/vendor/pygments-main/pygments/lexers/int_fiction.py +1367 -0
  140. data/vendor/pygments-main/pygments/lexers/iolang.py +62 -0
  141. data/vendor/pygments-main/pygments/lexers/j.py +145 -0
  142. data/vendor/pygments-main/pygments/lexers/javascript.py +1536 -0
  143. data/vendor/pygments-main/pygments/lexers/julia.py +330 -0
  144. data/vendor/pygments-main/pygments/lexers/jvm.py +1739 -0
  145. data/vendor/pygments-main/pygments/lexers/lisp.py +2698 -0
  146. data/vendor/pygments-main/pygments/lexers/make.py +205 -0
  147. data/vendor/pygments-main/pygments/lexers/markup.py +762 -0
  148. data/vendor/pygments-main/pygments/lexers/math.py +20 -0
  149. data/vendor/pygments-main/pygments/lexers/matlab.py +3280 -0
  150. data/vendor/pygments-main/pygments/lexers/mime.py +225 -0
  151. data/vendor/pygments-main/pygments/lexers/ml.py +957 -0
  152. data/vendor/pygments-main/pygments/lexers/modeling.py +365 -0
  153. data/vendor/pygments-main/pygments/lexers/modula2.py +1579 -0
  154. data/vendor/pygments-main/pygments/lexers/monte.py +203 -0
  155. data/vendor/pygments-main/pygments/lexers/mosel.py +447 -0
  156. data/vendor/pygments-main/pygments/lexers/ncl.py +893 -0
  157. data/vendor/pygments-main/pygments/lexers/nimrod.py +158 -0
  158. data/vendor/pygments-main/pygments/lexers/nit.py +63 -0
  159. data/vendor/pygments-main/pygments/lexers/nix.py +135 -0
  160. data/vendor/pygments-main/pygments/lexers/oberon.py +120 -0
  161. data/vendor/pygments-main/pygments/lexers/objective.py +503 -0
  162. data/vendor/pygments-main/pygments/lexers/ooc.py +84 -0
  163. data/vendor/pygments-main/pygments/lexers/other.py +40 -0
  164. data/vendor/pygments-main/pygments/lexers/parasail.py +78 -0
  165. data/vendor/pygments-main/pygments/lexers/parsers.py +799 -0
  166. data/vendor/pygments-main/pygments/lexers/pascal.py +643 -0
  167. data/vendor/pygments-main/pygments/lexers/pawn.py +202 -0
  168. data/vendor/pygments-main/pygments/lexers/perl.py +731 -0
  169. data/vendor/pygments-main/pygments/lexers/php.py +320 -0
  170. data/vendor/pygments-main/pygments/lexers/pointless.py +70 -0
  171. data/vendor/pygments-main/pygments/lexers/pony.py +93 -0
  172. data/vendor/pygments-main/pygments/lexers/praat.py +301 -0
  173. data/vendor/pygments-main/pygments/lexers/prolog.py +305 -0
  174. data/vendor/pygments-main/pygments/lexers/promql.py +182 -0
  175. data/vendor/pygments-main/pygments/lexers/python.py +1158 -0
  176. data/vendor/pygments-main/pygments/lexers/qvt.py +151 -0
  177. data/vendor/pygments-main/pygments/lexers/r.py +190 -0
  178. data/vendor/pygments-main/pygments/lexers/rdf.py +462 -0
  179. data/vendor/pygments-main/pygments/lexers/rebol.py +430 -0
  180. data/vendor/pygments-main/pygments/lexers/resource.py +84 -0
  181. data/vendor/pygments-main/pygments/lexers/ride.py +138 -0
  182. data/vendor/pygments-main/pygments/lexers/rnc.py +66 -0
  183. data/vendor/pygments-main/pygments/lexers/roboconf.py +81 -0
  184. data/vendor/pygments-main/pygments/lexers/robotframework.py +551 -0
  185. data/vendor/pygments-main/pygments/lexers/ruby.py +523 -0
  186. data/vendor/pygments-main/pygments/lexers/rust.py +223 -0
  187. data/vendor/pygments-main/pygments/lexers/sas.py +227 -0
  188. data/vendor/pygments-main/pygments/lexers/scdoc.py +82 -0
  189. data/vendor/pygments-main/pygments/lexers/scripting.py +1283 -0
  190. data/vendor/pygments-main/pygments/lexers/sgf.py +60 -0
  191. data/vendor/pygments-main/pygments/lexers/shell.py +909 -0
  192. data/vendor/pygments-main/pygments/lexers/sieve.py +68 -0
  193. data/vendor/pygments-main/pygments/lexers/slash.py +184 -0
  194. data/vendor/pygments-main/pygments/lexers/smalltalk.py +194 -0
  195. data/vendor/pygments-main/pygments/lexers/smv.py +78 -0
  196. data/vendor/pygments-main/pygments/lexers/snobol.py +82 -0
  197. data/vendor/pygments-main/pygments/lexers/solidity.py +91 -0
  198. data/vendor/pygments-main/pygments/lexers/special.py +106 -0
  199. data/vendor/pygments-main/pygments/lexers/sql.py +832 -0
  200. data/vendor/pygments-main/pygments/lexers/stata.py +170 -0
  201. data/vendor/pygments-main/pygments/lexers/supercollider.py +94 -0
  202. data/vendor/pygments-main/pygments/lexers/tcl.py +144 -0
  203. data/vendor/pygments-main/pygments/lexers/templates.py +2263 -0
  204. data/vendor/pygments-main/pygments/lexers/teraterm.py +334 -0
  205. data/vendor/pygments-main/pygments/lexers/testing.py +206 -0
  206. data/vendor/pygments-main/pygments/lexers/text.py +25 -0
  207. data/vendor/pygments-main/pygments/lexers/textedit.py +168 -0
  208. data/vendor/pygments-main/pygments/lexers/textfmts.py +429 -0
  209. data/vendor/pygments-main/pygments/lexers/theorem.py +476 -0
  210. data/vendor/pygments-main/pygments/lexers/tnt.py +262 -0
  211. data/vendor/pygments-main/pygments/lexers/trafficscript.py +53 -0
  212. data/vendor/pygments-main/pygments/lexers/typoscript.py +218 -0
  213. data/vendor/pygments-main/pygments/lexers/unicon.py +411 -0
  214. data/vendor/pygments-main/pygments/lexers/urbi.py +145 -0
  215. data/vendor/pygments-main/pygments/lexers/usd.py +89 -0
  216. data/vendor/pygments-main/pygments/lexers/varnish.py +189 -0
  217. data/vendor/pygments-main/pygments/lexers/verification.py +113 -0
  218. data/vendor/pygments-main/pygments/lexers/web.py +23 -0
  219. data/vendor/pygments-main/pygments/lexers/webidl.py +298 -0
  220. data/vendor/pygments-main/pygments/lexers/webmisc.py +991 -0
  221. data/vendor/pygments-main/pygments/lexers/whiley.py +115 -0
  222. data/vendor/pygments-main/pygments/lexers/x10.py +68 -0
  223. data/vendor/pygments-main/pygments/lexers/xorg.py +36 -0
  224. data/vendor/pygments-main/pygments/lexers/yang.py +103 -0
  225. data/vendor/pygments-main/pygments/lexers/zig.py +123 -0
  226. data/vendor/pygments-main/pygments/modeline.py +1 -2
  227. data/vendor/pygments-main/pygments/plugin.py +4 -3
  228. data/vendor/pygments-main/pygments/regexopt.py +1 -2
  229. data/vendor/pygments-main/pygments/scanner.py +2 -3
  230. data/vendor/pygments-main/pygments/sphinxext.py +2 -5
  231. data/vendor/pygments-main/pygments/style.py +61 -25
  232. data/vendor/pygments-main/pygments/styles/__init__.py +12 -5
  233. data/vendor/pygments-main/pygments/styles/abap.py +1 -2
  234. data/vendor/pygments-main/pygments/styles/algol.py +1 -2
  235. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -2
  236. data/vendor/pygments-main/pygments/styles/arduino.py +2 -3
  237. data/vendor/pygments-main/pygments/styles/autumn.py +1 -2
  238. data/vendor/pygments-main/pygments/styles/borland.py +1 -2
  239. data/vendor/pygments-main/pygments/styles/bw.py +1 -2
  240. data/vendor/pygments-main/pygments/styles/colorful.py +1 -2
  241. data/vendor/pygments-main/pygments/styles/default.py +1 -2
  242. data/vendor/pygments-main/pygments/styles/emacs.py +1 -2
  243. data/vendor/pygments-main/pygments/styles/friendly.py +1 -2
  244. data/vendor/pygments-main/pygments/styles/fruity.py +1 -2
  245. data/vendor/pygments-main/pygments/styles/igor.py +1 -2
  246. data/vendor/pygments-main/pygments/styles/inkpot.py +66 -0
  247. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -2
  248. data/vendor/pygments-main/pygments/styles/manni.py +1 -2
  249. data/vendor/pygments-main/pygments/styles/material.py +118 -0
  250. data/vendor/pygments-main/pygments/styles/monokai.py +4 -4
  251. data/vendor/pygments-main/pygments/styles/murphy.py +1 -2
  252. data/vendor/pygments-main/pygments/styles/native.py +1 -2
  253. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -2
  254. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -2
  255. data/vendor/pygments-main/pygments/styles/pastie.py +1 -2
  256. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
  257. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -2
  258. data/vendor/pygments-main/pygments/styles/rrt.py +1 -2
  259. data/vendor/pygments-main/pygments/styles/sas.py +1 -2
  260. data/vendor/pygments-main/pygments/styles/solarized.py +136 -0
  261. data/vendor/pygments-main/pygments/styles/stata_dark.py +40 -0
  262. data/vendor/pygments-main/pygments/styles/{stata.py → stata_light.py} +14 -16
  263. data/vendor/pygments-main/pygments/styles/tango.py +1 -2
  264. data/vendor/pygments-main/pygments/styles/trac.py +1 -2
  265. data/vendor/pygments-main/pygments/styles/vim.py +1 -2
  266. data/vendor/pygments-main/pygments/styles/vs.py +1 -2
  267. data/vendor/pygments-main/pygments/styles/xcode.py +1 -2
  268. data/vendor/pygments-main/pygments/styles/zenburn.py +80 -0
  269. data/vendor/pygments-main/pygments/token.py +1 -2
  270. data/vendor/pygments-main/pygments/unistring.py +47 -109
  271. data/vendor/pygments-main/pygments/util.py +16 -96
  272. metadata +81 -139
  273. data/CHANGELOG.md +0 -111
  274. data/README.md +0 -121
  275. data/cache-lexers.rb +0 -8
  276. data/circle.yml +0 -20
  277. data/test/test_data.c +0 -2581
  278. data/test/test_data.py +0 -514
  279. data/test/test_data_generated +0 -2582
  280. data/vendor/custom_lexers/github.py +0 -565
  281. data/vendor/pygments-main/CHANGES +0 -1186
  282. data/vendor/pygments-main/MANIFEST.in +0 -6
  283. data/vendor/pygments-main/Makefile +0 -65
  284. data/vendor/pygments-main/README.rst +0 -39
  285. data/vendor/pygments-main/REVISION +0 -1
  286. data/vendor/pygments-main/TODO +0 -12
  287. data/vendor/pygments-main/doc/Makefile +0 -153
  288. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  289. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  290. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  291. data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
  292. data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
  293. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
  294. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  295. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  296. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  297. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  298. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  299. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
  300. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
  301. data/vendor/pygments-main/doc/conf.py +0 -241
  302. data/vendor/pygments-main/doc/docs/api.rst +0 -354
  303. data/vendor/pygments-main/doc/docs/authors.rst +0 -4
  304. data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
  305. data/vendor/pygments-main/doc/docs/cmdline.rst +0 -166
  306. data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
  307. data/vendor/pygments-main/doc/docs/filters.rst +0 -41
  308. data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
  309. data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
  310. data/vendor/pygments-main/doc/docs/index.rst +0 -66
  311. data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
  312. data/vendor/pygments-main/doc/docs/java.rst +0 -70
  313. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -728
  314. data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
  315. data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
  316. data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
  317. data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
  318. data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
  319. data/vendor/pygments-main/doc/docs/styles.rst +0 -201
  320. data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
  321. data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
  322. data/vendor/pygments-main/doc/download.rst +0 -41
  323. data/vendor/pygments-main/doc/faq.rst +0 -139
  324. data/vendor/pygments-main/doc/index.rst +0 -54
  325. data/vendor/pygments-main/doc/languages.rst +0 -154
  326. data/vendor/pygments-main/doc/make.bat +0 -190
  327. data/vendor/pygments-main/doc/pygmentize.1 +0 -94
  328. data/vendor/pygments-main/external/autopygmentize +0 -101
  329. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
  330. data/vendor/pygments-main/external/markdown-processor.py +0 -67
  331. data/vendor/pygments-main/external/moin-parser.py +0 -112
  332. data/vendor/pygments-main/external/pygments.bashcomp +0 -38
  333. data/vendor/pygments-main/external/rst-directive.py +0 -82
  334. data/vendor/pygments-main/pygmentize +0 -8
  335. data/vendor/pygments-main/requirements.txt +0 -5
  336. data/vendor/pygments-main/scripts/check_sources.py +0 -211
  337. data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
  338. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
  339. data/vendor/pygments-main/scripts/epydoc.css +0 -280
  340. data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
  341. data/vendor/pygments-main/scripts/pylintrc +0 -301
  342. data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
  343. data/vendor/pygments-main/setup.cfg +0 -10
  344. data/vendor/pygments-main/setup.py +0 -77
  345. data/vendor/pygments-main/tox.ini +0 -7
  346. data/vendor/simplejson/.gitignore +0 -10
  347. data/vendor/simplejson/.travis.yml +0 -5
  348. data/vendor/simplejson/CHANGES.txt +0 -291
  349. data/vendor/simplejson/LICENSE.txt +0 -19
  350. data/vendor/simplejson/MANIFEST.in +0 -5
  351. data/vendor/simplejson/README.rst +0 -19
  352. data/vendor/simplejson/conf.py +0 -179
  353. data/vendor/simplejson/index.rst +0 -628
  354. data/vendor/simplejson/scripts/make_docs.py +0 -18
  355. data/vendor/simplejson/setup.py +0 -104
  356. data/vendor/simplejson/simplejson/__init__.py +0 -510
  357. data/vendor/simplejson/simplejson/_speedups.c +0 -2745
  358. data/vendor/simplejson/simplejson/decoder.py +0 -425
  359. data/vendor/simplejson/simplejson/encoder.py +0 -567
  360. data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
  361. data/vendor/simplejson/simplejson/scanner.py +0 -77
  362. data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
  363. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
  364. data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
  365. data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
  366. data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
  367. data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
  368. data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
  369. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
  370. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
  371. data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
  372. data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
  373. data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
  374. data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
  375. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
  376. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
  377. data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
  378. data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
  379. data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
  380. data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
  381. data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
  382. data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
  383. data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
  384. data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
  385. data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
  386. data/vendor/simplejson/simplejson/tool.py +0 -39
@@ -0,0 +1,116 @@
1
+ """
2
+ pygments.lexers.arrow
3
+ ~~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexer for Arrow.
6
+
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
8
+ :license: BSD, see LICENSE for details.
9
+ """
10
+
11
+ from pygments.lexer import RegexLexer, bygroups, default, include
12
+ from pygments.token import Text, Operator, Keyword, Punctuation, Name, \
13
+ String, Number
14
+
15
+ __all__ = ['ArrowLexer']
16
+
17
+ TYPES = r'\b(int|bool|char)((?:\[\])*)(?=\s+)'
18
+ IDENT = r'([a-zA-Z_][a-zA-Z0-9_]*)'
19
+ DECL = TYPES + r'(\s+)' + IDENT
20
+
21
+
22
+ class ArrowLexer(RegexLexer):
23
+ """
24
+ Lexer for Arrow: https://pypi.org/project/py-arrow-lang/
25
+
26
+ .. versionadded:: 2.7
27
+ """
28
+
29
+ name = 'Arrow'
30
+ aliases = ['arrow']
31
+ filenames = ['*.arw']
32
+
33
+ tokens = {
34
+ 'root': [
35
+ (r'\s+', Text),
36
+ (r'^[|\s]+', Punctuation),
37
+ include('blocks'),
38
+ include('statements'),
39
+ include('expressions'),
40
+ ],
41
+ 'blocks': [
42
+ (r'(function)(\n+)(/-->)(\s*)' +
43
+ DECL + # 4 groups
44
+ r'(\()', bygroups(
45
+ Keyword.Reserved, Text, Punctuation,
46
+ Text, Keyword.Type, Punctuation, Text,
47
+ Name.Function, Punctuation
48
+ ), 'fparams'),
49
+ (r'/-->$|\\-->$|/--<|\\--<|\^', Punctuation),
50
+ ],
51
+ 'statements': [
52
+ (DECL, bygroups(Keyword.Type, Punctuation, Text, Name.Variable)),
53
+ (r'\[', Punctuation, 'index'),
54
+ (r'=', Operator),
55
+ (r'require|main', Keyword.Reserved),
56
+ (r'print', Keyword.Reserved, 'print'),
57
+ ],
58
+ 'expressions': [
59
+ (r'\s+', Text),
60
+ (r'[0-9]+', Number.Integer),
61
+ (r'true|false', Keyword.Constant),
62
+ (r"'", String.Char, 'char'),
63
+ (r'"', String.Double, 'string'),
64
+ (r'\{', Punctuation, 'array'),
65
+ (r'==|!=|<|>|\+|-|\*|/|%', Operator),
66
+ (r'and|or|not|length', Operator.Word),
67
+ (r'(input)(\s+)(int|char\[\])', bygroups(
68
+ Keyword.Reserved, Text, Keyword.Type
69
+ )),
70
+ (IDENT + r'(\()', bygroups(
71
+ Name.Function, Punctuation
72
+ ), 'fargs'),
73
+ (IDENT, Name.Variable),
74
+ (r'\[', Punctuation, 'index'),
75
+ (r'\(', Punctuation, 'expressions'),
76
+ (r'\)', Punctuation, '#pop'),
77
+ ],
78
+ 'print': [
79
+ include('expressions'),
80
+ (r',', Punctuation),
81
+ default('#pop'),
82
+ ],
83
+ 'fparams': [
84
+ (DECL, bygroups(Keyword.Type, Punctuation, Text, Name.Variable)),
85
+ (r',', Punctuation),
86
+ (r'\)', Punctuation, '#pop'),
87
+ ],
88
+ 'escape': [
89
+ (r'\\(["\\/abfnrtv]|[0-9]{1,3}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})',
90
+ String.Escape),
91
+ ],
92
+ 'char': [
93
+ (r"'", String.Char, '#pop'),
94
+ include('escape'),
95
+ (r"[^'\\]", String.Char),
96
+ ],
97
+ 'string': [
98
+ (r'"', String.Double, '#pop'),
99
+ include('escape'),
100
+ (r'[^"\\]+', String.Double),
101
+ ],
102
+ 'array': [
103
+ include('expressions'),
104
+ (r'\}', Punctuation, '#pop'),
105
+ (r',', Punctuation),
106
+ ],
107
+ 'fargs': [
108
+ include('expressions'),
109
+ (r'\)', Punctuation, '#pop'),
110
+ (r',', Punctuation),
111
+ ],
112
+ 'index': [
113
+ include('expressions'),
114
+ (r'\]', Punctuation, '#pop'),
115
+ ],
116
+ }
@@ -0,0 +1,1004 @@
1
+ """
2
+ pygments.lexers.asm
3
+ ~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexers for assembly languages.
6
+
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
8
+ :license: BSD, see LICENSE for details.
9
+ """
10
+
11
+ import re
12
+
13
+ from pygments.lexer import RegexLexer, include, bygroups, using, words, \
14
+ DelegatingLexer, default
15
+ from pygments.lexers.c_cpp import CppLexer, CLexer
16
+ from pygments.lexers.d import DLexer
17
+ from pygments.token import Text, Name, Number, String, Comment, Punctuation, \
18
+ Other, Keyword, Operator, Literal
19
+
20
+ __all__ = ['GasLexer', 'ObjdumpLexer', 'DObjdumpLexer', 'CppObjdumpLexer',
21
+ 'CObjdumpLexer', 'HsailLexer', 'LlvmLexer', 'LlvmMirBodyLexer',
22
+ 'LlvmMirLexer', 'NasmLexer', 'NasmObjdumpLexer', 'TasmLexer',
23
+ 'Ca65Lexer', 'Dasm16Lexer']
24
+
25
+
26
+ class GasLexer(RegexLexer):
27
+ """
28
+ For Gas (AT&T) assembly code.
29
+ """
30
+ name = 'GAS'
31
+ aliases = ['gas', 'asm']
32
+ filenames = ['*.s', '*.S']
33
+ mimetypes = ['text/x-gas']
34
+
35
+ #: optional Comment or Whitespace
36
+ string = r'"(\\"|[^"])*"'
37
+ char = r'[\w$.@-]'
38
+ identifier = r'(?:[a-zA-Z$_]' + char + r'*|\.' + char + '+)'
39
+ number = r'(?:0[xX][a-fA-F0-9]+|#?-?\d+)'
40
+ register = '%' + identifier
41
+
42
+ tokens = {
43
+ 'root': [
44
+ include('whitespace'),
45
+ (identifier + ':', Name.Label),
46
+ (r'\.' + identifier, Name.Attribute, 'directive-args'),
47
+ (r'lock|rep(n?z)?|data\d+', Name.Attribute),
48
+ (identifier, Name.Function, 'instruction-args'),
49
+ (r'[\r\n]+', Text)
50
+ ],
51
+ 'directive-args': [
52
+ (identifier, Name.Constant),
53
+ (string, String),
54
+ ('@' + identifier, Name.Attribute),
55
+ (number, Number.Integer),
56
+ (register, Name.Variable),
57
+ (r'[\r\n]+', Text, '#pop'),
58
+ (r'([;#]|//).*?\n', Comment.Single, '#pop'),
59
+ (r'/[*].*?[*]/', Comment.Multiline),
60
+ (r'/[*].*?\n[\w\W]*?[*]/', Comment.Multiline, '#pop'),
61
+
62
+ include('punctuation'),
63
+ include('whitespace')
64
+ ],
65
+ 'instruction-args': [
66
+ # For objdump-disassembled code, shouldn't occur in
67
+ # actual assembler input
68
+ ('([a-z0-9]+)( )(<)('+identifier+')(>)',
69
+ bygroups(Number.Hex, Text, Punctuation, Name.Constant,
70
+ Punctuation)),
71
+ ('([a-z0-9]+)( )(<)('+identifier+')([-+])('+number+')(>)',
72
+ bygroups(Number.Hex, Text, Punctuation, Name.Constant,
73
+ Punctuation, Number.Integer, Punctuation)),
74
+
75
+ # Address constants
76
+ (identifier, Name.Constant),
77
+ (number, Number.Integer),
78
+ # Registers
79
+ (register, Name.Variable),
80
+ # Numeric constants
81
+ ('$'+number, Number.Integer),
82
+ (r"$'(.|\\')'", String.Char),
83
+ (r'[\r\n]+', Text, '#pop'),
84
+ (r'([;#]|//).*?\n', Comment.Single, '#pop'),
85
+ (r'/[*].*?[*]/', Comment.Multiline),
86
+ (r'/[*].*?\n[\w\W]*?[*]/', Comment.Multiline, '#pop'),
87
+
88
+ include('punctuation'),
89
+ include('whitespace')
90
+ ],
91
+ 'whitespace': [
92
+ (r'\n', Text),
93
+ (r'\s+', Text),
94
+ (r'([;#]|//).*?\n', Comment.Single),
95
+ (r'/[*][\w\W]*?[*]/', Comment.Multiline)
96
+ ],
97
+ 'punctuation': [
98
+ (r'[-*,.()\[\]!:]+', Punctuation)
99
+ ]
100
+ }
101
+
102
+ def analyse_text(text):
103
+ if re.search(r'^\.(text|data|section)', text, re.M):
104
+ return True
105
+ elif re.search(r'^\.\w+', text, re.M):
106
+ return 0.1
107
+
108
+
109
+ def _objdump_lexer_tokens(asm_lexer):
110
+ """
111
+ Common objdump lexer tokens to wrap an ASM lexer.
112
+ """
113
+ hex_re = r'[0-9A-Za-z]'
114
+ return {
115
+ 'root': [
116
+ # File name & format:
117
+ ('(.*?)(:)( +file format )(.*?)$',
118
+ bygroups(Name.Label, Punctuation, Text, String)),
119
+ # Section header
120
+ ('(Disassembly of section )(.*?)(:)$',
121
+ bygroups(Text, Name.Label, Punctuation)),
122
+ # Function labels
123
+ # (With offset)
124
+ ('('+hex_re+'+)( )(<)(.*?)([-+])(0[xX][A-Za-z0-9]+)(>:)$',
125
+ bygroups(Number.Hex, Text, Punctuation, Name.Function,
126
+ Punctuation, Number.Hex, Punctuation)),
127
+ # (Without offset)
128
+ ('('+hex_re+'+)( )(<)(.*?)(>:)$',
129
+ bygroups(Number.Hex, Text, Punctuation, Name.Function,
130
+ Punctuation)),
131
+ # Code line with disassembled instructions
132
+ ('( *)('+hex_re+r'+:)(\t)((?:'+hex_re+hex_re+' )+)( *\t)([a-zA-Z].*?)$',
133
+ bygroups(Text, Name.Label, Text, Number.Hex, Text,
134
+ using(asm_lexer))),
135
+ # Code line with ascii
136
+ ('( *)('+hex_re+r'+:)(\t)((?:'+hex_re+hex_re+' )+)( *)(.*?)$',
137
+ bygroups(Text, Name.Label, Text, Number.Hex, Text, String)),
138
+ # Continued code line, only raw opcodes without disassembled
139
+ # instruction
140
+ ('( *)('+hex_re+r'+:)(\t)((?:'+hex_re+hex_re+' )+)$',
141
+ bygroups(Text, Name.Label, Text, Number.Hex)),
142
+ # Skipped a few bytes
143
+ (r'\t\.\.\.$', Text),
144
+ # Relocation line
145
+ # (With offset)
146
+ (r'(\t\t\t)('+hex_re+r'+:)( )([^\t]+)(\t)(.*?)([-+])(0x'+hex_re+'+)$',
147
+ bygroups(Text, Name.Label, Text, Name.Property, Text,
148
+ Name.Constant, Punctuation, Number.Hex)),
149
+ # (Without offset)
150
+ (r'(\t\t\t)('+hex_re+r'+:)( )([^\t]+)(\t)(.*?)$',
151
+ bygroups(Text, Name.Label, Text, Name.Property, Text,
152
+ Name.Constant)),
153
+ (r'[^\n]+\n', Other)
154
+ ]
155
+ }
156
+
157
+
158
+ class ObjdumpLexer(RegexLexer):
159
+ """
160
+ For the output of ``objdump -dr``.
161
+ """
162
+ name = 'objdump'
163
+ aliases = ['objdump']
164
+ filenames = ['*.objdump']
165
+ mimetypes = ['text/x-objdump']
166
+
167
+ tokens = _objdump_lexer_tokens(GasLexer)
168
+
169
+
170
+ class DObjdumpLexer(DelegatingLexer):
171
+ """
172
+ For the output of ``objdump -Sr`` on compiled D files.
173
+ """
174
+ name = 'd-objdump'
175
+ aliases = ['d-objdump']
176
+ filenames = ['*.d-objdump']
177
+ mimetypes = ['text/x-d-objdump']
178
+
179
+ def __init__(self, **options):
180
+ super().__init__(DLexer, ObjdumpLexer, **options)
181
+
182
+
183
+ class CppObjdumpLexer(DelegatingLexer):
184
+ """
185
+ For the output of ``objdump -Sr`` on compiled C++ files.
186
+ """
187
+ name = 'cpp-objdump'
188
+ aliases = ['cpp-objdump', 'c++-objdumb', 'cxx-objdump']
189
+ filenames = ['*.cpp-objdump', '*.c++-objdump', '*.cxx-objdump']
190
+ mimetypes = ['text/x-cpp-objdump']
191
+
192
+ def __init__(self, **options):
193
+ super().__init__(CppLexer, ObjdumpLexer, **options)
194
+
195
+
196
+ class CObjdumpLexer(DelegatingLexer):
197
+ """
198
+ For the output of ``objdump -Sr`` on compiled C files.
199
+ """
200
+ name = 'c-objdump'
201
+ aliases = ['c-objdump']
202
+ filenames = ['*.c-objdump']
203
+ mimetypes = ['text/x-c-objdump']
204
+
205
+ def __init__(self, **options):
206
+ super().__init__(CLexer, ObjdumpLexer, **options)
207
+
208
+
209
+ class HsailLexer(RegexLexer):
210
+ """
211
+ For HSAIL assembly code.
212
+
213
+ .. versionadded:: 2.2
214
+ """
215
+ name = 'HSAIL'
216
+ aliases = ['hsail', 'hsa']
217
+ filenames = ['*.hsail']
218
+ mimetypes = ['text/x-hsail']
219
+
220
+ string = r'"[^"]*?"'
221
+ identifier = r'[a-zA-Z_][\w.]*'
222
+ # Registers
223
+ register_number = r'[0-9]+'
224
+ register = r'(\$(c|s|d|q)' + register_number + ')'
225
+ # Qualifiers
226
+ alignQual = r'(align\(\d+\))'
227
+ widthQual = r'(width\((\d+|all)\))'
228
+ allocQual = r'(alloc\(agent\))'
229
+ # Instruction Modifiers
230
+ roundingMod = (r'((_ftz)?(_up|_down|_zero|_near))')
231
+ datatypeMod = (r'_('
232
+ # packedTypes
233
+ r'u8x4|s8x4|u16x2|s16x2|u8x8|s8x8|u16x4|s16x4|u32x2|s32x2|'
234
+ r'u8x16|s8x16|u16x8|s16x8|u32x4|s32x4|u64x2|s64x2|'
235
+ r'f16x2|f16x4|f16x8|f32x2|f32x4|f64x2|'
236
+ # baseTypes
237
+ r'u8|s8|u16|s16|u32|s32|u64|s64|'
238
+ r'b128|b8|b16|b32|b64|b1|'
239
+ r'f16|f32|f64|'
240
+ # opaqueType
241
+ r'roimg|woimg|rwimg|samp|sig32|sig64)')
242
+
243
+ # Numeric Constant
244
+ float = r'((\d+\.)|(\d*\.\d+))[eE][+-]?\d+'
245
+ hexfloat = r'0[xX](([0-9a-fA-F]+\.[0-9a-fA-F]*)|([0-9a-fA-F]*\.[0-9a-fA-F]+))[pP][+-]?\d+'
246
+ ieeefloat = r'0((h|H)[0-9a-fA-F]{4}|(f|F)[0-9a-fA-F]{8}|(d|D)[0-9a-fA-F]{16})'
247
+
248
+ tokens = {
249
+ 'root': [
250
+ include('whitespace'),
251
+ include('comments'),
252
+
253
+ (string, String),
254
+
255
+ (r'@' + identifier + ':?', Name.Label),
256
+
257
+ (register, Name.Variable.Anonymous),
258
+
259
+ include('keyword'),
260
+
261
+ (r'&' + identifier, Name.Variable.Global),
262
+ (r'%' + identifier, Name.Variable),
263
+
264
+ (hexfloat, Number.Hex),
265
+ (r'0[xX][a-fA-F0-9]+', Number.Hex),
266
+ (ieeefloat, Number.Float),
267
+ (float, Number.Float),
268
+ (r'\d+', Number.Integer),
269
+
270
+ (r'[=<>{}\[\]()*.,:;!]|x\b', Punctuation)
271
+ ],
272
+ 'whitespace': [
273
+ (r'(\n|\s)+', Text),
274
+ ],
275
+ 'comments': [
276
+ (r'/\*.*?\*/', Comment.Multiline),
277
+ (r'//.*?\n', Comment.Single),
278
+ ],
279
+ 'keyword': [
280
+ # Types
281
+ (r'kernarg' + datatypeMod, Keyword.Type),
282
+
283
+ # Regular keywords
284
+ (r'\$(full|base|small|large|default|zero|near)', Keyword),
285
+ (words((
286
+ 'module', 'extension', 'pragma', 'prog', 'indirect', 'signature',
287
+ 'decl', 'kernel', 'function', 'enablebreakexceptions',
288
+ 'enabledetectexceptions', 'maxdynamicgroupsize', 'maxflatgridsize',
289
+ 'maxflatworkgroupsize', 'requireddim', 'requiredgridsize',
290
+ 'requiredworkgroupsize', 'requirenopartialworkgroups'),
291
+ suffix=r'\b'), Keyword),
292
+
293
+ # instructions
294
+ (roundingMod, Keyword),
295
+ (datatypeMod, Keyword),
296
+ (r'_(' + alignQual + '|' + widthQual + ')', Keyword),
297
+ (r'_kernarg', Keyword),
298
+ (r'(nop|imagefence)\b', Keyword),
299
+ (words((
300
+ 'cleardetectexcept', 'clock', 'cuid', 'debugtrap', 'dim',
301
+ 'getdetectexcept', 'groupbaseptr', 'kernargbaseptr', 'laneid',
302
+ 'maxcuid', 'maxwaveid', 'packetid', 'setdetectexcept', 'waveid',
303
+ 'workitemflatabsid', 'workitemflatid', 'nullptr', 'abs', 'bitrev',
304
+ 'currentworkgroupsize', 'currentworkitemflatid', 'fract', 'ncos',
305
+ 'neg', 'nexp2', 'nlog2', 'nrcp', 'nrsqrt', 'nsin', 'nsqrt',
306
+ 'gridgroups', 'gridsize', 'not', 'sqrt', 'workgroupid',
307
+ 'workgroupsize', 'workitemabsid', 'workitemid', 'ceil', 'floor',
308
+ 'rint', 'trunc', 'add', 'bitmask', 'borrow', 'carry', 'copysign',
309
+ 'div', 'rem', 'sub', 'shl', 'shr', 'and', 'or', 'xor', 'unpackhi',
310
+ 'unpacklo', 'max', 'min', 'fma', 'mad', 'bitextract', 'bitselect',
311
+ 'shuffle', 'cmov', 'bitalign', 'bytealign', 'lerp', 'nfma', 'mul',
312
+ 'mulhi', 'mul24hi', 'mul24', 'mad24', 'mad24hi', 'bitinsert',
313
+ 'combine', 'expand', 'lda', 'mov', 'pack', 'unpack', 'packcvt',
314
+ 'unpackcvt', 'sad', 'sementp', 'ftos', 'stof', 'cmp', 'ld', 'st',
315
+ '_eq', '_ne', '_lt', '_le', '_gt', '_ge', '_equ', '_neu', '_ltu',
316
+ '_leu', '_gtu', '_geu', '_num', '_nan', '_seq', '_sne', '_slt',
317
+ '_sle', '_sgt', '_sge', '_snum', '_snan', '_sequ', '_sneu', '_sltu',
318
+ '_sleu', '_sgtu', '_sgeu', 'atomic', '_ld', '_st', '_cas', '_add',
319
+ '_and', '_exch', '_max', '_min', '_or', '_sub', '_wrapdec',
320
+ '_wrapinc', '_xor', 'ret', 'cvt', '_readonly', '_kernarg', '_global',
321
+ 'br', 'cbr', 'sbr', '_scacq', '_screl', '_scar', '_rlx', '_wave',
322
+ '_wg', '_agent', '_system', 'ldimage', 'stimage', '_v2', '_v3', '_v4',
323
+ '_1d', '_2d', '_3d', '_1da', '_2da', '_1db', '_2ddepth', '_2dadepth',
324
+ '_width', '_height', '_depth', '_array', '_channelorder',
325
+ '_channeltype', 'querysampler', '_coord', '_filter', '_addressing',
326
+ 'barrier', 'wavebarrier', 'initfbar', 'joinfbar', 'waitfbar',
327
+ 'arrivefbar', 'leavefbar', 'releasefbar', 'ldf', 'activelaneid',
328
+ 'activelanecount', 'activelanemask', 'activelanepermute', 'call',
329
+ 'scall', 'icall', 'alloca', 'packetcompletionsig',
330
+ 'addqueuewriteindex', 'casqueuewriteindex', 'ldqueuereadindex',
331
+ 'stqueuereadindex', 'readonly', 'global', 'private', 'group',
332
+ 'spill', 'arg', '_upi', '_downi', '_zeroi', '_neari', '_upi_sat',
333
+ '_downi_sat', '_zeroi_sat', '_neari_sat', '_supi', '_sdowni',
334
+ '_szeroi', '_sneari', '_supi_sat', '_sdowni_sat', '_szeroi_sat',
335
+ '_sneari_sat', '_pp', '_ps', '_sp', '_ss', '_s', '_p', '_pp_sat',
336
+ '_ps_sat', '_sp_sat', '_ss_sat', '_s_sat', '_p_sat')), Keyword),
337
+
338
+ # Integer types
339
+ (r'i[1-9]\d*', Keyword)
340
+ ]
341
+ }
342
+
343
+
344
+ class LlvmLexer(RegexLexer):
345
+ """
346
+ For LLVM assembly code.
347
+ """
348
+ name = 'LLVM'
349
+ aliases = ['llvm']
350
+ filenames = ['*.ll']
351
+ mimetypes = ['text/x-llvm']
352
+
353
+ #: optional Comment or Whitespace
354
+ string = r'"[^"]*?"'
355
+ identifier = r'([-a-zA-Z$._][\w\-$.]*|' + string + ')'
356
+
357
+ tokens = {
358
+ 'root': [
359
+ include('whitespace'),
360
+
361
+ # Before keywords, because keywords are valid label names :(...
362
+ (identifier + r'\s*:', Name.Label),
363
+
364
+ include('keyword'),
365
+
366
+ (r'%' + identifier, Name.Variable),
367
+ (r'@' + identifier, Name.Variable.Global),
368
+ (r'%\d+', Name.Variable.Anonymous),
369
+ (r'@\d+', Name.Variable.Global),
370
+ (r'#\d+', Name.Variable.Global),
371
+ (r'!' + identifier, Name.Variable),
372
+ (r'!\d+', Name.Variable.Anonymous),
373
+ (r'c?' + string, String),
374
+
375
+ (r'0[xX][a-fA-F0-9]+', Number),
376
+ (r'-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?', Number),
377
+
378
+ (r'[=<>{}\[\]()*.,!]|x\b', Punctuation)
379
+ ],
380
+ 'whitespace': [
381
+ (r'(\n|\s)+', Text),
382
+ (r';.*?\n', Comment)
383
+ ],
384
+ 'keyword': [
385
+ # Regular keywords
386
+ (words((
387
+ 'acq_rel', 'acquire', 'add', 'addrspace', 'addrspacecast', 'afn', 'alias',
388
+ 'aliasee', 'align', 'alignLog2', 'alignstack', 'alloca', 'allocsize', 'allOnes',
389
+ 'alwaysinline', 'amdgpu_cs', 'amdgpu_es', 'amdgpu_gs', 'amdgpu_hs',
390
+ 'amdgpu_kernel', 'amdgpu_ls', 'amdgpu_ps', 'amdgpu_vs', 'and', 'any',
391
+ 'anyregcc', 'appending', 'arcp', 'argmemonly', 'args', 'arm_aapcs_vfpcc',
392
+ 'arm_aapcscc', 'arm_apcscc', 'ashr', 'asm', 'atomic', 'atomicrmw', 'attributes',
393
+ 'available_externally', 'avr_intrcc', 'avr_signalcc', 'bit', 'bitcast',
394
+ 'bitMask', 'blockaddress', 'br', 'branchFunnel', 'builtin', 'byArg', 'byte',
395
+ 'byteArray', 'byval', 'c', 'call', 'callee', 'caller', 'calls', 'catch',
396
+ 'catchpad', 'catchret', 'catchswitch', 'cc', 'ccc', 'cleanup', 'cleanuppad',
397
+ 'cleanupret', 'cmpxchg', 'cold', 'coldcc', 'comdat', 'common', 'constant',
398
+ 'contract', 'convergent', 'critical', 'cxx_fast_tlscc', 'datalayout', 'declare',
399
+ 'default', 'define', 'deplibs', 'dereferenceable', 'dereferenceable_or_null',
400
+ 'distinct', 'dllexport', 'dllimport', 'dso_local', 'dso_preemptable',
401
+ 'dsoLocal', 'eq', 'exact', 'exactmatch', 'extern_weak', 'external',
402
+ 'externally_initialized', 'extractelement', 'extractvalue', 'fadd', 'false',
403
+ 'fast', 'fastcc', 'fcmp', 'fdiv', 'fence', 'filter', 'flags', 'fmul',
404
+ 'fpext', 'fptosi', 'fptoui', 'fptrunc', 'freeze', 'frem', 'from', 'fsub',
405
+ 'funcFlags', 'function', 'gc', 'getelementptr', 'ghccc', 'global', 'guid', 'gv',
406
+ 'hash', 'hhvm_ccc', 'hhvmcc', 'hidden', 'hot', 'hotness', 'icmp',
407
+ 'ifunc', 'inaccessiblemem_or_argmemonly', 'inaccessiblememonly', 'inalloca',
408
+ 'inbounds', 'indir', 'indirectbr', 'info', 'initialexec', 'inline',
409
+ 'inlineBits', 'inlinehint', 'inrange', 'inreg', 'insertelement', 'insertvalue',
410
+ 'insts', 'intel_ocl_bicc', 'inteldialect', 'internal', 'inttoptr', 'invoke',
411
+ 'jumptable', 'kind', 'landingpad', 'largest', 'linkage', 'linkonce',
412
+ 'linkonce_odr', 'live', 'load', 'local_unnamed_addr', 'localdynamic',
413
+ 'localexec', 'lshr', 'max', 'metadata', 'min', 'minsize', 'module', 'monotonic',
414
+ 'msp430_intrcc', 'mul', 'musttail', 'naked', 'name', 'nand', 'ne', 'nest',
415
+ 'ninf', 'nnan', 'noalias', 'nobuiltin', 'nocapture', 'nocf_check',
416
+ 'noduplicate', 'noduplicates', 'noimplicitfloat', 'noinline', 'none',
417
+ 'nonlazybind', 'nonnull', 'norecurse', 'noRecurse', 'noredzone', 'noreturn',
418
+ 'notail', 'notEligibleToImport', 'nounwind', 'nsw', 'nsz', 'null', 'nuw', 'oeq',
419
+ 'offset', 'oge', 'ogt', 'ole', 'olt', 'one', 'opaque', 'optforfuzzing',
420
+ 'optnone', 'optsize', 'or', 'ord', 'path', 'personality', 'phi', 'poison',
421
+ 'prefix', 'preserve_allcc', 'preserve_mostcc', 'private', 'prologue',
422
+ 'protected', 'ptrtoint', 'ptx_device', 'ptx_kernel', 'readnone', 'readNone',
423
+ 'readonly', 'readOnly', 'reassoc', 'refs', 'relbf', 'release', 'resByArg',
424
+ 'resume', 'ret', 'returnDoesNotAlias', 'returned', 'returns_twice', 'safestack',
425
+ 'samesize', 'sanitize_address', 'sanitize_hwaddress', 'sanitize_memory',
426
+ 'sanitize_thread', 'sdiv', 'section', 'select', 'seq_cst', 'sext', 'sge', 'sgt',
427
+ 'shadowcallstack', 'shl', 'shufflevector', 'sideeffect', 'signext', 'single',
428
+ 'singleImpl', 'singleImplName', 'sitofp', 'sizeM1', 'sizeM1BitWidth', 'sle',
429
+ 'slt', 'source_filename', 'speculatable', 'spir_func', 'spir_kernel', 'srem',
430
+ 'sret', 'ssp', 'sspreq', 'sspstrong', 'store', 'strictfp', 'sub', 'summaries',
431
+ 'summary', 'swiftcc', 'swifterror', 'swiftself', 'switch', 'syncscope', 'tail',
432
+ 'target', 'thread_local', 'to', 'token', 'triple', 'true', 'trunc', 'type',
433
+ 'typeCheckedLoadConstVCalls', 'typeCheckedLoadVCalls', 'typeid', 'typeIdInfo',
434
+ 'typeTestAssumeConstVCalls', 'typeTestAssumeVCalls', 'typeTestRes', 'typeTests',
435
+ 'udiv', 'ueq', 'uge', 'ugt', 'uitofp', 'ule', 'ult', 'umax', 'umin', 'undef',
436
+ 'une', 'uniformRetVal', 'uniqueRetVal', 'unknown', 'unnamed_addr', 'uno',
437
+ 'unordered', 'unreachable', 'unsat', 'unwind', 'urem', 'uselistorder',
438
+ 'uselistorder_bb', 'uwtable', 'va_arg', 'variable', 'vFuncId',
439
+ 'virtualConstProp', 'void', 'volatile', 'weak', 'weak_odr', 'webkit_jscc',
440
+ 'win64cc', 'within', 'wpdRes', 'wpdResolutions', 'writeonly',
441
+ 'x86_64_sysvcc', 'x86_fastcallcc', 'x86_intrcc', 'x86_mmx',
442
+ 'x86_regcallcc', 'x86_stdcallcc', 'x86_thiscallcc', 'x86_vectorcallcc', 'xchg',
443
+ 'xor', 'zeroext', 'zeroinitializer', 'zext', 'immarg', 'willreturn'),
444
+ suffix=r'\b'), Keyword),
445
+
446
+ # Types
447
+ (words(('void', 'half', 'bfloat', 'float', 'double', 'fp128',
448
+ 'x86_fp80', 'ppc_fp128', 'label', 'metadata', 'token')),
449
+ Keyword.Type),
450
+
451
+ # Integer types
452
+ (r'i[1-9]\d*', Keyword.Type)
453
+ ]
454
+ }
455
+
456
+
457
+ class LlvmMirBodyLexer(RegexLexer):
458
+ """
459
+ For LLVM MIR examples without the YAML wrapper.
460
+
461
+ For more information on LLVM MIR see https://llvm.org/docs/MIRLangRef.html.
462
+
463
+ .. versionadded:: 2.6
464
+ """
465
+ name = 'LLVM-MIR Body'
466
+ aliases = ['llvm-mir-body']
467
+ filenames = []
468
+ mimetypes = []
469
+
470
+ tokens = {
471
+ 'root': [
472
+ # Attributes on basic blocks
473
+ (words(('liveins', 'successors'), suffix=':'), Keyword),
474
+ # Basic Block Labels
475
+ (r'bb\.[0-9]+(\.[a-zA-Z0-9_.-]+)?( \(address-taken\))?:', Name.Label),
476
+ (r'bb\.[0-9]+ \(%[a-zA-Z0-9_.-]+\)( \(address-taken\))?:', Name.Label),
477
+ (r'%bb\.[0-9]+(\.\w+)?', Name.Label),
478
+ # Stack references
479
+ (r'%stack\.[0-9]+(\.\w+\.addr)?', Name),
480
+ # Subreg indices
481
+ (r'%subreg\.\w+', Name),
482
+ # Virtual registers
483
+ (r'%[a-zA-Z0-9_]+ *', Name.Variable, 'vreg'),
484
+ # Reference to LLVM-IR global
485
+ include('global'),
486
+ # Reference to Intrinsic
487
+ (r'intrinsic\(\@[a-zA-Z0-9_.]+\)', Name.Variable.Global),
488
+ # Comparison predicates
489
+ (words(('eq', 'ne', 'sgt', 'sge', 'slt', 'sle', 'ugt', 'uge', 'ult',
490
+ 'ule'), prefix=r'intpred\(', suffix=r'\)'), Name.Builtin),
491
+ (words(('oeq', 'one', 'ogt', 'oge', 'olt', 'ole', 'ugt', 'uge',
492
+ 'ult', 'ule'), prefix=r'floatpred\(', suffix=r'\)'),
493
+ Name.Builtin),
494
+ # Physical registers
495
+ (r'\$\w+', String.Single),
496
+ # Assignment operator
497
+ (r'=', Operator),
498
+ # gMIR Opcodes
499
+ (r'(G_ANYEXT|G_[SZ]EXT|G_SEXT_INREG|G_TRUNC|G_IMPLICIT_DEF|G_PHI|'
500
+ r'G_FRAME_INDEX|G_GLOBAL_VALUE|G_INTTOPTR|G_PTRTOINT|G_BITCAST|'
501
+ r'G_CONSTANT|G_FCONSTANT|G_VASTART|G_VAARG|G_CTLZ|G_CTLZ_ZERO_UNDEF|'
502
+ r'G_CTTZ|G_CTTZ_ZERO_UNDEF|G_CTPOP|G_BSWAP|G_BITREVERSE|'
503
+ r'G_ADDRSPACE_CAST|G_BLOCK_ADDR|G_JUMP_TABLE|G_DYN_STACKALLOC|'
504
+ r'G_ADD|G_SUB|G_MUL|G_[SU]DIV|G_[SU]REM|G_AND|G_OR|G_XOR|G_SHL|'
505
+ r'G_[LA]SHR|G_[IF]CMP|G_SELECT|G_GEP|G_PTR_MASK|G_SMIN|G_SMAX|'
506
+ r'G_UMIN|G_UMAX|G_[US]ADDO|G_[US]ADDE|G_[US]SUBO|G_[US]SUBE|'
507
+ r'G_[US]MULO|G_[US]MULH|G_FNEG|G_FPEXT|G_FPTRUNC|G_FPTO[US]I|'
508
+ r'G_[US]ITOFP|G_FABS|G_FCOPYSIGN|G_FCANONICALIZE|G_FMINNUM|'
509
+ r'G_FMAXNUM|G_FMINNUM_IEEE|G_FMAXNUM_IEEE|G_FMINIMUM|G_FMAXIMUM|'
510
+ r'G_FADD|G_FSUB|G_FMUL|G_FMA|G_FMAD|G_FDIV|G_FREM|G_FPOW|G_FEXP|'
511
+ r'G_FEXP2|G_FLOG|G_FLOG2|G_FLOG10|G_FCEIL|G_FCOS|G_FSIN|G_FSQRT|'
512
+ r'G_FFLOOR|G_FRINT|G_FNEARBYINT|G_INTRINSIC_TRUNC|'
513
+ r'G_INTRINSIC_ROUND|G_LOAD|G_[ZS]EXTLOAD|G_INDEXED_LOAD|'
514
+ r'G_INDEXED_[ZS]EXTLOAD|G_STORE|G_INDEXED_STORE|'
515
+ r'G_ATOMIC_CMPXCHG_WITH_SUCCESS|G_ATOMIC_CMPXCHG|'
516
+ r'G_ATOMICRMW_(XCHG|ADD|SUB|AND|NAND|OR|XOR|MAX|MIN|UMAX|UMIN|FADD|'
517
+ r'FSUB)'
518
+ r'|G_FENCE|G_EXTRACT|G_UNMERGE_VALUES|G_INSERT|G_MERGE_VALUES|'
519
+ r'G_BUILD_VECTOR|G_BUILD_VECTOR_TRUNC|G_CONCAT_VECTORS|'
520
+ r'G_INTRINSIC|G_INTRINSIC_W_SIDE_EFFECTS|G_BR|G_BRCOND|'
521
+ r'G_BRINDIRECT|G_BRJT|G_INSERT_VECTOR_ELT|G_EXTRACT_VECTOR_ELT|'
522
+ r'G_SHUFFLE_VECTOR)\b',
523
+ Name.Builtin),
524
+ # Target independent opcodes
525
+ (r'(COPY|PHI|INSERT_SUBREG|EXTRACT_SUBREG|REG_SEQUENCE)\b',
526
+ Name.Builtin),
527
+ # Flags
528
+ (words(('killed', 'implicit')), Keyword),
529
+ # ConstantInt values
530
+ (r'i[0-9]+ +', Keyword.Type, 'constantint'),
531
+ # ConstantFloat values
532
+ (r'(half|float|double) +', Keyword.Type, 'constantfloat'),
533
+ # Bare immediates
534
+ include('integer'),
535
+ # MMO's
536
+ (r':: *', Operator, 'mmo'),
537
+ # MIR Comments
538
+ (r';.*', Comment),
539
+ # If we get here, assume it's a target instruction
540
+ (r'[a-zA-Z0-9_]+', Name),
541
+ # Everything else that isn't highlighted
542
+ (r'[(), \n]+', Text),
543
+ ],
544
+ # The integer constant from a ConstantInt value
545
+ 'constantint': [
546
+ include('integer'),
547
+ (r'(?=.)', Text, '#pop'),
548
+ ],
549
+ # The floating point constant from a ConstantFloat value
550
+ 'constantfloat': [
551
+ include('float'),
552
+ (r'(?=.)', Text, '#pop'),
553
+ ],
554
+ 'vreg': [
555
+ # The bank or class if there is one
556
+ (r' *:(?!:)', Keyword, ('#pop', 'vreg_bank_or_class')),
557
+ # The LLT if there is one
558
+ (r' *\(', Text, 'vreg_type'),
559
+ (r'(?=.)', Text, '#pop'),
560
+ ],
561
+ 'vreg_bank_or_class': [
562
+ # The unassigned bank/class
563
+ (r' *_', Name.Variable.Magic),
564
+ (r' *[a-zA-Z0-9_]+', Name.Variable),
565
+ # The LLT if there is one
566
+ (r' *\(', Text, 'vreg_type'),
567
+ (r'(?=.)', Text, '#pop'),
568
+ ],
569
+ 'vreg_type': [
570
+ # Scalar and pointer types
571
+ (r' *[sp][0-9]+', Keyword.Type),
572
+ (r' *<[0-9]+ *x *[sp][0-9]+>', Keyword.Type),
573
+ (r'\)', Text, '#pop'),
574
+ (r'(?=.)', Text, '#pop'),
575
+ ],
576
+ 'mmo': [
577
+ (r'\(', Text),
578
+ (r' +', Text),
579
+ (words(('load', 'store', 'on', 'into', 'from', 'align', 'monotonic',
580
+ 'acquire', 'release', 'acq_rel', 'seq_cst')),
581
+ Keyword),
582
+ # IR references
583
+ (r'%ir\.[a-zA-Z0-9_.-]+', Name),
584
+ (r'%ir-block\.[a-zA-Z0-9_.-]+', Name),
585
+ (r'[-+]', Operator),
586
+ include('integer'),
587
+ include('global'),
588
+ (r',', Punctuation),
589
+ (r'\), \(', Text),
590
+ (r'\)', Text, '#pop'),
591
+ ],
592
+ 'integer': [(r'-?[0-9]+', Number.Integer),],
593
+ 'float': [(r'-?[0-9]+\.[0-9]+(e[+-][0-9]+)?', Number.Float)],
594
+ 'global': [(r'\@[a-zA-Z0-9_.]+', Name.Variable.Global)],
595
+ }
596
+
597
+
598
+ class LlvmMirLexer(RegexLexer):
599
+ """
600
+ Lexer for the overall LLVM MIR document format.
601
+
602
+ MIR is a human readable serialization format that's used to represent LLVM's
603
+ machine specific intermediate representation. It allows LLVM's developers to
604
+ see the state of the compilation process at various points, as well as test
605
+ individual pieces of the compiler.
606
+
607
+ For more information on LLVM MIR see https://llvm.org/docs/MIRLangRef.html.
608
+
609
+ .. versionadded:: 2.6
610
+ """
611
+ name = 'LLVM-MIR'
612
+ aliases = ['llvm-mir']
613
+ filenames = ['*.mir']
614
+
615
+ tokens = {
616
+ 'root': [
617
+ # Comments are hashes at the YAML level
618
+ (r'#.*', Comment),
619
+ # Documents starting with | are LLVM-IR
620
+ (r'--- \|$', Keyword, 'llvm_ir'),
621
+ # Other documents are MIR
622
+ (r'---', Keyword, 'llvm_mir'),
623
+ # Consume everything else in one token for efficiency
624
+ (r'[^-#]+|.', Text),
625
+ ],
626
+ 'llvm_ir': [
627
+ # Documents end with '...' or '---'
628
+ (r'(\.\.\.|(?=---))', Keyword, '#pop'),
629
+ # Delegate to the LlvmLexer
630
+ (r'((?:.|\n)+?)(?=(\.\.\.|---))', bygroups(using(LlvmLexer))),
631
+ ],
632
+ 'llvm_mir': [
633
+ # Comments are hashes at the YAML level
634
+ (r'#.*', Comment),
635
+ # Documents end with '...' or '---'
636
+ (r'(\.\.\.|(?=---))', Keyword, '#pop'),
637
+ # Handle the simple attributes
638
+ (r'name:', Keyword, 'name'),
639
+ (words(('alignment', ),
640
+ suffix=':'), Keyword, 'number'),
641
+ (words(('legalized', 'regBankSelected', 'tracksRegLiveness',
642
+ 'selected', 'exposesReturnsTwice'),
643
+ suffix=':'), Keyword, 'boolean'),
644
+ # Handle the attributes don't highlight inside
645
+ (words(('registers', 'stack', 'fixedStack', 'liveins', 'frameInfo',
646
+ 'machineFunctionInfo'),
647
+ suffix=':'), Keyword),
648
+ # Delegate the body block to the LlvmMirBodyLexer
649
+ (r'body: *\|', Keyword, 'llvm_mir_body'),
650
+ # Consume everything else
651
+ (r'.+', Text),
652
+ (r'\n', Text),
653
+ ],
654
+ 'name': [
655
+ (r'[^\n]+', Name),
656
+ default('#pop'),
657
+ ],
658
+ 'boolean': [
659
+ (r' *(true|false)', Name.Builtin),
660
+ default('#pop'),
661
+ ],
662
+ 'number': [
663
+ (r' *[0-9]+', Number),
664
+ default('#pop'),
665
+ ],
666
+ 'llvm_mir_body': [
667
+ # Documents end with '...' or '---'.
668
+ # We have to pop llvm_mir_body and llvm_mir
669
+ (r'(\.\.\.|(?=---))', Keyword, '#pop:2'),
670
+ # Delegate the body block to the LlvmMirBodyLexer
671
+ (r'((?:.|\n)+?)(?=\.\.\.|---)', bygroups(using(LlvmMirBodyLexer))),
672
+ # The '...' is optional. If we didn't already find it then it isn't
673
+ # there. There might be a '---' instead though.
674
+ (r'(?!\.\.\.|---)((?:.|\n)+)', bygroups(using(LlvmMirBodyLexer))),
675
+ ],
676
+ }
677
+
678
+
679
+ class NasmLexer(RegexLexer):
680
+ """
681
+ For Nasm (Intel) assembly code.
682
+ """
683
+ name = 'NASM'
684
+ aliases = ['nasm']
685
+ filenames = ['*.asm', '*.ASM']
686
+ mimetypes = ['text/x-nasm']
687
+
688
+ # Tasm uses the same file endings, but TASM is not as common as NASM, so
689
+ # we prioritize NASM higher by default
690
+ priority = 1.0
691
+
692
+ identifier = r'[a-z$._?][\w$.?#@~]*'
693
+ hexn = r'(?:0x[0-9a-f]+|$0[0-9a-f]*|[0-9]+[0-9a-f]*h)'
694
+ octn = r'[0-7]+q'
695
+ binn = r'[01]+b'
696
+ decn = r'[0-9]+'
697
+ floatn = decn + r'\.e?' + decn
698
+ string = r'"(\\"|[^"\n])*"|' + r"'(\\'|[^'\n])*'|" + r"`(\\`|[^`\n])*`"
699
+ declkw = r'(?:res|d)[bwdqt]|times'
700
+ register = (r'r[0-9][0-5]?[bwd]?|'
701
+ r'[a-d][lh]|[er]?[a-d]x|[er]?[sb]p|[er]?[sd]i|[c-gs]s|st[0-7]|'
702
+ r'mm[0-7]|cr[0-4]|dr[0-367]|tr[3-7]')
703
+ wordop = r'seg|wrt|strict'
704
+ type = r'byte|[dq]?word'
705
+ # Directives must be followed by whitespace, otherwise CPU will match
706
+ # cpuid for instance.
707
+ directives = (r'(?:BITS|USE16|USE32|SECTION|SEGMENT|ABSOLUTE|EXTERN|GLOBAL|'
708
+ r'ORG|ALIGN|STRUC|ENDSTRUC|COMMON|CPU|GROUP|UPPERCASE|IMPORT|'
709
+ r'EXPORT|LIBRARY|MODULE)\s+')
710
+
711
+ flags = re.IGNORECASE | re.MULTILINE
712
+ tokens = {
713
+ 'root': [
714
+ (r'^\s*%', Comment.Preproc, 'preproc'),
715
+ include('whitespace'),
716
+ (identifier + ':', Name.Label),
717
+ (r'(%s)(\s+)(equ)' % identifier,
718
+ bygroups(Name.Constant, Keyword.Declaration, Keyword.Declaration),
719
+ 'instruction-args'),
720
+ (directives, Keyword, 'instruction-args'),
721
+ (declkw, Keyword.Declaration, 'instruction-args'),
722
+ (identifier, Name.Function, 'instruction-args'),
723
+ (r'[\r\n]+', Text)
724
+ ],
725
+ 'instruction-args': [
726
+ (string, String),
727
+ (hexn, Number.Hex),
728
+ (octn, Number.Oct),
729
+ (binn, Number.Bin),
730
+ (floatn, Number.Float),
731
+ (decn, Number.Integer),
732
+ include('punctuation'),
733
+ (register, Name.Builtin),
734
+ (identifier, Name.Variable),
735
+ (r'[\r\n]+', Text, '#pop'),
736
+ include('whitespace')
737
+ ],
738
+ 'preproc': [
739
+ (r'[^;\n]+', Comment.Preproc),
740
+ (r';.*?\n', Comment.Single, '#pop'),
741
+ (r'\n', Comment.Preproc, '#pop'),
742
+ ],
743
+ 'whitespace': [
744
+ (r'\n', Text),
745
+ (r'[ \t]+', Text),
746
+ (r';.*', Comment.Single)
747
+ ],
748
+ 'punctuation': [
749
+ (r'[,():\[\]]+', Punctuation),
750
+ (r'[&|^<>+*/%~-]+', Operator),
751
+ (r'[$]+', Keyword.Constant),
752
+ (wordop, Operator.Word),
753
+ (type, Keyword.Type)
754
+ ],
755
+ }
756
+
757
+ def analyse_text(text):
758
+ # Probably TASM
759
+ if re.match(r'PROC', text, re.IGNORECASE):
760
+ return False
761
+
762
+
763
+ class NasmObjdumpLexer(ObjdumpLexer):
764
+ """
765
+ For the output of ``objdump -d -M intel``.
766
+
767
+ .. versionadded:: 2.0
768
+ """
769
+ name = 'objdump-nasm'
770
+ aliases = ['objdump-nasm']
771
+ filenames = ['*.objdump-intel']
772
+ mimetypes = ['text/x-nasm-objdump']
773
+
774
+ tokens = _objdump_lexer_tokens(NasmLexer)
775
+
776
+
777
+ class TasmLexer(RegexLexer):
778
+ """
779
+ For Tasm (Turbo Assembler) assembly code.
780
+ """
781
+ name = 'TASM'
782
+ aliases = ['tasm']
783
+ filenames = ['*.asm', '*.ASM', '*.tasm']
784
+ mimetypes = ['text/x-tasm']
785
+
786
+ identifier = r'[@a-z$._?][\w$.?#@~]*'
787
+ hexn = r'(?:0x[0-9a-f]+|$0[0-9a-f]*|[0-9]+[0-9a-f]*h)'
788
+ octn = r'[0-7]+q'
789
+ binn = r'[01]+b'
790
+ decn = r'[0-9]+'
791
+ floatn = decn + r'\.e?' + decn
792
+ string = r'"(\\"|[^"\n])*"|' + r"'(\\'|[^'\n])*'|" + r"`(\\`|[^`\n])*`"
793
+ declkw = r'(?:res|d)[bwdqt]|times'
794
+ register = (r'r[0-9][0-5]?[bwd]|'
795
+ r'[a-d][lh]|[er]?[a-d]x|[er]?[sb]p|[er]?[sd]i|[c-gs]s|st[0-7]|'
796
+ r'mm[0-7]|cr[0-4]|dr[0-367]|tr[3-7]')
797
+ wordop = r'seg|wrt|strict'
798
+ type = r'byte|[dq]?word'
799
+ directives = (r'BITS|USE16|USE32|SECTION|SEGMENT|ABSOLUTE|EXTERN|GLOBAL|'
800
+ r'ORG|ALIGN|STRUC|ENDSTRUC|ENDS|COMMON|CPU|GROUP|UPPERCASE|INCLUDE|'
801
+ r'EXPORT|LIBRARY|MODULE|PROC|ENDP|USES|ARG|DATASEG|UDATASEG|END|IDEAL|'
802
+ r'P386|MODEL|ASSUME|CODESEG|SIZE')
803
+ # T[A-Z][a-z] is more of a convention. Lexer should filter out STRUC definitions
804
+ # and then 'add' them to datatype somehow.
805
+ datatype = (r'db|dd|dw|T[A-Z][a-z]+')
806
+
807
+ flags = re.IGNORECASE | re.MULTILINE
808
+ tokens = {
809
+ 'root': [
810
+ (r'^\s*%', Comment.Preproc, 'preproc'),
811
+ include('whitespace'),
812
+ (identifier + ':', Name.Label),
813
+ (directives, Keyword, 'instruction-args'),
814
+ (r'(%s)(\s+)(%s)' % (identifier, datatype),
815
+ bygroups(Name.Constant, Keyword.Declaration, Keyword.Declaration),
816
+ 'instruction-args'),
817
+ (declkw, Keyword.Declaration, 'instruction-args'),
818
+ (identifier, Name.Function, 'instruction-args'),
819
+ (r'[\r\n]+', Text)
820
+ ],
821
+ 'instruction-args': [
822
+ (string, String),
823
+ (hexn, Number.Hex),
824
+ (octn, Number.Oct),
825
+ (binn, Number.Bin),
826
+ (floatn, Number.Float),
827
+ (decn, Number.Integer),
828
+ include('punctuation'),
829
+ (register, Name.Builtin),
830
+ (identifier, Name.Variable),
831
+ # Do not match newline when it's preceeded by a backslash
832
+ (r'(\\\s*)(;.*)([\r\n])', bygroups(Text, Comment.Single, Text)),
833
+ (r'[\r\n]+', Text, '#pop'),
834
+ include('whitespace')
835
+ ],
836
+ 'preproc': [
837
+ (r'[^;\n]+', Comment.Preproc),
838
+ (r';.*?\n', Comment.Single, '#pop'),
839
+ (r'\n', Comment.Preproc, '#pop'),
840
+ ],
841
+ 'whitespace': [
842
+ (r'[\n\r]', Text),
843
+ (r'\\[\n\r]', Text),
844
+ (r'[ \t]+', Text),
845
+ (r';.*', Comment.Single)
846
+ ],
847
+ 'punctuation': [
848
+ (r'[,():\[\]]+', Punctuation),
849
+ (r'[&|^<>+*=/%~-]+', Operator),
850
+ (r'[$]+', Keyword.Constant),
851
+ (wordop, Operator.Word),
852
+ (type, Keyword.Type)
853
+ ],
854
+ }
855
+
856
+ def analyse_text(text):
857
+ # See above
858
+ if re.match(r'PROC', text, re.I):
859
+ return True
860
+
861
+
862
+ class Ca65Lexer(RegexLexer):
863
+ """
864
+ For ca65 assembler sources.
865
+
866
+ .. versionadded:: 1.6
867
+ """
868
+ name = 'ca65 assembler'
869
+ aliases = ['ca65']
870
+ filenames = ['*.s']
871
+
872
+ flags = re.IGNORECASE
873
+
874
+ tokens = {
875
+ 'root': [
876
+ (r';.*', Comment.Single),
877
+ (r'\s+', Text),
878
+ (r'[a-z_.@$][\w.@$]*:', Name.Label),
879
+ (r'((ld|st)[axy]|(in|de)[cxy]|asl|lsr|ro[lr]|adc|sbc|cmp|cp[xy]'
880
+ r'|cl[cvdi]|se[cdi]|jmp|jsr|bne|beq|bpl|bmi|bvc|bvs|bcc|bcs'
881
+ r'|p[lh][ap]|rt[is]|brk|nop|ta[xy]|t[xy]a|txs|tsx|and|ora|eor'
882
+ r'|bit)\b', Keyword),
883
+ (r'\.\w+', Keyword.Pseudo),
884
+ (r'[-+~*/^&|!<>=]', Operator),
885
+ (r'"[^"\n]*.', String),
886
+ (r"'[^'\n]*.", String.Char),
887
+ (r'\$[0-9a-f]+|[0-9a-f]+h\b', Number.Hex),
888
+ (r'\d+', Number.Integer),
889
+ (r'%[01]+', Number.Bin),
890
+ (r'[#,.:()=\[\]]', Punctuation),
891
+ (r'[a-z_.@$][\w.@$]*', Name),
892
+ ]
893
+ }
894
+
895
+ def analyse_text(self, text):
896
+ # comments in GAS start with "#"
897
+ if re.search(r'^\s*;', text, re.MULTILINE):
898
+ return 0.9
899
+
900
+
901
+ class Dasm16Lexer(RegexLexer):
902
+ """
903
+ For DCPU-16 Assembly.
904
+
905
+ Check http://0x10c.com/doc/dcpu-16.txt
906
+
907
+ .. versionadded:: 2.4
908
+ """
909
+ name = 'DASM16'
910
+ aliases = ['dasm16']
911
+ filenames = ['*.dasm16', '*.dasm']
912
+ mimetypes = ['text/x-dasm16']
913
+
914
+ INSTRUCTIONS = [
915
+ 'SET',
916
+ 'ADD', 'SUB',
917
+ 'MUL', 'MLI',
918
+ 'DIV', 'DVI',
919
+ 'MOD', 'MDI',
920
+ 'AND', 'BOR', 'XOR',
921
+ 'SHR', 'ASR', 'SHL',
922
+ 'IFB', 'IFC', 'IFE', 'IFN', 'IFG', 'IFA', 'IFL', 'IFU',
923
+ 'ADX', 'SBX',
924
+ 'STI', 'STD',
925
+ 'JSR',
926
+ 'INT', 'IAG', 'IAS', 'RFI', 'IAQ', 'HWN', 'HWQ', 'HWI',
927
+ ]
928
+
929
+ REGISTERS = [
930
+ 'A', 'B', 'C',
931
+ 'X', 'Y', 'Z',
932
+ 'I', 'J',
933
+ 'SP', 'PC', 'EX',
934
+ 'POP', 'PEEK', 'PUSH'
935
+ ]
936
+
937
+ # Regexes yo
938
+ char = r'[a-zA-Z0-9_$@.]'
939
+ identifier = r'(?:[a-zA-Z$_]' + char + r'*|\.' + char + '+)'
940
+ number = r'[+-]?(?:0[xX][a-zA-Z0-9]+|\d+)'
941
+ binary_number = r'0b[01_]+'
942
+ instruction = r'(?i)(' + '|'.join(INSTRUCTIONS) + ')'
943
+ single_char = r"'\\?" + char + "'"
944
+ string = r'"(\\"|[^"])*"'
945
+
946
+ def guess_identifier(lexer, match):
947
+ ident = match.group(0)
948
+ klass = Name.Variable if ident.upper() in lexer.REGISTERS else Name.Label
949
+ yield match.start(), klass, ident
950
+
951
+ tokens = {
952
+ 'root': [
953
+ include('whitespace'),
954
+ (':' + identifier, Name.Label),
955
+ (identifier + ':', Name.Label),
956
+ (instruction, Name.Function, 'instruction-args'),
957
+ (r'\.' + identifier, Name.Function, 'data-args'),
958
+ (r'[\r\n]+', Text)
959
+ ],
960
+
961
+ 'numeric' : [
962
+ (binary_number, Number.Integer),
963
+ (number, Number.Integer),
964
+ (single_char, String),
965
+ ],
966
+
967
+ 'arg' : [
968
+ (identifier, guess_identifier),
969
+ include('numeric')
970
+ ],
971
+
972
+ 'deref' : [
973
+ (r'\+', Punctuation),
974
+ (r'\]', Punctuation, '#pop'),
975
+ include('arg'),
976
+ include('whitespace')
977
+ ],
978
+
979
+ 'instruction-line' : [
980
+ (r'[\r\n]+', Text, '#pop'),
981
+ (r';.*?$', Comment, '#pop'),
982
+ include('whitespace')
983
+ ],
984
+
985
+ 'instruction-args': [
986
+ (r',', Punctuation),
987
+ (r'\[', Punctuation, 'deref'),
988
+ include('arg'),
989
+ include('instruction-line')
990
+ ],
991
+
992
+ 'data-args' : [
993
+ (r',', Punctuation),
994
+ include('numeric'),
995
+ (string, String),
996
+ include('instruction-line')
997
+ ],
998
+
999
+ 'whitespace': [
1000
+ (r'\n', Text),
1001
+ (r'\s+', Text),
1002
+ (r';.*?\n', Comment)
1003
+ ],
1004
+ }