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,84 @@
1
+ """
2
+ pygments.lexers.ooc
3
+ ~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexers for the Ooc language.
6
+
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
8
+ :license: BSD, see LICENSE for details.
9
+ """
10
+
11
+ from pygments.lexer import RegexLexer, bygroups, words
12
+ from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
13
+ Number, Punctuation
14
+
15
+ __all__ = ['OocLexer']
16
+
17
+
18
+ class OocLexer(RegexLexer):
19
+ """
20
+ For `Ooc <http://ooc-lang.org/>`_ source code
21
+
22
+ .. versionadded:: 1.2
23
+ """
24
+ name = 'Ooc'
25
+ aliases = ['ooc']
26
+ filenames = ['*.ooc']
27
+ mimetypes = ['text/x-ooc']
28
+
29
+ tokens = {
30
+ 'root': [
31
+ (words((
32
+ 'class', 'interface', 'implement', 'abstract', 'extends', 'from',
33
+ 'this', 'super', 'new', 'const', 'final', 'static', 'import',
34
+ 'use', 'extern', 'inline', 'proto', 'break', 'continue',
35
+ 'fallthrough', 'operator', 'if', 'else', 'for', 'while', 'do',
36
+ 'switch', 'case', 'as', 'in', 'version', 'return', 'true',
37
+ 'false', 'null'), prefix=r'\b', suffix=r'\b'),
38
+ Keyword),
39
+ (r'include\b', Keyword, 'include'),
40
+ (r'(cover)([ \t]+)(from)([ \t]+)(\w+[*@]?)',
41
+ bygroups(Keyword, Text, Keyword, Text, Name.Class)),
42
+ (r'(func)((?:[ \t]|\\\n)+)(~[a-z_]\w*)',
43
+ bygroups(Keyword, Text, Name.Function)),
44
+ (r'\bfunc\b', Keyword),
45
+ # Note: %= and ^= not listed on http://ooc-lang.org/syntax
46
+ (r'//.*', Comment),
47
+ (r'(?s)/\*.*?\*/', Comment.Multiline),
48
+ (r'(==?|\+=?|-[=>]?|\*=?|/=?|:=|!=?|%=?|\?|>{1,3}=?|<{1,3}=?|\.\.|'
49
+ r'&&?|\|\|?|\^=?)', Operator),
50
+ (r'(\.)([ \t]*)([a-z]\w*)', bygroups(Operator, Text,
51
+ Name.Function)),
52
+ (r'[A-Z][A-Z0-9_]+', Name.Constant),
53
+ (r'[A-Z]\w*([@*]|\[[ \t]*\])?', Name.Class),
54
+
55
+ (r'([a-z]\w*(?:~[a-z]\w*)?)((?:[ \t]|\\\n)*)(?=\()',
56
+ bygroups(Name.Function, Text)),
57
+ (r'[a-z]\w*', Name.Variable),
58
+
59
+ # : introduces types
60
+ (r'[:(){}\[\];,]', Punctuation),
61
+
62
+ (r'0x[0-9a-fA-F]+', Number.Hex),
63
+ (r'0c[0-9]+', Number.Oct),
64
+ (r'0b[01]+', Number.Bin),
65
+ (r'[0-9_]\.[0-9_]*(?!\.)', Number.Float),
66
+ (r'[0-9_]+', Number.Decimal),
67
+
68
+ (r'"(?:\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\"])*"',
69
+ String.Double),
70
+ (r"'(?:\\.|\\[0-9]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'",
71
+ String.Char),
72
+ (r'@', Punctuation), # pointer dereference
73
+ (r'\.', Punctuation), # imports or chain operator
74
+
75
+ (r'\\[ \t\n]', Text),
76
+ (r'[ \t]+', Text),
77
+ ],
78
+ 'include': [
79
+ (r'[\w/]+', Name),
80
+ (r',', Punctuation),
81
+ (r'[ \t]', Text),
82
+ (r'[;\n]', Text, '#pop'),
83
+ ],
84
+ }
@@ -0,0 +1,40 @@
1
+ """
2
+ pygments.lexers.other
3
+ ~~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Just export lexer classes previously contained in this module.
6
+
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
8
+ :license: BSD, see LICENSE for details.
9
+ """
10
+
11
+ from pygments.lexers.sql import SqlLexer, MySqlLexer, SqliteConsoleLexer
12
+ from pygments.lexers.shell import BashLexer, BashSessionLexer, BatchLexer, \
13
+ TcshLexer
14
+ from pygments.lexers.robotframework import RobotFrameworkLexer
15
+ from pygments.lexers.testing import GherkinLexer
16
+ from pygments.lexers.esoteric import BrainfuckLexer, BefungeLexer, RedcodeLexer
17
+ from pygments.lexers.prolog import LogtalkLexer
18
+ from pygments.lexers.snobol import SnobolLexer
19
+ from pygments.lexers.rebol import RebolLexer
20
+ from pygments.lexers.configs import KconfigLexer, Cfengine3Lexer
21
+ from pygments.lexers.modeling import ModelicaLexer
22
+ from pygments.lexers.scripting import AppleScriptLexer, MOOCodeLexer, \
23
+ HybrisLexer
24
+ from pygments.lexers.graphics import PostScriptLexer, GnuplotLexer, \
25
+ AsymptoteLexer, PovrayLexer
26
+ from pygments.lexers.business import ABAPLexer, OpenEdgeLexer, \
27
+ GoodDataCLLexer, MaqlLexer
28
+ from pygments.lexers.automation import AutoItLexer, AutohotkeyLexer
29
+ from pygments.lexers.dsls import ProtoBufLexer, BroLexer, PuppetLexer, \
30
+ MscgenLexer, VGLLexer
31
+ from pygments.lexers.basic import CbmBasicV2Lexer
32
+ from pygments.lexers.pawn import SourcePawnLexer, PawnLexer
33
+ from pygments.lexers.ecl import ECLLexer
34
+ from pygments.lexers.urbi import UrbiscriptLexer
35
+ from pygments.lexers.smalltalk import SmalltalkLexer, NewspeakLexer
36
+ from pygments.lexers.installers import NSISLexer, RPMSpecLexer
37
+ from pygments.lexers.textedit import AwkLexer
38
+ from pygments.lexers.smv import NuSMVLexer
39
+
40
+ __all__ = []
@@ -0,0 +1,78 @@
1
+ """
2
+ pygments.lexers.parasail
3
+ ~~~~~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexer for ParaSail.
6
+
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
8
+ :license: BSD, see LICENSE for details.
9
+ """
10
+
11
+ import re
12
+
13
+ from pygments.lexer import RegexLexer, include
14
+ from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
15
+ Number, Punctuation, Literal
16
+
17
+ __all__ = ['ParaSailLexer']
18
+
19
+
20
+ class ParaSailLexer(RegexLexer):
21
+ """
22
+ For `ParaSail <http://www.parasail-lang.org>`_ source code.
23
+
24
+ .. versionadded:: 2.1
25
+ """
26
+
27
+ name = 'ParaSail'
28
+ aliases = ['parasail']
29
+ filenames = ['*.psi', '*.psl']
30
+ mimetypes = ['text/x-parasail']
31
+
32
+ flags = re.MULTILINE
33
+
34
+ tokens = {
35
+ 'root': [
36
+ (r'[^\S\n]+', Text),
37
+ (r'//.*?\n', Comment.Single),
38
+ (r'\b(and|or|xor)=', Operator.Word),
39
+ (r'\b(and(\s+then)?|or(\s+else)?|xor|rem|mod|'
40
+ r'(is|not)\s+null)\b',
41
+ Operator.Word),
42
+ # Keywords
43
+ (r'\b(abs|abstract|all|block|class|concurrent|const|continue|'
44
+ r'each|end|exit|extends|exports|forward|func|global|implements|'
45
+ r'import|in|interface|is|lambda|locked|new|not|null|of|op|'
46
+ r'optional|private|queued|ref|return|reverse|separate|some|'
47
+ r'type|until|var|with|'
48
+ # Control flow
49
+ r'if|then|else|elsif|case|for|while|loop)\b',
50
+ Keyword.Reserved),
51
+ (r'(abstract\s+)?(interface|class|op|func|type)',
52
+ Keyword.Declaration),
53
+ # Literals
54
+ (r'"[^"]*"', String),
55
+ (r'\\[\'ntrf"0]', String.Escape),
56
+ (r'#[a-zA-Z]\w*', Literal), # Enumeration
57
+ include('numbers'),
58
+ (r"'[^']'", String.Char),
59
+ (r'[a-zA-Z]\w*', Name),
60
+ # Operators and Punctuation
61
+ (r'(<==|==>|<=>|\*\*=|<\|=|<<=|>>=|==|!=|=\?|<=|>=|'
62
+ r'\*\*|<<|>>|=>|:=|\+=|-=|\*=|\|=|\||/=|\+|-|\*|/|'
63
+ r'\.\.|<\.\.|\.\.<|<\.\.<)',
64
+ Operator),
65
+ (r'(<|>|\[|\]|\(|\)|\||:|;|,|.|\{|\}|->)',
66
+ Punctuation),
67
+ (r'\n+', Text),
68
+ ],
69
+ 'numbers': [
70
+ (r'\d[0-9_]*#[0-9a-fA-F][0-9a-fA-F_]*#', Number.Hex), # any base
71
+ (r'0[xX][0-9a-fA-F][0-9a-fA-F_]*', Number.Hex), # C-like hex
72
+ (r'0[bB][01][01_]*', Number.Bin), # C-like bin
73
+ (r'\d[0-9_]*\.\d[0-9_]*[eE][+-]\d[0-9_]*', # float exp
74
+ Number.Float),
75
+ (r'\d[0-9_]*\.\d[0-9_]*', Number.Float), # float
76
+ (r'\d[0-9_]*', Number.Integer), # integer
77
+ ],
78
+ }
@@ -0,0 +1,799 @@
1
+ """
2
+ pygments.lexers.parsers
3
+ ~~~~~~~~~~~~~~~~~~~~~~~
4
+
5
+ Lexers for parser generators.
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, DelegatingLexer, \
14
+ include, bygroups, using
15
+ from pygments.token import Punctuation, Other, Text, Comment, Operator, \
16
+ Keyword, Name, String, Number, Whitespace
17
+ from pygments.lexers.jvm import JavaLexer
18
+ from pygments.lexers.c_cpp import CLexer, CppLexer
19
+ from pygments.lexers.objective import ObjectiveCLexer
20
+ from pygments.lexers.d import DLexer
21
+ from pygments.lexers.dotnet import CSharpLexer
22
+ from pygments.lexers.ruby import RubyLexer
23
+ from pygments.lexers.python import PythonLexer
24
+ from pygments.lexers.perl import PerlLexer
25
+
26
+ __all__ = ['RagelLexer', 'RagelEmbeddedLexer', 'RagelCLexer', 'RagelDLexer',
27
+ 'RagelCppLexer', 'RagelObjectiveCLexer', 'RagelRubyLexer',
28
+ 'RagelJavaLexer', 'AntlrLexer', 'AntlrPythonLexer',
29
+ 'AntlrPerlLexer', 'AntlrRubyLexer', 'AntlrCppLexer',
30
+ 'AntlrCSharpLexer', 'AntlrObjectiveCLexer',
31
+ 'AntlrJavaLexer', 'AntlrActionScriptLexer',
32
+ 'TreetopLexer', 'EbnfLexer']
33
+
34
+
35
+ class RagelLexer(RegexLexer):
36
+ """
37
+ A pure `Ragel <http://www.complang.org/ragel/>`_ lexer. Use this for
38
+ fragments of Ragel. For ``.rl`` files, use RagelEmbeddedLexer instead
39
+ (or one of the language-specific subclasses).
40
+
41
+ .. versionadded:: 1.1
42
+ """
43
+
44
+ name = 'Ragel'
45
+ aliases = ['ragel']
46
+ filenames = []
47
+
48
+ tokens = {
49
+ 'whitespace': [
50
+ (r'\s+', Whitespace)
51
+ ],
52
+ 'comments': [
53
+ (r'\#.*$', Comment),
54
+ ],
55
+ 'keywords': [
56
+ (r'(access|action|alphtype)\b', Keyword),
57
+ (r'(getkey|write|machine|include)\b', Keyword),
58
+ (r'(any|ascii|extend|alpha|digit|alnum|lower|upper)\b', Keyword),
59
+ (r'(xdigit|cntrl|graph|print|punct|space|zlen|empty)\b', Keyword)
60
+ ],
61
+ 'numbers': [
62
+ (r'0x[0-9A-Fa-f]+', Number.Hex),
63
+ (r'[+-]?[0-9]+', Number.Integer),
64
+ ],
65
+ 'literals': [
66
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
67
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
68
+ (r'\[(\\\\|\\[^\\]|[^\\\]])*\]', String), # square bracket literals
69
+ (r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/', String.Regex), # regular expressions
70
+ ],
71
+ 'identifiers': [
72
+ (r'[a-zA-Z_]\w*', Name.Variable),
73
+ ],
74
+ 'operators': [
75
+ (r',', Operator), # Join
76
+ (r'\||&|--?', Operator), # Union, Intersection and Subtraction
77
+ (r'\.|<:|:>>?', Operator), # Concatention
78
+ (r':', Operator), # Label
79
+ (r'->', Operator), # Epsilon Transition
80
+ (r'(>|\$|%|<|@|<>)(/|eof\b)', Operator), # EOF Actions
81
+ (r'(>|\$|%|<|@|<>)(!|err\b)', Operator), # Global Error Actions
82
+ (r'(>|\$|%|<|@|<>)(\^|lerr\b)', Operator), # Local Error Actions
83
+ (r'(>|\$|%|<|@|<>)(~|to\b)', Operator), # To-State Actions
84
+ (r'(>|\$|%|<|@|<>)(\*|from\b)', Operator), # From-State Actions
85
+ (r'>|@|\$|%', Operator), # Transition Actions and Priorities
86
+ (r'\*|\?|\+|\{[0-9]*,[0-9]*\}', Operator), # Repetition
87
+ (r'!|\^', Operator), # Negation
88
+ (r'\(|\)', Operator), # Grouping
89
+ ],
90
+ 'root': [
91
+ include('literals'),
92
+ include('whitespace'),
93
+ include('comments'),
94
+ include('keywords'),
95
+ include('numbers'),
96
+ include('identifiers'),
97
+ include('operators'),
98
+ (r'\{', Punctuation, 'host'),
99
+ (r'=', Operator),
100
+ (r';', Punctuation),
101
+ ],
102
+ 'host': [
103
+ (r'(' + r'|'.join(( # keep host code in largest possible chunks
104
+ r'[^{}\'"/#]+', # exclude unsafe characters
105
+ r'[^\\]\\[{}]', # allow escaped { or }
106
+
107
+ # strings and comments may safely contain unsafe characters
108
+ r'"(\\\\|\\[^\\]|[^"\\])*"',
109
+ r"'(\\\\|\\[^\\]|[^'\\])*'",
110
+ r'//.*$\n?', # single line comment
111
+ r'/\*(.|\n)*?\*/', # multi-line javadoc-style comment
112
+ r'\#.*$\n?', # ruby comment
113
+
114
+ # regular expression: There's no reason for it to start
115
+ # with a * and this stops confusion with comments.
116
+ r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/',
117
+
118
+ # / is safe now that we've handled regex and javadoc comments
119
+ r'/',
120
+ )) + r')+', Other),
121
+
122
+ (r'\{', Punctuation, '#push'),
123
+ (r'\}', Punctuation, '#pop'),
124
+ ],
125
+ }
126
+
127
+
128
+ class RagelEmbeddedLexer(RegexLexer):
129
+ """
130
+ A lexer for `Ragel`_ embedded in a host language file.
131
+
132
+ This will only highlight Ragel statements. If you want host language
133
+ highlighting then call the language-specific Ragel lexer.
134
+
135
+ .. versionadded:: 1.1
136
+ """
137
+
138
+ name = 'Embedded Ragel'
139
+ aliases = ['ragel-em']
140
+ filenames = ['*.rl']
141
+
142
+ tokens = {
143
+ 'root': [
144
+ (r'(' + r'|'.join(( # keep host code in largest possible chunks
145
+ r'[^%\'"/#]+', # exclude unsafe characters
146
+ r'%(?=[^%]|$)', # a single % sign is okay, just not 2 of them
147
+
148
+ # strings and comments may safely contain unsafe characters
149
+ r'"(\\\\|\\[^\\]|[^"\\])*"',
150
+ r"'(\\\\|\\[^\\]|[^'\\])*'",
151
+ r'/\*(.|\n)*?\*/', # multi-line javadoc-style comment
152
+ r'//.*$\n?', # single line comment
153
+ r'\#.*$\n?', # ruby/ragel comment
154
+ r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/', # regular expression
155
+
156
+ # / is safe now that we've handled regex and javadoc comments
157
+ r'/',
158
+ )) + r')+', Other),
159
+
160
+ # Single Line FSM.
161
+ # Please don't put a quoted newline in a single line FSM.
162
+ # That's just mean. It will break this.
163
+ (r'(%%)(?![{%])(.*)($|;)(\n?)', bygroups(Punctuation,
164
+ using(RagelLexer),
165
+ Punctuation, Text)),
166
+
167
+ # Multi Line FSM.
168
+ (r'(%%%%|%%)\{', Punctuation, 'multi-line-fsm'),
169
+ ],
170
+ 'multi-line-fsm': [
171
+ (r'(' + r'|'.join(( # keep ragel code in largest possible chunks.
172
+ r'(' + r'|'.join((
173
+ r'[^}\'"\[/#]', # exclude unsafe characters
174
+ r'\}(?=[^%]|$)', # } is okay as long as it's not followed by %
175
+ r'\}%(?=[^%]|$)', # ...well, one %'s okay, just not two...
176
+ r'[^\\]\\[{}]', # ...and } is okay if it's escaped
177
+
178
+ # allow / if it's preceded with one of these symbols
179
+ # (ragel EOF actions)
180
+ r'(>|\$|%|<|@|<>)/',
181
+
182
+ # specifically allow regex followed immediately by *
183
+ # so it doesn't get mistaken for a comment
184
+ r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/\*',
185
+
186
+ # allow / as long as it's not followed by another / or by a *
187
+ r'/(?=[^/*]|$)',
188
+
189
+ # We want to match as many of these as we can in one block.
190
+ # Not sure if we need the + sign here,
191
+ # does it help performance?
192
+ )) + r')+',
193
+
194
+ # strings and comments may safely contain unsafe characters
195
+ r'"(\\\\|\\[^\\]|[^"\\])*"',
196
+ r"'(\\\\|\\[^\\]|[^'\\])*'",
197
+ r"\[(\\\\|\\[^\\]|[^\]\\])*\]", # square bracket literal
198
+ r'/\*(.|\n)*?\*/', # multi-line javadoc-style comment
199
+ r'//.*$\n?', # single line comment
200
+ r'\#.*$\n?', # ruby/ragel comment
201
+ )) + r')+', using(RagelLexer)),
202
+
203
+ (r'\}%%', Punctuation, '#pop'),
204
+ ]
205
+ }
206
+
207
+ def analyse_text(text):
208
+ return '@LANG: indep' in text
209
+
210
+
211
+ class RagelRubyLexer(DelegatingLexer):
212
+ """
213
+ A lexer for `Ragel`_ in a Ruby host file.
214
+
215
+ .. versionadded:: 1.1
216
+ """
217
+
218
+ name = 'Ragel in Ruby Host'
219
+ aliases = ['ragel-ruby', 'ragel-rb']
220
+ filenames = ['*.rl']
221
+
222
+ def __init__(self, **options):
223
+ super().__init__(RubyLexer, RagelEmbeddedLexer, **options)
224
+
225
+ def analyse_text(text):
226
+ return '@LANG: ruby' in text
227
+
228
+
229
+ class RagelCLexer(DelegatingLexer):
230
+ """
231
+ A lexer for `Ragel`_ in a C host file.
232
+
233
+ .. versionadded:: 1.1
234
+ """
235
+
236
+ name = 'Ragel in C Host'
237
+ aliases = ['ragel-c']
238
+ filenames = ['*.rl']
239
+
240
+ def __init__(self, **options):
241
+ super().__init__(CLexer, RagelEmbeddedLexer, **options)
242
+
243
+ def analyse_text(text):
244
+ return '@LANG: c' in text
245
+
246
+
247
+ class RagelDLexer(DelegatingLexer):
248
+ """
249
+ A lexer for `Ragel`_ in a D host file.
250
+
251
+ .. versionadded:: 1.1
252
+ """
253
+
254
+ name = 'Ragel in D Host'
255
+ aliases = ['ragel-d']
256
+ filenames = ['*.rl']
257
+
258
+ def __init__(self, **options):
259
+ super().__init__(DLexer, RagelEmbeddedLexer, **options)
260
+
261
+ def analyse_text(text):
262
+ return '@LANG: d' in text
263
+
264
+
265
+ class RagelCppLexer(DelegatingLexer):
266
+ """
267
+ A lexer for `Ragel`_ in a CPP host file.
268
+
269
+ .. versionadded:: 1.1
270
+ """
271
+
272
+ name = 'Ragel in CPP Host'
273
+ aliases = ['ragel-cpp']
274
+ filenames = ['*.rl']
275
+
276
+ def __init__(self, **options):
277
+ super().__init__(CppLexer, RagelEmbeddedLexer, **options)
278
+
279
+ def analyse_text(text):
280
+ return '@LANG: c++' in text
281
+
282
+
283
+ class RagelObjectiveCLexer(DelegatingLexer):
284
+ """
285
+ A lexer for `Ragel`_ in an Objective C host file.
286
+
287
+ .. versionadded:: 1.1
288
+ """
289
+
290
+ name = 'Ragel in Objective C Host'
291
+ aliases = ['ragel-objc']
292
+ filenames = ['*.rl']
293
+
294
+ def __init__(self, **options):
295
+ super().__init__(ObjectiveCLexer, RagelEmbeddedLexer, **options)
296
+
297
+ def analyse_text(text):
298
+ return '@LANG: objc' in text
299
+
300
+
301
+ class RagelJavaLexer(DelegatingLexer):
302
+ """
303
+ A lexer for `Ragel`_ in a Java host file.
304
+
305
+ .. versionadded:: 1.1
306
+ """
307
+
308
+ name = 'Ragel in Java Host'
309
+ aliases = ['ragel-java']
310
+ filenames = ['*.rl']
311
+
312
+ def __init__(self, **options):
313
+ super().__init__(JavaLexer, RagelEmbeddedLexer, **options)
314
+
315
+ def analyse_text(text):
316
+ return '@LANG: java' in text
317
+
318
+
319
+ class AntlrLexer(RegexLexer):
320
+ """
321
+ Generic `ANTLR`_ Lexer.
322
+ Should not be called directly, instead
323
+ use DelegatingLexer for your target language.
324
+
325
+ .. versionadded:: 1.1
326
+
327
+ .. _ANTLR: http://www.antlr.org/
328
+ """
329
+
330
+ name = 'ANTLR'
331
+ aliases = ['antlr']
332
+ filenames = []
333
+
334
+ _id = r'[A-Za-z]\w*'
335
+ _TOKEN_REF = r'[A-Z]\w*'
336
+ _RULE_REF = r'[a-z]\w*'
337
+ _STRING_LITERAL = r'\'(?:\\\\|\\\'|[^\']*)\''
338
+ _INT = r'[0-9]+'
339
+
340
+ tokens = {
341
+ 'whitespace': [
342
+ (r'\s+', Whitespace),
343
+ ],
344
+ 'comments': [
345
+ (r'//.*$', Comment),
346
+ (r'/\*(.|\n)*?\*/', Comment),
347
+ ],
348
+ 'root': [
349
+ include('whitespace'),
350
+ include('comments'),
351
+
352
+ (r'(lexer|parser|tree)?(\s*)(grammar\b)(\s*)(' + _id + ')(;)',
353
+ bygroups(Keyword, Whitespace, Keyword, Whitespace, Name.Class,
354
+ Punctuation)),
355
+ # optionsSpec
356
+ (r'options\b', Keyword, 'options'),
357
+ # tokensSpec
358
+ (r'tokens\b', Keyword, 'tokens'),
359
+ # attrScope
360
+ (r'(scope)(\s*)(' + _id + r')(\s*)(\{)',
361
+ bygroups(Keyword, Whitespace, Name.Variable, Whitespace,
362
+ Punctuation), 'action'),
363
+ # exception
364
+ (r'(catch|finally)\b', Keyword, 'exception'),
365
+ # action
366
+ (r'(@' + _id + r')(\s*)(::)?(\s*)(' + _id + r')(\s*)(\{)',
367
+ bygroups(Name.Label, Whitespace, Punctuation, Whitespace,
368
+ Name.Label, Whitespace, Punctuation), 'action'),
369
+ # rule
370
+ (r'((?:protected|private|public|fragment)\b)?(\s*)(' + _id + ')(!)?',
371
+ bygroups(Keyword, Whitespace, Name.Label, Punctuation),
372
+ ('rule-alts', 'rule-prelims')),
373
+ ],
374
+ 'exception': [
375
+ (r'\n', Whitespace, '#pop'),
376
+ (r'\s', Whitespace),
377
+ include('comments'),
378
+
379
+ (r'\[', Punctuation, 'nested-arg-action'),
380
+ (r'\{', Punctuation, 'action'),
381
+ ],
382
+ 'rule-prelims': [
383
+ include('whitespace'),
384
+ include('comments'),
385
+
386
+ (r'returns\b', Keyword),
387
+ (r'\[', Punctuation, 'nested-arg-action'),
388
+ (r'\{', Punctuation, 'action'),
389
+ # throwsSpec
390
+ (r'(throws)(\s+)(' + _id + ')',
391
+ bygroups(Keyword, Whitespace, Name.Label)),
392
+ (r'(,)(\s*)(' + _id + ')',
393
+ bygroups(Punctuation, Whitespace, Name.Label)), # Additional throws
394
+ # optionsSpec
395
+ (r'options\b', Keyword, 'options'),
396
+ # ruleScopeSpec - scope followed by target language code or name of action
397
+ # TODO finish implementing other possibilities for scope
398
+ # L173 ANTLRv3.g from ANTLR book
399
+ (r'(scope)(\s+)(\{)', bygroups(Keyword, Whitespace, Punctuation),
400
+ 'action'),
401
+ (r'(scope)(\s+)(' + _id + r')(\s*)(;)',
402
+ bygroups(Keyword, Whitespace, Name.Label, Whitespace, Punctuation)),
403
+ # ruleAction
404
+ (r'(@' + _id + r')(\s*)(\{)',
405
+ bygroups(Name.Label, Whitespace, Punctuation), 'action'),
406
+ # finished prelims, go to rule alts!
407
+ (r':', Punctuation, '#pop')
408
+ ],
409
+ 'rule-alts': [
410
+ include('whitespace'),
411
+ include('comments'),
412
+
413
+ # These might need to go in a separate 'block' state triggered by (
414
+ (r'options\b', Keyword, 'options'),
415
+ (r':', Punctuation),
416
+
417
+ # literals
418
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
419
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
420
+ (r'<<([^>]|>[^>])>>', String),
421
+ # identifiers
422
+ # Tokens start with capital letter.
423
+ (r'\$?[A-Z_]\w*', Name.Constant),
424
+ # Rules start with small letter.
425
+ (r'\$?[a-z_]\w*', Name.Variable),
426
+ # operators
427
+ (r'(\+|\||->|=>|=|\(|\)|\.\.|\.|\?|\*|\^|!|\#|~)', Operator),
428
+ (r',', Punctuation),
429
+ (r'\[', Punctuation, 'nested-arg-action'),
430
+ (r'\{', Punctuation, 'action'),
431
+ (r';', Punctuation, '#pop')
432
+ ],
433
+ 'tokens': [
434
+ include('whitespace'),
435
+ include('comments'),
436
+ (r'\{', Punctuation),
437
+ (r'(' + _TOKEN_REF + r')(\s*)(=)?(\s*)(' + _STRING_LITERAL
438
+ + r')?(\s*)(;)',
439
+ bygroups(Name.Label, Whitespace, Punctuation, Whitespace,
440
+ String, Whitespace, Punctuation)),
441
+ (r'\}', Punctuation, '#pop'),
442
+ ],
443
+ 'options': [
444
+ include('whitespace'),
445
+ include('comments'),
446
+ (r'\{', Punctuation),
447
+ (r'(' + _id + r')(\s*)(=)(\s*)(' +
448
+ '|'.join((_id, _STRING_LITERAL, _INT, r'\*')) + r')(\s*)(;)',
449
+ bygroups(Name.Variable, Whitespace, Punctuation, Whitespace,
450
+ Text, Whitespace, Punctuation)),
451
+ (r'\}', Punctuation, '#pop'),
452
+ ],
453
+ 'action': [
454
+ (r'(' + r'|'.join(( # keep host code in largest possible chunks
455
+ r'[^${}\'"/\\]+', # exclude unsafe characters
456
+
457
+ # strings and comments may safely contain unsafe characters
458
+ r'"(\\\\|\\[^\\]|[^"\\])*"',
459
+ r"'(\\\\|\\[^\\]|[^'\\])*'",
460
+ r'//.*$\n?', # single line comment
461
+ r'/\*(.|\n)*?\*/', # multi-line javadoc-style comment
462
+
463
+ # regular expression: There's no reason for it to start
464
+ # with a * and this stops confusion with comments.
465
+ r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/',
466
+
467
+ # backslashes are okay, as long as we are not backslashing a %
468
+ r'\\(?!%)',
469
+
470
+ # Now that we've handled regex and javadoc comments
471
+ # it's safe to let / through.
472
+ r'/',
473
+ )) + r')+', Other),
474
+ (r'(\\)(%)', bygroups(Punctuation, Other)),
475
+ (r'(\$[a-zA-Z]+)(\.?)(text|value)?',
476
+ bygroups(Name.Variable, Punctuation, Name.Property)),
477
+ (r'\{', Punctuation, '#push'),
478
+ (r'\}', Punctuation, '#pop'),
479
+ ],
480
+ 'nested-arg-action': [
481
+ (r'(' + r'|'.join(( # keep host code in largest possible chunks.
482
+ r'[^$\[\]\'"/]+', # exclude unsafe characters
483
+
484
+ # strings and comments may safely contain unsafe characters
485
+ r'"(\\\\|\\[^\\]|[^"\\])*"',
486
+ r"'(\\\\|\\[^\\]|[^'\\])*'",
487
+ r'//.*$\n?', # single line comment
488
+ r'/\*(.|\n)*?\*/', # multi-line javadoc-style comment
489
+
490
+ # regular expression: There's no reason for it to start
491
+ # with a * and this stops confusion with comments.
492
+ r'/(?!\*)(\\\\|\\[^\\]|[^/\\])*/',
493
+
494
+ # Now that we've handled regex and javadoc comments
495
+ # it's safe to let / through.
496
+ r'/',
497
+ )) + r')+', Other),
498
+
499
+
500
+ (r'\[', Punctuation, '#push'),
501
+ (r'\]', Punctuation, '#pop'),
502
+ (r'(\$[a-zA-Z]+)(\.?)(text|value)?',
503
+ bygroups(Name.Variable, Punctuation, Name.Property)),
504
+ (r'(\\\\|\\\]|\\\[|[^\[\]])+', Other),
505
+ ]
506
+ }
507
+
508
+ def analyse_text(text):
509
+ return re.search(r'^\s*grammar\s+[a-zA-Z0-9]+\s*;', text, re.M)
510
+
511
+
512
+ # http://www.antlr.org/wiki/display/ANTLR3/Code+Generation+Targets
513
+
514
+ class AntlrCppLexer(DelegatingLexer):
515
+ """
516
+ `ANTLR`_ with CPP Target
517
+
518
+ .. versionadded:: 1.1
519
+ """
520
+
521
+ name = 'ANTLR With CPP Target'
522
+ aliases = ['antlr-cpp']
523
+ filenames = ['*.G', '*.g']
524
+
525
+ def __init__(self, **options):
526
+ super().__init__(CppLexer, AntlrLexer, **options)
527
+
528
+ def analyse_text(text):
529
+ return AntlrLexer.analyse_text(text) and \
530
+ re.search(r'^\s*language\s*=\s*C\s*;', text, re.M)
531
+
532
+
533
+ class AntlrObjectiveCLexer(DelegatingLexer):
534
+ """
535
+ `ANTLR`_ with Objective-C Target
536
+
537
+ .. versionadded:: 1.1
538
+ """
539
+
540
+ name = 'ANTLR With ObjectiveC Target'
541
+ aliases = ['antlr-objc']
542
+ filenames = ['*.G', '*.g']
543
+
544
+ def __init__(self, **options):
545
+ super().__init__(ObjectiveCLexer, AntlrLexer, **options)
546
+
547
+ def analyse_text(text):
548
+ return AntlrLexer.analyse_text(text) and \
549
+ re.search(r'^\s*language\s*=\s*ObjC\s*;', text)
550
+
551
+
552
+ class AntlrCSharpLexer(DelegatingLexer):
553
+ """
554
+ `ANTLR`_ with C# Target
555
+
556
+ .. versionadded:: 1.1
557
+ """
558
+
559
+ name = 'ANTLR With C# Target'
560
+ aliases = ['antlr-csharp', 'antlr-c#']
561
+ filenames = ['*.G', '*.g']
562
+
563
+ def __init__(self, **options):
564
+ super().__init__(CSharpLexer, AntlrLexer, **options)
565
+
566
+ def analyse_text(text):
567
+ return AntlrLexer.analyse_text(text) and \
568
+ re.search(r'^\s*language\s*=\s*CSharp2\s*;', text, re.M)
569
+
570
+
571
+ class AntlrPythonLexer(DelegatingLexer):
572
+ """
573
+ `ANTLR`_ with Python Target
574
+
575
+ .. versionadded:: 1.1
576
+ """
577
+
578
+ name = 'ANTLR With Python Target'
579
+ aliases = ['antlr-python']
580
+ filenames = ['*.G', '*.g']
581
+
582
+ def __init__(self, **options):
583
+ super().__init__(PythonLexer, AntlrLexer, **options)
584
+
585
+ def analyse_text(text):
586
+ return AntlrLexer.analyse_text(text) and \
587
+ re.search(r'^\s*language\s*=\s*Python\s*;', text, re.M)
588
+
589
+
590
+ class AntlrJavaLexer(DelegatingLexer):
591
+ """
592
+ `ANTLR`_ with Java Target
593
+
594
+ .. versionadded:: 1.
595
+ """
596
+
597
+ name = 'ANTLR With Java Target'
598
+ aliases = ['antlr-java']
599
+ filenames = ['*.G', '*.g']
600
+
601
+ def __init__(self, **options):
602
+ super().__init__(JavaLexer, AntlrLexer, **options)
603
+
604
+ def analyse_text(text):
605
+ # Antlr language is Java by default
606
+ return AntlrLexer.analyse_text(text) and 0.9
607
+
608
+
609
+ class AntlrRubyLexer(DelegatingLexer):
610
+ """
611
+ `ANTLR`_ with Ruby Target
612
+
613
+ .. versionadded:: 1.1
614
+ """
615
+
616
+ name = 'ANTLR With Ruby Target'
617
+ aliases = ['antlr-ruby', 'antlr-rb']
618
+ filenames = ['*.G', '*.g']
619
+
620
+ def __init__(self, **options):
621
+ super().__init__(RubyLexer, AntlrLexer, **options)
622
+
623
+ def analyse_text(text):
624
+ return AntlrLexer.analyse_text(text) and \
625
+ re.search(r'^\s*language\s*=\s*Ruby\s*;', text, re.M)
626
+
627
+
628
+ class AntlrPerlLexer(DelegatingLexer):
629
+ """
630
+ `ANTLR`_ with Perl Target
631
+
632
+ .. versionadded:: 1.1
633
+ """
634
+
635
+ name = 'ANTLR With Perl Target'
636
+ aliases = ['antlr-perl']
637
+ filenames = ['*.G', '*.g']
638
+
639
+ def __init__(self, **options):
640
+ super().__init__(PerlLexer, AntlrLexer, **options)
641
+
642
+ def analyse_text(text):
643
+ return AntlrLexer.analyse_text(text) and \
644
+ re.search(r'^\s*language\s*=\s*Perl5\s*;', text, re.M)
645
+
646
+
647
+ class AntlrActionScriptLexer(DelegatingLexer):
648
+ """
649
+ `ANTLR`_ with ActionScript Target
650
+
651
+ .. versionadded:: 1.1
652
+ """
653
+
654
+ name = 'ANTLR With ActionScript Target'
655
+ aliases = ['antlr-as', 'antlr-actionscript']
656
+ filenames = ['*.G', '*.g']
657
+
658
+ def __init__(self, **options):
659
+ from pygments.lexers.actionscript import ActionScriptLexer
660
+ super().__init__(ActionScriptLexer, AntlrLexer, **options)
661
+
662
+ def analyse_text(text):
663
+ return AntlrLexer.analyse_text(text) and \
664
+ re.search(r'^\s*language\s*=\s*ActionScript\s*;', text, re.M)
665
+
666
+
667
+ class TreetopBaseLexer(RegexLexer):
668
+ """
669
+ A base lexer for `Treetop <http://treetop.rubyforge.org/>`_ grammars.
670
+ Not for direct use; use TreetopLexer instead.
671
+
672
+ .. versionadded:: 1.6
673
+ """
674
+
675
+ tokens = {
676
+ 'root': [
677
+ include('space'),
678
+ (r'require[ \t]+[^\n\r]+[\n\r]', Other),
679
+ (r'module\b', Keyword.Namespace, 'module'),
680
+ (r'grammar\b', Keyword, 'grammar'),
681
+ ],
682
+ 'module': [
683
+ include('space'),
684
+ include('end'),
685
+ (r'module\b', Keyword, '#push'),
686
+ (r'grammar\b', Keyword, 'grammar'),
687
+ (r'[A-Z]\w*(?:::[A-Z]\w*)*', Name.Namespace),
688
+ ],
689
+ 'grammar': [
690
+ include('space'),
691
+ include('end'),
692
+ (r'rule\b', Keyword, 'rule'),
693
+ (r'include\b', Keyword, 'include'),
694
+ (r'[A-Z]\w*', Name),
695
+ ],
696
+ 'include': [
697
+ include('space'),
698
+ (r'[A-Z]\w*(?:::[A-Z]\w*)*', Name.Class, '#pop'),
699
+ ],
700
+ 'rule': [
701
+ include('space'),
702
+ include('end'),
703
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
704
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
705
+ (r'([A-Za-z_]\w*)(:)', bygroups(Name.Label, Punctuation)),
706
+ (r'[A-Za-z_]\w*', Name),
707
+ (r'[()]', Punctuation),
708
+ (r'[?+*/&!~]', Operator),
709
+ (r'\[(?:\\.|\[:\^?[a-z]+:\]|[^\\\]])+\]', String.Regex),
710
+ (r'([0-9]*)(\.\.)([0-9]*)',
711
+ bygroups(Number.Integer, Operator, Number.Integer)),
712
+ (r'(<)([^>]+)(>)', bygroups(Punctuation, Name.Class, Punctuation)),
713
+ (r'\{', Punctuation, 'inline_module'),
714
+ (r'\.', String.Regex),
715
+ ],
716
+ 'inline_module': [
717
+ (r'\{', Other, 'ruby'),
718
+ (r'\}', Punctuation, '#pop'),
719
+ (r'[^{}]+', Other),
720
+ ],
721
+ 'ruby': [
722
+ (r'\{', Other, '#push'),
723
+ (r'\}', Other, '#pop'),
724
+ (r'[^{}]+', Other),
725
+ ],
726
+ 'space': [
727
+ (r'[ \t\n\r]+', Whitespace),
728
+ (r'#[^\n]*', Comment.Single),
729
+ ],
730
+ 'end': [
731
+ (r'end\b', Keyword, '#pop'),
732
+ ],
733
+ }
734
+
735
+
736
+ class TreetopLexer(DelegatingLexer):
737
+ """
738
+ A lexer for `Treetop <http://treetop.rubyforge.org/>`_ grammars.
739
+
740
+ .. versionadded:: 1.6
741
+ """
742
+
743
+ name = 'Treetop'
744
+ aliases = ['treetop']
745
+ filenames = ['*.treetop', '*.tt']
746
+
747
+ def __init__(self, **options):
748
+ super().__init__(RubyLexer, TreetopBaseLexer, **options)
749
+
750
+
751
+ class EbnfLexer(RegexLexer):
752
+ """
753
+ Lexer for `ISO/IEC 14977 EBNF
754
+ <http://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form>`_
755
+ grammars.
756
+
757
+ .. versionadded:: 2.0
758
+ """
759
+
760
+ name = 'EBNF'
761
+ aliases = ['ebnf']
762
+ filenames = ['*.ebnf']
763
+ mimetypes = ['text/x-ebnf']
764
+
765
+ tokens = {
766
+ 'root': [
767
+ include('whitespace'),
768
+ include('comment_start'),
769
+ include('identifier'),
770
+ (r'=', Operator, 'production'),
771
+ ],
772
+ 'production': [
773
+ include('whitespace'),
774
+ include('comment_start'),
775
+ include('identifier'),
776
+ (r'"[^"]*"', String.Double),
777
+ (r"'[^']*'", String.Single),
778
+ (r'(\?[^?]*\?)', Name.Entity),
779
+ (r'[\[\]{}(),|]', Punctuation),
780
+ (r'-', Operator),
781
+ (r';', Punctuation, '#pop'),
782
+ (r'\.', Punctuation, '#pop'),
783
+ ],
784
+ 'whitespace': [
785
+ (r'\s+', Text),
786
+ ],
787
+ 'comment_start': [
788
+ (r'\(\*', Comment.Multiline, 'comment'),
789
+ ],
790
+ 'comment': [
791
+ (r'[^*)]', Comment.Multiline),
792
+ include('comment_start'),
793
+ (r'\*\)', Comment.Multiline, '#pop'),
794
+ (r'[*)]', Comment.Multiline),
795
+ ],
796
+ 'identifier': [
797
+ (r'([a-zA-Z][\w \-]*)', Keyword),
798
+ ],
799
+ }