pygments.rb 1.2.1 → 2.2.0

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