pygments.rb 2.0.0 → 2.1.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 (265) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +12 -0
  3. data/.rubocop.yml +18 -0
  4. data/CHANGELOG.adoc +4 -0
  5. data/Rakefile +1 -3
  6. data/bench.rb +9 -4
  7. data/{cache-lexers.rb → cache_lexers.rb} +0 -0
  8. data/lib/pygments/lexer.rb +1 -1
  9. data/lib/pygments/popen.rb +129 -127
  10. data/lib/pygments/version.rb +1 -1
  11. data/pygments.rb.gemspec +1 -1
  12. data/test/test_pygments.rb +6 -8
  13. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/AUTHORS +5 -0
  14. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/INSTALLER +0 -0
  15. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/LICENSE +1 -1
  16. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/METADATA +8 -9
  17. data/vendor/pygments-main/Pygments-2.8.0.dist-info/RECORD +494 -0
  18. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/REQUESTED +0 -0
  19. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/WHEEL +0 -0
  20. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/entry_points.txt +0 -0
  21. data/vendor/pygments-main/{Pygments-2.7.3.dist-info → Pygments-2.8.0.dist-info}/top_level.txt +0 -0
  22. data/vendor/pygments-main/pygments/__init__.py +2 -3
  23. data/vendor/pygments-main/pygments/__main__.py +1 -2
  24. data/vendor/pygments-main/pygments/cmdline.py +179 -159
  25. data/vendor/pygments-main/pygments/console.py +1 -2
  26. data/vendor/pygments-main/pygments/filter.py +1 -2
  27. data/vendor/pygments-main/pygments/filters/__init__.py +1 -2
  28. data/vendor/pygments-main/pygments/formatter.py +1 -2
  29. data/vendor/pygments-main/pygments/formatters/__init__.py +2 -3
  30. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -2
  31. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -2
  32. data/vendor/pygments-main/pygments/formatters/html.py +33 -18
  33. data/vendor/pygments-main/pygments/formatters/img.py +24 -10
  34. data/vendor/pygments-main/pygments/formatters/irc.py +1 -2
  35. data/vendor/pygments-main/pygments/formatters/latex.py +8 -9
  36. data/vendor/pygments-main/pygments/formatters/other.py +7 -10
  37. data/vendor/pygments-main/pygments/formatters/rtf.py +1 -2
  38. data/vendor/pygments-main/pygments/formatters/svg.py +5 -4
  39. data/vendor/pygments-main/pygments/formatters/terminal.py +1 -2
  40. data/vendor/pygments-main/pygments/formatters/terminal256.py +24 -3
  41. data/vendor/pygments-main/pygments/lexer.py +7 -6
  42. data/vendor/pygments-main/pygments/lexers/__init__.py +2 -3
  43. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1 -2
  44. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +1 -2
  45. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +16 -12
  46. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1 -2
  47. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -2
  48. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +1 -2
  49. data/vendor/pygments-main/pygments/lexers/_mapping.py +6 -3
  50. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1 -2
  51. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +2 -3
  52. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +439 -386
  53. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +1 -2
  54. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +1 -2
  55. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +1 -2
  56. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -2
  57. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +1 -2
  58. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +91 -55
  59. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -2
  60. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +1 -2
  61. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +1 -2
  62. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -2
  63. data/vendor/pygments-main/pygments/lexers/actionscript.py +7 -8
  64. data/vendor/pygments-main/pygments/lexers/agile.py +1 -2
  65. data/vendor/pygments-main/pygments/lexers/algebra.py +1 -2
  66. data/vendor/pygments-main/pygments/lexers/ambient.py +2 -3
  67. data/vendor/pygments-main/pygments/lexers/amdgpu.py +48 -0
  68. data/vendor/pygments-main/pygments/lexers/ampl.py +1 -2
  69. data/vendor/pygments-main/pygments/lexers/apl.py +1 -2
  70. data/vendor/pygments-main/pygments/lexers/archetype.py +2 -3
  71. data/vendor/pygments-main/pygments/lexers/arrow.py +1 -2
  72. data/vendor/pygments-main/pygments/lexers/asm.py +1 -2
  73. data/vendor/pygments-main/pygments/lexers/automation.py +7 -2
  74. data/vendor/pygments-main/pygments/lexers/bare.py +1 -2
  75. data/vendor/pygments-main/pygments/lexers/basic.py +3 -4
  76. data/vendor/pygments-main/pygments/lexers/bibtex.py +1 -2
  77. data/vendor/pygments-main/pygments/lexers/boa.py +4 -5
  78. data/vendor/pygments-main/pygments/lexers/business.py +3 -4
  79. data/vendor/pygments-main/pygments/lexers/c_cpp.py +2 -4
  80. data/vendor/pygments-main/pygments/lexers/c_like.py +1 -2
  81. data/vendor/pygments-main/pygments/lexers/capnproto.py +1 -2
  82. data/vendor/pygments-main/pygments/lexers/cddl.py +190 -0
  83. data/vendor/pygments-main/pygments/lexers/chapel.py +3 -4
  84. data/vendor/pygments-main/pygments/lexers/clean.py +1 -2
  85. data/vendor/pygments-main/pygments/lexers/compiled.py +1 -2
  86. data/vendor/pygments-main/pygments/lexers/configs.py +6 -5
  87. data/vendor/pygments-main/pygments/lexers/console.py +1 -2
  88. data/vendor/pygments-main/pygments/lexers/crystal.py +53 -79
  89. data/vendor/pygments-main/pygments/lexers/csound.py +1 -2
  90. data/vendor/pygments-main/pygments/lexers/css.py +11 -8
  91. data/vendor/pygments-main/pygments/lexers/d.py +3 -4
  92. data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -2
  93. data/vendor/pygments-main/pygments/lexers/data.py +2 -3
  94. data/vendor/pygments-main/pygments/lexers/devicetree.py +1 -2
  95. data/vendor/pygments-main/pygments/lexers/diff.py +1 -2
  96. data/vendor/pygments-main/pygments/lexers/dotnet.py +7 -8
  97. data/vendor/pygments-main/pygments/lexers/dsls.py +3 -4
  98. data/vendor/pygments-main/pygments/lexers/dylan.py +1 -2
  99. data/vendor/pygments-main/pygments/lexers/ecl.py +4 -6
  100. data/vendor/pygments-main/pygments/lexers/eiffel.py +2 -3
  101. data/vendor/pygments-main/pygments/lexers/elm.py +1 -2
  102. data/vendor/pygments-main/pygments/lexers/email.py +1 -2
  103. data/vendor/pygments-main/pygments/lexers/erlang.py +1 -2
  104. data/vendor/pygments-main/pygments/lexers/esoteric.py +1 -2
  105. data/vendor/pygments-main/pygments/lexers/ezhil.py +1 -2
  106. data/vendor/pygments-main/pygments/lexers/factor.py +3 -4
  107. data/vendor/pygments-main/pygments/lexers/fantom.py +1 -2
  108. data/vendor/pygments-main/pygments/lexers/felix.py +1 -2
  109. data/vendor/pygments-main/pygments/lexers/floscript.py +1 -2
  110. data/vendor/pygments-main/pygments/lexers/forth.py +2 -3
  111. data/vendor/pygments-main/pygments/lexers/fortran.py +9 -7
  112. data/vendor/pygments-main/pygments/lexers/foxpro.py +1 -2
  113. data/vendor/pygments-main/pygments/lexers/freefem.py +1 -2
  114. data/vendor/pygments-main/pygments/lexers/functional.py +1 -2
  115. data/vendor/pygments-main/pygments/lexers/futhark.py +110 -0
  116. data/vendor/pygments-main/pygments/lexers/gdscript.py +1 -2
  117. data/vendor/pygments-main/pygments/lexers/go.py +2 -3
  118. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +1 -2
  119. data/vendor/pygments-main/pygments/lexers/graph.py +1 -2
  120. data/vendor/pygments-main/pygments/lexers/graphics.py +3 -4
  121. data/vendor/pygments-main/pygments/lexers/graphviz.py +57 -0
  122. data/vendor/pygments-main/pygments/lexers/haskell.py +1 -2
  123. data/vendor/pygments-main/pygments/lexers/haxe.py +3 -4
  124. data/vendor/pygments-main/pygments/lexers/hdl.py +2 -6
  125. data/vendor/pygments-main/pygments/lexers/hexdump.py +1 -2
  126. data/vendor/pygments-main/pygments/lexers/html.py +7 -8
  127. data/vendor/pygments-main/pygments/lexers/idl.py +1 -2
  128. data/vendor/pygments-main/pygments/lexers/igor.py +1 -2
  129. data/vendor/pygments-main/pygments/lexers/inferno.py +1 -2
  130. data/vendor/pygments-main/pygments/lexers/installers.py +1 -2
  131. data/vendor/pygments-main/pygments/lexers/int_fiction.py +1 -2
  132. data/vendor/pygments-main/pygments/lexers/iolang.py +2 -3
  133. data/vendor/pygments-main/pygments/lexers/j.py +2 -3
  134. data/vendor/pygments-main/pygments/lexers/javascript.py +57 -61
  135. data/vendor/pygments-main/pygments/lexers/julia.py +1 -2
  136. data/vendor/pygments-main/pygments/lexers/jvm.py +174 -108
  137. data/vendor/pygments-main/pygments/lexers/lisp.py +7 -8
  138. data/vendor/pygments-main/pygments/lexers/make.py +3 -4
  139. data/vendor/pygments-main/pygments/lexers/markup.py +11 -14
  140. data/vendor/pygments-main/pygments/lexers/math.py +1 -2
  141. data/vendor/pygments-main/pygments/lexers/matlab.py +2644 -84
  142. data/vendor/pygments-main/pygments/lexers/mime.py +2 -3
  143. data/vendor/pygments-main/pygments/lexers/ml.py +7 -8
  144. data/vendor/pygments-main/pygments/lexers/modeling.py +1 -2
  145. data/vendor/pygments-main/pygments/lexers/modula2.py +3 -4
  146. data/vendor/pygments-main/pygments/lexers/monte.py +1 -2
  147. data/vendor/pygments-main/pygments/lexers/mosel.py +1 -2
  148. data/vendor/pygments-main/pygments/lexers/ncl.py +1 -2
  149. data/vendor/pygments-main/pygments/lexers/nimrod.py +1 -2
  150. data/vendor/pygments-main/pygments/lexers/nit.py +1 -2
  151. data/vendor/pygments-main/pygments/lexers/nix.py +1 -2
  152. data/vendor/pygments-main/pygments/lexers/oberon.py +1 -2
  153. data/vendor/pygments-main/pygments/lexers/objective.py +3 -4
  154. data/vendor/pygments-main/pygments/lexers/ooc.py +1 -2
  155. data/vendor/pygments-main/pygments/lexers/other.py +1 -2
  156. data/vendor/pygments-main/pygments/lexers/parasail.py +1 -2
  157. data/vendor/pygments-main/pygments/lexers/parsers.py +25 -26
  158. data/vendor/pygments-main/pygments/lexers/pascal.py +1 -2
  159. data/vendor/pygments-main/pygments/lexers/pawn.py +2 -5
  160. data/vendor/pygments-main/pygments/lexers/perl.py +1 -2
  161. data/vendor/pygments-main/pygments/lexers/php.py +3 -4
  162. data/vendor/pygments-main/pygments/lexers/pointless.py +1 -2
  163. data/vendor/pygments-main/pygments/lexers/pony.py +1 -2
  164. data/vendor/pygments-main/pygments/lexers/praat.py +1 -2
  165. data/vendor/pygments-main/pygments/lexers/prolog.py +3 -4
  166. data/vendor/pygments-main/pygments/lexers/promql.py +1 -2
  167. data/vendor/pygments-main/pygments/lexers/python.py +19 -12
  168. data/vendor/pygments-main/pygments/lexers/qvt.py +1 -2
  169. data/vendor/pygments-main/pygments/lexers/r.py +1 -2
  170. data/vendor/pygments-main/pygments/lexers/rdf.py +1 -2
  171. data/vendor/pygments-main/pygments/lexers/rebol.py +1 -2
  172. data/vendor/pygments-main/pygments/lexers/resource.py +1 -2
  173. data/vendor/pygments-main/pygments/lexers/ride.py +1 -2
  174. data/vendor/pygments-main/pygments/lexers/rnc.py +1 -2
  175. data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -2
  176. data/vendor/pygments-main/pygments/lexers/robotframework.py +1 -2
  177. data/vendor/pygments-main/pygments/lexers/ruby.py +30 -24
  178. data/vendor/pygments-main/pygments/lexers/rust.py +1 -2
  179. data/vendor/pygments-main/pygments/lexers/sas.py +1 -2
  180. data/vendor/pygments-main/pygments/lexers/scdoc.py +1 -2
  181. data/vendor/pygments-main/pygments/lexers/scripting.py +5 -6
  182. data/vendor/pygments-main/pygments/lexers/sgf.py +1 -2
  183. data/vendor/pygments-main/pygments/lexers/shell.py +5 -10
  184. data/vendor/pygments-main/pygments/lexers/sieve.py +1 -2
  185. data/vendor/pygments-main/pygments/lexers/slash.py +1 -2
  186. data/vendor/pygments-main/pygments/lexers/smalltalk.py +1 -2
  187. data/vendor/pygments-main/pygments/lexers/smv.py +1 -2
  188. data/vendor/pygments-main/pygments/lexers/snobol.py +1 -2
  189. data/vendor/pygments-main/pygments/lexers/solidity.py +1 -2
  190. data/vendor/pygments-main/pygments/lexers/special.py +29 -28
  191. data/vendor/pygments-main/pygments/lexers/sql.py +8 -13
  192. data/vendor/pygments-main/pygments/lexers/stata.py +1 -2
  193. data/vendor/pygments-main/pygments/lexers/supercollider.py +3 -4
  194. data/vendor/pygments-main/pygments/lexers/tcl.py +1 -2
  195. data/vendor/pygments-main/pygments/lexers/templates.py +15 -16
  196. data/vendor/pygments-main/pygments/lexers/teraterm.py +1 -2
  197. data/vendor/pygments-main/pygments/lexers/testing.py +1 -2
  198. data/vendor/pygments-main/pygments/lexers/text.py +1 -2
  199. data/vendor/pygments-main/pygments/lexers/textedit.py +3 -4
  200. data/vendor/pygments-main/pygments/lexers/textfmts.py +1 -2
  201. data/vendor/pygments-main/pygments/lexers/theorem.py +7 -5
  202. data/vendor/pygments-main/pygments/lexers/tnt.py +1 -2
  203. data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -2
  204. data/vendor/pygments-main/pygments/lexers/typoscript.py +1 -2
  205. data/vendor/pygments-main/pygments/lexers/unicon.py +1 -2
  206. data/vendor/pygments-main/pygments/lexers/urbi.py +3 -4
  207. data/vendor/pygments-main/pygments/lexers/usd.py +1 -2
  208. data/vendor/pygments-main/pygments/lexers/varnish.py +2 -3
  209. data/vendor/pygments-main/pygments/lexers/verification.py +1 -2
  210. data/vendor/pygments-main/pygments/lexers/web.py +1 -2
  211. data/vendor/pygments-main/pygments/lexers/webidl.py +1 -2
  212. data/vendor/pygments-main/pygments/lexers/webmisc.py +5 -5
  213. data/vendor/pygments-main/pygments/lexers/whiley.py +1 -2
  214. data/vendor/pygments-main/pygments/lexers/x10.py +2 -3
  215. data/vendor/pygments-main/pygments/lexers/xorg.py +1 -2
  216. data/vendor/pygments-main/pygments/lexers/yang.py +1 -2
  217. data/vendor/pygments-main/pygments/lexers/zig.py +1 -2
  218. data/vendor/pygments-main/pygments/modeline.py +1 -2
  219. data/vendor/pygments-main/pygments/plugin.py +2 -3
  220. data/vendor/pygments-main/pygments/regexopt.py +1 -2
  221. data/vendor/pygments-main/pygments/scanner.py +1 -2
  222. data/vendor/pygments-main/pygments/sphinxext.py +1 -2
  223. data/vendor/pygments-main/pygments/style.py +3 -4
  224. data/vendor/pygments-main/pygments/styles/__init__.py +3 -2
  225. data/vendor/pygments-main/pygments/styles/abap.py +1 -2
  226. data/vendor/pygments-main/pygments/styles/algol.py +1 -2
  227. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -2
  228. data/vendor/pygments-main/pygments/styles/arduino.py +1 -2
  229. data/vendor/pygments-main/pygments/styles/autumn.py +1 -2
  230. data/vendor/pygments-main/pygments/styles/borland.py +1 -2
  231. data/vendor/pygments-main/pygments/styles/bw.py +1 -2
  232. data/vendor/pygments-main/pygments/styles/colorful.py +1 -2
  233. data/vendor/pygments-main/pygments/styles/default.py +1 -2
  234. data/vendor/pygments-main/pygments/styles/emacs.py +1 -2
  235. data/vendor/pygments-main/pygments/styles/friendly.py +1 -2
  236. data/vendor/pygments-main/pygments/styles/fruity.py +1 -2
  237. data/vendor/pygments-main/pygments/styles/igor.py +1 -2
  238. data/vendor/pygments-main/pygments/styles/inkpot.py +1 -2
  239. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -2
  240. data/vendor/pygments-main/pygments/styles/manni.py +1 -2
  241. data/vendor/pygments-main/pygments/styles/material.py +118 -0
  242. data/vendor/pygments-main/pygments/styles/monokai.py +1 -2
  243. data/vendor/pygments-main/pygments/styles/murphy.py +1 -2
  244. data/vendor/pygments-main/pygments/styles/native.py +1 -2
  245. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -2
  246. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -2
  247. data/vendor/pygments-main/pygments/styles/pastie.py +1 -2
  248. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
  249. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +1 -2
  250. data/vendor/pygments-main/pygments/styles/rrt.py +1 -2
  251. data/vendor/pygments-main/pygments/styles/sas.py +1 -2
  252. data/vendor/pygments-main/pygments/styles/solarized.py +4 -2
  253. data/vendor/pygments-main/pygments/styles/stata_dark.py +1 -2
  254. data/vendor/pygments-main/pygments/styles/stata_light.py +1 -2
  255. data/vendor/pygments-main/pygments/styles/tango.py +1 -2
  256. data/vendor/pygments-main/pygments/styles/trac.py +1 -2
  257. data/vendor/pygments-main/pygments/styles/vim.py +1 -2
  258. data/vendor/pygments-main/pygments/styles/vs.py +1 -2
  259. data/vendor/pygments-main/pygments/styles/xcode.py +1 -2
  260. data/vendor/pygments-main/pygments/styles/zenburn.py +80 -0
  261. data/vendor/pygments-main/pygments/token.py +1 -2
  262. data/vendor/pygments-main/pygments/unistring.py +1 -2
  263. data/vendor/pygments-main/pygments/util.py +2 -5
  264. metadata +21 -14
  265. data/vendor/pygments-main/Pygments-2.7.3.dist-info/RECORD +0 -482
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.inferno
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for Inferno os and all the related stuff.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.installers
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for installer/packager DSLs and formats.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.int_fiction
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for interactive fiction languages.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.iolang
4
3
  ~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for the Io language.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -37,7 +36,7 @@ class IoLexer(RegexLexer):
37
36
  (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),
38
37
  (r'/\+', Comment.Multiline, 'nestedcomment'),
39
38
  # DoubleQuotedString
40
- (r'"(\\\\|\\"|[^"])*"', String),
39
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
41
40
  # Operators
42
41
  (r'::=|:=|=|\(|\)|;|,|\*|-|\+|>|<|@|!|/|\||\^|\.|%|&|\[|\]|\{|\}',
43
42
  Operator),
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.j
4
3
  ~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexer for the J programming language.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -89,7 +88,7 @@ class JLexer(RegexLexer):
89
88
  (r'=[.:]', Operator),
90
89
 
91
90
  # Builtins
92
- (r'[-=+*#$%@!~`^&";:.,<>{}\[\]\\|/]', Operator),
91
+ (r'[-=+*#$%@!~`^&";:.,<>{}\[\]\\|/?]', Operator),
93
92
 
94
93
  # Short Keywords
95
94
  (r'[abCdDeEfHiIjLMoprtT]\.', Keyword.Reserved),
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.javascript
4
3
  ~~~~~~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for JavaScript and related languages.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -53,7 +52,7 @@ class JavascriptLexer(RegexLexer):
53
52
  'slashstartsregex': [
54
53
  include('commentsandwhitespace'),
55
54
  (r'/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
56
- r'([gimuy]+\b|\B)', String.Regex, '#pop'),
55
+ r'([gimuys]+\b|\B)', String.Regex, '#pop'),
57
56
  (r'(?=/)', Text, ('#pop', 'badregex')),
58
57
  default('#pop')
59
58
  ],
@@ -67,7 +66,7 @@ class JavascriptLexer(RegexLexer):
67
66
 
68
67
  # Numeric literals
69
68
  (r'0[bB][01]+n?', Number.Bin),
70
- (r'0[oO]?[0-7]+n?', Number.Oct), # Browsers support "0o7" and "07" notations
69
+ (r'0[oO]?[0-7]+n?', Number.Oct), # Browsers support "0o7" and "07" (< ES5) notations
71
70
  (r'0[xX][0-9a-fA-F]+n?', Number.Hex),
72
71
  (r'[0-9]+n', Number.Integer), # Javascript BigInt requires an "n" postfix
73
72
  # Javascript doesn't have actual integer literals, so every other
@@ -82,27 +81,25 @@ class JavascriptLexer(RegexLexer):
82
81
  (r'[})\].]', Punctuation),
83
82
  (r'(for|in|while|do|break|return|continue|switch|case|default|if|else|'
84
83
  r'throw|try|catch|finally|new|delete|typeof|instanceof|void|yield|await|async|'
85
- r'this|of)\b', Keyword, 'slashstartsregex'),
86
- (r'(var|let|with|function)\b', Keyword.Declaration, 'slashstartsregex'),
87
- (r'(abstract|boolean|byte|char|class|const|debugger|double|enum|export|'
88
- r'extends|final|float|goto|implements|import|int|interface|long|native|'
89
- r'package|private|protected|public|short|static|super|synchronized|throws|'
90
- r'transient|volatile)\b', Keyword.Reserved),
84
+ r'this|of|static|export|import|debugger|extends|super)\b', Keyword, 'slashstartsregex'),
85
+ (r'(var|let|const|with|function|class)\b', Keyword.Declaration, 'slashstartsregex'),
86
+ (r'(abstract|boolean|byte|char|double|enum|final|float|goto'
87
+ r'implements|int|interface|long|native|package|private|protected'
88
+ r'public|short|synchronized|throws|transient|volatile)\b', Keyword.Reserved),
91
89
  (r'(true|false|null|NaN|Infinity|undefined)\b', Keyword.Constant),
92
- (r'(Array|Boolean|Date|Error|Function|Math|netscape|'
93
- r'Number|Object|Packages|RegExp|String|Promise|Proxy|sun|decodeURI|'
90
+ (r'(Array|Boolean|Date|BigInt|Error|Function|Math|'
91
+ r'Number|Object|RegExp|String|Promise|Proxy|decodeURI|'
94
92
  r'decodeURIComponent|encodeURI|encodeURIComponent|'
95
93
  r'Error|eval|isFinite|isNaN|isSafeInteger|parseFloat|parseInt|'
96
- r'document|this|window)\b', Name.Builtin),
94
+ r'document|this|window|globalThis|Symbol)\b', Name.Builtin),
97
95
  (JS_IDENT, Name.Other),
98
- (r'"(\\\\|\\"|[^"])*"', String.Double),
99
- (r"'(\\\\|\\'|[^'])*'", String.Single),
96
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
97
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
100
98
  (r'`', String.Backtick, 'interp'),
101
99
  ],
102
100
  'interp': [
103
101
  (r'`', String.Backtick, '#pop'),
104
- (r'\\\\', String.Backtick),
105
- (r'\\`', String.Backtick),
102
+ (r'\\.', String.Backtick),
106
103
  (r'\$\{', String.Interpol, 'interp-inside'),
107
104
  (r'\$', String.Backtick),
108
105
  (r'[^`\\$]+', String.Backtick),
@@ -112,7 +109,6 @@ class JavascriptLexer(RegexLexer):
112
109
  (r'\}', String.Interpol, '#pop'),
113
110
  include('root'),
114
111
  ],
115
- # (\\\\|\\`|[^`])*`', String.Backtick),
116
112
  }
117
113
 
118
114
 
@@ -161,7 +157,7 @@ class KalLexer(RegexLexer):
161
157
  'root': [
162
158
  include('commentsandwhitespace'),
163
159
  (r'/(?! )(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
164
- r'([gim]+\b|\B)', String.Regex),
160
+ r'([gimuys]+\b|\B)', String.Regex),
165
161
  (r'\?|:|_(?=\n)|==?|!=|-(?!>)|[<>+*/-]=?',
166
162
  Operator),
167
163
  (r'\b(and|or|isnt|is|not|but|bitwise|mod|\^|xor|exists|'
@@ -183,13 +179,11 @@ class KalLexer(RegexLexer):
183
179
  (r'(?<![.$])(true|false|yes|no|on|off|null|nothing|none|'
184
180
  r'NaN|Infinity|undefined)\b',
185
181
  Keyword.Constant),
186
- (r'(Array|Boolean|Date|Error|Function|Math|netscape|'
187
- r'Number|Object|Packages|RegExp|String|sun|decodeURI|'
182
+ (r'(Array|Boolean|Date|Error|Function|Math|'
183
+ r'Number|Object|RegExp|String|decodeURI|'
188
184
  r'decodeURIComponent|encodeURI|encodeURIComponent|'
189
185
  r'eval|isFinite|isNaN|isSafeInteger|parseFloat|parseInt|document|'
190
- r'window|'
191
- r'print)\b',
192
- Name.Builtin),
186
+ r'window|globalThis|Symbol|print)\b', Name.Builtin),
193
187
  (r'[$a-zA-Z_][\w.$]*\s*(:|[+\-*/]?\=)?\b', Name.Variable),
194
188
  (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
195
189
  (r'0x[0-9a-fA-F]+', Number.Hex),
@@ -256,7 +250,7 @@ class LiveScriptLexer(RegexLexer):
256
250
  ],
257
251
  'multilineregex': [
258
252
  include('commentsandwhitespace'),
259
- (r'//([gim]+\b|\B)', String.Regex, '#pop'),
253
+ (r'//([gimuys]+\b|\B)', String.Regex, '#pop'),
260
254
  (r'/', String.Regex),
261
255
  (r'[^/#]+', String.Regex)
262
256
  ],
@@ -264,7 +258,7 @@ class LiveScriptLexer(RegexLexer):
264
258
  include('commentsandwhitespace'),
265
259
  (r'//', String.Regex, ('#pop', 'multilineregex')),
266
260
  (r'/(?! )(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
267
- r'([gim]+\b|\B)', String.Regex, '#pop'),
261
+ r'([gimuys]+\b|\B)', String.Regex, '#pop'),
268
262
  (r'/', Operator, '#pop'),
269
263
  default('#pop'),
270
264
  ],
@@ -288,11 +282,11 @@ class LiveScriptLexer(RegexLexer):
288
282
  (r'(?<![.$])(true|false|yes|no|on|off|'
289
283
  r'null|NaN|Infinity|undefined|void)\b',
290
284
  Keyword.Constant),
291
- (r'(Array|Boolean|Date|Error|Function|Math|netscape|'
292
- r'Number|Object|Packages|RegExp|String|sun|decodeURI|'
285
+ (r'(Array|Boolean|Date|Error|Function|Math|'
286
+ r'Number|Object|RegExp|String|decodeURI|'
293
287
  r'decodeURIComponent|encodeURI|encodeURIComponent|'
294
- r'eval|isFinite|isNaN|parseFloat|parseInt|document|window)\b',
295
- Name.Builtin),
288
+ r'eval|isFinite|isNaN|parseFloat|parseInt|document|window|'
289
+ r'globalThis|Symbol|Symbol|BigInt)\b', Name.Builtin),
296
290
  (r'[$a-zA-Z_][\w.\-:$]*\s*[:=]\s', Name.Variable,
297
291
  'slashstartsregex'),
298
292
  (r'@[$a-zA-Z_][\w.\-:$]*\s*[:=]\s', Name.Variable.Instance,
@@ -475,7 +469,7 @@ class TypeScriptLexer(RegexLexer):
475
469
  'slashstartsregex': [
476
470
  include('commentsandwhitespace'),
477
471
  (r'/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
478
- r'([gim]+\b|\B)', String.Regex, '#pop'),
472
+ r'([gimuys]+\b|\B)', String.Regex, '#pop'),
479
473
  (r'(?=/)', Text, ('#pop', 'badregex')),
480
474
  default('#pop')
481
475
  ],
@@ -491,18 +485,19 @@ class TypeScriptLexer(RegexLexer):
491
485
  (r'[})\].]', Punctuation),
492
486
  (r'(for|in|while|do|break|return|continue|switch|case|default|if|else|'
493
487
  r'throw|try|catch|finally|new|delete|typeof|instanceof|void|of|'
494
- r'this)\b', Keyword, 'slashstartsregex'),
495
- (r'(var|let|with|function)\b', Keyword.Declaration, 'slashstartsregex'),
496
- (r'(abstract|boolean|byte|char|class|const|debugger|double|enum|export|'
497
- r'extends|final|float|goto|implements|import|int|interface|long|native|'
498
- r'package|private|protected|public|short|static|super|synchronized|throws|'
499
- r'transient|volatile)\b', Keyword.Reserved),
488
+ r'this|async|await|debugger|yield|abstract|static|import|export|'
489
+ r'implements|super|extends|private|protected|public|readonly)\b',
490
+ Keyword, 'slashstartsregex'),
491
+ (r'(var|let|const|with|function|class|type|enum|interface)\b',
492
+ Keyword.Declaration, 'slashstartsregex'),
493
+ (r'(boolean|byte|char|double|final|float|goto|int|long|native|'
494
+ r'package|short|synchronized|throws|transient|volatile)\b', Keyword.Reserved),
500
495
  (r'(true|false|null|NaN|Infinity|undefined)\b', Keyword.Constant),
501
- (r'(Array|Boolean|Date|Error|Function|Math|netscape|'
502
- r'Number|Object|Packages|RegExp|String|sun|decodeURI|'
496
+ (r'(Array|Boolean|Date|Error|Function|Math|'
497
+ r'Number|Object|RegExp|String|decodeURI|'
503
498
  r'decodeURIComponent|encodeURI|encodeURIComponent|'
504
499
  r'Error|eval|isFinite|isNaN|parseFloat|parseInt|document|this|'
505
- r'window)\b', Name.Builtin),
500
+ r'window|globalThis|Symbol|BigInt)\b', Name.Builtin),
506
501
  # Match stuff like: module name {...}
507
502
  (r'\b(module)(\s*)(\s*[\w?.$][\w?.$]*)(\s*)',
508
503
  bygroups(Keyword.Reserved, Text, Name.Other, Text), 'slashstartsregex'),
@@ -514,16 +509,18 @@ class TypeScriptLexer(RegexLexer):
514
509
  (r'(super)(\s*)(\([\w,?.$\s]+\s*\))',
515
510
  bygroups(Keyword.Reserved, Text), 'slashstartsregex'),
516
511
  # Match stuff like: function() {...}
517
- (r'([a-zA-Z_?.$][\w?.$]*)\(\) \{', Name.Other, 'slashstartsregex'),
512
+ (r'([a-zA-Z_?.$][\w?.$]*)(?=\(\) \{)', Name.Other, 'slashstartsregex'),
518
513
  # Match stuff like: (function: return type)
519
514
  (r'([\w?.$][\w?.$]*)(\s*:\s*)([\w?.$][\w?.$]*)',
520
515
  bygroups(Name.Other, Text, Keyword.Type)),
521
516
  (r'[$a-zA-Z_]\w*', Name.Other),
522
- (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
523
- (r'0x[0-9a-fA-F]+', Number.Hex),
524
- (r'[0-9]+', Number.Integer),
525
- (r'"(\\\\|\\"|[^"])*"', String.Double),
526
- (r"'(\\\\|\\'|[^'])*'", String.Single),
517
+ (r'0[bB][01]+n?', Number.Bin),
518
+ (r'0[oO]?[0-7]+n?', Number.Oct), # Browsers support "0o7" and "07" (< ES5) notations
519
+ (r'0[xX][0-9a-fA-F]+n?', Number.Hex),
520
+ (r'[0-9]+n', Number.Integer),
521
+ (r'(\.[0-9]+|[0-9]+\.[0-9]*|[0-9]+)([eE][-+]?[0-9]+)?', Number.Float),
522
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
523
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
527
524
  (r'`', String.Backtick, 'interp'),
528
525
  # Match stuff like: Decorators
529
526
  (r'@\w+', Keyword.Declaration),
@@ -533,8 +530,7 @@ class TypeScriptLexer(RegexLexer):
533
530
  # there should be reflected here as well.
534
531
  'interp': [
535
532
  (r'`', String.Backtick, '#pop'),
536
- (r'\\\\', String.Backtick),
537
- (r'\\`', String.Backtick),
533
+ (r'\\.', String.Backtick),
538
534
  (r'\$\{', String.Interpol, 'interp-inside'),
539
535
  (r'\$', String.Backtick),
540
536
  (r'[^`\\$]+', String.Backtick),
@@ -875,8 +871,8 @@ class ObjectiveJLexer(RegexLexer):
875
871
  (r'(L|@)?"', String, 'string'),
876
872
  (r"(L|@)?'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'",
877
873
  String.Char),
878
- (r'"(\\\\|\\"|[^"])*"', String.Double),
879
- (r"'(\\\\|\\'|[^'])*'", String.Single),
874
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
875
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
880
876
  (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?', Number.Float),
881
877
  (r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),
882
878
  (r'0x[0-9a-fA-F]+[Ll]?', Number.Hex),
@@ -913,11 +909,11 @@ class ObjectiveJLexer(RegexLexer):
913
909
  r'MIN|MAX|RAND|SQRT|E|LN2|LN10|LOG2E|LOG10E|PI|PI2|PI_2|SQRT1_2|'
914
910
  r'SQRT2)\b', Keyword.Constant),
915
911
 
916
- (r'(Array|Boolean|Date|Error|Function|Math|netscape|'
917
- r'Number|Object|Packages|RegExp|String|sun|decodeURI|'
912
+ (r'(Array|Boolean|Date|Error|Function|Math|'
913
+ r'Number|Object|RegExp|String|decodeURI|'
918
914
  r'decodeURIComponent|encodeURI|encodeURIComponent|'
919
915
  r'Error|eval|isFinite|isNaN|parseFloat|parseInt|document|this|'
920
- r'window)\b', Name.Builtin),
916
+ r'window|globalThis|Symbol)\b', Name.Builtin),
921
917
 
922
918
  (r'([$a-zA-Z_]\w*)(' + _ws + r')(?=\()',
923
919
  bygroups(Name.Function, using(this))),
@@ -1055,7 +1051,7 @@ class CoffeeScriptLexer(RegexLexer):
1055
1051
  ],
1056
1052
  'multilineregex': [
1057
1053
  (r'[^/#]+', String.Regex),
1058
- (r'///([gim]+\b|\B)', String.Regex, '#pop'),
1054
+ (r'///([gimuys]+\b|\B)', String.Regex, '#pop'),
1059
1055
  (r'#\{', String.Interpol, 'interpoling_string'),
1060
1056
  (r'[/#]', String.Regex),
1061
1057
  ],
@@ -1063,7 +1059,7 @@ class CoffeeScriptLexer(RegexLexer):
1063
1059
  include('commentsandwhitespace'),
1064
1060
  (r'///', String.Regex, ('#pop', 'multilineregex')),
1065
1061
  (r'/(?! )(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
1066
- r'([gim]+\b|\B)', String.Regex, '#pop'),
1062
+ r'([gimuys]+\b|\B)', String.Regex, '#pop'),
1067
1063
  # This isn't really guarding against mishighlighting well-formed
1068
1064
  # code, just the ability to infinite-loop between root and
1069
1065
  # slashstartsregex.
@@ -1085,10 +1081,10 @@ class CoffeeScriptLexer(RegexLexer):
1085
1081
  (r'(?<![.$])(true|false|yes|no|on|off|null|'
1086
1082
  r'NaN|Infinity|undefined)\b',
1087
1083
  Keyword.Constant),
1088
- (r'(Array|Boolean|Date|Error|Function|Math|netscape|'
1089
- r'Number|Object|Packages|RegExp|String|sun|decodeURI|'
1084
+ (r'(Array|Boolean|Date|Error|Function|Math|'
1085
+ r'Number|Object|RegExp|String|decodeURI|'
1090
1086
  r'decodeURIComponent|encodeURI|encodeURIComponent|'
1091
- r'eval|isFinite|isNaN|parseFloat|parseInt|document|window)\b',
1087
+ r'eval|isFinite|isNaN|parseFloat|parseInt|document|window|globalThis|Symbol)\b',
1092
1088
  Name.Builtin),
1093
1089
  (r'[$a-zA-Z_][\w.:$]*\s*[:=]\s', Name.Variable,
1094
1090
  'slashstartsregex'),
@@ -1497,7 +1493,7 @@ class JuttleLexer(RegexLexer):
1497
1493
  'slashstartsregex': [
1498
1494
  include('commentsandwhitespace'),
1499
1495
  (r'/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
1500
- r'([gim]+\b|\B)', String.Regex, '#pop'),
1496
+ r'([gimuys]+\b|\B)', String.Regex, '#pop'),
1501
1497
  (r'(?=/)', Text, ('#pop', 'badregex')),
1502
1498
  default('#pop')
1503
1499
  ],
@@ -1533,8 +1529,8 @@ class JuttleLexer(RegexLexer):
1533
1529
  (JS_IDENT, Name.Other),
1534
1530
  (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
1535
1531
  (r'[0-9]+', Number.Integer),
1536
- (r'"(\\\\|\\"|[^"])*"', String.Double),
1537
- (r"'(\\\\|\\'|[^'])*'", String.Single)
1532
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
1533
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
1538
1534
  ]
1539
1535
 
1540
1536
  }
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.julia
4
3
  ~~~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Lexers for the Julia language.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  pygments.lexers.jvm
4
3
  ~~~~~~~~~~~~~~~~~~~
5
4
 
6
5
  Pygments lexers for JVM languages.
7
6
 
8
- :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
9
8
  :license: BSD, see LICENSE for details.
10
9
  """
11
10
 
@@ -292,12 +291,12 @@ class ScalaLexer(RegexLexer):
292
291
  (r'(import|package)(\s+)', bygroups(Keyword, Text), 'import'),
293
292
  (r'(type)(\s+)', bygroups(Keyword, Text), 'type'),
294
293
  (r'""".*?"""(?!")', String),
295
- (r'"(\\\\|\\"|[^"])*"', String),
294
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
296
295
  (r"'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'", String.Char),
297
296
  (r"'%s" % idrest, Text.Symbol),
298
297
  (r'[fs]"""', String, 'interptriplestring'), # interpolated strings
299
298
  (r'[fs]"', String, 'interpstring'), # interpolated strings
300
- (r'raw"(\\\\|\\"|[^"])*"', String), # raw strings
299
+ (r'raw"(\\\\|\\[^\\]|[^"\\])*"', String), # raw strings
301
300
  # (r'(\.)(%s|%s|`[^`]+`)' % (idrest, op), bygroups(Operator,
302
301
  # Name.Attribute)),
303
302
  (idrest, Name),
@@ -522,10 +521,10 @@ class GroovyLexer(RegexLexer):
522
521
  (r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
523
522
  (r'""".*?"""', String.Double),
524
523
  (r"'''.*?'''", String.Single),
525
- (r'"(\\\\|\\"|[^"])*"', String.Double),
526
- (r"'(\\\\|\\'|[^'])*'", String.Single),
524
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
525
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
527
526
  (r'\$/((?!/\$).)*/\$', String),
528
- (r'/(\\\\|\\"|[^/])*/', String),
527
+ (r'/(\\\\|\\[^\\]|[^/\\])*/', String),
529
528
  (r"'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'", String.Char),
530
529
  (r'(\.)([a-zA-Z_]\w*)', bygroups(Operator, Name.Attribute)),
531
530
  (r'[a-zA-Z_]\w*:', Name.Label),
@@ -618,7 +617,7 @@ class IokeLexer(RegexLexer):
618
617
  # Symbols
619
618
  (r':[\w!:?]+', String.Symbol),
620
619
  (r'[\w!:?]+:(?![\w!?])', String.Other),
621
- (r':"(\\\\|\\"|[^"])*"', String.Symbol),
620
+ (r':"(\\\\|\\[^\\]|[^"\\])*"', String.Symbol),
622
621
 
623
622
  # Documentation
624
623
  (r'((?<=fn\()|(?<=fnx\()|(?<=method\()|(?<=macro\()|(?<=lecro\()'
@@ -836,7 +835,7 @@ class ClojureLexer(RegexLexer):
836
835
  (r'0x-?[abcdef\d]+', Number.Hex),
837
836
 
838
837
  # strings, symbols and characters
839
- (r'"(\\\\|\\"|[^"])*"', String),
838
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
840
839
  (r"'" + valid_name, String.Symbol),
841
840
  (r"\\(.|[a-z]+)", String.Char),
842
841
 
@@ -917,8 +916,8 @@ class TeaLangLexer(RegexLexer):
917
916
  (r'(true|false|null)\b', Keyword.Constant),
918
917
  (r'(template)(\s+)', bygroups(Keyword.Declaration, Text), 'template'),
919
918
  (r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
920
- (r'"(\\\\|\\"|[^"])*"', String),
921
- (r'\'(\\\\|\\\'|[^\'])*\'', String),
919
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
920
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
922
921
  (r'(\.)([a-zA-Z_]\w*)', bygroups(Operator, Name.Attribute)),
923
922
  (r'[a-zA-Z_]\w*:', Name.Label),
924
923
  (r'[a-zA-Z_\$]\w*', Name),
@@ -979,9 +978,8 @@ class CeylonLexer(RegexLexer):
979
978
  (r'(class|interface|object|alias)(\s+)',
980
979
  bygroups(Keyword.Declaration, Text), 'class'),
981
980
  (r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
982
- (r'"(\\\\|\\"|[^"])*"', String),
981
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String),
983
982
  (r"'\\.'|'[^\\]'|'\\\{#[0-9a-fA-F]{4}\}'", String.Char),
984
- (r'".*``.*``.*"', String.Interpol),
985
983
  (r'(\.)([a-z_]\w*)',
986
984
  bygroups(Operator, Name.Attribute)),
987
985
  (r'[a-zA-Z_]\w*:', Name.Label),
@@ -1038,74 +1036,137 @@ class KotlinLexer(RegexLexer):
1038
1036
 
1039
1037
  kt_space_name = ('@?[_' + uni.combine('Lu', 'Ll', 'Lt', 'Lm', 'Nl') + ']' +
1040
1038
  '[' + uni.combine('Lu', 'Ll', 'Lt', 'Lm', 'Nl', 'Nd', 'Pc', 'Cf',
1041
- 'Mn', 'Mc', 'Zs') + ',-]*')
1039
+ 'Mn', 'Mc', 'Zs')
1040
+ + r'\'~!%^&*()+=|\[\]:;,.<>/\?-]*')
1042
1041
 
1043
1042
  kt_id = '(' + kt_name + '|`' + kt_space_name + '`)'
1044
1043
 
1044
+ modifiers = (r'actual|abstract|annotation|companion|const|crossinline|'
1045
+ r'data|enum|expect|external|final|infix|inline|inner|'
1046
+ r'internal|lateinit|noinline|open|operator|override|private|'
1047
+ r'protected|public|sealed|suspend|tailrec')
1048
+
1045
1049
  tokens = {
1046
1050
  'root': [
1047
- (r'^\s*\[.*?\]', Name.Attribute),
1051
+ # Whitespaces
1048
1052
  (r'[^\S\n]+', Text),
1049
1053
  (r'\s+', Text),
1050
1054
  (r'\\\n', Text), # line continuation
1055
+ (r'\n', Text),
1056
+ # Comments
1051
1057
  (r'//.*?\n', Comment.Single),
1052
1058
  (r'^#!/.+?\n', Comment.Single), # shebang for kotlin scripts
1053
1059
  (r'/[*].*?[*]/', Comment.Multiline),
1054
- (r'""".*?"""', String),
1055
- (r'\n', Text),
1060
+ # Keywords
1061
+ (r'as\?', Keyword),
1062
+ (r'(as|break|by|catch|constructor|continue|do|dynamic|else|finally|'
1063
+ r'get|for|if|init|[!]*in|[!]*is|out|reified|return|set|super|this|'
1064
+ r'throw|try|typealias|typeof|vararg|when|where|while)\b', Keyword),
1065
+ (r'it\b', Name.Builtin),
1066
+ # Built-in types
1067
+ (words(('Boolean?', 'Byte?', 'Char?', 'Double?', 'Float?',
1068
+ 'Int?', 'Long?', 'Short?', 'String?', 'Any?', 'Unit?')), Keyword.Type),
1069
+ (words(('Boolean', 'Byte', 'Char', 'Double', 'Float',
1070
+ 'Int', 'Long', 'Short', 'String', 'Any', 'Unit'), suffix=r'\b'), Keyword.Type),
1071
+ # Constants
1072
+ (r'(true|false|null)\b', Keyword.Constant),
1073
+ # Imports
1074
+ (r'(package|import)(\s+)(\S+)', bygroups(Keyword, Text, Name.Namespace)),
1075
+ # Dot access
1076
+ (r'(\?\.)((?:[^\W\d]|\$)[\w$]*)', bygroups(Operator, Name.Attribute)),
1077
+ (r'(\.)((?:[^\W\d]|\$)[\w$]*)', bygroups(Punctuation, Name.Attribute)),
1078
+ # Annotations
1079
+ (r'@[^\W\d][\w.]*', Name.Decorator),
1080
+ # Labels
1081
+ (r'[^\W\d][\w.]+@', Name.Decorator),
1082
+ # Object expression
1083
+ (r'(object)(\s+)(:)(\s+)', bygroups(Keyword, Text, Punctuation, Text), 'class'),
1084
+ # Types
1085
+ (r'((?:(?:' + modifiers + r'|fun)\s+)*)(class|interface|object)(\s+)',
1086
+ bygroups(using(this, state='modifiers'), Keyword.Declaration, Text), 'class'),
1087
+ # Variables
1088
+ (r'(var|val)(\s+)(\()', bygroups(Keyword.Declaration, Text, Punctuation),
1089
+ 'destructuring_assignment'),
1090
+ (r'((?:(?:' + modifiers + r')\s+)*)(var|val)(\s+)',
1091
+ bygroups(using(this, state='modifiers'), Keyword.Declaration, Text), 'variable'),
1092
+ # Functions
1093
+ (r'((?:(?:' + modifiers + r')\s+)*)(fun)(\s+)',
1094
+ bygroups(using(this, state='modifiers'), Keyword.Declaration, Text), 'function'),
1095
+ # Operators
1056
1096
  (r'::|!!|\?[:.]', Operator),
1057
- (r'[~!%^&*()+=|\[\]:;,.<>/?-]', Punctuation),
1058
- (r'[{}]', Punctuation),
1059
- (r'@"(""|[^"])*"', String),
1060
- (r'"(\\\\|\\"|[^"\n])*["\n]', String),
1097
+ (r'[~^*!%&\[\]<>|+=/?-]', Operator),
1098
+ # Punctuation
1099
+ (r'[{}();:.,]', Punctuation),
1100
+ # Strings
1101
+ (r'"""', String, 'multiline_string'),
1102
+ (r'"', String, 'string'),
1061
1103
  (r"'\\.'|'[^\\]'", String.Char),
1104
+ # Numbers
1062
1105
  (r"[0-9](\.[0-9]*)?([eE][+-][0-9]+)?[flFL]?|"
1063
1106
  r"0[xX][0-9a-fA-F]+[Ll]?", Number),
1064
- (r'(object)(\s+)(:)(\s+)', bygroups(Keyword, Text, Punctuation, Text), 'class'),
1065
- (r'(companion)(\s+)(object)', bygroups(Keyword, Text, Keyword)),
1066
- (r'(class|interface|object)(\s+)', bygroups(Keyword, Text), 'class'),
1067
- (r'(package|import)(\s+)', bygroups(Keyword, Text), 'package'),
1068
- (r'(val|var)(\s+)([(])', bygroups(Keyword, Text, Punctuation), 'property_dec'),
1069
- (r'(val|var)(\s+)', bygroups(Keyword, Text), 'property'),
1070
- (r'(fun)(\s+)', bygroups(Keyword, Text), 'function'),
1071
- (r'(inline fun)(\s+)', bygroups(Keyword, Text), 'function'),
1072
- (r'(abstract|annotation|as|break|by|catch|class|companion|const|'
1073
- r'constructor|continue|crossinline|data|do|dynamic|else|enum|'
1074
- r'external|false|final|finally|for|fun|get|if|import|in|infix|'
1075
- r'inline|inner|interface|internal|is|lateinit|noinline|null|'
1076
- r'object|open|operator|out|override|package|private|protected|'
1077
- r'public|reified|return|sealed|set|super|tailrec|this|throw|'
1078
- r'true|try|val|var|vararg|when|where|while)\b', Keyword),
1079
- (kt_id, Name),
1080
- ],
1081
- 'package': [
1082
- (r'\S+', Name.Namespace, '#pop')
1107
+ # Identifiers
1108
+ (r'' + kt_id + r'((\?[^.])?)', Name) # additionally handle nullable types
1083
1109
  ],
1084
1110
  'class': [
1085
1111
  (kt_id, Name.Class, '#pop')
1086
1112
  ],
1087
- 'property': [
1088
- (kt_id, Name.Property, '#pop')
1113
+ 'variable': [
1114
+ (kt_id, Name.Variable, '#pop')
1089
1115
  ],
1090
- 'property_dec': [
1091
- (r'(,)(\s*)', bygroups(Punctuation, Text)),
1092
- (r'(:)(\s*)', bygroups(Punctuation, Text)),
1093
- (r'<', Punctuation, 'generic'),
1094
- (r'([)])', Punctuation, '#pop'),
1095
- (kt_id, Name.Property)
1116
+ 'destructuring_assignment': [
1117
+ (r',', Punctuation),
1118
+ (r'\s+', Text),
1119
+ (kt_id, Name.Variable),
1120
+ (r'(:)(\s+)(' + kt_id + ')', bygroups(Punctuation, Text, Name)),
1121
+ (r'<', Operator, 'generic'),
1122
+ (r'\)', Punctuation, '#pop')
1096
1123
  ],
1097
1124
  'function': [
1098
- (r'<', Punctuation, 'generic'),
1099
- (r''+kt_id+'([.])'+kt_id, bygroups(Name.Class, Punctuation, Name.Function), '#pop'),
1125
+ (r'<', Operator, 'generic'),
1126
+ (r'' + kt_id + r'(\.)' + kt_id, bygroups(Name, Punctuation, Name.Function), '#pop'),
1100
1127
  (kt_id, Name.Function, '#pop')
1101
1128
  ],
1102
1129
  'generic': [
1103
- (r'(>)(\s*)', bygroups(Punctuation, Text), '#pop'),
1104
- (r':',Punctuation),
1130
+ (r'(>)(\s*)', bygroups(Operator, Text), '#pop'),
1131
+ (r':', Punctuation),
1105
1132
  (r'(reified|out|in)\b', Keyword),
1106
- (r',',Text),
1107
- (r'\s+',Text),
1108
- (kt_id,Name)
1133
+ (r',', Punctuation),
1134
+ (r'\s+', Text),
1135
+ (kt_id, Name)
1136
+ ],
1137
+ 'modifiers': [
1138
+ (r'\w+', Keyword.Declaration),
1139
+ (r'\s+', Text),
1140
+ default('#pop')
1141
+ ],
1142
+ 'string': [
1143
+ (r'"', String, '#pop'),
1144
+ include('string_common')
1145
+ ],
1146
+ 'multiline_string': [
1147
+ (r'"""', String, '#pop'),
1148
+ (r'"', String),
1149
+ include('string_common')
1150
+ ],
1151
+ 'string_common': [
1152
+ (r'\\\\', String), # escaped backslash
1153
+ (r'\\"', String), # escaped quote
1154
+ (r'\\', String), # bare backslash
1155
+ (r'\$\{', String.Interpol, 'interpolation'),
1156
+ (r'(\$)(\w+)', bygroups(String.Interpol, Name)),
1157
+ (r'[^\\"$]+', String)
1158
+ ],
1159
+ 'interpolation': [
1160
+ (r'"', String),
1161
+ (r'\$\{', String.Interpol, 'interpolation'),
1162
+ (r'\{', Punctuation, 'scope'),
1163
+ (r'\}', String.Interpol, '#pop'),
1164
+ include('root')
1165
+ ],
1166
+ 'scope': [
1167
+ (r'\{', Punctuation, 'scope'),
1168
+ (r'\}', Punctuation, '#pop'),
1169
+ include('root')
1109
1170
  ]
1110
1171
  }
1111
1172
 
@@ -1151,8 +1212,8 @@ class XtendLexer(RegexLexer):
1151
1212
  (r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
1152
1213
  (r"(''')", String, 'template'),
1153
1214
  (r'(\u00BB)', String, 'template'),
1154
- (r'"(\\\\|\\"|[^"])*"', String),
1155
- (r"'(\\\\|\\'|[^'])*'", String),
1215
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
1216
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
1156
1217
  (r'[a-zA-Z_]\w*:', Name.Label),
1157
1218
  (r'[a-zA-Z_$]\w*', Name),
1158
1219
  (r'[~^*!%&\[\](){}<>\|+=:;,./?-]', Operator),
@@ -1620,54 +1681,59 @@ class JasminLexer(RegexLexer):
1620
1681
 
1621
1682
 
1622
1683
  class SarlLexer(RegexLexer):
1623
- """
1624
- For `SARL <http://www.sarl.io>`_ source code.
1625
-
1626
- .. versionadded:: 2.4
1627
- """
1628
-
1629
- name = 'SARL'
1630
- aliases = ['sarl']
1631
- filenames = ['*.sarl']
1632
- mimetypes = ['text/x-sarl']
1633
-
1634
- flags = re.MULTILINE | re.DOTALL
1635
-
1636
- tokens = {
1637
- 'root': [
1638
- # method names
1639
- (r'^(\s*(?:[a-zA-Z_][\w.\[\]]*\s+)+?)' # return arguments
1640
- r'([a-zA-Z_$][\w$]*)' # method name
1641
- r'(\s*)(\()', # signature start
1642
- bygroups(using(this), Name.Function, Text, Operator)),
1643
- (r'[^\S\n]+', Text),
1644
- (r'//.*?\n', Comment.Single),
1645
- (r'/\*.*?\*/', Comment.Multiline),
1646
- (r'@[a-zA-Z_][\w.]*', Name.Decorator),
1647
- (r'(as|break|case|catch|default|do|else|extends|extension|finally|fires|for|if|implements|instanceof|new|on|requires|return|super|switch|throw|throws|try|typeof|uses|while|with)\b',
1648
- Keyword),
1649
- (r'(abstract|def|dispatch|final|native|override|private|protected|public|static|strictfp|synchronized|transient|val|var|volatile)\b', Keyword.Declaration),
1650
- (r'(boolean|byte|char|double|float|int|long|short|void)\b',
1651
- Keyword.Type),
1652
- (r'(package)(\s+)', bygroups(Keyword.Namespace, Text)),
1653
- (r'(false|it|null|occurrence|this|true|void)\b', Keyword.Constant),
1654
- (r'(agent|annotation|artifact|behavior|capacity|class|enum|event|interface|skill|space)(\s+)', bygroups(Keyword.Declaration, Text),
1655
- 'class'),
1656
- (r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
1657
- (r'"(\\\\|\\"|[^"])*"', String),
1658
- (r"'(\\\\|\\'|[^'])*'", String),
1659
- (r'[a-zA-Z_]\w*:', Name.Label),
1660
- (r'[a-zA-Z_$]\w*', Name),
1661
- (r'[~^*!%&\[\](){}<>\|+=:;,./?-]', Operator),
1662
- (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
1663
- (r'0x[0-9a-fA-F]+', Number.Hex),
1664
- (r'[0-9]+L?', Number.Integer),
1665
- (r'\n', Text)
1666
- ],
1667
- 'class': [
1668
- (r'[a-zA-Z_]\w*', Name.Class, '#pop')
1669
- ],
1670
- 'import': [
1671
- (r'[\w.]+\*?', Name.Namespace, '#pop')
1672
- ],
1673
- }
1684
+ """
1685
+ For `SARL <http://www.sarl.io>`_ source code.
1686
+
1687
+ .. versionadded:: 2.4
1688
+ """
1689
+
1690
+ name = 'SARL'
1691
+ aliases = ['sarl']
1692
+ filenames = ['*.sarl']
1693
+ mimetypes = ['text/x-sarl']
1694
+
1695
+ flags = re.MULTILINE | re.DOTALL
1696
+
1697
+ tokens = {
1698
+ 'root': [
1699
+ # method names
1700
+ (r'^(\s*(?:[a-zA-Z_][\w.\[\]]*\s+)+?)' # return arguments
1701
+ r'([a-zA-Z_$][\w$]*)' # method name
1702
+ r'(\s*)(\()', # signature start
1703
+ bygroups(using(this), Name.Function, Text, Operator)),
1704
+ (r'[^\S\n]+', Text),
1705
+ (r'//.*?\n', Comment.Single),
1706
+ (r'/\*.*?\*/', Comment.Multiline),
1707
+ (r'@[a-zA-Z_][\w.]*', Name.Decorator),
1708
+ (r'(as|break|case|catch|default|do|else|extends|extension|finally|'
1709
+ r'fires|for|if|implements|instanceof|new|on|requires|return|super|'
1710
+ r'switch|throw|throws|try|typeof|uses|while|with)\b',
1711
+ Keyword),
1712
+ (r'(abstract|def|dispatch|final|native|override|private|protected|'
1713
+ r'public|static|strictfp|synchronized|transient|val|var|volatile)\b',
1714
+ Keyword.Declaration),
1715
+ (r'(boolean|byte|char|double|float|int|long|short|void)\b',
1716
+ Keyword.Type),
1717
+ (r'(package)(\s+)', bygroups(Keyword.Namespace, Text)),
1718
+ (r'(false|it|null|occurrence|this|true|void)\b', Keyword.Constant),
1719
+ (r'(agent|annotation|artifact|behavior|capacity|class|enum|event|'
1720
+ r'interface|skill|space)(\s+)', bygroups(Keyword.Declaration, Text),
1721
+ 'class'),
1722
+ (r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
1723
+ (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),
1724
+ (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),
1725
+ (r'[a-zA-Z_]\w*:', Name.Label),
1726
+ (r'[a-zA-Z_$]\w*', Name),
1727
+ (r'[~^*!%&\[\](){}<>\|+=:;,./?-]', Operator),
1728
+ (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
1729
+ (r'0x[0-9a-fA-F]+', Number.Hex),
1730
+ (r'[0-9]+L?', Number.Integer),
1731
+ (r'\n', Text)
1732
+ ],
1733
+ 'class': [
1734
+ (r'[a-zA-Z_]\w*', Name.Class, '#pop')
1735
+ ],
1736
+ 'import': [
1737
+ (r'[\w.]+\*?', Name.Namespace, '#pop')
1738
+ ],
1739
+ }