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,662 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.lexers.basic
4
+ ~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ Lexers for BASIC like languages (other than VB.net).
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, bygroups, default, words, include
15
+ from pygments.token import Comment, Error, Keyword, Name, Number, \
16
+ Punctuation, Operator, String, Text, Whitespace
17
+ from pygments.lexers import _vbscript_builtins
18
+
19
+
20
+ __all__ = ['BlitzBasicLexer', 'BlitzMaxLexer', 'MonkeyLexer', 'CbmBasicV2Lexer',
21
+ 'QBasicLexer', 'VBScriptLexer', 'BBCBasicLexer']
22
+
23
+
24
+ class BlitzMaxLexer(RegexLexer):
25
+ """
26
+ For `BlitzMax <http://blitzbasic.com>`_ source code.
27
+
28
+ .. versionadded:: 1.4
29
+ """
30
+
31
+ name = 'BlitzMax'
32
+ aliases = ['blitzmax', 'bmax']
33
+ filenames = ['*.bmx']
34
+ mimetypes = ['text/x-bmx']
35
+
36
+ bmax_vopwords = r'\b(Shl|Shr|Sar|Mod)\b'
37
+ bmax_sktypes = r'@{1,2}|[!#$%]'
38
+ bmax_lktypes = r'\b(Int|Byte|Short|Float|Double|Long)\b'
39
+ bmax_name = r'[a-z_]\w*'
40
+ bmax_var = (r'(%s)(?:(?:([ \t]*)(%s)|([ \t]*:[ \t]*\b(?:Shl|Shr|Sar|Mod)\b)'
41
+ r'|([ \t]*)(:)([ \t]*)(?:%s|(%s)))(?:([ \t]*)(Ptr))?)') % \
42
+ (bmax_name, bmax_sktypes, bmax_lktypes, bmax_name)
43
+ bmax_func = bmax_var + r'?((?:[ \t]|\.\.\n)*)([(])'
44
+
45
+ flags = re.MULTILINE | re.IGNORECASE
46
+ tokens = {
47
+ 'root': [
48
+ # Text
49
+ (r'[ \t]+', Text),
50
+ (r'\.\.\n', Text), # Line continuation
51
+ # Comments
52
+ (r"'.*?\n", Comment.Single),
53
+ (r'([ \t]*)\bRem\n(\n|.)*?\s*\bEnd([ \t]*)Rem', Comment.Multiline),
54
+ # Data types
55
+ ('"', String.Double, 'string'),
56
+ # Numbers
57
+ (r'[0-9]+\.[0-9]*(?!\.)', Number.Float),
58
+ (r'\.[0-9]*(?!\.)', Number.Float),
59
+ (r'[0-9]+', Number.Integer),
60
+ (r'\$[0-9a-f]+', Number.Hex),
61
+ (r'\%[10]+', Number.Bin),
62
+ # Other
63
+ (r'(?:(?:(:)?([ \t]*)(:?%s|([+\-*/&|~]))|Or|And|Not|[=<>^]))' %
64
+ (bmax_vopwords), Operator),
65
+ (r'[(),.:\[\]]', Punctuation),
66
+ (r'(?:#[\w \t]*)', Name.Label),
67
+ (r'(?:\?[\w \t]*)', Comment.Preproc),
68
+ # Identifiers
69
+ (r'\b(New)\b([ \t]?)([(]?)(%s)' % (bmax_name),
70
+ bygroups(Keyword.Reserved, Text, Punctuation, Name.Class)),
71
+ (r'\b(Import|Framework|Module)([ \t]+)(%s\.%s)' %
72
+ (bmax_name, bmax_name),
73
+ bygroups(Keyword.Reserved, Text, Keyword.Namespace)),
74
+ (bmax_func, bygroups(Name.Function, Text, Keyword.Type,
75
+ Operator, Text, Punctuation, Text,
76
+ Keyword.Type, Name.Class, Text,
77
+ Keyword.Type, Text, Punctuation)),
78
+ (bmax_var, bygroups(Name.Variable, Text, Keyword.Type, Operator,
79
+ Text, Punctuation, Text, Keyword.Type,
80
+ Name.Class, Text, Keyword.Type)),
81
+ (r'\b(Type|Extends)([ \t]+)(%s)' % (bmax_name),
82
+ bygroups(Keyword.Reserved, Text, Name.Class)),
83
+ # Keywords
84
+ (r'\b(Ptr)\b', Keyword.Type),
85
+ (r'\b(Pi|True|False|Null|Self|Super)\b', Keyword.Constant),
86
+ (r'\b(Local|Global|Const|Field)\b', Keyword.Declaration),
87
+ (words((
88
+ 'TNullMethodException', 'TNullFunctionException',
89
+ 'TNullObjectException', 'TArrayBoundsException',
90
+ 'TRuntimeException'), prefix=r'\b', suffix=r'\b'), Name.Exception),
91
+ (words((
92
+ 'Strict', 'SuperStrict', 'Module', 'ModuleInfo',
93
+ 'End', 'Return', 'Continue', 'Exit', 'Public', 'Private',
94
+ 'Var', 'VarPtr', 'Chr', 'Len', 'Asc', 'SizeOf', 'Sgn', 'Abs', 'Min', 'Max',
95
+ 'New', 'Release', 'Delete', 'Incbin', 'IncbinPtr', 'IncbinLen',
96
+ 'Framework', 'Include', 'Import', 'Extern', 'EndExtern',
97
+ 'Function', 'EndFunction', 'Type', 'EndType', 'Extends', 'Method', 'EndMethod',
98
+ 'Abstract', 'Final', 'If', 'Then', 'Else', 'ElseIf', 'EndIf',
99
+ 'For', 'To', 'Next', 'Step', 'EachIn', 'While', 'Wend', 'EndWhile',
100
+ 'Repeat', 'Until', 'Forever', 'Select', 'Case', 'Default', 'EndSelect',
101
+ 'Try', 'Catch', 'EndTry', 'Throw', 'Assert', 'Goto', 'DefData', 'ReadData',
102
+ 'RestoreData'), prefix=r'\b', suffix=r'\b'),
103
+ Keyword.Reserved),
104
+ # Final resolve (for variable names and such)
105
+ (r'(%s)' % (bmax_name), Name.Variable),
106
+ ],
107
+ 'string': [
108
+ (r'""', String.Double),
109
+ (r'"C?', String.Double, '#pop'),
110
+ (r'[^"]+', String.Double),
111
+ ],
112
+ }
113
+
114
+
115
+ class BlitzBasicLexer(RegexLexer):
116
+ """
117
+ For `BlitzBasic <http://blitzbasic.com>`_ source code.
118
+
119
+ .. versionadded:: 2.0
120
+ """
121
+
122
+ name = 'BlitzBasic'
123
+ aliases = ['blitzbasic', 'b3d', 'bplus']
124
+ filenames = ['*.bb', '*.decls']
125
+ mimetypes = ['text/x-bb']
126
+
127
+ bb_sktypes = r'@{1,2}|[#$%]'
128
+ bb_name = r'[a-z]\w*'
129
+ bb_var = (r'(%s)(?:([ \t]*)(%s)|([ \t]*)([.])([ \t]*)(?:(%s)))?') % \
130
+ (bb_name, bb_sktypes, bb_name)
131
+
132
+ flags = re.MULTILINE | re.IGNORECASE
133
+ tokens = {
134
+ 'root': [
135
+ # Text
136
+ (r'[ \t]+', Text),
137
+ # Comments
138
+ (r";.*?\n", Comment.Single),
139
+ # Data types
140
+ ('"', String.Double, 'string'),
141
+ # Numbers
142
+ (r'[0-9]+\.[0-9]*(?!\.)', Number.Float),
143
+ (r'\.[0-9]+(?!\.)', Number.Float),
144
+ (r'[0-9]+', Number.Integer),
145
+ (r'\$[0-9a-f]+', Number.Hex),
146
+ (r'\%[10]+', Number.Bin),
147
+ # Other
148
+ (words(('Shl', 'Shr', 'Sar', 'Mod', 'Or', 'And', 'Not',
149
+ 'Abs', 'Sgn', 'Handle', 'Int', 'Float', 'Str',
150
+ 'First', 'Last', 'Before', 'After'),
151
+ prefix=r'\b', suffix=r'\b'),
152
+ Operator),
153
+ (r'([+\-*/~=<>^])', Operator),
154
+ (r'[(),:\[\]\\]', Punctuation),
155
+ (r'\.([ \t]*)(%s)' % bb_name, Name.Label),
156
+ # Identifiers
157
+ (r'\b(New)\b([ \t]+)(%s)' % (bb_name),
158
+ bygroups(Keyword.Reserved, Text, Name.Class)),
159
+ (r'\b(Gosub|Goto)\b([ \t]+)(%s)' % (bb_name),
160
+ bygroups(Keyword.Reserved, Text, Name.Label)),
161
+ (r'\b(Object)\b([ \t]*)([.])([ \t]*)(%s)\b' % (bb_name),
162
+ bygroups(Operator, Text, Punctuation, Text, Name.Class)),
163
+ (r'\b%s\b([ \t]*)(\()' % bb_var,
164
+ bygroups(Name.Function, Text, Keyword.Type, Text, Punctuation,
165
+ Text, Name.Class, Text, Punctuation)),
166
+ (r'\b(Function)\b([ \t]+)%s' % bb_var,
167
+ bygroups(Keyword.Reserved, Text, Name.Function, Text, Keyword.Type,
168
+ Text, Punctuation, Text, Name.Class)),
169
+ (r'\b(Type)([ \t]+)(%s)' % (bb_name),
170
+ bygroups(Keyword.Reserved, Text, Name.Class)),
171
+ # Keywords
172
+ (r'\b(Pi|True|False|Null)\b', Keyword.Constant),
173
+ (r'\b(Local|Global|Const|Field|Dim)\b', Keyword.Declaration),
174
+ (words((
175
+ 'End', 'Return', 'Exit', 'Chr', 'Len', 'Asc', 'New', 'Delete', 'Insert',
176
+ 'Include', 'Function', 'Type', 'If', 'Then', 'Else', 'ElseIf', 'EndIf',
177
+ 'For', 'To', 'Next', 'Step', 'Each', 'While', 'Wend',
178
+ 'Repeat', 'Until', 'Forever', 'Select', 'Case', 'Default',
179
+ 'Goto', 'Gosub', 'Data', 'Read', 'Restore'), prefix=r'\b', suffix=r'\b'),
180
+ Keyword.Reserved),
181
+ # Final resolve (for variable names and such)
182
+ # (r'(%s)' % (bb_name), Name.Variable),
183
+ (bb_var, bygroups(Name.Variable, Text, Keyword.Type,
184
+ Text, Punctuation, Text, Name.Class)),
185
+ ],
186
+ 'string': [
187
+ (r'""', String.Double),
188
+ (r'"C?', String.Double, '#pop'),
189
+ (r'[^"]+', String.Double),
190
+ ],
191
+ }
192
+
193
+
194
+ class MonkeyLexer(RegexLexer):
195
+ """
196
+ For
197
+ `Monkey <https://en.wikipedia.org/wiki/Monkey_(programming_language)>`_
198
+ source code.
199
+
200
+ .. versionadded:: 1.6
201
+ """
202
+
203
+ name = 'Monkey'
204
+ aliases = ['monkey']
205
+ filenames = ['*.monkey']
206
+ mimetypes = ['text/x-monkey']
207
+
208
+ name_variable = r'[a-z_]\w*'
209
+ name_function = r'[A-Z]\w*'
210
+ name_constant = r'[A-Z_][A-Z0-9_]*'
211
+ name_class = r'[A-Z]\w*'
212
+ name_module = r'[a-z0-9_]*'
213
+
214
+ keyword_type = r'(?:Int|Float|String|Bool|Object|Array|Void)'
215
+ # ? == Bool // % == Int // # == Float // $ == String
216
+ keyword_type_special = r'[?%#$]'
217
+
218
+ flags = re.MULTILINE
219
+
220
+ tokens = {
221
+ 'root': [
222
+ # Text
223
+ (r'\s+', Text),
224
+ # Comments
225
+ (r"'.*", Comment),
226
+ (r'(?i)^#rem\b', Comment.Multiline, 'comment'),
227
+ # preprocessor directives
228
+ (r'(?i)^(?:#If|#ElseIf|#Else|#EndIf|#End|#Print|#Error)\b', Comment.Preproc),
229
+ # preprocessor variable (any line starting with '#' that is not a directive)
230
+ (r'^#', Comment.Preproc, 'variables'),
231
+ # String
232
+ ('"', String.Double, 'string'),
233
+ # Numbers
234
+ (r'[0-9]+\.[0-9]*(?!\.)', Number.Float),
235
+ (r'\.[0-9]+(?!\.)', Number.Float),
236
+ (r'[0-9]+', Number.Integer),
237
+ (r'\$[0-9a-fA-Z]+', Number.Hex),
238
+ (r'\%[10]+', Number.Bin),
239
+ # Native data types
240
+ (r'\b%s\b' % keyword_type, Keyword.Type),
241
+ # Exception handling
242
+ (r'(?i)\b(?:Try|Catch|Throw)\b', Keyword.Reserved),
243
+ (r'Throwable', Name.Exception),
244
+ # Builtins
245
+ (r'(?i)\b(?:Null|True|False)\b', Name.Builtin),
246
+ (r'(?i)\b(?:Self|Super)\b', Name.Builtin.Pseudo),
247
+ (r'\b(?:HOST|LANG|TARGET|CONFIG)\b', Name.Constant),
248
+ # Keywords
249
+ (r'(?i)^(Import)(\s+)(.*)(\n)',
250
+ bygroups(Keyword.Namespace, Text, Name.Namespace, Text)),
251
+ (r'(?i)^Strict\b.*\n', Keyword.Reserved),
252
+ (r'(?i)(Const|Local|Global|Field)(\s+)',
253
+ bygroups(Keyword.Declaration, Text), 'variables'),
254
+ (r'(?i)(New|Class|Interface|Extends|Implements)(\s+)',
255
+ bygroups(Keyword.Reserved, Text), 'classname'),
256
+ (r'(?i)(Function|Method)(\s+)',
257
+ bygroups(Keyword.Reserved, Text), 'funcname'),
258
+ (r'(?i)(?:End|Return|Public|Private|Extern|Property|'
259
+ r'Final|Abstract)\b', Keyword.Reserved),
260
+ # Flow Control stuff
261
+ (r'(?i)(?:If|Then|Else|ElseIf|EndIf|'
262
+ r'Select|Case|Default|'
263
+ r'While|Wend|'
264
+ r'Repeat|Until|Forever|'
265
+ r'For|To|Until|Step|EachIn|Next|'
266
+ r'Exit|Continue)\s+', Keyword.Reserved),
267
+ # not used yet
268
+ (r'(?i)\b(?:Module|Inline)\b', Keyword.Reserved),
269
+ # Array
270
+ (r'[\[\]]', Punctuation),
271
+ # Other
272
+ (r'<=|>=|<>|\*=|/=|\+=|-=|&=|~=|\|=|[-&*/^+=<>|~]', Operator),
273
+ (r'(?i)(?:Not|Mod|Shl|Shr|And|Or)', Operator.Word),
274
+ (r'[(){}!#,.:]', Punctuation),
275
+ # catch the rest
276
+ (r'%s\b' % name_constant, Name.Constant),
277
+ (r'%s\b' % name_function, Name.Function),
278
+ (r'%s\b' % name_variable, Name.Variable),
279
+ ],
280
+ 'funcname': [
281
+ (r'(?i)%s\b' % name_function, Name.Function),
282
+ (r':', Punctuation, 'classname'),
283
+ (r'\s+', Text),
284
+ (r'\(', Punctuation, 'variables'),
285
+ (r'\)', Punctuation, '#pop')
286
+ ],
287
+ 'classname': [
288
+ (r'%s\.' % name_module, Name.Namespace),
289
+ (r'%s\b' % keyword_type, Keyword.Type),
290
+ (r'%s\b' % name_class, Name.Class),
291
+ # array (of given size)
292
+ (r'(\[)(\s*)(\d*)(\s*)(\])',
293
+ bygroups(Punctuation, Text, Number.Integer, Text, Punctuation)),
294
+ # generics
295
+ (r'\s+(?!<)', Text, '#pop'),
296
+ (r'<', Punctuation, '#push'),
297
+ (r'>', Punctuation, '#pop'),
298
+ (r'\n', Text, '#pop'),
299
+ default('#pop')
300
+ ],
301
+ 'variables': [
302
+ (r'%s\b' % name_constant, Name.Constant),
303
+ (r'%s\b' % name_variable, Name.Variable),
304
+ (r'%s' % keyword_type_special, Keyword.Type),
305
+ (r'\s+', Text),
306
+ (r':', Punctuation, 'classname'),
307
+ (r',', Punctuation, '#push'),
308
+ default('#pop')
309
+ ],
310
+ 'string': [
311
+ (r'[^"~]+', String.Double),
312
+ (r'~q|~n|~r|~t|~z|~~', String.Escape),
313
+ (r'"', String.Double, '#pop'),
314
+ ],
315
+ 'comment': [
316
+ (r'(?i)^#rem.*?', Comment.Multiline, "#push"),
317
+ (r'(?i)^#end.*?', Comment.Multiline, "#pop"),
318
+ (r'\n', Comment.Multiline),
319
+ (r'.+', Comment.Multiline),
320
+ ],
321
+ }
322
+
323
+
324
+ class CbmBasicV2Lexer(RegexLexer):
325
+ """
326
+ For CBM BASIC V2 sources.
327
+
328
+ .. versionadded:: 1.6
329
+ """
330
+ name = 'CBM BASIC V2'
331
+ aliases = ['cbmbas']
332
+ filenames = ['*.bas']
333
+
334
+ flags = re.IGNORECASE
335
+
336
+ tokens = {
337
+ 'root': [
338
+ (r'rem.*\n', Comment.Single),
339
+ (r'\s+', Text),
340
+ (r'new|run|end|for|to|next|step|go(to|sub)?|on|return|stop|cont'
341
+ r'|if|then|input#?|read|wait|load|save|verify|poke|sys|print#?'
342
+ r'|list|clr|cmd|open|close|get#?', Keyword.Reserved),
343
+ (r'data|restore|dim|let|def|fn', Keyword.Declaration),
344
+ (r'tab|spc|sgn|int|abs|usr|fre|pos|sqr|rnd|log|exp|cos|sin|tan|atn'
345
+ r'|peek|len|val|asc|(str|chr|left|right|mid)\$', Name.Builtin),
346
+ (r'[-+*/^<>=]', Operator),
347
+ (r'not|and|or', Operator.Word),
348
+ (r'"[^"\n]*.', String),
349
+ (r'\d+|[-+]?\d*\.\d*(e[-+]?\d+)?', Number.Float),
350
+ (r'[(),:;]', Punctuation),
351
+ (r'\w+[$%]?', Name),
352
+ ]
353
+ }
354
+
355
+ def analyse_text(self, text):
356
+ # if it starts with a line number, it shouldn't be a "modern" Basic
357
+ # like VB.net
358
+ if re.match(r'\d+', text):
359
+ return 0.2
360
+
361
+
362
+ class QBasicLexer(RegexLexer):
363
+ """
364
+ For
365
+ `QBasic <http://en.wikipedia.org/wiki/QBasic>`_
366
+ source code.
367
+
368
+ .. versionadded:: 2.0
369
+ """
370
+
371
+ name = 'QBasic'
372
+ aliases = ['qbasic', 'basic']
373
+ filenames = ['*.BAS', '*.bas']
374
+ mimetypes = ['text/basic']
375
+
376
+ declarations = ('DATA', 'LET')
377
+
378
+ functions = (
379
+ 'ABS', 'ASC', 'ATN', 'CDBL', 'CHR$', 'CINT', 'CLNG',
380
+ 'COMMAND$', 'COS', 'CSNG', 'CSRLIN', 'CVD', 'CVDMBF', 'CVI',
381
+ 'CVL', 'CVS', 'CVSMBF', 'DATE$', 'ENVIRON$', 'EOF', 'ERDEV',
382
+ 'ERDEV$', 'ERL', 'ERR', 'EXP', 'FILEATTR', 'FIX', 'FRE',
383
+ 'FREEFILE', 'HEX$', 'INKEY$', 'INP', 'INPUT$', 'INSTR', 'INT',
384
+ 'IOCTL$', 'LBOUND', 'LCASE$', 'LEFT$', 'LEN', 'LOC', 'LOF',
385
+ 'LOG', 'LPOS', 'LTRIM$', 'MID$', 'MKD$', 'MKDMBF$', 'MKI$',
386
+ 'MKL$', 'MKS$', 'MKSMBF$', 'OCT$', 'PEEK', 'PEN', 'PLAY',
387
+ 'PMAP', 'POINT', 'POS', 'RIGHT$', 'RND', 'RTRIM$', 'SADD',
388
+ 'SCREEN', 'SEEK', 'SETMEM', 'SGN', 'SIN', 'SPACE$', 'SPC',
389
+ 'SQR', 'STICK', 'STR$', 'STRIG', 'STRING$', 'TAB', 'TAN',
390
+ 'TIME$', 'TIMER', 'UBOUND', 'UCASE$', 'VAL', 'VARPTR',
391
+ 'VARPTR$', 'VARSEG'
392
+ )
393
+
394
+ metacommands = ('$DYNAMIC', '$INCLUDE', '$STATIC')
395
+
396
+ operators = ('AND', 'EQV', 'IMP', 'NOT', 'OR', 'XOR')
397
+
398
+ statements = (
399
+ 'BEEP', 'BLOAD', 'BSAVE', 'CALL', 'CALL ABSOLUTE',
400
+ 'CALL INTERRUPT', 'CALLS', 'CHAIN', 'CHDIR', 'CIRCLE', 'CLEAR',
401
+ 'CLOSE', 'CLS', 'COLOR', 'COM', 'COMMON', 'CONST', 'DATA',
402
+ 'DATE$', 'DECLARE', 'DEF FN', 'DEF SEG', 'DEFDBL', 'DEFINT',
403
+ 'DEFLNG', 'DEFSNG', 'DEFSTR', 'DEF', 'DIM', 'DO', 'LOOP',
404
+ 'DRAW', 'END', 'ENVIRON', 'ERASE', 'ERROR', 'EXIT', 'FIELD',
405
+ 'FILES', 'FOR', 'NEXT', 'FUNCTION', 'GET', 'GOSUB', 'GOTO',
406
+ 'IF', 'THEN', 'INPUT', 'INPUT #', 'IOCTL', 'KEY', 'KEY',
407
+ 'KILL', 'LET', 'LINE', 'LINE INPUT', 'LINE INPUT #', 'LOCATE',
408
+ 'LOCK', 'UNLOCK', 'LPRINT', 'LSET', 'MID$', 'MKDIR', 'NAME',
409
+ 'ON COM', 'ON ERROR', 'ON KEY', 'ON PEN', 'ON PLAY',
410
+ 'ON STRIG', 'ON TIMER', 'ON UEVENT', 'ON', 'OPEN', 'OPEN COM',
411
+ 'OPTION BASE', 'OUT', 'PAINT', 'PALETTE', 'PCOPY', 'PEN',
412
+ 'PLAY', 'POKE', 'PRESET', 'PRINT', 'PRINT #', 'PRINT USING',
413
+ 'PSET', 'PUT', 'PUT', 'RANDOMIZE', 'READ', 'REDIM', 'REM',
414
+ 'RESET', 'RESTORE', 'RESUME', 'RETURN', 'RMDIR', 'RSET', 'RUN',
415
+ 'SCREEN', 'SEEK', 'SELECT CASE', 'SHARED', 'SHELL', 'SLEEP',
416
+ 'SOUND', 'STATIC', 'STOP', 'STRIG', 'SUB', 'SWAP', 'SYSTEM',
417
+ 'TIME$', 'TIMER', 'TROFF', 'TRON', 'TYPE', 'UEVENT', 'UNLOCK',
418
+ 'VIEW', 'WAIT', 'WHILE', 'WEND', 'WIDTH', 'WINDOW', 'WRITE'
419
+ )
420
+
421
+ keywords = (
422
+ 'ACCESS', 'ALIAS', 'ANY', 'APPEND', 'AS', 'BASE', 'BINARY',
423
+ 'BYVAL', 'CASE', 'CDECL', 'DOUBLE', 'ELSE', 'ELSEIF', 'ENDIF',
424
+ 'INTEGER', 'IS', 'LIST', 'LOCAL', 'LONG', 'LOOP', 'MOD',
425
+ 'NEXT', 'OFF', 'ON', 'OUTPUT', 'RANDOM', 'SIGNAL', 'SINGLE',
426
+ 'STEP', 'STRING', 'THEN', 'TO', 'UNTIL', 'USING', 'WEND'
427
+ )
428
+
429
+ tokens = {
430
+ 'root': [
431
+ (r'\n+', Text),
432
+ (r'\s+', Text.Whitespace),
433
+ (r'^(\s*)(\d*)(\s*)(REM .*)$',
434
+ bygroups(Text.Whitespace, Name.Label, Text.Whitespace,
435
+ Comment.Single)),
436
+ (r'^(\s*)(\d+)(\s*)',
437
+ bygroups(Text.Whitespace, Name.Label, Text.Whitespace)),
438
+ (r'(?=[\s]*)(\w+)(?=[\s]*=)', Name.Variable.Global),
439
+ (r'(?=[^"]*)\'.*$', Comment.Single),
440
+ (r'"[^\n"]*"', String.Double),
441
+ (r'(END)(\s+)(FUNCTION|IF|SELECT|SUB)',
442
+ bygroups(Keyword.Reserved, Text.Whitespace, Keyword.Reserved)),
443
+ (r'(DECLARE)(\s+)([A-Z]+)(\s+)(\S+)',
444
+ bygroups(Keyword.Declaration, Text.Whitespace, Name.Variable,
445
+ Text.Whitespace, Name)),
446
+ (r'(DIM)(\s+)(SHARED)(\s+)([^\s(]+)',
447
+ bygroups(Keyword.Declaration, Text.Whitespace, Name.Variable,
448
+ Text.Whitespace, Name.Variable.Global)),
449
+ (r'(DIM)(\s+)([^\s(]+)',
450
+ bygroups(Keyword.Declaration, Text.Whitespace, Name.Variable.Global)),
451
+ (r'^(\s*)([a-zA-Z_]+)(\s*)(\=)',
452
+ bygroups(Text.Whitespace, Name.Variable.Global, Text.Whitespace,
453
+ Operator)),
454
+ (r'(GOTO|GOSUB)(\s+)(\w+\:?)',
455
+ bygroups(Keyword.Reserved, Text.Whitespace, Name.Label)),
456
+ (r'(SUB)(\s+)(\w+\:?)',
457
+ bygroups(Keyword.Reserved, Text.Whitespace, Name.Label)),
458
+ include('declarations'),
459
+ include('functions'),
460
+ include('metacommands'),
461
+ include('operators'),
462
+ include('statements'),
463
+ include('keywords'),
464
+ (r'[a-zA-Z_]\w*[$@#&!]', Name.Variable.Global),
465
+ (r'[a-zA-Z_]\w*\:', Name.Label),
466
+ (r'\-?\d*\.\d+[@|#]?', Number.Float),
467
+ (r'\-?\d+[@|#]', Number.Float),
468
+ (r'\-?\d+#?', Number.Integer.Long),
469
+ (r'\-?\d+#?', Number.Integer),
470
+ (r'!=|==|:=|\.=|<<|>>|[-~+/\\*%=<>&^|?:!.]', Operator),
471
+ (r'[\[\]{}(),;]', Punctuation),
472
+ (r'[\w]+', Name.Variable.Global),
473
+ ],
474
+ # can't use regular \b because of X$()
475
+ # XXX: use words() here
476
+ 'declarations': [
477
+ (r'\b(%s)(?=\(|\b)' % '|'.join(map(re.escape, declarations)),
478
+ Keyword.Declaration),
479
+ ],
480
+ 'functions': [
481
+ (r'\b(%s)(?=\(|\b)' % '|'.join(map(re.escape, functions)),
482
+ Keyword.Reserved),
483
+ ],
484
+ 'metacommands': [
485
+ (r'\b(%s)(?=\(|\b)' % '|'.join(map(re.escape, metacommands)),
486
+ Keyword.Constant),
487
+ ],
488
+ 'operators': [
489
+ (r'\b(%s)(?=\(|\b)' % '|'.join(map(re.escape, operators)), Operator.Word),
490
+ ],
491
+ 'statements': [
492
+ (r'\b(%s)\b' % '|'.join(map(re.escape, statements)),
493
+ Keyword.Reserved),
494
+ ],
495
+ 'keywords': [
496
+ (r'\b(%s)\b' % '|'.join(keywords), Keyword),
497
+ ],
498
+ }
499
+
500
+ def analyse_text(text):
501
+ if '$DYNAMIC' in text or '$STATIC' in text:
502
+ return 0.9
503
+
504
+
505
+ class VBScriptLexer(RegexLexer):
506
+ """
507
+ VBScript is scripting language that is modeled on Visual Basic.
508
+
509
+ .. versionadded:: 2.4
510
+ """
511
+ name = 'VBScript'
512
+ aliases = ['vbscript']
513
+ filenames = ['*.vbs', '*.VBS']
514
+ flags = re.IGNORECASE
515
+
516
+ tokens = {
517
+ 'root': [
518
+ (r"'[^\n]*", Comment.Single),
519
+ (r'\s+', Whitespace),
520
+ ('"', String.Double, 'string'),
521
+ ('&h[0-9a-f]+', Number.Hex),
522
+ # Float variant 1, for example: 1., 1.e2, 1.2e3
523
+ (r'[0-9]+\.[0-9]*(e[+-]?[0-9]+)?', Number.Float),
524
+ (r'\.[0-9]+(e[+-]?[0-9]+)?', Number.Float), # Float variant 2, for example: .1, .1e2
525
+ (r'[0-9]+e[+-]?[0-9]+', Number.Float), # Float variant 3, for example: 123e45
526
+ (r'[0-9]+', Number.Integer),
527
+ ('#.+#', String), # date or time value
528
+ (r'(dim)(\s+)([a-z_][a-z0-9_]*)',
529
+ bygroups(Keyword.Declaration, Whitespace, Name.Variable), 'dim_more'),
530
+ (r'(function|sub)(\s+)([a-z_][a-z0-9_]*)',
531
+ bygroups(Keyword.Declaration, Whitespace, Name.Function)),
532
+ (r'(class)(\s+)([a-z_][a-z0-9_]*)',
533
+ bygroups(Keyword.Declaration, Whitespace, Name.Class)),
534
+ (r'(const)(\s+)([a-z_][a-z0-9_]*)',
535
+ bygroups(Keyword.Declaration, Whitespace, Name.Constant)),
536
+ (r'(end)(\s+)(class|function|if|property|sub|with)',
537
+ bygroups(Keyword, Whitespace, Keyword)),
538
+ (r'(on)(\s+)(error)(\s+)(goto)(\s+)(0)',
539
+ bygroups(Keyword, Whitespace, Keyword, Whitespace, Keyword, Whitespace, Number.Integer)),
540
+ (r'(on)(\s+)(error)(\s+)(resume)(\s+)(next)',
541
+ bygroups(Keyword, Whitespace, Keyword, Whitespace, Keyword, Whitespace, Keyword)),
542
+ (r'(option)(\s+)(explicit)', bygroups(Keyword, Whitespace, Keyword)),
543
+ (r'(property)(\s+)(get|let|set)(\s+)([a-z_][a-z0-9_]*)',
544
+ bygroups(Keyword.Declaration, Whitespace, Keyword.Declaration, Whitespace, Name.Property)),
545
+ (r'rem\s.*[^\n]*', Comment.Single),
546
+ (words(_vbscript_builtins.KEYWORDS, suffix=r'\b'), Keyword),
547
+ (words(_vbscript_builtins.OPERATORS), Operator),
548
+ (words(_vbscript_builtins.OPERATOR_WORDS, suffix=r'\b'), Operator.Word),
549
+ (words(_vbscript_builtins.BUILTIN_CONSTANTS, suffix=r'\b'), Name.Constant),
550
+ (words(_vbscript_builtins.BUILTIN_FUNCTIONS, suffix=r'\b'), Name.Builtin),
551
+ (words(_vbscript_builtins.BUILTIN_VARIABLES, suffix=r'\b'), Name.Builtin),
552
+ (r'[a-z_][a-z0-9_]*', Name),
553
+ (r'\b_\n', Operator),
554
+ (words(r'(),.:'), Punctuation),
555
+ (r'.+(\n)?', Error)
556
+ ],
557
+ 'dim_more': [
558
+ (r'(\s*)(,)(\s*)([a-z_][a-z0-9]*)',
559
+ bygroups(Whitespace, Punctuation, Whitespace, Name.Variable)),
560
+ default('#pop'),
561
+ ],
562
+ 'string': [
563
+ (r'[^"\n]+', String.Double),
564
+ (r'\"\"', String.Double),
565
+ (r'"', String.Double, '#pop'),
566
+ (r'\n', Error, '#pop'), # Unterminated string
567
+ ],
568
+ }
569
+
570
+
571
+ class BBCBasicLexer(RegexLexer):
572
+ """
573
+ BBC Basic was supplied on the BBC Micro, and later Acorn RISC OS.
574
+ It is also used by BBC Basic For Windows.
575
+
576
+ .. versionadded:: 2.4
577
+ """
578
+ base_keywords = ['OTHERWISE', 'AND', 'DIV', 'EOR', 'MOD', 'OR', 'ERROR',
579
+ 'LINE', 'OFF', 'STEP', 'SPC', 'TAB', 'ELSE', 'THEN',
580
+ 'OPENIN', 'PTR', 'PAGE', 'TIME', 'LOMEM', 'HIMEM', 'ABS',
581
+ 'ACS', 'ADVAL', 'ASC', 'ASN', 'ATN', 'BGET', 'COS', 'COUNT',
582
+ 'DEG', 'ERL', 'ERR', 'EVAL', 'EXP', 'EXT', 'FALSE', 'FN',
583
+ 'GET', 'INKEY', 'INSTR', 'INT', 'LEN', 'LN', 'LOG', 'NOT',
584
+ 'OPENUP', 'OPENOUT', 'PI', 'POINT', 'POS', 'RAD', 'RND',
585
+ 'SGN', 'SIN', 'SQR', 'TAN', 'TO', 'TRUE', 'USR', 'VAL',
586
+ 'VPOS', 'CHR$', 'GET$', 'INKEY$', 'LEFT$', 'MID$',
587
+ 'RIGHT$', 'STR$', 'STRING$', 'EOF', 'PTR', 'PAGE', 'TIME',
588
+ 'LOMEM', 'HIMEM', 'SOUND', 'BPUT', 'CALL', 'CHAIN', 'CLEAR',
589
+ 'CLOSE', 'CLG', 'CLS', 'DATA', 'DEF', 'DIM', 'DRAW', 'END',
590
+ 'ENDPROC', 'ENVELOPE', 'FOR', 'GOSUB', 'GOTO', 'GCOL', 'IF',
591
+ 'INPUT', 'LET', 'LOCAL', 'MODE', 'MOVE', 'NEXT', 'ON',
592
+ 'VDU', 'PLOT', 'PRINT', 'PROC', 'READ', 'REM', 'REPEAT',
593
+ 'REPORT', 'RESTORE', 'RETURN', 'RUN', 'STOP', 'COLOUR',
594
+ 'TRACE', 'UNTIL', 'WIDTH', 'OSCLI']
595
+
596
+ basic5_keywords = ['WHEN', 'OF', 'ENDCASE', 'ENDIF', 'ENDWHILE', 'CASE',
597
+ 'CIRCLE', 'FILL', 'ORIGIN', 'POINT', 'RECTANGLE', 'SWAP',
598
+ 'WHILE', 'WAIT', 'MOUSE', 'QUIT', 'SYS', 'INSTALL',
599
+ 'LIBRARY', 'TINT', 'ELLIPSE', 'BEATS', 'TEMPO', 'VOICES',
600
+ 'VOICE', 'STEREO', 'OVERLAY', 'APPEND', 'AUTO', 'CRUNCH',
601
+ 'DELETE', 'EDIT', 'HELP', 'LIST', 'LOAD', 'LVAR', 'NEW',
602
+ 'OLD', 'RENUMBER', 'SAVE', 'TEXTLOAD', 'TEXTSAVE',
603
+ 'TWIN', 'TWINO', 'INSTALL', 'SUM', 'BEAT']
604
+
605
+
606
+ name = 'BBC Basic'
607
+ aliases = ['bbcbasic']
608
+ filenames = ['*.bbc']
609
+
610
+ tokens = {
611
+ 'root': [
612
+ (r"[0-9]+", Name.Label),
613
+ (r"(\*)([^\n]*)",
614
+ bygroups(Keyword.Pseudo, Comment.Special)),
615
+ default('code'),
616
+ ],
617
+
618
+ 'code': [
619
+ (r"(REM)([^\n]*)",
620
+ bygroups(Keyword.Declaration, Comment.Single)),
621
+ (r'\n', Whitespace, 'root'),
622
+ (r'\s+', Whitespace),
623
+ (r':', Comment.Preproc),
624
+
625
+ # Some special cases to make functions come out nicer
626
+ (r'(DEF)(\s*)(FN|PROC)([A-Za-z_@][\w@]*)',
627
+ bygroups(Keyword.Declaration, Whitespace, Keyword.Declaration, Name.Function)),
628
+ (r'(FN|PROC)([A-Za-z_@][\w@]*)',
629
+ bygroups(Keyword, Name.Function)),
630
+
631
+ (r'(GOTO|GOSUB|THEN|RESTORE)(\s*)(\d+)',
632
+ bygroups(Keyword, Whitespace, Name.Label)),
633
+
634
+ (r'(TRUE|FALSE)', Keyword.Constant),
635
+ (r'(PAGE|LOMEM|HIMEM|TIME|WIDTH|ERL|ERR|REPORT\$|POS|VPOS|VOICES)', Keyword.Pseudo),
636
+
637
+ (words(base_keywords), Keyword),
638
+ (words(basic5_keywords), Keyword),
639
+
640
+ ('"', String.Double, 'string'),
641
+
642
+ ('%[01]{1,32}', Number.Bin),
643
+ ('&[0-9a-f]{1,8}', Number.Hex),
644
+
645
+ (r'[+-]?[0-9]+\.[0-9]*(E[+-]?[0-9]+)?', Number.Float),
646
+ (r'[+-]?\.[0-9]+(E[+-]?[0-9]+)?', Number.Float),
647
+ (r'[+-]?[0-9]+E[+-]?[0-9]+', Number.Float),
648
+ (r'[+-]?\d+', Number.Integer),
649
+
650
+ (r'([A-Za-z_@][\w@]*[%$]?)', Name.Variable),
651
+ (r'([+\-]=|[$!|?+\-*/%^=><();]|>=|<=|<>|<<|>>|>>>|,)', Operator),
652
+ ],
653
+ 'string': [
654
+ (r'[^"\n]+', String.Double),
655
+ (r'"', String.Double, '#pop'),
656
+ (r'\n', Error, 'root'), # Unterminated string
657
+ ],
658
+ }
659
+
660
+ def analyse_text(text):
661
+ if text.startswith('10REM >') or text.startswith('REM >'):
662
+ return 0.9