pygments.rb 0.5.4 → 0.6.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 (267) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +40 -0
  3. data/README.md +3 -0
  4. data/lexers +0 -0
  5. data/lib/pygments/popen.rb +3 -2
  6. data/lib/pygments/version.rb +1 -1
  7. data/pygments.rb.gemspec +2 -1
  8. data/vendor/pygments-main/AUTHORS +20 -1
  9. data/vendor/pygments-main/CHANGES +55 -3
  10. data/vendor/pygments-main/LICENSE +1 -1
  11. data/vendor/pygments-main/MANIFEST.in +1 -1
  12. data/vendor/pygments-main/Makefile +5 -8
  13. data/vendor/pygments-main/REVISION +1 -1
  14. data/vendor/pygments-main/doc/Makefile +153 -0
  15. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  16. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  17. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  18. data/vendor/pygments-main/doc/_templates/docssidebar.html +3 -0
  19. data/vendor/pygments-main/doc/_templates/indexsidebar.html +25 -0
  20. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +98 -0
  21. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  22. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  23. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  24. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  25. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  26. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +401 -0
  27. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +15 -0
  28. data/vendor/pygments-main/doc/conf.py +249 -0
  29. data/vendor/pygments-main/doc/docs/api.rst +316 -0
  30. data/vendor/pygments-main/doc/docs/authors.rst +4 -0
  31. data/vendor/pygments-main/doc/docs/changelog.rst +1 -0
  32. data/vendor/pygments-main/{docs/src/cmdline.txt → doc/docs/cmdline.rst} +9 -11
  33. data/vendor/pygments-main/{docs/src/filterdevelopment.txt → doc/docs/filterdevelopment.rst} +1 -1
  34. data/vendor/pygments-main/{docs/src/filters.txt → doc/docs/filters.rst} +4 -5
  35. data/vendor/pygments-main/{docs/src/formatterdevelopment.txt → doc/docs/formatterdevelopment.rst} +1 -1
  36. data/vendor/pygments-main/{docs/src/formatters.txt → doc/docs/formatters.rst} +6 -6
  37. data/vendor/pygments-main/doc/docs/index.rst +66 -0
  38. data/vendor/pygments-main/{docs/src/integrate.txt → doc/docs/integrate.rst} +3 -7
  39. data/vendor/pygments-main/{docs/src/java.txt → doc/docs/java.rst} +0 -0
  40. data/vendor/pygments-main/{docs/src/lexerdevelopment.txt → doc/docs/lexerdevelopment.rst} +13 -14
  41. data/vendor/pygments-main/{docs/src/lexers.txt → doc/docs/lexers.rst} +7 -5
  42. data/vendor/pygments-main/{docs/src/moinmoin.txt → doc/docs/moinmoin.rst} +0 -0
  43. data/vendor/pygments-main/{docs/src/plugins.txt → doc/docs/plugins.rst} +0 -0
  44. data/vendor/pygments-main/{docs/src/quickstart.txt → doc/docs/quickstart.rst} +22 -19
  45. data/vendor/pygments-main/{docs/src/rstdirective.txt → doc/docs/rstdirective.rst} +0 -0
  46. data/vendor/pygments-main/{docs/src/styles.txt → doc/docs/styles.rst} +2 -2
  47. data/vendor/pygments-main/{docs/src/tokens.txt → doc/docs/tokens.rst} +10 -7
  48. data/vendor/pygments-main/{docs/src/unicode.txt → doc/docs/unicode.rst} +8 -7
  49. data/vendor/pygments-main/doc/download.rst +41 -0
  50. data/vendor/pygments-main/doc/faq.rst +143 -0
  51. data/vendor/pygments-main/doc/index.rst +53 -0
  52. data/vendor/pygments-main/doc/languages.rst +151 -0
  53. data/vendor/pygments-main/doc/make.bat +190 -0
  54. data/vendor/pygments-main/{docs → doc}/pygmentize.1 +0 -0
  55. data/vendor/pygments-main/external/autopygmentize +65 -48
  56. data/vendor/pygments-main/external/markdown-processor.py +15 -15
  57. data/vendor/pygments-main/external/moin-parser.py +1 -1
  58. data/vendor/pygments-main/external/rst-directive.py +2 -3
  59. data/vendor/pygments-main/ez_setup.py +340 -234
  60. data/vendor/pygments-main/pygments/__init__.py +4 -4
  61. data/vendor/pygments-main/pygments/cmdline.py +81 -68
  62. data/vendor/pygments-main/pygments/console.py +1 -1
  63. data/vendor/pygments-main/pygments/filter.py +1 -1
  64. data/vendor/pygments-main/pygments/filters/__init__.py +11 -9
  65. data/vendor/pygments-main/pygments/formatter.py +3 -3
  66. data/vendor/pygments-main/pygments/formatters/__init__.py +5 -3
  67. data/vendor/pygments-main/pygments/formatters/_mapping.py +16 -5
  68. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  69. data/vendor/pygments-main/pygments/formatters/html.py +44 -26
  70. data/vendor/pygments-main/pygments/formatters/img.py +21 -14
  71. data/vendor/pygments-main/pygments/formatters/latex.py +104 -12
  72. data/vendor/pygments-main/pygments/formatters/other.py +53 -6
  73. data/vendor/pygments-main/pygments/formatters/rtf.py +30 -16
  74. data/vendor/pygments-main/pygments/formatters/svg.py +2 -2
  75. data/vendor/pygments-main/pygments/formatters/terminal.py +41 -1
  76. data/vendor/pygments-main/pygments/formatters/terminal256.py +2 -2
  77. data/vendor/pygments-main/pygments/lexer.py +59 -39
  78. data/vendor/pygments-main/pygments/lexers/__init__.py +38 -15
  79. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1 -1
  80. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +15 -15
  81. data/vendor/pygments-main/pygments/lexers/_cocoabuiltins.py +73 -0
  82. data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +11 -1
  83. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +14 -8
  84. data/vendor/pygments-main/pygments/lexers/_mapping.py +81 -30
  85. data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +1 -1
  86. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +1067 -95
  87. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +7 -7
  88. data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +5 -4
  89. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +1 -1
  90. data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +12 -7
  91. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +112 -18
  92. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +1 -1
  93. data/vendor/pygments-main/pygments/lexers/agile.py +644 -382
  94. data/vendor/pygments-main/pygments/lexers/asm.py +66 -29
  95. data/vendor/pygments-main/pygments/lexers/compiled.py +1643 -174
  96. data/vendor/pygments-main/pygments/lexers/dalvik.py +27 -6
  97. data/vendor/pygments-main/pygments/lexers/dotnet.py +45 -33
  98. data/vendor/pygments-main/pygments/lexers/foxpro.py +3 -3
  99. data/vendor/pygments-main/pygments/lexers/functional.py +1510 -570
  100. data/vendor/pygments-main/pygments/lexers/graph.py +81 -0
  101. data/vendor/pygments-main/pygments/lexers/hdl.py +29 -30
  102. data/vendor/pygments-main/pygments/lexers/inferno.py +96 -0
  103. data/vendor/pygments-main/pygments/lexers/jvm.py +622 -207
  104. data/vendor/pygments-main/pygments/lexers/math.py +438 -70
  105. data/vendor/pygments-main/pygments/lexers/other.py +885 -171
  106. data/vendor/pygments-main/pygments/lexers/parsers.py +24 -24
  107. data/vendor/pygments-main/pygments/lexers/qbasic.py +157 -0
  108. data/vendor/pygments-main/pygments/lexers/rdf.py +99 -0
  109. data/vendor/pygments-main/pygments/lexers/shell.py +28 -25
  110. data/vendor/pygments-main/pygments/lexers/special.py +7 -8
  111. data/vendor/pygments-main/pygments/lexers/sql.py +56 -23
  112. data/vendor/pygments-main/pygments/lexers/templates.py +377 -59
  113. data/vendor/pygments-main/pygments/lexers/text.py +208 -46
  114. data/vendor/pygments-main/pygments/lexers/web.py +729 -264
  115. data/vendor/pygments-main/pygments/modeline.py +1 -1
  116. data/vendor/pygments-main/pygments/plugin.py +1 -1
  117. data/vendor/pygments-main/pygments/scanner.py +1 -1
  118. data/vendor/pygments-main/pygments/sphinxext.py +153 -0
  119. data/vendor/pygments-main/pygments/style.py +3 -2
  120. data/vendor/pygments-main/pygments/styles/__init__.py +5 -1
  121. data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
  122. data/vendor/pygments-main/pygments/styles/borland.py +1 -1
  123. data/vendor/pygments-main/pygments/styles/bw.py +1 -1
  124. data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
  125. data/vendor/pygments-main/pygments/styles/default.py +1 -1
  126. data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
  127. data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
  128. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  129. data/vendor/pygments-main/pygments/styles/igor.py +29 -0
  130. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  131. data/vendor/pygments-main/pygments/styles/monokai.py +4 -4
  132. data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
  133. data/vendor/pygments-main/pygments/styles/native.py +1 -1
  134. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +125 -0
  135. data/vendor/pygments-main/pygments/styles/paraiso_light.py +125 -0
  136. data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
  137. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
  138. data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
  139. data/vendor/pygments-main/pygments/styles/tango.py +1 -1
  140. data/vendor/pygments-main/pygments/styles/trac.py +1 -1
  141. data/vendor/pygments-main/pygments/styles/vim.py +1 -1
  142. data/vendor/pygments-main/pygments/styles/vs.py +1 -1
  143. data/vendor/pygments-main/pygments/styles/xcode.py +51 -0
  144. data/vendor/pygments-main/pygments/token.py +4 -1
  145. data/vendor/pygments-main/pygments/unistring.py +6 -5
  146. data/vendor/pygments-main/pygments/util.py +35 -21
  147. data/vendor/pygments-main/scripts/check_sources.py +28 -44
  148. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +5 -4
  149. data/vendor/pygments-main/scripts/find_codetags.py +27 -19
  150. data/vendor/pygments-main/scripts/find_error.py +16 -13
  151. data/vendor/pygments-main/scripts/get_vimkw.py +3 -3
  152. data/vendor/pygments-main/scripts/vim2pygments.py +9 -7
  153. data/vendor/pygments-main/setup.py +19 -19
  154. data/vendor/pygments-main/tests/examplefiles/99_bottles_of_beer.chpl +118 -0
  155. data/vendor/pygments-main/tests/examplefiles/Error.pmod +38 -0
  156. data/vendor/pygments-main/tests/examplefiles/FakeFile.pike +360 -0
  157. data/vendor/pygments-main/tests/examplefiles/{ANTLRv3.g → antlr_ANTLRv3.g} +0 -0
  158. data/vendor/pygments-main/tests/examplefiles/clojure-weird-keywords.clj +5 -0
  159. data/vendor/pygments-main/tests/examplefiles/core.cljs +52 -0
  160. data/vendor/pygments-main/tests/examplefiles/demo.cfm +13 -1
  161. data/vendor/pygments-main/tests/examplefiles/demo.hbs +12 -0
  162. data/vendor/pygments-main/tests/examplefiles/ember.handlebars +33 -0
  163. data/vendor/pygments-main/tests/examplefiles/example.als +217 -0
  164. data/vendor/pygments-main/tests/examplefiles/example.c +1 -1
  165. data/vendor/pygments-main/tests/examplefiles/example.chai +6 -0
  166. data/vendor/pygments-main/tests/examplefiles/example.coffee +27 -0
  167. data/vendor/pygments-main/tests/examplefiles/example.e +124 -0
  168. data/vendor/pygments-main/tests/examplefiles/example.f90 +8 -0
  169. data/vendor/pygments-main/tests/examplefiles/example.feature +16 -0
  170. data/vendor/pygments-main/tests/examplefiles/example.gd +23 -0
  171. data/vendor/pygments-main/tests/examplefiles/example.gi +64 -0
  172. data/vendor/pygments-main/tests/examplefiles/example.groovy +2 -0
  173. data/vendor/pygments-main/tests/examplefiles/example.hs +27 -0
  174. data/vendor/pygments-main/tests/examplefiles/example.hx +44 -1
  175. data/vendor/pygments-main/tests/examplefiles/example.i6t +32 -0
  176. data/vendor/pygments-main/tests/examplefiles/example.i7x +45 -0
  177. data/vendor/pygments-main/tests/examplefiles/example.inf +374 -0
  178. data/vendor/pygments-main/tests/examplefiles/example.j +564 -0
  179. data/vendor/pygments-main/tests/examplefiles/example.java +16 -0
  180. data/vendor/pygments-main/tests/examplefiles/example.kal +75 -0
  181. data/vendor/pygments-main/tests/examplefiles/example.liquid +42 -0
  182. data/vendor/pygments-main/tests/examplefiles/example.ma +8 -0
  183. data/vendor/pygments-main/tests/examplefiles/example.mq4 +187 -0
  184. data/vendor/pygments-main/tests/examplefiles/example.mqh +123 -0
  185. data/vendor/pygments-main/tests/examplefiles/example.ni +57 -0
  186. data/vendor/pygments-main/tests/examplefiles/example.nix +80 -0
  187. data/vendor/pygments-main/tests/examplefiles/example.pp +8 -0
  188. data/vendor/pygments-main/tests/examplefiles/example.red +257 -0
  189. data/vendor/pygments-main/tests/examplefiles/example.reds +150 -0
  190. data/vendor/pygments-main/tests/examplefiles/example.rkt +677 -29
  191. data/vendor/pygments-main/tests/examplefiles/example.sh +22 -0
  192. data/vendor/pygments-main/tests/examplefiles/example.slim +31 -0
  193. data/vendor/pygments-main/tests/examplefiles/example.sls +51 -0
  194. data/vendor/pygments-main/tests/examplefiles/example.stan +2 -0
  195. data/vendor/pygments-main/tests/examplefiles/example.todotxt +9 -0
  196. data/vendor/pygments-main/tests/examplefiles/exampleScript.cfc +241 -0
  197. data/vendor/pygments-main/tests/examplefiles/exampleTag.cfc +18 -0
  198. data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +192 -350
  199. data/vendor/pygments-main/tests/examplefiles/hash_syntax.rb +5 -0
  200. data/vendor/pygments-main/tests/examplefiles/hello.at +6 -0
  201. data/vendor/pygments-main/tests/examplefiles/hello.golo +5 -0
  202. data/vendor/pygments-main/tests/examplefiles/hello.lsl +12 -0
  203. data/vendor/pygments-main/tests/examplefiles/{File.hy → hybris_File.hy} +0 -0
  204. data/vendor/pygments-main/tests/examplefiles/{mg_sample.pro → idl_sample.pro} +0 -0
  205. data/vendor/pygments-main/tests/examplefiles/iex_example +23 -0
  206. data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +24 -24
  207. data/vendor/pygments-main/tests/examplefiles/language.hy +165 -0
  208. data/vendor/pygments-main/tests/examplefiles/limbo.b +456 -0
  209. data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +3 -1
  210. data/vendor/pygments-main/tests/examplefiles/main.cmake +2 -0
  211. data/vendor/pygments-main/tests/examplefiles/objc_example.m +163 -16
  212. data/vendor/pygments-main/tests/examplefiles/{example.p → openedge_example} +0 -0
  213. data/vendor/pygments-main/tests/examplefiles/pawn_example +25 -0
  214. data/vendor/pygments-main/tests/examplefiles/qbasic_example +2 -0
  215. data/vendor/pygments-main/tests/examplefiles/r6rs-comments.scm +23 -0
  216. data/vendor/pygments-main/tests/examplefiles/{robotframework.txt → robotframework_test.txt} +0 -0
  217. data/vendor/pygments-main/tests/examplefiles/rql-queries.rql +34 -0
  218. data/vendor/pygments-main/tests/examplefiles/scope.cirru +43 -0
  219. data/vendor/pygments-main/tests/examplefiles/sparql.rq +23 -0
  220. data/vendor/pygments-main/tests/examplefiles/test.R +37 -5
  221. data/vendor/pygments-main/tests/examplefiles/test.apl +26 -0
  222. data/vendor/pygments-main/tests/examplefiles/test.cyp +123 -0
  223. data/vendor/pygments-main/tests/examplefiles/test.idr +93 -0
  224. data/vendor/pygments-main/tests/examplefiles/test.mask +41 -0
  225. data/vendor/pygments-main/tests/examplefiles/test.pan +54 -0
  226. data/vendor/pygments-main/tests/examplefiles/test.php +3 -1
  227. data/vendor/pygments-main/tests/examplefiles/test.pig +148 -0
  228. data/vendor/pygments-main/tests/examplefiles/test.pwn +253 -0
  229. data/vendor/pygments-main/tests/examplefiles/test.r3 +27 -7
  230. data/vendor/pygments-main/tests/examplefiles/test.rsl +111 -0
  231. data/vendor/pygments-main/tests/examplefiles/test.swift +65 -0
  232. data/vendor/pygments-main/tests/examplefiles/test.zep +33 -0
  233. data/vendor/pygments-main/tests/examplefiles/unicode.go +10 -0
  234. data/vendor/pygments-main/tests/examplefiles/{test.bas → vbnet_test.bas} +0 -0
  235. data/vendor/pygments-main/tests/examplefiles/vctreestatus_hg +4 -0
  236. data/vendor/pygments-main/tests/examplefiles/vimrc +21 -0
  237. data/vendor/pygments-main/tests/run.py +14 -19
  238. data/vendor/pygments-main/tests/string_asserts.py +22 -0
  239. data/vendor/pygments-main/tests/test_basic_api.py +28 -14
  240. data/vendor/pygments-main/tests/test_cfm.py +46 -0
  241. data/vendor/pygments-main/tests/test_clexer.py +208 -3
  242. data/vendor/pygments-main/tests/test_cmdline.py +6 -5
  243. data/vendor/pygments-main/tests/test_examplefiles.py +30 -19
  244. data/vendor/pygments-main/tests/test_html_formatter.py +15 -13
  245. data/vendor/pygments-main/tests/test_latex_formatter.py +4 -2
  246. data/vendor/pygments-main/tests/test_lexers_other.py +11 -11
  247. data/vendor/pygments-main/tests/test_objectiveclexer.py +81 -0
  248. data/vendor/pygments-main/tests/test_perllexer.py +1 -1
  249. data/vendor/pygments-main/tests/test_qbasiclexer.py +43 -0
  250. data/vendor/pygments-main/tests/test_regexlexer.py +8 -1
  251. data/vendor/pygments-main/tests/test_rtf_formatter.py +109 -0
  252. data/vendor/pygments-main/tests/test_string_asserts.py +39 -0
  253. data/vendor/pygments-main/tests/test_token.py +3 -3
  254. data/vendor/pygments-main/tests/test_using_api.py +1 -1
  255. data/vendor/pygments-main/tests/test_util.py +1 -1
  256. metadata +138 -51
  257. data/vendor/pygments-main/docs/generate.py +0 -472
  258. data/vendor/pygments-main/docs/src/api.txt +0 -270
  259. data/vendor/pygments-main/docs/src/authors.txt +0 -5
  260. data/vendor/pygments-main/docs/src/changelog.txt +0 -5
  261. data/vendor/pygments-main/docs/src/index.txt +0 -69
  262. data/vendor/pygments-main/docs/src/installation.txt +0 -71
  263. data/vendor/pygments-main/external/rst-directive-old.py +0 -77
  264. data/vendor/pygments-main/scripts/reindent.py +0 -291
  265. data/vendor/pygments-main/tests/examplefiles/import.hs +0 -4
  266. data/vendor/pygments-main/tests/examplefiles/objc_example2.m +0 -24
  267. data/vendor/pygments-main/tests/old_run.py +0 -138
@@ -5,10 +5,12 @@
5
5
 
6
6
  Pygments lexers for Dalvik VM-related languages.
7
7
 
8
- :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
12
+ import re
13
+
12
14
  from pygments.lexer import RegexLexer, include, bygroups
13
15
  from pygments.token import Keyword, Text, Comment, Name, String, Number, \
14
16
  Punctuation
@@ -21,7 +23,7 @@ class SmaliLexer(RegexLexer):
21
23
  For `Smali <http://code.google.com/p/smali/>`_ (Android/Dalvik) assembly
22
24
  code.
23
25
 
24
- *New in Pygments 1.6.*
26
+ .. versionadded:: 1.6
25
27
  """
26
28
  name = 'Smali'
27
29
  aliases = ['smali']
@@ -73,22 +75,22 @@ class SmaliLexer(RegexLexer):
73
75
  (r'[0-9]+L?', Number.Integer),
74
76
  ],
75
77
  'field': [
76
- (r'(\$?\b)([A-Za-z0-9_$]*)(:)',
78
+ (r'(\$?\b)([\w$]*)(:)',
77
79
  bygroups(Punctuation, Name.Variable, Punctuation)),
78
80
  ],
79
81
  'method': [
80
82
  (r'<(?:cl)?init>', Name.Function), # constructor
81
- (r'(\$?\b)([A-Za-z0-9_$]*)(\()',
83
+ (r'(\$?\b)([\w$]*)(\()',
82
84
  bygroups(Punctuation, Name.Function, Punctuation)),
83
85
  ],
84
86
  'label': [
85
- (r':[A-Za-z0-9_]+', Name.Label),
87
+ (r':\w+', Name.Label),
86
88
  ],
87
89
  'class': [
88
90
  # class names in the form Lcom/namespace/ClassName;
89
91
  # I only want to color the ClassName part, so the namespace part is
90
92
  # treated as 'Text'
91
- (r'(L)((?:[A-Za-z0-9_$]+/)*)([A-Za-z0-9_$]+)(;)',
93
+ (r'(L)((?:[\w$]+/)*)([\w$]+)(;)',
92
94
  bygroups(Keyword.Type, Text, Name.Class, Text)),
93
95
  ],
94
96
  'punctuation': [
@@ -102,3 +104,22 @@ class SmaliLexer(RegexLexer):
102
104
  (r'#.*?\n', Comment),
103
105
  ],
104
106
  }
107
+
108
+ def analyse_text(text):
109
+ score = 0
110
+ if re.search(r'^\s*\.class\s', text, re.MULTILINE):
111
+ score += 0.5
112
+ if re.search(r'\b((check-cast|instance-of|throw-verification-error'
113
+ r')\b|(-to|add|[ais]get|[ais]put|and|cmpl|const|div|'
114
+ r'if|invoke|move|mul|neg|not|or|rem|return|rsub|shl|'
115
+ r'shr|sub|ushr)[-/])|{|}', text, re.MULTILINE):
116
+ score += 0.3
117
+ if re.search(r'(\.(catchall|epilogue|restart local|prologue)|'
118
+ r'\b(array-data|class-change-error|declared-synchronized|'
119
+ r'(field|inline|vtable)@0x[0-9a-fA-F]|generic-error|'
120
+ r'illegal-class-access|illegal-field-access|'
121
+ r'illegal-method-access|instantiation-error|no-error|'
122
+ r'no-such-class|no-such-field|no-such-method|'
123
+ r'packed-switch|sparse-switch))\b', text, re.MULTILINE):
124
+ score += 0.6
125
+ return score
@@ -5,16 +5,16 @@
5
5
 
6
6
  Lexers for .net languages.
7
7
 
8
- :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
  import re
12
12
 
13
13
  from pygments.lexer import RegexLexer, DelegatingLexer, bygroups, include, \
14
- using, this
14
+ using, this, default
15
15
  from pygments.token import Punctuation, \
16
16
  Text, Comment, Operator, Keyword, Name, String, Number, Literal, Other
17
- from pygments.util import get_choice_opt
17
+ from pygments.util import get_choice_opt, iteritems
18
18
  from pygments import unistring as uni
19
19
 
20
20
  from pygments.lexers.web import XmlLexer
@@ -44,7 +44,7 @@ class CSharpLexer(RegexLexer):
44
44
 
45
45
  The default value is ``basic``.
46
46
 
47
- *New in Pygments 0.8.*
47
+ .. versionadded:: 0.8
48
48
  """
49
49
 
50
50
  name = 'C#'
@@ -58,7 +58,7 @@ class CSharpLexer(RegexLexer):
58
58
  # see http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf
59
59
 
60
60
  levels = {
61
- 'none': '@?[_a-zA-Z][a-zA-Z0-9_]*',
61
+ 'none': '@?[_a-zA-Z]\w*',
62
62
  'basic': ('@?[_' + uni.Lu + uni.Ll + uni.Lt + uni.Lm + uni.Nl + ']' +
63
63
  '[' + uni.Lu + uni.Ll + uni.Lt + uni.Lm + uni.Nl +
64
64
  uni.Nd + uni.Pc + uni.Cf + uni.Mn + uni.Mc + ']*'),
@@ -71,7 +71,7 @@ class CSharpLexer(RegexLexer):
71
71
  tokens = {}
72
72
  token_variants = True
73
73
 
74
- for levelname, cs_ident in levels.items():
74
+ for levelname, cs_ident in iteritems(levels):
75
75
  tokens[levelname] = {
76
76
  'root': [
77
77
  # method names
@@ -126,7 +126,7 @@ class CSharpLexer(RegexLexer):
126
126
  }
127
127
 
128
128
  def __init__(self, **options):
129
- level = get_choice_opt(options, 'unicodelevel', self.tokens.keys(), 'basic')
129
+ level = get_choice_opt(options, 'unicodelevel', list(self.tokens), 'basic')
130
130
  if level not in self._all_tokens:
131
131
  # compile the regexes now
132
132
  self._tokens = self.__class__.process_tokendef(level)
@@ -156,7 +156,7 @@ class NemerleLexer(RegexLexer):
156
156
 
157
157
  The default value is ``basic``.
158
158
 
159
- *New in Pygments 1.5.*
159
+ .. versionadded:: 1.5
160
160
  """
161
161
 
162
162
  name = 'Nemerle'
@@ -170,7 +170,7 @@ class NemerleLexer(RegexLexer):
170
170
  # http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf
171
171
 
172
172
  levels = dict(
173
- none = '@?[_a-zA-Z][a-zA-Z0-9_]*',
173
+ none = '@?[_a-zA-Z]\w*',
174
174
  basic = ('@?[_' + uni.Lu + uni.Ll + uni.Lt + uni.Lm + uni.Nl + ']' +
175
175
  '[' + uni.Lu + uni.Ll + uni.Lt + uni.Lm + uni.Nl +
176
176
  uni.Nd + uni.Pc + uni.Cf + uni.Mn + uni.Mc + ']*'),
@@ -183,7 +183,7 @@ class NemerleLexer(RegexLexer):
183
183
  tokens = {}
184
184
  token_variants = True
185
185
 
186
- for levelname, cs_ident in levels.items():
186
+ for levelname, cs_ident in iteritems(levels):
187
187
  tokens[levelname] = {
188
188
  'root': [
189
189
  # method names
@@ -284,7 +284,7 @@ class NemerleLexer(RegexLexer):
284
284
  }
285
285
 
286
286
  def __init__(self, **options):
287
- level = get_choice_opt(options, 'unicodelevel', self.tokens.keys(),
287
+ level = get_choice_opt(options, 'unicodelevel', list(self.tokens),
288
288
  'basic')
289
289
  if level not in self._all_tokens:
290
290
  # compile the regexes now
@@ -336,7 +336,7 @@ class BooLexer(RegexLexer):
336
336
  (r'"""(\\\\|\\"|.*?)"""', String.Double),
337
337
  (r'"(\\\\|\\"|[^"]*?)"', String.Double),
338
338
  (r"'(\\\\|\\'|[^']*?)'", String.Single),
339
- (r'[a-zA-Z_][a-zA-Z0-9_]*', Name),
339
+ (r'[a-zA-Z_]\w*', Name),
340
340
  (r'(\d+\.\d*|\d*\.\d+)([fF][+-]?[0-9]+)?', Number.Float),
341
341
  (r'[0-9][0-9\.]*(ms?|d|h|s)', Number),
342
342
  (r'0\d+', Number.Oct),
@@ -351,13 +351,13 @@ class BooLexer(RegexLexer):
351
351
  ('[*/]', Comment.Multiline)
352
352
  ],
353
353
  'funcname': [
354
- ('[a-zA-Z_][a-zA-Z0-9_]*', Name.Function, '#pop')
354
+ ('[a-zA-Z_]\w*', Name.Function, '#pop')
355
355
  ],
356
356
  'classname': [
357
- ('[a-zA-Z_][a-zA-Z0-9_]*', Name.Class, '#pop')
357
+ ('[a-zA-Z_]\w*', Name.Class, '#pop')
358
358
  ],
359
359
  'namespace': [
360
- ('[a-zA-Z_][a-zA-Z0-9_.]*', Name.Namespace, '#pop')
360
+ ('[a-zA-Z_][\w.]*', Name.Namespace, '#pop')
361
361
  ]
362
362
  }
363
363
 
@@ -425,7 +425,7 @@ class VbNetLexer(RegexLexer):
425
425
  r'<=|>=|<>|[-&*/\\^+=<>]',
426
426
  Operator),
427
427
  ('"', String, 'string'),
428
- ('[a-zA-Z_][a-zA-Z0-9_]*[%&@!#$]?', Name),
428
+ ('[a-z_]\w*[%&@!#$]?', Name),
429
429
  ('#.*?#', Literal.Date),
430
430
  (r'(\d+\.\d*|\d*\.\d+)([fF][+-]?[0-9]+)?', Number.Float),
431
431
  (r'\d+([SILDFR]|US|UI|UL)?', Number.Integer),
@@ -439,26 +439,31 @@ class VbNetLexer(RegexLexer):
439
439
  (r'[^"]+', String),
440
440
  ],
441
441
  'dim': [
442
- (r'[a-z_][a-z0-9_]*', Name.Variable, '#pop'),
443
- (r'', Text, '#pop'), # any other syntax
442
+ (r'[a-z_]\w*', Name.Variable, '#pop'),
443
+ default('#pop'), # any other syntax
444
444
  ],
445
445
  'funcname': [
446
- (r'[a-z_][a-z0-9_]*', Name.Function, '#pop'),
446
+ (r'[a-z_]\w*', Name.Function, '#pop'),
447
447
  ],
448
448
  'classname': [
449
- (r'[a-z_][a-z0-9_]*', Name.Class, '#pop'),
449
+ (r'[a-z_]\w*', Name.Class, '#pop'),
450
450
  ],
451
451
  'namespace': [
452
- (r'[a-z_][a-z0-9_.]*', Name.Namespace, '#pop'),
452
+ (r'[a-z_][\w.]*', Name.Namespace, '#pop'),
453
453
  ],
454
454
  'end': [
455
455
  (r'\s+', Text),
456
456
  (r'(Function|Sub|Property|Class|Structure|Enum|Module|Namespace)\b',
457
457
  Keyword, '#pop'),
458
- (r'', Text, '#pop'),
458
+ default('#pop'),
459
459
  ]
460
460
  }
461
461
 
462
+ def analyse_text(text):
463
+ if re.search(r'^\s*(#If|Module|Namespace)', text,
464
+ re.IGNORECASE | re.MULTILINE):
465
+ return 0.5
466
+
462
467
 
463
468
  class GenericAspxLexer(RegexLexer):
464
469
  """
@@ -531,7 +536,10 @@ class FSharpLexer(RegexLexer):
531
536
  """
532
537
  For the F# language (version 3.0).
533
538
 
534
- *New in Pygments 1.5.*
539
+ AAAAACK Strings
540
+ http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.html#_Toc335818775
541
+
542
+ .. versionadded:: 1.5
535
543
  """
536
544
 
537
545
  name = 'FSharp'
@@ -589,9 +597,9 @@ class FSharpLexer(RegexLexer):
589
597
  'root': [
590
598
  (r'\s+', Text),
591
599
  (r'\(\)|\[\]', Name.Builtin.Pseudo),
592
- (r'\b(?<!\.)([A-Z][A-Za-z0-9_\']*)(?=\s*\.)',
600
+ (r'\b(?<!\.)([A-Z][\w\']*)(?=\s*\.)',
593
601
  Name.Namespace, 'dotted'),
594
- (r'\b([A-Z][A-Za-z0-9_\']*)', Name),
602
+ (r'\b([A-Z][\w\']*)', Name),
595
603
  (r'///.*?\n', String.Doc),
596
604
  (r'//.*?\n', Comment.Single),
597
605
  (r'\(\*(?!\))', Comment, 'comment'),
@@ -600,13 +608,13 @@ class FSharpLexer(RegexLexer):
600
608
  (r'"""', String, 'tqs'),
601
609
  (r'"', String, 'string'),
602
610
 
603
- (r'\b(open|module)(\s+)([a-zA-Z0-9_.]+)',
611
+ (r'\b(open|module)(\s+)([\w.]+)',
604
612
  bygroups(Keyword, Text, Name.Namespace)),
605
- (r'\b(let!?)(\s+)([a-zA-Z0-9_]+)',
613
+ (r'\b(let!?)(\s+)(\w+)',
606
614
  bygroups(Keyword, Text, Name.Variable)),
607
- (r'\b(type)(\s+)([a-zA-Z0-9_]+)',
615
+ (r'\b(type)(\s+)(\w+)',
608
616
  bygroups(Keyword, Text, Name.Class)),
609
- (r'\b(member|override)(\s+)([a-zA-Z0-9_]+)(\.)([a-zA-Z0-9_]+)',
617
+ (r'\b(member|override)(\s+)(\w+)(\.)(\w+)',
610
618
  bygroups(Keyword, Text, Name, Punctuation, Name.Function)),
611
619
  (r'\b(%s)\b' % '|'.join(keywords), Keyword),
612
620
  (r'(%s)' % '|'.join(keyopts), Operator),
@@ -621,7 +629,7 @@ class FSharpLexer(RegexLexer):
621
629
  (r'\d[\d_]*[uU]?[yslLnQRZINGmM]?', Number.Integer),
622
630
  (r'0[xX][\da-fA-F][\da-fA-F_]*[uU]?[yslLn]?[fF]?', Number.Hex),
623
631
  (r'0[oO][0-7][0-7_]*[uU]?[yslLn]?', Number.Oct),
624
- (r'0[bB][01][01_]*[uU]?[yslLn]?', Number.Binary),
632
+ (r'0[bB][01][01_]*[uU]?[yslLn]?', Number.Bin),
625
633
  (r'-?\d[\d_]*(.[\d_]*)?([eE][+\-]?\d[\d_]*)[fFmM]?',
626
634
  Number.Float),
627
635
 
@@ -630,14 +638,18 @@ class FSharpLexer(RegexLexer):
630
638
  (r"'.'", String.Char),
631
639
  (r"'", Keyword), # a stray quote is another syntax element
632
640
 
641
+ (r'@?"', String.Double, 'string'),
642
+
633
643
  (r'[~?][a-z][\w\']*:', Name.Variable),
634
644
  ],
635
645
  'dotted': [
636
646
  (r'\s+', Text),
637
647
  (r'\.', Punctuation),
638
- (r'[A-Z][A-Za-z0-9_\']*(?=\s*\.)', Name.Namespace),
639
- (r'[A-Z][A-Za-z0-9_\']*', Name, '#pop'),
640
- (r'[a-z_][A-Za-z0-9_\']*', Name, '#pop'),
648
+ (r'[A-Z][\w\']*(?=\s*\.)', Name.Namespace),
649
+ (r'[A-Z][\w\']*', Name, '#pop'),
650
+ (r'[a-z_][\w\']*', Name, '#pop'),
651
+ # e.g. dictionary index access
652
+ default('#pop'),
641
653
  ],
642
654
  'comment': [
643
655
  (r'[^(*)@"]+', Comment),
@@ -5,7 +5,7 @@
5
5
 
6
6
  Simple lexer for Microsoft Visual FoxPro source code.
7
7
 
8
- :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -24,11 +24,11 @@ class FoxProLexer(RegexLexer):
24
24
  FoxPro syntax allows to shorten all keywords and function names
25
25
  to 4 characters. Shortened forms are not recognized by this lexer.
26
26
 
27
- *New in Pygments 1.6.*
27
+ .. versionadded:: 1.6
28
28
  """
29
29
 
30
30
  name = 'FoxPro'
31
- aliases = ['Clipper', 'XBase']
31
+ aliases = ['foxpro', 'vfp', 'clipper', 'xbase']
32
32
  filenames = ['*.PRG', '*.prg']
33
33
  mimetype = []
34
34
 
@@ -5,21 +5,24 @@
5
5
 
6
6
  Lexers for functional languages.
7
7
 
8
- :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
12
12
  import re
13
13
 
14
- from pygments.lexer import Lexer, RegexLexer, bygroups, include, do_insertions
14
+ from pygments.lexer import Lexer, RegexLexer, bygroups, include, do_insertions, default
15
15
  from pygments.token import Text, Comment, Operator, Keyword, Name, \
16
16
  String, Number, Punctuation, Literal, Generic, Error
17
+ from pygments import unistring as uni
17
18
 
18
- __all__ = ['RacketLexer', 'SchemeLexer', 'CommonLispLexer', 'HaskellLexer',
19
- 'AgdaLexer', 'LiterateHaskellLexer', 'LiterateAgdaLexer',
20
- 'SMLLexer', 'OcamlLexer', 'ErlangLexer', 'ErlangShellLexer',
21
- 'OpaLexer', 'CoqLexer', 'NewLispLexer', 'ElixirLexer',
22
- 'ElixirConsoleLexer', 'KokaLexer']
19
+ __all__ = ['RacketLexer', 'SchemeLexer', 'CommonLispLexer', 'CryptolLexer',
20
+ 'HaskellLexer', 'AgdaLexer', 'LiterateCryptolLexer',
21
+ 'LiterateHaskellLexer', 'LiterateAgdaLexer', 'SMLLexer',
22
+ 'OcamlLexer', 'ErlangLexer', 'ErlangShellLexer', 'OpaLexer',
23
+ 'CoqLexer', 'NewLispLexer', 'NixLexer', 'ElixirLexer',
24
+ 'ElixirConsoleLexer', 'KokaLexer', 'IdrisLexer',
25
+ 'LiterateIdrisLexer']
23
26
 
24
27
 
25
28
  line_re = re.compile('.*?\n')
@@ -27,126 +30,219 @@ line_re = re.compile('.*?\n')
27
30
 
28
31
  class RacketLexer(RegexLexer):
29
32
  """
30
- Lexer for `Racket <http://racket-lang.org/>`_ source code (formerly known as
31
- PLT Scheme).
33
+ Lexer for `Racket <http://racket-lang.org/>`_ source code (formerly
34
+ known as PLT Scheme).
32
35
 
33
- *New in Pygments 1.6.*
36
+ .. versionadded:: 1.6
34
37
  """
35
38
 
36
39
  name = 'Racket'
37
40
  aliases = ['racket', 'rkt']
38
- filenames = ['*.rkt', '*.rktl']
41
+ filenames = ['*.rkt', '*.rktd', '*.rktl']
39
42
  mimetypes = ['text/x-racket', 'application/x-racket']
40
43
 
41
- # From namespace-mapped-symbols
42
- keywords = [
43
- '#%app', '#%datum', '#%expression', '#%module-begin',
44
+ # Generated by example.rkt
45
+ _keywords = [
46
+ '#%app', '#%datum', '#%declare', '#%expression', '#%module-begin',
44
47
  '#%plain-app', '#%plain-lambda', '#%plain-module-begin',
45
- '#%provide', '#%require', '#%stratified-body', '#%top',
46
- '#%top-interaction', '#%variable-reference', '...', 'and', 'begin',
47
- 'begin-for-syntax', 'begin0', 'case', 'case-lambda', 'cond',
48
- 'datum->syntax-object', 'define', 'define-for-syntax',
49
- 'define-struct', 'define-syntax', 'define-syntax-rule',
50
- 'define-syntaxes', 'define-values', 'define-values-for-syntax',
51
- 'delay', 'do', 'expand-path', 'fluid-let', 'hash-table-copy',
52
- 'hash-table-count', 'hash-table-for-each', 'hash-table-get',
53
- 'hash-table-iterate-first', 'hash-table-iterate-key',
54
- 'hash-table-iterate-next', 'hash-table-iterate-value',
55
- 'hash-table-map', 'hash-table-put!', 'hash-table-remove!',
56
- 'hash-table?', 'if', 'lambda', 'let', 'let*', 'let*-values',
57
- 'let-struct', 'let-syntax', 'let-syntaxes', 'let-values', 'let/cc',
58
- 'let/ec', 'letrec', 'letrec-syntax', 'letrec-syntaxes',
59
- 'letrec-syntaxes+values', 'letrec-values', 'list-immutable',
60
- 'make-hash-table', 'make-immutable-hash-table', 'make-namespace',
61
- 'module', 'module-identifier=?', 'module-label-identifier=?',
62
- 'module-template-identifier=?', 'module-transformer-identifier=?',
63
- 'namespace-transformer-require', 'or', 'parameterize',
64
- 'parameterize*', 'parameterize-break', 'provide',
65
- 'provide-for-label', 'provide-for-syntax', 'quasiquote',
48
+ '#%printing-module-begin', '#%provide', '#%require',
49
+ '#%stratified-body', '#%top', '#%top-interaction',
50
+ '#%variable-reference', '->', '->*', '->*m', '->d', '->dm', '->i',
51
+ '->m', '...', ':do-in', '==', '=>', '_', 'absent', 'abstract',
52
+ 'all-defined-out', 'all-from-out', 'and', 'any', 'augment', 'augment*',
53
+ 'augment-final', 'augment-final*', 'augride', 'augride*', 'begin',
54
+ 'begin-for-syntax', 'begin0', 'case', 'case->', 'case->m',
55
+ 'case-lambda', 'class', 'class*', 'class-field-accessor',
56
+ 'class-field-mutator', 'class/c', 'class/derived', 'combine-in',
57
+ 'combine-out', 'command-line', 'compound-unit', 'compound-unit/infer',
58
+ 'cond', 'contract', 'contract-out', 'contract-struct', 'contracted',
59
+ 'define', 'define-compound-unit', 'define-compound-unit/infer',
60
+ 'define-contract-struct', 'define-custom-hash-types',
61
+ 'define-custom-set-types', 'define-for-syntax',
62
+ 'define-local-member-name', 'define-logger', 'define-match-expander',
63
+ 'define-member-name', 'define-module-boundary-contract',
64
+ 'define-namespace-anchor', 'define-opt/c', 'define-sequence-syntax',
65
+ 'define-serializable-class', 'define-serializable-class*',
66
+ 'define-signature', 'define-signature-form', 'define-struct',
67
+ 'define-struct/contract', 'define-struct/derived', 'define-syntax',
68
+ 'define-syntax-rule', 'define-syntaxes', 'define-unit',
69
+ 'define-unit-binding', 'define-unit-from-context',
70
+ 'define-unit/contract', 'define-unit/new-import-export',
71
+ 'define-unit/s', 'define-values', 'define-values-for-export',
72
+ 'define-values-for-syntax', 'define-values/invoke-unit',
73
+ 'define-values/invoke-unit/infer', 'define/augment',
74
+ 'define/augment-final', 'define/augride', 'define/contract',
75
+ 'define/final-prop', 'define/match', 'define/overment',
76
+ 'define/override', 'define/override-final', 'define/private',
77
+ 'define/public', 'define/public-final', 'define/pubment',
78
+ 'define/subexpression-pos-prop', 'delay', 'delay/idle', 'delay/name',
79
+ 'delay/strict', 'delay/sync', 'delay/thread', 'do', 'else', 'except',
80
+ 'except-in', 'except-out', 'export', 'extends', 'failure-cont',
81
+ 'false', 'false/c', 'field', 'field-bound?', 'file',
82
+ 'flat-murec-contract', 'flat-rec-contract', 'for', 'for*', 'for*/and',
83
+ 'for*/first', 'for*/fold', 'for*/fold/derived', 'for*/hash',
84
+ 'for*/hasheq', 'for*/hasheqv', 'for*/last', 'for*/list', 'for*/lists',
85
+ 'for*/mutable-set', 'for*/mutable-seteq', 'for*/mutable-seteqv',
86
+ 'for*/or', 'for*/product', 'for*/set', 'for*/seteq', 'for*/seteqv',
87
+ 'for*/sum', 'for*/vector', 'for*/weak-set', 'for*/weak-seteq',
88
+ 'for*/weak-seteqv', 'for-label', 'for-meta', 'for-syntax',
89
+ 'for-template', 'for/and', 'for/first', 'for/fold', 'for/fold/derived',
90
+ 'for/hash', 'for/hasheq', 'for/hasheqv', 'for/last', 'for/list',
91
+ 'for/lists', 'for/mutable-set', 'for/mutable-seteq',
92
+ 'for/mutable-seteqv', 'for/or', 'for/product', 'for/set', 'for/seteq',
93
+ 'for/seteqv', 'for/sum', 'for/vector', 'for/weak-set',
94
+ 'for/weak-seteq', 'for/weak-seteqv', 'gen:custom-write', 'gen:dict',
95
+ 'gen:equal+hash', 'gen:set', 'gen:stream', 'generic', 'get-field',
96
+ 'if', 'implies', 'import', 'include', 'include-at/relative-to',
97
+ 'include-at/relative-to/reader', 'include/reader', 'inherit',
98
+ 'inherit-field', 'inherit/inner', 'inherit/super', 'init',
99
+ 'init-depend', 'init-field', 'init-rest', 'inner', 'inspect',
100
+ 'instantiate', 'interface', 'interface*', 'invoke-unit',
101
+ 'invoke-unit/infer', 'lambda', 'lazy', 'let', 'let*', 'let*-values',
102
+ 'let-syntax', 'let-syntaxes', 'let-values', 'let/cc', 'let/ec',
103
+ 'letrec', 'letrec-syntax', 'letrec-syntaxes', 'letrec-syntaxes+values',
104
+ 'letrec-values', 'lib', 'link', 'local', 'local-require', 'log-debug',
105
+ 'log-error', 'log-fatal', 'log-info', 'log-warning', 'match', 'match*',
106
+ 'match*/derived', 'match-define', 'match-define-values',
107
+ 'match-lambda', 'match-lambda*', 'match-lambda**', 'match-let',
108
+ 'match-let*', 'match-let*-values', 'match-let-values', 'match-letrec',
109
+ 'match/derived', 'match/values', 'member-name-key', 'method-contract?',
110
+ 'mixin', 'module', 'module*', 'module+', 'nand', 'new', 'nor',
111
+ 'object-contract', 'object/c', 'only', 'only-in', 'only-meta-in',
112
+ 'open', 'opt/c', 'or', 'overment', 'overment*', 'override',
113
+ 'override*', 'override-final', 'override-final*', 'parameterize',
114
+ 'parameterize*', 'parameterize-break', 'parametric->/c', 'place',
115
+ 'place*', 'planet', 'prefix', 'prefix-in', 'prefix-out', 'private',
116
+ 'private*', 'prompt-tag/c', 'protect-out', 'provide',
117
+ 'provide-signature-elements', 'provide/contract', 'public', 'public*',
118
+ 'public-final', 'public-final*', 'pubment', 'pubment*', 'quasiquote',
66
119
  'quasisyntax', 'quasisyntax/loc', 'quote', 'quote-syntax',
67
- 'quote-syntax/prune', 'require', 'require-for-label',
68
- 'require-for-syntax', 'require-for-template', 'set!',
69
- 'set!-values', 'syntax', 'syntax-case', 'syntax-case*',
70
- 'syntax-id-rules', 'syntax-object->datum', 'syntax-rules',
71
- 'syntax/loc', 'time', 'transcript-off', 'transcript-on', 'unless',
72
- 'unquote', 'unquote-splicing', 'unsyntax', 'unsyntax-splicing',
73
- 'when', 'with-continuation-mark', 'with-handlers',
74
- 'with-handlers*', 'with-syntax', 'λ'
120
+ 'quote-syntax/prune', 'recontract-out', 'recursive-contract',
121
+ 'relative-in', 'rename', 'rename-in', 'rename-inner', 'rename-out',
122
+ 'rename-super', 'require', 'send', 'send*', 'send+', 'send-generic',
123
+ 'send/apply', 'send/keyword-apply', 'set!', 'set!-values',
124
+ 'set-field!', 'shared', 'stream', 'stream-cons', 'struct', 'struct*',
125
+ 'struct-copy', 'struct-field-index', 'struct-out', 'struct/c',
126
+ 'struct/ctc', 'struct/dc', 'submod', 'super', 'super-instantiate',
127
+ 'super-make-object', 'super-new', 'syntax', 'syntax-case',
128
+ 'syntax-case*', 'syntax-id-rules', 'syntax-rules', 'syntax/loc', 'tag',
129
+ 'this', 'this%', 'thunk', 'thunk*', 'time', 'unconstrained-domain->',
130
+ 'unit', 'unit-from-context', 'unit/c', 'unit/new-import-export',
131
+ 'unit/s', 'unless', 'unquote', 'unquote-splicing', 'unsyntax',
132
+ 'unsyntax-splicing', 'values/drop', 'when', 'with-continuation-mark',
133
+ 'with-contract', 'with-handlers', 'with-handlers*', 'with-method',
134
+ 'with-syntax', u'λ'
75
135
  ]
76
136
 
77
- # From namespace-mapped-symbols
78
- builtins = [
79
- '*', '+', '-', '/', '<', '<=', '=', '>', '>=',
80
- 'abort-current-continuation', 'abs', 'absolute-path?', 'acos',
81
- 'add1', 'alarm-evt', 'always-evt', 'andmap', 'angle', 'append',
82
- 'apply', 'arithmetic-shift', 'arity-at-least',
83
- 'arity-at-least-value', 'arity-at-least?', 'asin', 'assoc', 'assq',
84
- 'assv', 'atan', 'banner', 'bitwise-and', 'bitwise-bit-field',
85
- 'bitwise-bit-set?', 'bitwise-ior', 'bitwise-not', 'bitwise-xor',
86
- 'boolean?', 'bound-identifier=?', 'box', 'box-immutable', 'box?',
87
- 'break-enabled', 'break-thread', 'build-path',
88
- 'build-path/convention-type', 'byte-pregexp', 'byte-pregexp?',
137
+ # Generated by example.rkt
138
+ _builtins = [
139
+ '*', '+', '-', '/', '<', '</c', '<=', '<=/c', '=', '=/c', '>', '>/c',
140
+ '>=', '>=/c', 'abort-current-continuation', 'abs', 'absolute-path?',
141
+ 'acos', 'add-between', 'add1', 'alarm-evt', 'always-evt', 'and/c',
142
+ 'andmap', 'angle', 'any/c', 'append', 'append*', 'append-map', 'apply',
143
+ 'argmax', 'argmin', 'arithmetic-shift', 'arity-at-least',
144
+ 'arity-at-least-value', 'arity-at-least?', 'arity-checking-wrapper',
145
+ 'arity-includes?', 'arity=?', 'asin', 'assf', 'assoc', 'assq', 'assv',
146
+ 'atan', 'bad-number-of-results', 'banner', 'base->-doms/c',
147
+ 'base->-rngs/c', 'base->?', 'between/c', 'bitwise-and',
148
+ 'bitwise-bit-field', 'bitwise-bit-set?', 'bitwise-ior', 'bitwise-not',
149
+ 'bitwise-xor', 'blame-add-car-context', 'blame-add-cdr-context',
150
+ 'blame-add-context', 'blame-add-missing-party',
151
+ 'blame-add-nth-arg-context', 'blame-add-or-context',
152
+ 'blame-add-range-context', 'blame-add-unknown-context',
153
+ 'blame-context', 'blame-contract', 'blame-fmt->-string',
154
+ 'blame-negative', 'blame-original?', 'blame-positive',
155
+ 'blame-replace-negative', 'blame-source', 'blame-swap',
156
+ 'blame-swapped?', 'blame-update', 'blame-value', 'blame?', 'boolean=?',
157
+ 'boolean?', 'bound-identifier=?', 'box', 'box-cas!', 'box-immutable',
158
+ 'box-immutable/c', 'box/c', 'box?', 'break-enabled', 'break-thread',
159
+ 'build-chaperone-contract-property', 'build-compound-type-name',
160
+ 'build-contract-property', 'build-flat-contract-property',
161
+ 'build-list', 'build-path', 'build-path/convention-type',
162
+ 'build-string', 'build-vector', 'byte-pregexp', 'byte-pregexp?',
89
163
  'byte-ready?', 'byte-regexp', 'byte-regexp?', 'byte?', 'bytes',
90
164
  'bytes->immutable-bytes', 'bytes->list', 'bytes->path',
91
- 'bytes->path-element', 'bytes->string/latin-1',
92
- 'bytes->string/locale', 'bytes->string/utf-8', 'bytes-append',
165
+ 'bytes->path-element', 'bytes->string/latin-1', 'bytes->string/locale',
166
+ 'bytes->string/utf-8', 'bytes-append', 'bytes-append*',
93
167
  'bytes-close-converter', 'bytes-convert', 'bytes-convert-end',
94
- 'bytes-converter?', 'bytes-copy', 'bytes-copy!', 'bytes-fill!',
95
- 'bytes-length', 'bytes-open-converter', 'bytes-ref', 'bytes-set!',
96
- 'bytes-utf-8-index', 'bytes-utf-8-length', 'bytes-utf-8-ref',
97
- 'bytes<?', 'bytes=?', 'bytes>?', 'bytes?', 'caaaar', 'caaadr',
98
- 'caaar', 'caadar', 'caaddr', 'caadr', 'caar', 'cadaar', 'cadadr',
99
- 'cadar', 'caddar', 'cadddr', 'caddr', 'cadr',
100
- 'call-in-nested-thread', 'call-with-break-parameterization',
101
- 'call-with-composable-continuation',
102
- 'call-with-continuation-barrier', 'call-with-continuation-prompt',
103
- 'call-with-current-continuation', 'call-with-escape-continuation',
104
- 'call-with-exception-handler',
105
- 'call-with-immediate-continuation-mark', 'call-with-input-file',
106
- 'call-with-output-file', 'call-with-parameterization',
107
- 'call-with-semaphore', 'call-with-semaphore/enable-break',
108
- 'call-with-values', 'call/cc', 'call/ec', 'car', 'cdaaar',
109
- 'cdaadr', 'cdaar', 'cdadar', 'cdaddr', 'cdadr', 'cdar', 'cddaar',
110
- 'cddadr', 'cddar', 'cdddar', 'cddddr', 'cdddr', 'cddr', 'cdr',
111
- 'ceiling', 'channel-get', 'channel-put', 'channel-put-evt',
112
- 'channel-try-get', 'channel?', 'chaperone-box', 'chaperone-evt',
113
- 'chaperone-hash', 'chaperone-of?', 'chaperone-procedure',
168
+ 'bytes-converter?', 'bytes-copy', 'bytes-copy!',
169
+ 'bytes-environment-variable-name?', 'bytes-fill!', 'bytes-join',
170
+ 'bytes-length', 'bytes-no-nuls?', 'bytes-open-converter', 'bytes-ref',
171
+ 'bytes-set!', 'bytes-utf-8-index', 'bytes-utf-8-length',
172
+ 'bytes-utf-8-ref', 'bytes<?', 'bytes=?', 'bytes>?', 'bytes?', 'caaaar',
173
+ 'caaadr', 'caaar', 'caadar', 'caaddr', 'caadr', 'caar', 'cadaar',
174
+ 'cadadr', 'cadar', 'caddar', 'cadddr', 'caddr', 'cadr',
175
+ 'call-in-nested-thread', 'call-with-atomic-output-file',
176
+ 'call-with-break-parameterization',
177
+ 'call-with-composable-continuation', 'call-with-continuation-barrier',
178
+ 'call-with-continuation-prompt', 'call-with-current-continuation',
179
+ 'call-with-default-reading-parameterization',
180
+ 'call-with-escape-continuation', 'call-with-exception-handler',
181
+ 'call-with-file-lock/timeout', 'call-with-immediate-continuation-mark',
182
+ 'call-with-input-bytes', 'call-with-input-file',
183
+ 'call-with-input-file*', 'call-with-input-string',
184
+ 'call-with-output-bytes', 'call-with-output-file',
185
+ 'call-with-output-file*', 'call-with-output-string',
186
+ 'call-with-parameterization', 'call-with-semaphore',
187
+ 'call-with-semaphore/enable-break', 'call-with-values', 'call/cc',
188
+ 'call/ec', 'car', 'cdaaar', 'cdaadr', 'cdaar', 'cdadar', 'cdaddr',
189
+ 'cdadr', 'cdar', 'cddaar', 'cddadr', 'cddar', 'cdddar', 'cddddr',
190
+ 'cdddr', 'cddr', 'cdr', 'ceiling', 'channel-get', 'channel-put',
191
+ 'channel-put-evt', 'channel-put-evt?', 'channel-try-get', 'channel/c',
192
+ 'channel?', 'chaperone-box', 'chaperone-channel',
193
+ 'chaperone-continuation-mark-key', 'chaperone-contract-property?',
194
+ 'chaperone-contract?', 'chaperone-evt', 'chaperone-hash',
195
+ 'chaperone-of?', 'chaperone-procedure', 'chaperone-prompt-tag',
114
196
  'chaperone-struct', 'chaperone-struct-type', 'chaperone-vector',
115
197
  'chaperone?', 'char->integer', 'char-alphabetic?', 'char-blank?',
116
198
  'char-ci<=?', 'char-ci<?', 'char-ci=?', 'char-ci>=?', 'char-ci>?',
117
199
  'char-downcase', 'char-foldcase', 'char-general-category',
118
200
  'char-graphic?', 'char-iso-control?', 'char-lower-case?',
119
- 'char-numeric?', 'char-punctuation?', 'char-ready?',
120
- 'char-symbolic?', 'char-title-case?', 'char-titlecase',
121
- 'char-upcase', 'char-upper-case?', 'char-utf-8-length',
122
- 'char-whitespace?', 'char<=?', 'char<?', 'char=?', 'char>=?',
123
- 'char>?', 'char?', 'check-duplicate-identifier',
124
- 'checked-procedure-check-and-extract', 'choice-evt',
201
+ 'char-numeric?', 'char-punctuation?', 'char-ready?', 'char-symbolic?',
202
+ 'char-title-case?', 'char-titlecase', 'char-upcase',
203
+ 'char-upper-case?', 'char-utf-8-length', 'char-whitespace?', 'char<=?',
204
+ 'char<?', 'char=?', 'char>=?', 'char>?', 'char?',
205
+ 'check-duplicate-identifier', 'checked-procedure-check-and-extract',
206
+ 'choice-evt', 'class->interface', 'class-info', 'class?',
125
207
  'cleanse-path', 'close-input-port', 'close-output-port',
126
- 'collect-garbage', 'collection-file-path', 'collection-path',
127
- 'compile', 'compile-allow-set!-undefined',
128
- 'compile-context-preservation-enabled',
208
+ 'coerce-chaperone-contract', 'coerce-chaperone-contracts',
209
+ 'coerce-contract', 'coerce-contract/f', 'coerce-contracts',
210
+ 'coerce-flat-contract', 'coerce-flat-contracts', 'collect-garbage',
211
+ 'collection-file-path', 'collection-path', 'compile',
212
+ 'compile-allow-set!-undefined', 'compile-context-preservation-enabled',
129
213
  'compile-enforce-module-constants', 'compile-syntax',
130
214
  'compiled-expression?', 'compiled-module-expression?',
131
- 'complete-path?', 'complex?', 'cons',
132
- 'continuation-mark-set->context', 'continuation-mark-set->list',
133
- 'continuation-mark-set->list*', 'continuation-mark-set-first',
134
- 'continuation-mark-set?', 'continuation-marks',
135
- 'continuation-prompt-available?', 'continuation-prompt-tag?',
136
- 'continuation?', 'copy-file', 'cos',
137
- 'current-break-parameterization', 'current-code-inspector',
138
- 'current-command-line-arguments', 'current-compile',
139
- 'current-continuation-marks', 'current-custodian',
140
- 'current-directory', 'current-drive', 'current-error-port',
215
+ 'complete-path?', 'complex?', 'compose', 'compose1', 'conjugate',
216
+ 'cons', 'cons/c', 'cons?', 'const', 'continuation-mark-key/c',
217
+ 'continuation-mark-key?', 'continuation-mark-set->context',
218
+ 'continuation-mark-set->list', 'continuation-mark-set->list*',
219
+ 'continuation-mark-set-first', 'continuation-mark-set?',
220
+ 'continuation-marks', 'continuation-prompt-available?',
221
+ 'continuation-prompt-tag?', 'continuation?',
222
+ 'contract-continuation-mark-key', 'contract-first-order',
223
+ 'contract-first-order-passes?', 'contract-name', 'contract-proc',
224
+ 'contract-projection', 'contract-property?',
225
+ 'contract-random-generate', 'contract-stronger?',
226
+ 'contract-struct-exercise', 'contract-struct-generate',
227
+ 'contract-val-first-projection', 'contract?', 'convert-stream',
228
+ 'copy-directory/files', 'copy-file', 'copy-port', 'cos', 'cosh',
229
+ 'count', 'current-blame-format', 'current-break-parameterization',
230
+ 'current-code-inspector', 'current-command-line-arguments',
231
+ 'current-compile', 'current-compiled-file-roots',
232
+ 'current-continuation-marks', 'current-contract-region',
233
+ 'current-custodian', 'current-directory', 'current-directory-for-user',
234
+ 'current-drive', 'current-environment-variables', 'current-error-port',
141
235
  'current-eval', 'current-evt-pseudo-random-generator',
142
- 'current-gc-milliseconds', 'current-get-interaction-input-port',
143
- 'current-inexact-milliseconds', 'current-input-port',
144
- 'current-inspector', 'current-library-collection-paths',
236
+ 'current-future', 'current-gc-milliseconds',
237
+ 'current-get-interaction-input-port', 'current-inexact-milliseconds',
238
+ 'current-input-port', 'current-inspector',
239
+ 'current-library-collection-links', 'current-library-collection-paths',
145
240
  'current-load', 'current-load-extension',
146
241
  'current-load-relative-directory', 'current-load/use-compiled',
147
- 'current-locale', 'current-memory-use', 'current-milliseconds',
148
- 'current-module-declare-name', 'current-module-declare-source',
149
- 'current-module-name-resolver', 'current-namespace',
242
+ 'current-locale', 'current-logger', 'current-memory-use',
243
+ 'current-milliseconds', 'current-module-declare-name',
244
+ 'current-module-declare-source', 'current-module-name-resolver',
245
+ 'current-module-path-for-load', 'current-namespace',
150
246
  'current-output-port', 'current-parameterization',
151
247
  'current-preserved-thread-cell-values', 'current-print',
152
248
  'current-process-milliseconds', 'current-prompt-read',
@@ -155,133 +251,229 @@ class RacketLexer(RegexLexer):
155
251
  'current-security-guard', 'current-subprocess-custodian-mode',
156
252
  'current-thread', 'current-thread-group',
157
253
  'current-thread-initial-stack-size',
158
- 'current-write-relative-directory', 'custodian-box-value',
159
- 'custodian-box?', 'custodian-limit-memory',
254
+ 'current-write-relative-directory', 'curry', 'curryr',
255
+ 'custodian-box-value', 'custodian-box?', 'custodian-limit-memory',
160
256
  'custodian-managed-list', 'custodian-memory-accounting-available?',
161
257
  'custodian-require-memory', 'custodian-shutdown-all', 'custodian?',
162
258
  'custom-print-quotable-accessor', 'custom-print-quotable?',
163
- 'custom-write-accessor', 'custom-write?', 'date', 'date*',
164
- 'date*-nanosecond', 'date*-time-zone-name', 'date*?', 'date-day',
165
- 'date-dst?', 'date-hour', 'date-minute', 'date-month',
166
- 'date-second', 'date-time-zone-offset', 'date-week-day',
167
- 'date-year', 'date-year-day', 'date?', 'datum-intern-literal',
168
- 'default-continuation-prompt-tag', 'delete-directory',
169
- 'delete-file', 'denominator', 'directory-exists?',
170
- 'directory-list', 'display', 'displayln', 'dump-memory-stats',
171
- 'dynamic-require', 'dynamic-require-for-syntax', 'dynamic-wind',
172
- 'eof', 'eof-object?', 'ephemeron-value', 'ephemeron?', 'eprintf',
173
- 'eq-hash-code', 'eq?', 'equal-hash-code',
174
- 'equal-secondary-hash-code', 'equal?', 'equal?/recur',
175
- 'eqv-hash-code', 'eqv?', 'error', 'error-display-handler',
176
- 'error-escape-handler', 'error-print-context-length',
177
- 'error-print-source-location', 'error-print-width',
178
- 'error-value->string-handler', 'eval', 'eval-jit-enabled',
179
- 'eval-syntax', 'even?', 'evt?', 'exact->inexact', 'exact-integer?',
180
- 'exact-nonnegative-integer?', 'exact-positive-integer?', 'exact?',
181
- 'executable-yield-handler', 'exit', 'exit-handler', 'exn',
182
- 'exn-continuation-marks', 'exn-message', 'exn:break',
183
- 'exn:break-continuation', 'exn:break?', 'exn:fail',
184
- 'exn:fail:contract', 'exn:fail:contract:arity',
185
- 'exn:fail:contract:arity?', 'exn:fail:contract:continuation',
186
- 'exn:fail:contract:continuation?',
187
- 'exn:fail:contract:divide-by-zero',
259
+ 'custom-write-accessor', 'custom-write-property-proc', 'custom-write?',
260
+ 'date', 'date*', 'date*-nanosecond', 'date*-time-zone-name', 'date*?',
261
+ 'date-day', 'date-dst?', 'date-hour', 'date-minute', 'date-month',
262
+ 'date-second', 'date-time-zone-offset', 'date-week-day', 'date-year',
263
+ 'date-year-day', 'date?', 'datum->syntax', 'datum-intern-literal',
264
+ 'default-continuation-prompt-tag', 'degrees->radians',
265
+ 'delete-directory', 'delete-directory/files', 'delete-file',
266
+ 'denominator', 'dict->list', 'dict-can-functional-set?',
267
+ 'dict-can-remove-keys?', 'dict-clear', 'dict-clear!', 'dict-copy',
268
+ 'dict-count', 'dict-empty?', 'dict-for-each', 'dict-has-key?',
269
+ 'dict-implements/c', 'dict-implements?', 'dict-iter-contract',
270
+ 'dict-iterate-first', 'dict-iterate-key', 'dict-iterate-next',
271
+ 'dict-iterate-value', 'dict-key-contract', 'dict-keys', 'dict-map',
272
+ 'dict-mutable?', 'dict-ref', 'dict-ref!', 'dict-remove',
273
+ 'dict-remove!', 'dict-set', 'dict-set!', 'dict-set*', 'dict-set*!',
274
+ 'dict-update', 'dict-update!', 'dict-value-contract', 'dict-values',
275
+ 'dict?', 'directory-exists?', 'directory-list', 'display',
276
+ 'display-lines', 'display-lines-to-file', 'display-to-file',
277
+ 'displayln', 'double-flonum?', 'drop', 'drop-right', 'dropf',
278
+ 'dropf-right', 'dump-memory-stats', 'dup-input-port',
279
+ 'dup-output-port', 'dynamic-get-field', 'dynamic-place',
280
+ 'dynamic-place*', 'dynamic-require', 'dynamic-require-for-syntax',
281
+ 'dynamic-send', 'dynamic-set-field!', 'dynamic-wind', 'eighth',
282
+ 'empty', 'empty-sequence', 'empty-stream', 'empty?',
283
+ 'environment-variables-copy', 'environment-variables-names',
284
+ 'environment-variables-ref', 'environment-variables-set!',
285
+ 'environment-variables?', 'eof', 'eof-evt', 'eof-object?',
286
+ 'ephemeron-value', 'ephemeron?', 'eprintf', 'eq-contract-val',
287
+ 'eq-contract?', 'eq-hash-code', 'eq?', 'equal-contract-val',
288
+ 'equal-contract?', 'equal-hash-code', 'equal-secondary-hash-code',
289
+ 'equal<%>', 'equal?', 'equal?/recur', 'eqv-hash-code', 'eqv?', 'error',
290
+ 'error-display-handler', 'error-escape-handler',
291
+ 'error-print-context-length', 'error-print-source-location',
292
+ 'error-print-width', 'error-value->string-handler', 'eval',
293
+ 'eval-jit-enabled', 'eval-syntax', 'even?', 'evt/c', 'evt?',
294
+ 'exact->inexact', 'exact-ceiling', 'exact-floor', 'exact-integer?',
295
+ 'exact-nonnegative-integer?', 'exact-positive-integer?', 'exact-round',
296
+ 'exact-truncate', 'exact?', 'executable-yield-handler', 'exit',
297
+ 'exit-handler', 'exn', 'exn-continuation-marks', 'exn-message',
298
+ 'exn:break', 'exn:break-continuation', 'exn:break:hang-up',
299
+ 'exn:break:hang-up?', 'exn:break:terminate', 'exn:break:terminate?',
300
+ 'exn:break?', 'exn:fail', 'exn:fail:contract',
301
+ 'exn:fail:contract:arity', 'exn:fail:contract:arity?',
302
+ 'exn:fail:contract:blame', 'exn:fail:contract:blame-object',
303
+ 'exn:fail:contract:blame?', 'exn:fail:contract:continuation',
304
+ 'exn:fail:contract:continuation?', 'exn:fail:contract:divide-by-zero',
188
305
  'exn:fail:contract:divide-by-zero?',
189
306
  'exn:fail:contract:non-fixnum-result',
190
- 'exn:fail:contract:non-fixnum-result?',
191
- 'exn:fail:contract:variable', 'exn:fail:contract:variable-id',
192
- 'exn:fail:contract:variable?', 'exn:fail:contract?',
193
- 'exn:fail:filesystem', 'exn:fail:filesystem:exists',
194
- 'exn:fail:filesystem:exists?', 'exn:fail:filesystem:version',
307
+ 'exn:fail:contract:non-fixnum-result?', 'exn:fail:contract:variable',
308
+ 'exn:fail:contract:variable-id', 'exn:fail:contract:variable?',
309
+ 'exn:fail:contract?', 'exn:fail:filesystem',
310
+ 'exn:fail:filesystem:errno', 'exn:fail:filesystem:errno-errno',
311
+ 'exn:fail:filesystem:errno?', 'exn:fail:filesystem:exists',
312
+ 'exn:fail:filesystem:exists?', 'exn:fail:filesystem:missing-module',
313
+ 'exn:fail:filesystem:missing-module-path',
314
+ 'exn:fail:filesystem:missing-module?', 'exn:fail:filesystem:version',
195
315
  'exn:fail:filesystem:version?', 'exn:fail:filesystem?',
196
- 'exn:fail:network', 'exn:fail:network?', 'exn:fail:out-of-memory',
197
- 'exn:fail:out-of-memory?', 'exn:fail:read',
316
+ 'exn:fail:network', 'exn:fail:network:errno',
317
+ 'exn:fail:network:errno-errno', 'exn:fail:network:errno?',
318
+ 'exn:fail:network?', 'exn:fail:object', 'exn:fail:object?',
319
+ 'exn:fail:out-of-memory', 'exn:fail:out-of-memory?', 'exn:fail:read',
198
320
  'exn:fail:read-srclocs', 'exn:fail:read:eof', 'exn:fail:read:eof?',
199
- 'exn:fail:read:non-char', 'exn:fail:read:non-char?',
200
- 'exn:fail:read?', 'exn:fail:syntax', 'exn:fail:syntax-exprs',
201
- 'exn:fail:syntax:unbound', 'exn:fail:syntax:unbound?',
202
- 'exn:fail:syntax?', 'exn:fail:unsupported',
321
+ 'exn:fail:read:non-char', 'exn:fail:read:non-char?', 'exn:fail:read?',
322
+ 'exn:fail:syntax', 'exn:fail:syntax-exprs',
323
+ 'exn:fail:syntax:missing-module',
324
+ 'exn:fail:syntax:missing-module-path',
325
+ 'exn:fail:syntax:missing-module?', 'exn:fail:syntax:unbound',
326
+ 'exn:fail:syntax:unbound?', 'exn:fail:syntax?', 'exn:fail:unsupported',
203
327
  'exn:fail:unsupported?', 'exn:fail:user', 'exn:fail:user?',
204
- 'exn:fail?', 'exn:srclocs-accessor', 'exn:srclocs?', 'exn?', 'exp',
205
- 'expand', 'expand-once', 'expand-syntax', 'expand-syntax-once',
206
- 'expand-syntax-to-top-form', 'expand-to-top-form',
207
- 'expand-user-path', 'expt', 'file-exists?',
208
- 'file-or-directory-identity', 'file-or-directory-modify-seconds',
209
- 'file-or-directory-permissions', 'file-position', 'file-size',
210
- 'file-stream-buffer-mode', 'file-stream-port?',
211
- 'filesystem-root-list', 'find-executable-path',
212
- 'find-library-collection-paths', 'find-system-path', 'fixnum?',
328
+ 'exn:fail?', 'exn:misc:match?', 'exn:missing-module-accessor',
329
+ 'exn:missing-module?', 'exn:srclocs-accessor', 'exn:srclocs?', 'exn?',
330
+ 'exp', 'expand', 'expand-once', 'expand-syntax', 'expand-syntax-once',
331
+ 'expand-syntax-to-top-form', 'expand-to-top-form', 'expand-user-path',
332
+ 'explode-path', 'expt', 'externalizable<%>', 'false?', 'field-names',
333
+ 'fifth', 'file->bytes', 'file->bytes-lines', 'file->lines',
334
+ 'file->list', 'file->string', 'file->value', 'file-exists?',
335
+ 'file-name-from-path', 'file-or-directory-identity',
336
+ 'file-or-directory-modify-seconds', 'file-or-directory-permissions',
337
+ 'file-position', 'file-position*', 'file-size',
338
+ 'file-stream-buffer-mode', 'file-stream-port?', 'file-truncate',
339
+ 'filename-extension', 'filesystem-change-evt',
340
+ 'filesystem-change-evt-cancel', 'filesystem-change-evt?',
341
+ 'filesystem-root-list', 'filter', 'filter-map', 'filter-not',
342
+ 'filter-read-input-port', 'find-executable-path', 'find-files',
343
+ 'find-library-collection-links', 'find-library-collection-paths',
344
+ 'find-relative-path', 'find-system-path', 'findf', 'first', 'fixnum?',
345
+ 'flat-contract', 'flat-contract-predicate', 'flat-contract-property?',
346
+ 'flat-contract?', 'flat-named-contract', 'flatten',
213
347
  'floating-point-bytes->real', 'flonum?', 'floor', 'flush-output',
214
- 'for-each', 'force', 'format', 'fprintf', 'free-identifier=?',
215
- 'gcd', 'generate-temporaries', 'gensym', 'get-output-bytes',
216
- 'get-output-string', 'getenv', 'global-port-print-handler',
217
- 'guard-evt', 'handle-evt', 'handle-evt?', 'hash', 'hash-equal?',
218
- 'hash-eqv?', 'hash-has-key?', 'hash-placeholder?', 'hash-ref!',
219
- 'hasheq', 'hasheqv', 'identifier-binding',
220
- 'identifier-label-binding', 'identifier-prune-lexical-context',
348
+ 'fold-files', 'foldl', 'foldr', 'for-each', 'force', 'format',
349
+ 'fourth', 'fprintf', 'free-identifier=?', 'free-label-identifier=?',
350
+ 'free-template-identifier=?', 'free-transformer-identifier=?',
351
+ 'fsemaphore-count', 'fsemaphore-post', 'fsemaphore-try-wait?',
352
+ 'fsemaphore-wait', 'fsemaphore?', 'future', 'future?',
353
+ 'futures-enabled?', 'gcd', 'generate-member-key',
354
+ 'generate-temporaries', 'generic-set?', 'generic?', 'gensym',
355
+ 'get-output-bytes', 'get-output-string', 'get-preference',
356
+ 'get/build-val-first-projection', 'getenv',
357
+ 'global-port-print-handler', 'group-execute-bit', 'group-read-bit',
358
+ 'group-write-bit', 'guard-evt', 'handle-evt', 'handle-evt?',
359
+ 'has-contract?', 'hash', 'hash->list', 'hash-clear', 'hash-clear!',
360
+ 'hash-copy', 'hash-copy-clear', 'hash-count', 'hash-empty?',
361
+ 'hash-eq?', 'hash-equal?', 'hash-eqv?', 'hash-for-each',
362
+ 'hash-has-key?', 'hash-iterate-first', 'hash-iterate-key',
363
+ 'hash-iterate-next', 'hash-iterate-value', 'hash-keys', 'hash-map',
364
+ 'hash-placeholder?', 'hash-ref', 'hash-ref!', 'hash-remove',
365
+ 'hash-remove!', 'hash-set', 'hash-set!', 'hash-set*', 'hash-set*!',
366
+ 'hash-update', 'hash-update!', 'hash-values', 'hash-weak?', 'hash/c',
367
+ 'hash?', 'hasheq', 'hasheqv', 'identifier-binding',
368
+ 'identifier-binding-symbol', 'identifier-label-binding',
369
+ 'identifier-prune-lexical-context',
221
370
  'identifier-prune-to-source-module',
222
371
  'identifier-remove-from-definition-context',
223
372
  'identifier-template-binding', 'identifier-transformer-binding',
224
- 'identifier?', 'imag-part', 'immutable?', 'impersonate-box',
225
- 'impersonate-hash', 'impersonate-procedure', 'impersonate-struct',
226
- 'impersonate-vector', 'impersonator-of?',
227
- 'impersonator-prop:application-mark',
228
- 'impersonator-property-accessor-procedure?',
229
- 'impersonator-property?', 'impersonator?', 'inexact->exact',
230
- 'inexact-real?', 'inexact?', 'input-port?', 'inspector?',
231
- 'integer->char', 'integer->integer-bytes',
232
- 'integer-bytes->integer', 'integer-length', 'integer-sqrt',
233
- 'integer-sqrt/remainder', 'integer?',
373
+ 'identifier?', 'identity', 'imag-part', 'immutable?',
374
+ 'impersonate-box', 'impersonate-channel',
375
+ 'impersonate-continuation-mark-key', 'impersonate-hash',
376
+ 'impersonate-procedure', 'impersonate-prompt-tag',
377
+ 'impersonate-struct', 'impersonate-vector', 'impersonator-contract?',
378
+ 'impersonator-ephemeron', 'impersonator-of?',
379
+ 'impersonator-prop:application-mark', 'impersonator-prop:contracted',
380
+ 'impersonator-property-accessor-procedure?', 'impersonator-property?',
381
+ 'impersonator?', 'implementation?', 'implementation?/c', 'in-bytes',
382
+ 'in-bytes-lines', 'in-cycle', 'in-dict', 'in-dict-keys',
383
+ 'in-dict-pairs', 'in-dict-values', 'in-directory', 'in-hash',
384
+ 'in-hash-keys', 'in-hash-pairs', 'in-hash-values', 'in-indexed',
385
+ 'in-input-port-bytes', 'in-input-port-chars', 'in-lines', 'in-list',
386
+ 'in-mlist', 'in-naturals', 'in-parallel', 'in-permutations', 'in-port',
387
+ 'in-producer', 'in-range', 'in-sequences', 'in-set', 'in-stream',
388
+ 'in-string', 'in-value', 'in-values*-sequence', 'in-values-sequence',
389
+ 'in-vector', 'inexact->exact', 'inexact-real?', 'inexact?',
390
+ 'infinite?', 'input-port-append', 'input-port?', 'inspector?',
391
+ 'instanceof/c', 'integer->char', 'integer->integer-bytes',
392
+ 'integer-bytes->integer', 'integer-in', 'integer-length',
393
+ 'integer-sqrt', 'integer-sqrt/remainder', 'integer?',
394
+ 'interface->method-names', 'interface-extension?', 'interface?',
234
395
  'internal-definition-context-seal', 'internal-definition-context?',
235
- 'keyword->string', 'keyword<?', 'keyword?', 'kill-thread', 'lcm',
236
- 'length', 'liberal-define-context?', 'link-exists?', 'list',
237
- 'list*', 'list->bytes', 'list->string', 'list->vector', 'list-ref',
238
- 'list-tail', 'list?', 'load', 'load-extension',
239
- 'load-on-demand-enabled', 'load-relative',
240
- 'load-relative-extension', 'load/cd', 'load/use-compiled',
241
- 'local-expand', 'local-expand/capture-lifts',
242
- 'local-transformer-expand',
243
- 'local-transformer-expand/capture-lifts', 'locale-string-encoding',
244
- 'log', 'magnitude', 'make-arity-at-least', 'make-bytes',
245
- 'make-channel', 'make-continuation-prompt-tag', 'make-custodian',
246
- 'make-custodian-box', 'make-date', 'make-date*',
247
- 'make-derived-parameter', 'make-directory', 'make-ephemeron',
248
- 'make-exn', 'make-exn:break', 'make-exn:fail',
249
- 'make-exn:fail:contract', 'make-exn:fail:contract:arity',
396
+ 'is-a?', 'is-a?/c', 'keyword->string', 'keyword-apply', 'keyword<?',
397
+ 'keyword?', 'keywords-match', 'kill-thread', 'last', 'last-pair',
398
+ 'lcm', 'length', 'liberal-define-context?', 'link-exists?', 'list',
399
+ 'list*', 'list->bytes', 'list->mutable-set', 'list->mutable-seteq',
400
+ 'list->mutable-seteqv', 'list->set', 'list->seteq', 'list->seteqv',
401
+ 'list->string', 'list->vector', 'list->weak-set', 'list->weak-seteq',
402
+ 'list->weak-seteqv', 'list-ref', 'list-tail', 'list/c', 'list?',
403
+ 'listof', 'load', 'load-extension', 'load-on-demand-enabled',
404
+ 'load-relative', 'load-relative-extension', 'load/cd',
405
+ 'load/use-compiled', 'local-expand', 'local-expand/capture-lifts',
406
+ 'local-transformer-expand', 'local-transformer-expand/capture-lifts',
407
+ 'locale-string-encoding', 'log', 'log-level?', 'log-max-level',
408
+ 'log-message', 'log-receiver?', 'logger-name', 'logger?', 'magnitude',
409
+ 'make-arity-at-least', 'make-base-empty-namespace',
410
+ 'make-base-namespace', 'make-bytes', 'make-channel',
411
+ 'make-chaperone-contract', 'make-continuation-mark-key',
412
+ 'make-continuation-prompt-tag', 'make-contract', 'make-custodian',
413
+ 'make-custodian-box', 'make-custom-hash', 'make-custom-hash-types',
414
+ 'make-custom-set', 'make-custom-set-types', 'make-date', 'make-date*',
415
+ 'make-derived-parameter', 'make-directory', 'make-directory*',
416
+ 'make-do-sequence', 'make-empty-namespace',
417
+ 'make-environment-variables', 'make-ephemeron', 'make-exn',
418
+ 'make-exn:break', 'make-exn:break:hang-up', 'make-exn:break:terminate',
419
+ 'make-exn:fail', 'make-exn:fail:contract',
420
+ 'make-exn:fail:contract:arity', 'make-exn:fail:contract:blame',
250
421
  'make-exn:fail:contract:continuation',
251
422
  'make-exn:fail:contract:divide-by-zero',
252
423
  'make-exn:fail:contract:non-fixnum-result',
253
424
  'make-exn:fail:contract:variable', 'make-exn:fail:filesystem',
254
- 'make-exn:fail:filesystem:exists',
425
+ 'make-exn:fail:filesystem:errno', 'make-exn:fail:filesystem:exists',
426
+ 'make-exn:fail:filesystem:missing-module',
255
427
  'make-exn:fail:filesystem:version', 'make-exn:fail:network',
428
+ 'make-exn:fail:network:errno', 'make-exn:fail:object',
256
429
  'make-exn:fail:out-of-memory', 'make-exn:fail:read',
257
430
  'make-exn:fail:read:eof', 'make-exn:fail:read:non-char',
258
- 'make-exn:fail:syntax', 'make-exn:fail:syntax:unbound',
259
- 'make-exn:fail:unsupported', 'make-exn:fail:user',
260
- 'make-file-or-directory-link', 'make-hash-placeholder',
261
- 'make-hasheq-placeholder', 'make-hasheqv',
262
- 'make-hasheqv-placeholder', 'make-immutable-hasheqv',
263
- 'make-impersonator-property', 'make-input-port', 'make-inspector',
264
- 'make-known-char-range-list', 'make-output-port', 'make-parameter',
265
- 'make-pipe', 'make-placeholder', 'make-polar',
266
- 'make-prefab-struct', 'make-pseudo-random-generator',
431
+ 'make-exn:fail:syntax', 'make-exn:fail:syntax:missing-module',
432
+ 'make-exn:fail:syntax:unbound', 'make-exn:fail:unsupported',
433
+ 'make-exn:fail:user', 'make-file-or-directory-link',
434
+ 'make-flat-contract', 'make-fsemaphore', 'make-generic',
435
+ 'make-handle-get-preference-locked', 'make-hash',
436
+ 'make-hash-placeholder', 'make-hasheq', 'make-hasheq-placeholder',
437
+ 'make-hasheqv', 'make-hasheqv-placeholder',
438
+ 'make-immutable-custom-hash', 'make-immutable-hash',
439
+ 'make-immutable-hasheq', 'make-immutable-hasheqv',
440
+ 'make-impersonator-property', 'make-input-port',
441
+ 'make-input-port/read-to-peek', 'make-inspector',
442
+ 'make-keyword-procedure', 'make-known-char-range-list',
443
+ 'make-limited-input-port', 'make-list', 'make-lock-file-name',
444
+ 'make-log-receiver', 'make-logger', 'make-mixin-contract',
445
+ 'make-mutable-custom-set', 'make-none/c', 'make-object',
446
+ 'make-output-port', 'make-parameter', 'make-phantom-bytes',
447
+ 'make-pipe', 'make-pipe-with-specials', 'make-placeholder',
448
+ 'make-polar', 'make-prefab-struct', 'make-primitive-class',
449
+ 'make-proj-contract', 'make-pseudo-random-generator',
267
450
  'make-reader-graph', 'make-readtable', 'make-rectangular',
268
451
  'make-rename-transformer', 'make-resolved-module-path',
269
452
  'make-security-guard', 'make-semaphore', 'make-set!-transformer',
270
- 'make-shared-bytes', 'make-sibling-inspector',
271
- 'make-special-comment', 'make-srcloc', 'make-string',
272
- 'make-struct-field-accessor', 'make-struct-field-mutator',
273
- 'make-struct-type', 'make-struct-type-property',
274
- 'make-syntax-delta-introducer', 'make-syntax-introducer',
275
- 'make-thread-cell', 'make-thread-group', 'make-vector',
276
- 'make-weak-box', 'make-weak-hasheqv', 'make-will-executor', 'map',
277
- 'max', 'mcar', 'mcdr', 'mcons', 'member', 'memq', 'memv', 'min',
278
- 'module->exports', 'module->imports', 'module->language-info',
279
- 'module->namespace', 'module-compiled-exports',
453
+ 'make-shared-bytes', 'make-sibling-inspector', 'make-special-comment',
454
+ 'make-srcloc', 'make-string', 'make-struct-field-accessor',
455
+ 'make-struct-field-mutator', 'make-struct-type',
456
+ 'make-struct-type-property', 'make-syntax-delta-introducer',
457
+ 'make-syntax-introducer', 'make-temporary-file',
458
+ 'make-tentative-pretty-print-output-port', 'make-thread-cell',
459
+ 'make-thread-group', 'make-vector', 'make-weak-box',
460
+ 'make-weak-custom-hash', 'make-weak-custom-set', 'make-weak-hash',
461
+ 'make-weak-hasheq', 'make-weak-hasheqv', 'make-will-executor', 'map',
462
+ 'match-equality-test', 'matches-arity-exactly?', 'max', 'mcar', 'mcdr',
463
+ 'mcons', 'member', 'member-name-key-hash-code', 'member-name-key=?',
464
+ 'member-name-key?', 'memf', 'memq', 'memv', 'merge-input',
465
+ 'method-in-interface?', 'min', 'mixin-contract', 'module->exports',
466
+ 'module->imports', 'module->language-info', 'module->namespace',
467
+ 'module-compiled-cross-phase-persistent?', 'module-compiled-exports',
280
468
  'module-compiled-imports', 'module-compiled-language-info',
281
- 'module-compiled-name', 'module-path-index-join',
469
+ 'module-compiled-name', 'module-compiled-submodules',
470
+ 'module-declared?', 'module-path-index-join',
282
471
  'module-path-index-resolve', 'module-path-index-split',
283
- 'module-path-index?', 'module-path?', 'module-predefined?',
284
- 'module-provide-protected?', 'modulo', 'mpair?', 'nack-guard-evt',
472
+ 'module-path-index-submodule', 'module-path-index?', 'module-path?',
473
+ 'module-predefined?', 'module-provide-protected?', 'modulo', 'mpair?',
474
+ 'mutable-set', 'mutable-seteq', 'mutable-seteqv', 'n->th',
475
+ 'nack-guard-evt', 'namespace-anchor->empty-namespace',
476
+ 'namespace-anchor->namespace', 'namespace-anchor?',
285
477
  'namespace-attach-module', 'namespace-attach-module-declaration',
286
478
  'namespace-base-phase', 'namespace-mapped-symbols',
287
479
  'namespace-module-identifier', 'namespace-module-registry',
@@ -289,136 +481,212 @@ class RacketLexer(RegexLexer):
289
481
  'namespace-require/copy', 'namespace-require/expansion-time',
290
482
  'namespace-set-variable-value!', 'namespace-symbol->identifier',
291
483
  'namespace-syntax-introduce', 'namespace-undefine-variable!',
292
- 'namespace-unprotect-module', 'namespace-variable-value',
293
- 'namespace?', 'negative?', 'never-evt', 'newline',
294
- 'normal-case-path', 'not', 'null', 'null?', 'number->string',
295
- 'number?', 'numerator', 'object-name', 'odd?', 'open-input-bytes',
484
+ 'namespace-unprotect-module', 'namespace-variable-value', 'namespace?',
485
+ 'nan?', 'natural-number/c', 'negate', 'negative?', 'never-evt',
486
+ u'new-∀/c', u'new-∃/c', 'newline', 'ninth', 'non-empty-listof',
487
+ 'none/c', 'normal-case-path', 'normalize-arity', 'normalize-path',
488
+ 'normalized-arity?', 'not', 'not/c', 'null', 'null?', 'number->string',
489
+ 'number?', 'numerator', 'object%', 'object->vector', 'object-info',
490
+ 'object-interface', 'object-method-arity-includes?', 'object-name',
491
+ 'object=?', 'object?', 'odd?', 'one-of/c', 'open-input-bytes',
296
492
  'open-input-file', 'open-input-output-file', 'open-input-string',
297
- 'open-output-bytes', 'open-output-file', 'open-output-string',
298
- 'ormap', 'output-port?', 'pair?', 'parameter-procedure=?',
299
- 'parameter?', 'parameterization?', 'path->bytes',
300
- 'path->complete-path', 'path->directory-path', 'path->string',
301
- 'path-add-suffix', 'path-convention-type', 'path-element->bytes',
302
- 'path-element->string', 'path-for-some-system?',
303
- 'path-list-string->path-list', 'path-replace-suffix',
304
- 'path-string?', 'path?', 'peek-byte', 'peek-byte-or-special',
305
- 'peek-bytes', 'peek-bytes!', 'peek-bytes-avail!',
306
- 'peek-bytes-avail!*', 'peek-bytes-avail!/enable-break',
307
- 'peek-char', 'peek-char-or-special', 'peek-string', 'peek-string!',
308
- 'pipe-content-length', 'placeholder-get', 'placeholder-set!',
309
- 'placeholder?', 'poll-guard-evt', 'port-closed-evt',
310
- 'port-closed?', 'port-commit-peeked', 'port-count-lines!',
311
- 'port-count-lines-enabled', 'port-display-handler',
312
- 'port-file-identity', 'port-file-unlock', 'port-next-location',
313
- 'port-print-handler', 'port-progress-evt',
314
- 'port-provides-progress-evts?', 'port-read-handler',
315
- 'port-try-file-lock?', 'port-write-handler', 'port-writes-atomic?',
316
- 'port-writes-special?', 'port?', 'positive?',
317
- 'prefab-key->struct-type', 'prefab-struct-key', 'pregexp',
318
- 'pregexp?', 'primitive-closure?', 'primitive-result-arity',
319
- 'primitive?', 'print', 'print-as-expression',
493
+ 'open-output-bytes', 'open-output-file', 'open-output-nowhere',
494
+ 'open-output-string', 'or/c', 'order-of-magnitude', 'ormap',
495
+ 'other-execute-bit', 'other-read-bit', 'other-write-bit',
496
+ 'output-port?', 'pair?', 'parameter-procedure=?', 'parameter/c',
497
+ 'parameter?', 'parameterization?', 'parse-command-line', 'partition',
498
+ 'path->bytes', 'path->complete-path', 'path->directory-path',
499
+ 'path->string', 'path-add-suffix', 'path-convention-type',
500
+ 'path-element->bytes', 'path-element->string', 'path-element?',
501
+ 'path-for-some-system?', 'path-list-string->path-list', 'path-only',
502
+ 'path-replace-suffix', 'path-string?', 'path<?', 'path?',
503
+ 'pathlist-closure', 'peek-byte', 'peek-byte-or-special', 'peek-bytes',
504
+ 'peek-bytes!', 'peek-bytes!-evt', 'peek-bytes-avail!',
505
+ 'peek-bytes-avail!*', 'peek-bytes-avail!-evt',
506
+ 'peek-bytes-avail!/enable-break', 'peek-bytes-evt', 'peek-char',
507
+ 'peek-char-or-special', 'peek-string', 'peek-string!',
508
+ 'peek-string!-evt', 'peek-string-evt', 'peeking-input-port',
509
+ 'permutations', 'phantom-bytes?', 'pi', 'pi.f', 'pipe-content-length',
510
+ 'place-break', 'place-channel', 'place-channel-get',
511
+ 'place-channel-put', 'place-channel-put/get', 'place-channel?',
512
+ 'place-dead-evt', 'place-enabled?', 'place-kill', 'place-location?',
513
+ 'place-message-allowed?', 'place-sleep', 'place-wait', 'place?',
514
+ 'placeholder-get', 'placeholder-set!', 'placeholder?',
515
+ 'poll-guard-evt', 'port->bytes', 'port->bytes-lines', 'port->lines',
516
+ 'port->list', 'port->string', 'port-closed-evt', 'port-closed?',
517
+ 'port-commit-peeked', 'port-count-lines!', 'port-count-lines-enabled',
518
+ 'port-counts-lines?', 'port-display-handler', 'port-file-identity',
519
+ 'port-file-unlock', 'port-next-location', 'port-print-handler',
520
+ 'port-progress-evt', 'port-provides-progress-evts?',
521
+ 'port-read-handler', 'port-try-file-lock?', 'port-write-handler',
522
+ 'port-writes-atomic?', 'port-writes-special?', 'port?', 'positive?',
523
+ 'predicate/c', 'prefab-key->struct-type', 'prefab-key?',
524
+ 'prefab-struct-key', 'preferences-lock-file-mode', 'pregexp',
525
+ 'pregexp?', 'pretty-display', 'pretty-format', 'pretty-print',
526
+ 'pretty-print-.-symbol-without-bars',
527
+ 'pretty-print-abbreviate-read-macros', 'pretty-print-columns',
528
+ 'pretty-print-current-style-table', 'pretty-print-depth',
529
+ 'pretty-print-exact-as-decimal', 'pretty-print-extend-style-table',
530
+ 'pretty-print-handler', 'pretty-print-newline',
531
+ 'pretty-print-post-print-hook', 'pretty-print-pre-print-hook',
532
+ 'pretty-print-print-hook', 'pretty-print-print-line',
533
+ 'pretty-print-remap-stylable', 'pretty-print-show-inexactness',
534
+ 'pretty-print-size-hook', 'pretty-print-style-table?',
535
+ 'pretty-printing', 'pretty-write', 'primitive-closure?',
536
+ 'primitive-result-arity', 'primitive?', 'print', 'print-as-expression',
320
537
  'print-boolean-long-form', 'print-box', 'print-graph',
321
538
  'print-hash-table', 'print-mpair-curly-braces',
322
539
  'print-pair-curly-braces', 'print-reader-abbreviations',
323
540
  'print-struct', 'print-syntax-width', 'print-unreadable',
324
- 'print-vector-length', 'printf', 'procedure->method',
325
- 'procedure-arity', 'procedure-arity-includes?', 'procedure-arity?',
541
+ 'print-vector-length', 'printable/c', 'printable<%>', 'printf',
542
+ 'procedure->method', 'procedure-arity', 'procedure-arity-includes/c',
543
+ 'procedure-arity-includes?', 'procedure-arity?',
326
544
  'procedure-closure-contents-eq?', 'procedure-extract-target',
327
- 'procedure-reduce-arity', 'procedure-rename',
328
- 'procedure-struct-type?', 'procedure?', 'promise?',
329
- 'prop:arity-string', 'prop:checked-procedure',
330
- 'prop:custom-print-quotable', 'prop:custom-write',
331
- 'prop:equal+hash', 'prop:evt', 'prop:exn:srclocs',
545
+ 'procedure-keywords', 'procedure-reduce-arity',
546
+ 'procedure-reduce-keyword-arity', 'procedure-rename',
547
+ 'procedure-struct-type?', 'procedure?', 'process', 'process*',
548
+ 'process*/ports', 'process/ports', 'processor-count', 'progress-evt?',
549
+ 'promise-forced?', 'promise-running?', 'promise/c', 'promise?',
550
+ 'prop:arity-string', 'prop:chaperone-contract',
551
+ 'prop:checked-procedure', 'prop:contract', 'prop:contracted',
552
+ 'prop:custom-print-quotable', 'prop:custom-write', 'prop:dict',
553
+ 'prop:dict/contract', 'prop:equal+hash', 'prop:evt',
554
+ 'prop:exn:missing-module', 'prop:exn:srclocs', 'prop:flat-contract',
332
555
  'prop:impersonator-of', 'prop:input-port',
333
- 'prop:liberal-define-context', 'prop:output-port',
334
- 'prop:procedure', 'prop:rename-transformer',
335
- 'prop:set!-transformer', 'pseudo-random-generator->vector',
556
+ 'prop:liberal-define-context', 'prop:opt-chaperone-contract',
557
+ 'prop:opt-chaperone-contract-get-test', 'prop:opt-chaperone-contract?',
558
+ 'prop:output-port', 'prop:place-location', 'prop:procedure',
559
+ 'prop:rename-transformer', 'prop:sequence', 'prop:set!-transformer',
560
+ 'prop:stream', 'proper-subset?', 'pseudo-random-generator->vector',
336
561
  'pseudo-random-generator-vector?', 'pseudo-random-generator?',
337
- 'putenv', 'quotient', 'quotient/remainder', 'raise',
338
- 'raise-arity-error', 'raise-mismatch-error', 'raise-syntax-error',
339
- 'raise-type-error', 'raise-user-error', 'random', 'random-seed',
340
- 'rational?', 'rationalize', 'read', 'read-accept-bar-quote',
341
- 'read-accept-box', 'read-accept-compiled', 'read-accept-dot',
342
- 'read-accept-graph', 'read-accept-infix-dot', 'read-accept-lang',
343
- 'read-accept-quasiquote', 'read-accept-reader', 'read-byte',
344
- 'read-byte-or-special', 'read-bytes', 'read-bytes!',
345
- 'read-bytes-avail!', 'read-bytes-avail!*',
346
- 'read-bytes-avail!/enable-break', 'read-bytes-line',
347
- 'read-case-sensitive', 'read-char', 'read-char-or-special',
348
- 'read-curly-brace-as-paren', 'read-decimal-as-inexact',
349
- 'read-eval-print-loop', 'read-language', 'read-line',
350
- 'read-on-demand-source', 'read-square-bracket-as-paren',
351
- 'read-string', 'read-string!', 'read-syntax',
562
+ 'put-preferences', 'putenv', 'quotient', 'quotient/remainder',
563
+ 'radians->degrees', 'raise', 'raise-argument-error',
564
+ 'raise-arguments-error', 'raise-arity-error', 'raise-blame-error',
565
+ 'raise-contract-error', 'raise-mismatch-error',
566
+ 'raise-not-cons-blame-error', 'raise-range-error',
567
+ 'raise-result-error', 'raise-syntax-error', 'raise-type-error',
568
+ 'raise-user-error', 'random', 'random-seed', 'range', 'rational?',
569
+ 'rationalize', 'read', 'read-accept-bar-quote', 'read-accept-box',
570
+ 'read-accept-compiled', 'read-accept-dot', 'read-accept-graph',
571
+ 'read-accept-infix-dot', 'read-accept-lang', 'read-accept-quasiquote',
572
+ 'read-accept-reader', 'read-byte', 'read-byte-or-special',
573
+ 'read-bytes', 'read-bytes!', 'read-bytes!-evt', 'read-bytes-avail!',
574
+ 'read-bytes-avail!*', 'read-bytes-avail!-evt',
575
+ 'read-bytes-avail!/enable-break', 'read-bytes-evt', 'read-bytes-line',
576
+ 'read-bytes-line-evt', 'read-case-sensitive', 'read-char',
577
+ 'read-char-or-special', 'read-curly-brace-as-paren',
578
+ 'read-decimal-as-inexact', 'read-eval-print-loop', 'read-language',
579
+ 'read-line', 'read-line-evt', 'read-on-demand-source',
580
+ 'read-square-bracket-as-paren', 'read-string', 'read-string!',
581
+ 'read-string!-evt', 'read-string-evt', 'read-syntax',
352
582
  'read-syntax/recursive', 'read/recursive', 'readtable-mapping',
353
- 'readtable?', 'real->double-flonum', 'real->floating-point-bytes',
354
- 'real->single-flonum', 'real-part', 'real?', 'regexp',
355
- 'regexp-match', 'regexp-match-peek', 'regexp-match-peek-immediate',
356
- 'regexp-match-peek-positions',
583
+ 'readtable?', 'real->decimal-string', 'real->double-flonum',
584
+ 'real->floating-point-bytes', 'real->single-flonum', 'real-in',
585
+ 'real-part', 'real?', 'reencode-input-port', 'reencode-output-port',
586
+ 'regexp', 'regexp-match', 'regexp-match*', 'regexp-match-evt',
587
+ 'regexp-match-exact?', 'regexp-match-peek',
588
+ 'regexp-match-peek-immediate', 'regexp-match-peek-positions',
589
+ 'regexp-match-peek-positions*',
357
590
  'regexp-match-peek-positions-immediate',
358
591
  'regexp-match-peek-positions-immediate/end',
359
592
  'regexp-match-peek-positions/end', 'regexp-match-positions',
360
- 'regexp-match-positions/end', 'regexp-match/end', 'regexp-match?',
361
- 'regexp-max-lookbehind', 'regexp-replace', 'regexp-replace*',
362
- 'regexp?', 'relative-path?', 'remainder',
593
+ 'regexp-match-positions*', 'regexp-match-positions/end',
594
+ 'regexp-match/end', 'regexp-match?', 'regexp-max-lookbehind',
595
+ 'regexp-quote', 'regexp-replace', 'regexp-replace*',
596
+ 'regexp-replace-quote', 'regexp-replaces', 'regexp-split',
597
+ 'regexp-try-match', 'regexp?', 'relative-path?', 'relocate-input-port',
598
+ 'relocate-output-port', 'remainder', 'remove', 'remove*',
599
+ 'remove-duplicates', 'remq', 'remq*', 'remv', 'remv*',
363
600
  'rename-file-or-directory', 'rename-transformer-target',
364
- 'rename-transformer?', 'resolve-path', 'resolved-module-path-name',
365
- 'resolved-module-path?', 'reverse', 'round', 'seconds->date',
366
- 'security-guard?', 'semaphore-peek-evt', 'semaphore-post',
367
- 'semaphore-try-wait?', 'semaphore-wait',
368
- 'semaphore-wait/enable-break', 'semaphore?',
369
- 'set!-transformer-procedure', 'set!-transformer?', 'set-box!',
370
- 'set-mcar!', 'set-mcdr!', 'set-port-next-location!',
371
- 'shared-bytes', 'shell-execute', 'simplify-path', 'sin',
372
- 'single-flonum?', 'sleep', 'special-comment-value',
373
- 'special-comment?', 'split-path', 'sqrt', 'srcloc',
374
- 'srcloc-column', 'srcloc-line', 'srcloc-position', 'srcloc-source',
375
- 'srcloc-span', 'srcloc?', 'string', 'string->bytes/latin-1',
376
- 'string->bytes/locale', 'string->bytes/utf-8',
601
+ 'rename-transformer?', 'reroot-path', 'resolve-path',
602
+ 'resolved-module-path-name', 'resolved-module-path?', 'rest',
603
+ 'reverse', 'round', 'second', 'seconds->date', 'security-guard?',
604
+ 'semaphore-peek-evt', 'semaphore-peek-evt?', 'semaphore-post',
605
+ 'semaphore-try-wait?', 'semaphore-wait', 'semaphore-wait/enable-break',
606
+ 'semaphore?', 'sequence->list', 'sequence->stream',
607
+ 'sequence-add-between', 'sequence-andmap', 'sequence-append',
608
+ 'sequence-count', 'sequence-filter', 'sequence-fold',
609
+ 'sequence-for-each', 'sequence-generate', 'sequence-generate*',
610
+ 'sequence-length', 'sequence-map', 'sequence-ormap', 'sequence-ref',
611
+ 'sequence-tail', 'sequence?', 'set', 'set!-transformer-procedure',
612
+ 'set!-transformer?', 'set->list', 'set->stream', 'set-add', 'set-add!',
613
+ 'set-box!', 'set-clear', 'set-clear!', 'set-copy', 'set-copy-clear',
614
+ 'set-count', 'set-empty?', 'set-eq?', 'set-equal?', 'set-eqv?',
615
+ 'set-first', 'set-for-each', 'set-implements/c', 'set-implements?',
616
+ 'set-intersect', 'set-intersect!', 'set-map', 'set-mcar!', 'set-mcdr!',
617
+ 'set-member?', 'set-mutable?', 'set-phantom-bytes!',
618
+ 'set-port-next-location!', 'set-remove', 'set-remove!', 'set-rest',
619
+ 'set-subtract', 'set-subtract!', 'set-symmetric-difference',
620
+ 'set-symmetric-difference!', 'set-union', 'set-union!', 'set-weak?',
621
+ 'set/c', 'set=?', 'set?', 'seteq', 'seteqv', 'seventh', 'sgn',
622
+ 'shared-bytes', 'shell-execute', 'shrink-path-wrt', 'shuffle',
623
+ 'simple-form-path', 'simplify-path', 'sin', 'single-flonum?', 'sinh',
624
+ 'sixth', 'skip-projection-wrapper?', 'sleep',
625
+ 'some-system-path->string', 'sort', 'special-comment-value',
626
+ 'special-comment?', 'special-filter-input-port', 'split-at',
627
+ 'split-at-right', 'split-path', 'splitf-at', 'splitf-at-right', 'sqr',
628
+ 'sqrt', 'srcloc', 'srcloc->string', 'srcloc-column', 'srcloc-line',
629
+ 'srcloc-position', 'srcloc-source', 'srcloc-span', 'srcloc?',
630
+ 'stop-after', 'stop-before', 'stream->list', 'stream-add-between',
631
+ 'stream-andmap', 'stream-append', 'stream-count', 'stream-empty?',
632
+ 'stream-filter', 'stream-first', 'stream-fold', 'stream-for-each',
633
+ 'stream-length', 'stream-map', 'stream-ormap', 'stream-ref',
634
+ 'stream-rest', 'stream-tail', 'stream?', 'string',
635
+ 'string->bytes/latin-1', 'string->bytes/locale', 'string->bytes/utf-8',
377
636
  'string->immutable-string', 'string->keyword', 'string->list',
378
637
  'string->number', 'string->path', 'string->path-element',
379
- 'string->symbol', 'string->uninterned-symbol',
380
- 'string->unreadable-symbol', 'string-append', 'string-ci<=?',
381
- 'string-ci<?', 'string-ci=?', 'string-ci>=?', 'string-ci>?',
382
- 'string-copy', 'string-copy!', 'string-downcase', 'string-fill!',
383
- 'string-foldcase', 'string-length', 'string-locale-ci<?',
384
- 'string-locale-ci=?', 'string-locale-ci>?',
385
- 'string-locale-downcase', 'string-locale-upcase',
638
+ 'string->some-system-path', 'string->symbol',
639
+ 'string->uninterned-symbol', 'string->unreadable-symbol',
640
+ 'string-append', 'string-append*', 'string-ci<=?', 'string-ci<?',
641
+ 'string-ci=?', 'string-ci>=?', 'string-ci>?', 'string-copy',
642
+ 'string-copy!', 'string-downcase', 'string-environment-variable-name?',
643
+ 'string-fill!', 'string-foldcase', 'string-join', 'string-len/c',
644
+ 'string-length', 'string-locale-ci<?', 'string-locale-ci=?',
645
+ 'string-locale-ci>?', 'string-locale-downcase', 'string-locale-upcase',
386
646
  'string-locale<?', 'string-locale=?', 'string-locale>?',
387
- 'string-normalize-nfc', 'string-normalize-nfd',
388
- 'string-normalize-nfkc', 'string-normalize-nfkd', 'string-ref',
389
- 'string-set!', 'string-titlecase', 'string-upcase',
390
- 'string-utf-8-length', 'string<=?', 'string<?', 'string=?',
391
- 'string>=?', 'string>?', 'string?', 'struct->vector',
647
+ 'string-no-nuls?', 'string-normalize-nfc', 'string-normalize-nfd',
648
+ 'string-normalize-nfkc', 'string-normalize-nfkd',
649
+ 'string-normalize-spaces', 'string-ref', 'string-replace',
650
+ 'string-set!', 'string-split', 'string-titlecase', 'string-trim',
651
+ 'string-upcase', 'string-utf-8-length', 'string<=?', 'string<?',
652
+ 'string=?', 'string>=?', 'string>?', 'string?', 'struct->vector',
392
653
  'struct-accessor-procedure?', 'struct-constructor-procedure?',
393
654
  'struct-info', 'struct-mutator-procedure?',
394
655
  'struct-predicate-procedure?', 'struct-type-info',
395
656
  'struct-type-make-constructor', 'struct-type-make-predicate',
396
- 'struct-type-property-accessor-procedure?',
657
+ 'struct-type-property-accessor-procedure?', 'struct-type-property/c',
397
658
  'struct-type-property?', 'struct-type?', 'struct:arity-at-least',
398
659
  'struct:date', 'struct:date*', 'struct:exn', 'struct:exn:break',
660
+ 'struct:exn:break:hang-up', 'struct:exn:break:terminate',
399
661
  'struct:exn:fail', 'struct:exn:fail:contract',
400
- 'struct:exn:fail:contract:arity',
662
+ 'struct:exn:fail:contract:arity', 'struct:exn:fail:contract:blame',
401
663
  'struct:exn:fail:contract:continuation',
402
664
  'struct:exn:fail:contract:divide-by-zero',
403
665
  'struct:exn:fail:contract:non-fixnum-result',
404
666
  'struct:exn:fail:contract:variable', 'struct:exn:fail:filesystem',
667
+ 'struct:exn:fail:filesystem:errno',
405
668
  'struct:exn:fail:filesystem:exists',
669
+ 'struct:exn:fail:filesystem:missing-module',
406
670
  'struct:exn:fail:filesystem:version', 'struct:exn:fail:network',
671
+ 'struct:exn:fail:network:errno', 'struct:exn:fail:object',
407
672
  'struct:exn:fail:out-of-memory', 'struct:exn:fail:read',
408
673
  'struct:exn:fail:read:eof', 'struct:exn:fail:read:non-char',
409
- 'struct:exn:fail:syntax', 'struct:exn:fail:syntax:unbound',
410
- 'struct:exn:fail:unsupported', 'struct:exn:fail:user',
411
- 'struct:srcloc', 'struct?', 'sub1', 'subbytes', 'subprocess',
412
- 'subprocess-group-enabled', 'subprocess-kill', 'subprocess-pid',
413
- 'subprocess-status', 'subprocess-wait', 'subprocess?', 'substring',
414
- 'symbol->string', 'symbol-interned?', 'symbol-unreadable?',
415
- 'symbol?', 'sync', 'sync/enable-break', 'sync/timeout',
416
- 'sync/timeout/enable-break', 'syntax->list', 'syntax-arm',
417
- 'syntax-column', 'syntax-disarm', 'syntax-e', 'syntax-line',
418
- 'syntax-local-bind-syntaxes', 'syntax-local-certifier',
419
- 'syntax-local-context', 'syntax-local-expand-expression',
420
- 'syntax-local-get-shadower', 'syntax-local-introduce',
421
- 'syntax-local-lift-context', 'syntax-local-lift-expression',
674
+ 'struct:exn:fail:syntax', 'struct:exn:fail:syntax:missing-module',
675
+ 'struct:exn:fail:syntax:unbound', 'struct:exn:fail:unsupported',
676
+ 'struct:exn:fail:user', 'struct:srcloc',
677
+ 'struct:wrapped-extra-arg-arrow', 'struct?', 'sub1', 'subbytes',
678
+ 'subclass?', 'subclass?/c', 'subprocess', 'subprocess-group-enabled',
679
+ 'subprocess-kill', 'subprocess-pid', 'subprocess-status',
680
+ 'subprocess-wait', 'subprocess?', 'subset?', 'substring',
681
+ 'symbol->string', 'symbol-interned?', 'symbol-unreadable?', 'symbol<?',
682
+ 'symbol=?', 'symbol?', 'symbols', 'sync', 'sync/enable-break',
683
+ 'sync/timeout', 'sync/timeout/enable-break', 'syntax->datum',
684
+ 'syntax->list', 'syntax-arm', 'syntax-column', 'syntax-disarm',
685
+ 'syntax-e', 'syntax-line', 'syntax-local-bind-syntaxes',
686
+ 'syntax-local-certifier', 'syntax-local-context',
687
+ 'syntax-local-expand-expression', 'syntax-local-get-shadower',
688
+ 'syntax-local-introduce', 'syntax-local-lift-context',
689
+ 'syntax-local-lift-expression',
422
690
  'syntax-local-lift-module-end-declaration',
423
691
  'syntax-local-lift-provide', 'syntax-local-lift-require',
424
692
  'syntax-local-lift-values-expression',
@@ -427,163 +695,232 @@ class RacketLexer(RegexLexer):
427
695
  'syntax-local-module-defined-identifiers',
428
696
  'syntax-local-module-exports',
429
697
  'syntax-local-module-required-identifiers', 'syntax-local-name',
430
- 'syntax-local-phase-level',
698
+ 'syntax-local-phase-level', 'syntax-local-submodules',
431
699
  'syntax-local-transforming-module-provides?', 'syntax-local-value',
432
- 'syntax-local-value/immediate', 'syntax-original?',
433
- 'syntax-position', 'syntax-property',
434
- 'syntax-property-symbol-keys', 'syntax-protect', 'syntax-rearm',
435
- 'syntax-recertify', 'syntax-shift-phase-level', 'syntax-source',
436
- 'syntax-source-module', 'syntax-span', 'syntax-taint',
700
+ 'syntax-local-value/immediate', 'syntax-original?', 'syntax-position',
701
+ 'syntax-property', 'syntax-property-symbol-keys', 'syntax-protect',
702
+ 'syntax-rearm', 'syntax-recertify', 'syntax-shift-phase-level',
703
+ 'syntax-source', 'syntax-source-module', 'syntax-span', 'syntax-taint',
437
704
  'syntax-tainted?', 'syntax-track-origin',
438
705
  'syntax-transforming-module-expression?', 'syntax-transforming?',
439
- 'syntax?', 'system-big-endian?', 'system-idle-evt',
440
- 'system-language+country', 'system-library-subpath',
441
- 'system-path-convention-type', 'system-type', 'tan',
442
- 'tcp-abandon-port', 'tcp-accept', 'tcp-accept-evt',
443
- 'tcp-accept-ready?', 'tcp-accept/enable-break', 'tcp-addresses',
444
- 'tcp-close', 'tcp-connect', 'tcp-connect/enable-break',
445
- 'tcp-listen', 'tcp-listener?', 'tcp-port?', 'terminal-port?',
446
- 'thread', 'thread-cell-ref', 'thread-cell-set!', 'thread-cell?',
447
- 'thread-dead-evt', 'thread-dead?', 'thread-group?',
448
- 'thread-resume', 'thread-resume-evt', 'thread-rewind-receive',
449
- 'thread-running?', 'thread-suspend', 'thread-suspend-evt',
706
+ 'syntax/c', 'syntax?', 'system', 'system*', 'system*/exit-code',
707
+ 'system-big-endian?', 'system-idle-evt', 'system-language+country',
708
+ 'system-library-subpath', 'system-path-convention-type', 'system-type',
709
+ 'system/exit-code', 'tail-marks-match?', 'take', 'take-right', 'takef',
710
+ 'takef-right', 'tan', 'tanh', 'tcp-abandon-port', 'tcp-accept',
711
+ 'tcp-accept-evt', 'tcp-accept-ready?', 'tcp-accept/enable-break',
712
+ 'tcp-addresses', 'tcp-close', 'tcp-connect',
713
+ 'tcp-connect/enable-break', 'tcp-listen', 'tcp-listener?', 'tcp-port?',
714
+ 'tentative-pretty-print-port-cancel',
715
+ 'tentative-pretty-print-port-transfer', 'tenth', 'terminal-port?',
716
+ 'the-unsupplied-arg', 'third', 'thread', 'thread-cell-ref',
717
+ 'thread-cell-set!', 'thread-cell-values?', 'thread-cell?',
718
+ 'thread-dead-evt', 'thread-dead?', 'thread-group?', 'thread-receive',
719
+ 'thread-receive-evt', 'thread-resume', 'thread-resume-evt',
720
+ 'thread-rewind-receive', 'thread-running?', 'thread-send',
721
+ 'thread-suspend', 'thread-suspend-evt', 'thread-try-receive',
450
722
  'thread-wait', 'thread/suspend-to-kill', 'thread?', 'time-apply',
451
- 'truncate', 'udp-addresses', 'udp-bind!', 'udp-bound?',
452
- 'udp-close', 'udp-connect!', 'udp-connected?', 'udp-open-socket',
453
- 'udp-receive!', 'udp-receive!*', 'udp-receive!-evt',
454
- 'udp-receive!/enable-break', 'udp-receive-ready-evt', 'udp-send',
455
- 'udp-send*', 'udp-send-evt', 'udp-send-ready-evt', 'udp-send-to',
456
- 'udp-send-to*', 'udp-send-to-evt', 'udp-send-to/enable-break',
457
- 'udp-send/enable-break', 'udp?', 'unbox',
458
- 'uncaught-exception-handler', 'use-collection-link-paths',
723
+ 'touch', 'transplant-input-port', 'transplant-output-port', 'true',
724
+ 'truncate', 'udp-addresses', 'udp-bind!', 'udp-bound?', 'udp-close',
725
+ 'udp-connect!', 'udp-connected?', 'udp-multicast-interface',
726
+ 'udp-multicast-join-group!', 'udp-multicast-leave-group!',
727
+ 'udp-multicast-loopback?', 'udp-multicast-set-interface!',
728
+ 'udp-multicast-set-loopback!', 'udp-multicast-set-ttl!',
729
+ 'udp-multicast-ttl', 'udp-open-socket', 'udp-receive!',
730
+ 'udp-receive!*', 'udp-receive!-evt', 'udp-receive!/enable-break',
731
+ 'udp-receive-ready-evt', 'udp-send', 'udp-send*', 'udp-send-evt',
732
+ 'udp-send-ready-evt', 'udp-send-to', 'udp-send-to*', 'udp-send-to-evt',
733
+ 'udp-send-to/enable-break', 'udp-send/enable-break', 'udp?', 'unbox',
734
+ 'uncaught-exception-handler', 'unit?', 'unspecified-dom',
735
+ 'unsupplied-arg?', 'use-collection-link-paths',
459
736
  'use-compiled-file-paths', 'use-user-specific-search-paths',
460
- 'values', 'variable-reference->empty-namespace',
737
+ 'user-execute-bit', 'user-read-bit', 'user-write-bit',
738
+ 'value-contract', 'values', 'variable-reference->empty-namespace',
461
739
  'variable-reference->module-base-phase',
462
740
  'variable-reference->module-declaration-inspector',
463
- 'variable-reference->module-source',
464
- 'variable-reference->namespace', 'variable-reference->phase',
741
+ 'variable-reference->module-path-index',
742
+ 'variable-reference->module-source', 'variable-reference->namespace',
743
+ 'variable-reference->phase',
465
744
  'variable-reference->resolved-module-path',
466
745
  'variable-reference-constant?', 'variable-reference?', 'vector',
467
746
  'vector->immutable-vector', 'vector->list',
468
- 'vector->pseudo-random-generator',
469
- 'vector->pseudo-random-generator!', 'vector->values',
470
- 'vector-fill!', 'vector-immutable', 'vector-length', 'vector-ref',
471
- 'vector-set!', 'vector-set-performance-stats!', 'vector?',
472
- 'version', 'void', 'void?', 'weak-box-value', 'weak-box?',
473
- 'will-execute', 'will-executor?', 'will-register',
474
- 'will-try-execute', 'with-input-from-file', 'with-output-to-file',
475
- 'wrap-evt', 'write', 'write-byte', 'write-bytes',
747
+ 'vector->pseudo-random-generator', 'vector->pseudo-random-generator!',
748
+ 'vector->values', 'vector-append', 'vector-argmax', 'vector-argmin',
749
+ 'vector-copy', 'vector-copy!', 'vector-count', 'vector-drop',
750
+ 'vector-drop-right', 'vector-fill!', 'vector-filter',
751
+ 'vector-filter-not', 'vector-immutable', 'vector-immutable/c',
752
+ 'vector-immutableof', 'vector-length', 'vector-map', 'vector-map!',
753
+ 'vector-member', 'vector-memq', 'vector-memv', 'vector-ref',
754
+ 'vector-set!', 'vector-set*!', 'vector-set-performance-stats!',
755
+ 'vector-split-at', 'vector-split-at-right', 'vector-take',
756
+ 'vector-take-right', 'vector/c', 'vector?', 'vectorof', 'version',
757
+ 'void', 'void?', 'weak-box-value', 'weak-box?', 'weak-set',
758
+ 'weak-seteq', 'weak-seteqv', 'will-execute', 'will-executor?',
759
+ 'will-register', 'will-try-execute', 'with-input-from-bytes',
760
+ 'with-input-from-file', 'with-input-from-string',
761
+ 'with-output-to-bytes', 'with-output-to-file', 'with-output-to-string',
762
+ 'would-be-future', 'wrap-evt', 'wrapped-extra-arg-arrow',
763
+ 'wrapped-extra-arg-arrow-extra-neg-party-argument',
764
+ 'wrapped-extra-arg-arrow-real-func', 'wrapped-extra-arg-arrow?',
765
+ 'writable<%>', 'write', 'write-byte', 'write-bytes',
476
766
  'write-bytes-avail', 'write-bytes-avail*', 'write-bytes-avail-evt',
477
767
  'write-bytes-avail/enable-break', 'write-char', 'write-special',
478
- 'write-special-avail*', 'write-special-evt', 'write-string', 'zero?'
768
+ 'write-special-avail*', 'write-special-evt', 'write-string',
769
+ 'write-to-file', 'xor', 'zero?', '~.a', '~.s', '~.v', '~a', '~e', '~r',
770
+ '~s', '~v'
479
771
  ]
480
772
 
481
- # From SchemeLexer
482
- valid_name = r'[a-zA-Z0-9!$%&*+,/:<=>?@^_~|-]+'
773
+ _opening_parenthesis = r'[([{]'
774
+ _closing_parenthesis = r'[)\]}]'
775
+ _delimiters = r'()[\]{}",\'`;\s'
776
+ _symbol = r'(?u)(?:\|[^|]*\||\\[\w\W]|[^|\\%s]+)+' % _delimiters
777
+ _exact_decimal_prefix = r'(?:#e)?(?:#d)?(?:#e)?'
778
+ _exponent = r'(?:[defls][-+]?\d+)'
779
+ _inexact_simple_no_hashes = r'(?:\d+(?:/\d+|\.\d*)?|\.\d+)'
780
+ _inexact_simple = (r'(?:%s|(?:\d+#+(?:\.#*|/\d+#*)?|\.\d+#+|'
781
+ r'\d+(?:\.\d*#+|/\d+#+)))' % _inexact_simple_no_hashes)
782
+ _inexact_normal_no_hashes = r'(?:%s%s?)' % (_inexact_simple_no_hashes,
783
+ _exponent)
784
+ _inexact_normal = r'(?:%s%s?)' % (_inexact_simple, _exponent)
785
+ _inexact_special = r'(?:(?:inf|nan)\.[0f])'
786
+ _inexact_real = r'(?:[-+]?%s|[-+]%s)' % (_inexact_normal,
787
+ _inexact_special)
788
+ _inexact_unsigned = r'(?:%s|%s)' % (_inexact_normal, _inexact_special)
483
789
 
484
790
  tokens = {
485
- 'root' : [
486
- (r';.*$', Comment.Single),
487
- (r'#\|[^|]+\|#', Comment.Multiline),
488
-
489
- # whitespaces - usually not relevant
490
- (r'\s+', Text),
491
-
492
- ## numbers: Keep in mind Racket reader hash prefixes,
493
- ## which can denote the base or the type. These don't map
494
- ## neatly onto pygments token types; some judgment calls
495
- ## here. Note that none of these regexps attempt to
496
- ## exclude identifiers that start with a number, such as a
497
- ## variable named "100-Continue".
791
+ 'root': [
792
+ (_closing_parenthesis, Error),
793
+ (r'(?!\Z)', Text, 'unquoted-datum')
794
+ ],
795
+ 'datum': [
796
+ (r'(?s)#;|#![ /]([^\\\n]|\\.)*', Comment),
797
+ (u';[^\\n\\r\x85\u2028\u2029]*', Comment.Single),
798
+ (r'#\|', Comment.Multiline, 'block-comment'),
799
+
800
+ # Whitespaces
801
+ (r'(?u)\s+', Text),
802
+
803
+ # Numbers: Keep in mind Racket reader hash prefixes, which
804
+ # can denote the base or the type. These don't map neatly
805
+ # onto Pygments token types; some judgment calls here.
806
+
807
+ # #d or no prefix
808
+ (r'(?i)%s[-+]?\d+(?=[%s])' % (_exact_decimal_prefix, _delimiters),
809
+ Number.Integer, '#pop'),
810
+ (r'(?i)%s[-+]?(\d+(\.\d*)?|\.\d+)([deflst][-+]?\d+)?(?=[%s])' %
811
+ (_exact_decimal_prefix, _delimiters), Number.Float, '#pop'),
812
+ (r'(?i)%s[-+]?(%s([-+]%s?i)?|[-+]%s?i)(?=[%s])' %
813
+ (_exact_decimal_prefix, _inexact_normal_no_hashes,
814
+ _inexact_normal_no_hashes, _inexact_normal_no_hashes,
815
+ _delimiters), Number, '#pop'),
816
+
817
+ # Inexact without explicit #i
818
+ (r'(?i)(#d)?(%s([-+]%s?i)?|[-+]%s?i|%s@%s)(?=[%s])' %
819
+ (_inexact_real, _inexact_unsigned, _inexact_unsigned,
820
+ _inexact_real, _inexact_real, _delimiters), Number.Float,
821
+ '#pop'),
822
+
823
+ # The remaining extflonums
824
+ (r'(?i)(([-+]?%st[-+]?\d+)|[-+](inf|nan)\.t)(?=[%s])' %
825
+ (_inexact_simple, _delimiters), Number.Float, '#pop'),
498
826
 
499
827
  # #b
500
- (r'#b[-+]?[01]+\.[01]+', Number.Float),
501
- (r'#b[01]+e[-+]?[01]+', Number.Float),
502
- (r'#b[-+]?[01]/[01]+', Number),
503
- (r'#b[-+]?[01]+', Number.Integer),
504
- (r'#b\S*', Error),
505
-
506
- # #d OR no hash prefix
507
- (r'(#d)?[-+]?\d+\.\d+', Number.Float),
508
- (r'(#d)?\d+e[-+]?\d+', Number.Float),
509
- (r'(#d)?[-+]?\d+/\d+', Number),
510
- (r'(#d)?[-+]?\d+', Number.Integer),
511
- (r'#d\S*', Error),
512
-
513
- # #e
514
- (r'#e[-+]?\d+\.\d+', Number.Float),
515
- (r'#e\d+e[-+]?\d+', Number.Float),
516
- (r'#e[-+]?\d+/\d+', Number),
517
- (r'#e[-+]?\d+', Number),
518
- (r'#e\S*', Error),
519
-
520
- # #i is always inexact-real, i.e. float
521
- (r'#i[-+]?\d+\.\d+', Number.Float),
522
- (r'#i\d+e[-+]?\d+', Number.Float),
523
- (r'#i[-+]?\d+/\d+', Number.Float),
524
- (r'#i[-+]?\d+', Number.Float),
525
- (r'#i\S*', Error),
828
+ (r'(?i)(#[ei])?#b%s' % _symbol, Number.Bin, '#pop'),
526
829
 
527
830
  # #o
528
- (r'#o[-+]?[0-7]+\.[0-7]+', Number.Oct),
529
- (r'#o[0-7]+e[-+]?[0-7]+', Number.Oct),
530
- (r'#o[-+]?[0-7]+/[0-7]+', Number.Oct),
531
- (r'#o[-+]?[0-7]+', Number.Oct),
532
- (r'#o\S*', Error),
831
+ (r'(?i)(#[ei])?#o%s' % _symbol, Number.Oct, '#pop'),
533
832
 
534
833
  # #x
535
- (r'#x[-+]?[0-9a-fA-F]+\.[0-9a-fA-F]+', Number.Hex),
536
- # the exponent variation (e.g. #x1e1) is N/A
537
- (r'#x[-+]?[0-9a-fA-F]+/[0-9a-fA-F]+', Number.Hex),
538
- (r'#x[-+]?[0-9a-fA-F]+', Number.Hex),
539
- (r'#x\S*', Error),
540
-
541
-
542
- # strings, symbols and characters
543
- (r'"(\\\\|\\"|[^"])*"', String),
544
- (r"'" + valid_name, String.Symbol),
545
- (r"#\\([()/'\"._!§$%& ?=+-]{1}|[a-zA-Z0-9]+)", String.Char),
546
- (r'#rx".+"', String.Regex),
547
- (r'#px".+"', String.Regex),
548
-
549
- # constants
550
- (r'(#t|#f)', Name.Constant),
551
-
552
- # keyword argument names (e.g. #:keyword)
553
- (r'#:\S+', Keyword.Declaration),
554
-
555
- # #lang
556
- (r'#lang \S+', Keyword.Namespace),
557
-
558
- # special operators
559
- (r"('|#|`|,@|,|\.)", Operator),
560
-
561
- # highlight the keywords
562
- ('(%s)' % '|'.join([
563
- re.escape(entry) + ' ' for entry in keywords]),
564
- Keyword
565
- ),
566
-
567
- # first variable in a quoted string like
568
- # '(this is syntactic sugar)
569
- (r"(?<='\()" + valid_name, Name.Variable),
570
- (r"(?<=#\()" + valid_name, Name.Variable),
571
-
572
- # highlight the builtins
573
- ("(?<=\()(%s)" % '|'.join([
574
- re.escape(entry) + ' ' for entry in builtins]),
575
- Name.Builtin
576
- ),
577
-
578
- # the remaining functions; handle both ( and [
579
- (r'(?<=(\(|\[|\{))' + valid_name, Name.Function),
580
-
581
- # find the remaining variables
582
- (valid_name, Name.Variable),
583
-
584
- # the famous parentheses!
585
- (r'(\(|\)|\[|\]|\{|\})', Punctuation),
834
+ (r'(?i)(#[ei])?#x%s' % _symbol, Number.Hex, '#pop'),
835
+
836
+ # #i is always inexact, i.e. float
837
+ (r'(?i)(#d)?#i%s' % _symbol, Number.Float, '#pop'),
838
+
839
+ # Strings and characters
840
+ (r'#?"', String.Double, ('#pop', 'string')),
841
+ (r'#<<(.+)\n(^(?!\1$).*$\n)*^\1$', String.Heredoc, '#pop'),
842
+ (r'#\\(u[\da-fA-F]{1,4}|U[\da-fA-F]{1,8})', String.Char, '#pop'),
843
+ (r'(?is)#\\([0-7]{3}|[a-z]+|.)', String.Char, '#pop'),
844
+ (r'(?s)#[pr]x#?"(\\?.)*?"', String.Regex, '#pop'),
845
+
846
+ # Constants
847
+ (r'#(true|false|[tTfF])', Name.Constant, '#pop'),
848
+
849
+ # Keyword argument names (e.g. #:keyword)
850
+ (r'#:%s' % _symbol, Keyword.Declaration, '#pop'),
851
+
852
+ # Reader extensions
853
+ (r'(#lang |#!)(\S+)',
854
+ bygroups(Keyword.Namespace, Name.Namespace)),
855
+ (r'#reader', Keyword.Namespace, 'quoted-datum'),
856
+
857
+ # Other syntax
858
+ (r"(?i)\.(?=[%s])|#c[is]|#['`]|#,@?" % _delimiters, Operator),
859
+ (r"'|#[s&]|#hash(eqv?)?|#\d*(?=%s)" % _opening_parenthesis,
860
+ Operator, ('#pop', 'quoted-datum'))
861
+ ],
862
+ 'datum*': [
863
+ (r'`|,@?', Operator),
864
+ (_symbol, String.Symbol, '#pop'),
865
+ (r'[|\\]', Error),
866
+ default('#pop')
867
+ ],
868
+ 'list': [
869
+ (_closing_parenthesis, Punctuation, '#pop')
870
+ ],
871
+ 'unquoted-datum': [
872
+ include('datum'),
873
+ (r'quote(?=[%s])' % _delimiters, Keyword,
874
+ ('#pop', 'quoted-datum')),
875
+ (r'`', Operator, ('#pop', 'quasiquoted-datum')),
876
+ (r'quasiquote(?=[%s])' % _delimiters, Keyword,
877
+ ('#pop', 'quasiquoted-datum')),
878
+ (_opening_parenthesis, Punctuation, ('#pop', 'unquoted-list')),
879
+ (r'(?u)(%s)(?=[%s])' % ('|'.join(
880
+ [re.escape(entry) for entry in _keywords]), _delimiters),
881
+ Keyword, '#pop'),
882
+ (r'(?u)(%s)(?=[%s])' % ('|'.join(
883
+ [re.escape(entry) for entry in _builtins]), _delimiters),
884
+ Name.Builtin, '#pop'),
885
+ (_symbol, Name, '#pop'),
886
+ include('datum*')
887
+ ],
888
+ 'unquoted-list': [
889
+ include('list'),
890
+ (r'(?!\Z)', Text, 'unquoted-datum')
891
+ ],
892
+ 'quasiquoted-datum': [
893
+ include('datum'),
894
+ (r',@?', Operator, ('#pop', 'unquoted-datum')),
895
+ (r'unquote(-splicing)?(?=[%s])' % _delimiters, Keyword,
896
+ ('#pop', 'unquoted-datum')),
897
+ (_opening_parenthesis, Punctuation, ('#pop', 'quasiquoted-list')),
898
+ include('datum*')
899
+ ],
900
+ 'quasiquoted-list': [
901
+ include('list'),
902
+ (r'(?!\Z)', Text, 'quasiquoted-datum')
903
+ ],
904
+ 'quoted-datum': [
905
+ include('datum'),
906
+ (_opening_parenthesis, Punctuation, ('#pop', 'quoted-list')),
907
+ include('datum*')
908
+ ],
909
+ 'quoted-list': [
910
+ include('list'),
911
+ (r'(?!\Z)', Text, 'quoted-datum')
912
+ ],
913
+ 'block-comment': [
914
+ (r'#\|', Comment.Multiline, '#push'),
915
+ (r'\|#', Comment.Multiline, '#pop'),
916
+ (r'[^#|]+|.', Comment.Multiline)
586
917
  ],
918
+ 'string': [
919
+ (r'"', String.Double, '#pop'),
920
+ (r'(?s)\\([0-7]{1,3}|x[\da-fA-F]{1,2}|u[\da-fA-F]{1,4}|'
921
+ r'U[\da-fA-F]{1,8}|.)', String.Escape),
922
+ (r'[^\\"]+', String.Double)
923
+ ]
587
924
  }
588
925
 
589
926
 
@@ -599,7 +936,7 @@ class SchemeLexer(RegexLexer):
599
936
 
600
937
  It supports the full Scheme syntax as defined in R5RS.
601
938
 
602
- *New in Pygments 0.6.*
939
+ .. versionadded:: 0.6
603
940
  """
604
941
  name = 'Scheme'
605
942
  aliases = ['scheme', 'scm']
@@ -662,9 +999,16 @@ class SchemeLexer(RegexLexer):
662
999
 
663
1000
  tokens = {
664
1001
  'root' : [
665
- # the comments - always starting with semicolon
1002
+ # the comments
666
1003
  # and going to the end of the line
667
1004
  (r';.*$', Comment.Single),
1005
+ # multi-line comment
1006
+ (r'#\|', Comment.Multiline, 'multiline-comment'),
1007
+ # commented form (entire sexpr folliwng)
1008
+ (r'#;\s*\(', Comment, 'commented-form'),
1009
+ # signifies that the program text that follows is written with the
1010
+ # lexical and datum syntax described in r6rs
1011
+ (r'#!r6rs', Comment),
668
1012
 
669
1013
  # whitespaces - usually not relevant
670
1014
  (r'\s+', Text),
@@ -713,6 +1057,17 @@ class SchemeLexer(RegexLexer):
713
1057
  (r'(\(|\))', Punctuation),
714
1058
  (r'(\[|\])', Punctuation),
715
1059
  ],
1060
+ 'multiline-comment' : [
1061
+ (r'#\|', Comment.Multiline, '#push'),
1062
+ (r'\|#', Comment.Multiline, '#pop'),
1063
+ (r'[^|#]+', Comment.Multiline),
1064
+ (r'[|#]', Comment.Multiline),
1065
+ ],
1066
+ 'commented-form' : [
1067
+ (r'\(', Comment, '#push'),
1068
+ (r'\)', Comment, '#pop'),
1069
+ (r'[^()]+', Comment),
1070
+ ],
716
1071
  }
717
1072
 
718
1073
 
@@ -720,10 +1075,10 @@ class CommonLispLexer(RegexLexer):
720
1075
  """
721
1076
  A Common Lisp lexer.
722
1077
 
723
- *New in Pygments 0.9.*
1078
+ .. versionadded:: 0.9
724
1079
  """
725
1080
  name = 'Common Lisp'
726
- aliases = ['common-lisp', 'cl', 'lisp']
1081
+ aliases = ['common-lisp', 'cl', 'lisp', 'elisp', 'emacs', 'emacs-lisp']
727
1082
  filenames = ['*.cl', '*.lisp', '*.el'] # use for Elisp too
728
1083
  mimetypes = ['text/x-common-lisp']
729
1084
 
@@ -732,7 +1087,7 @@ class CommonLispLexer(RegexLexer):
732
1087
  ### couple of useful regexes
733
1088
 
734
1089
  # characters that are not macro-characters and can be used to begin a symbol
735
- nonmacro = r'\\.|[a-zA-Z0-9!$%&*+-/<=>?@\[\]^_{}~]'
1090
+ nonmacro = r'\\.|[\w!$%&*+-/<=>?@\[\]^{}~]'
736
1091
  constituent = nonmacro + '|[#.:]'
737
1092
  terminated = r'(?=[ "()\'\n,;`])' # whitespace or terminating macro characters
738
1093
 
@@ -844,16 +1199,16 @@ class CommonLispLexer(RegexLexer):
844
1199
  (r'#\'', Name.Function),
845
1200
 
846
1201
  # binary rational
847
- (r'#[bB][+-]?[01]+(/[01]+)?', Number),
1202
+ (r'#[bB][+-]?[01]+(/[01]+)?', Number.Bin),
848
1203
 
849
1204
  # octal rational
850
1205
  (r'#[oO][+-]?[0-7]+(/[0-7]+)?', Number.Oct),
851
1206
 
852
1207
  # hex rational
853
- (r'#[xX][+-]?[0-9a-fA-F]+(/[0-9a-fA-F]+)?', Number.Hex),
1208
+ (r'#[xX][+-]?[0-9a-f]+(/[0-9a-f]+)?', Number.Hex),
854
1209
 
855
1210
  # radix rational
856
- (r'#\d+[rR][+-]?[0-9a-zA-Z]+(/[0-9a-zA-Z]+)?', Number),
1211
+ (r'#\d+[rR][+-]?[0-9a-z]+(/[0-9a-z]+)?', Number),
857
1212
 
858
1213
  # complex
859
1214
  (r'(#[cC])(\()', bygroups(Number, Punctuation), 'body'),
@@ -894,17 +1249,155 @@ class CommonLispLexer(RegexLexer):
894
1249
  }
895
1250
 
896
1251
 
1252
+ class CryptolLexer(RegexLexer):
1253
+ """
1254
+ FIXME: A Cryptol2 lexer based on the lexemes defined in the Haskell 98 Report.
1255
+
1256
+ .. versionadded:: 2.0
1257
+ """
1258
+ name = 'Cryptol'
1259
+ aliases = ['cryptol', 'cry']
1260
+ filenames = ['*.cry']
1261
+ mimetypes = ['text/x-cryptol']
1262
+
1263
+ reserved = ['Arith','Bit','Cmp','False','Inf','True','else',
1264
+ 'export','extern','fin','if','import','inf','lg2',
1265
+ 'max','min','module','newtype','pragma','property',
1266
+ 'then','type','where','width']
1267
+ ascii = ['NUL','SOH','[SE]TX','EOT','ENQ','ACK',
1268
+ 'BEL','BS','HT','LF','VT','FF','CR','S[OI]','DLE',
1269
+ 'DC[1-4]','NAK','SYN','ETB','CAN',
1270
+ 'EM','SUB','ESC','[FGRU]S','SP','DEL']
1271
+
1272
+ tokens = {
1273
+ 'root': [
1274
+ # Whitespace:
1275
+ (r'\s+', Text),
1276
+ #(r'--\s*|.*$', Comment.Doc),
1277
+ (r'//.*$', Comment.Single),
1278
+ (r'/\*', Comment.Multiline, 'comment'),
1279
+ # Lexemes:
1280
+ # Identifiers
1281
+ (r'\bimport\b', Keyword.Reserved, 'import'),
1282
+ (r'\bmodule\b', Keyword.Reserved, 'module'),
1283
+ (r'\berror\b', Name.Exception),
1284
+ (r'\b(%s)(?!\')\b' % '|'.join(reserved), Keyword.Reserved),
1285
+ (r'^[_a-z][\w\']*', Name.Function),
1286
+ (r"'?[_a-z][\w']*", Name),
1287
+ (r"('')?[A-Z][\w\']*", Keyword.Type),
1288
+ # Operators
1289
+ (r'\\(?![:!#$%&*+.\\/<=>?@^|~-]+)', Name.Function), # lambda operator
1290
+ (r'(<-|::|->|=>|=)(?![:!#$%&*+.\\/<=>?@^|~-]+)', Operator.Word), # specials
1291
+ (r':[:!#$%&*+.\\/<=>?@^|~-]*', Keyword.Type), # Constructor operators
1292
+ (r'[:!#$%&*+.\\/<=>?@^|~-]+', Operator), # Other operators
1293
+ # Numbers
1294
+ (r'\d+[eE][+-]?\d+', Number.Float),
1295
+ (r'\d+\.\d+([eE][+-]?\d+)?', Number.Float),
1296
+ (r'0[oO][0-7]+', Number.Oct),
1297
+ (r'0[xX][\da-fA-F]+', Number.Hex),
1298
+ (r'\d+', Number.Integer),
1299
+ # Character/String Literals
1300
+ (r"'", String.Char, 'character'),
1301
+ (r'"', String, 'string'),
1302
+ # Special
1303
+ (r'\[\]', Keyword.Type),
1304
+ (r'\(\)', Name.Builtin),
1305
+ (r'[][(),;`{}]', Punctuation),
1306
+ ],
1307
+ 'import': [
1308
+ # Import statements
1309
+ (r'\s+', Text),
1310
+ (r'"', String, 'string'),
1311
+ # after "funclist" state
1312
+ (r'\)', Punctuation, '#pop'),
1313
+ (r'qualified\b', Keyword),
1314
+ # import X as Y
1315
+ (r'([A-Z][a-zA-Z0-9_.]*)(\s+)(as)(\s+)([A-Z][a-zA-Z0-9_.]*)',
1316
+ bygroups(Name.Namespace, Text, Keyword, Text, Name), '#pop'),
1317
+ # import X hiding (functions)
1318
+ (r'([A-Z][a-zA-Z0-9_.]*)(\s+)(hiding)(\s+)(\()',
1319
+ bygroups(Name.Namespace, Text, Keyword, Text, Punctuation), 'funclist'),
1320
+ # import X (functions)
1321
+ (r'([A-Z][a-zA-Z0-9_.]*)(\s+)(\()',
1322
+ bygroups(Name.Namespace, Text, Punctuation), 'funclist'),
1323
+ # import X
1324
+ (r'[a-zA-Z0-9_.]+', Name.Namespace, '#pop'),
1325
+ ],
1326
+ 'module': [
1327
+ (r'\s+', Text),
1328
+ (r'([A-Z][a-zA-Z0-9_.]*)(\s+)(\()',
1329
+ bygroups(Name.Namespace, Text, Punctuation), 'funclist'),
1330
+ (r'[A-Z][a-zA-Z0-9_.]*', Name.Namespace, '#pop'),
1331
+ ],
1332
+ 'funclist': [
1333
+ (r'\s+', Text),
1334
+ (r'[A-Z][a-zA-Z0-9_]*', Keyword.Type),
1335
+ (r'(_[\w\']+|[a-z][\w\']*)', Name.Function),
1336
+ (r'--(?![!#$%&*+./<=>?@\^|_~:\\]).*?$', Comment.Single),
1337
+ (r'{-', Comment.Multiline, 'comment'),
1338
+ (r',', Punctuation),
1339
+ (r'[:!#$%&*+.\\/<=>?@^|~-]+', Operator),
1340
+ # (HACK, but it makes sense to push two instances, believe me)
1341
+ (r'\(', Punctuation, ('funclist', 'funclist')),
1342
+ (r'\)', Punctuation, '#pop:2'),
1343
+ ],
1344
+ 'comment': [
1345
+ # Multiline Comments
1346
+ (r'[^/\*]+', Comment.Multiline),
1347
+ (r'/\*', Comment.Multiline, '#push'),
1348
+ (r'\*/', Comment.Multiline, '#pop'),
1349
+ (r'[\*/]', Comment.Multiline),
1350
+ ],
1351
+ 'character': [
1352
+ # Allows multi-chars, incorrectly.
1353
+ (r"[^\\']'", String.Char, '#pop'),
1354
+ (r"\\", String.Escape, 'escape'),
1355
+ ("'", String.Char, '#pop'),
1356
+ ],
1357
+ 'string': [
1358
+ (r'[^\\"]+', String),
1359
+ (r"\\", String.Escape, 'escape'),
1360
+ ('"', String, '#pop'),
1361
+ ],
1362
+ 'escape': [
1363
+ (r'[abfnrtv"\'&\\]', String.Escape, '#pop'),
1364
+ (r'\^[][A-Z@\^_]', String.Escape, '#pop'),
1365
+ ('|'.join(ascii), String.Escape, '#pop'),
1366
+ (r'o[0-7]+', String.Escape, '#pop'),
1367
+ (r'x[\da-fA-F]+', String.Escape, '#pop'),
1368
+ (r'\d+', String.Escape, '#pop'),
1369
+ (r'\s+\\', String.Escape, '#pop'),
1370
+ ],
1371
+ }
1372
+
1373
+ EXTRA_KEYWORDS = ['join', 'split', 'reverse', 'transpose', 'width',
1374
+ 'length', 'tail', '<<', '>>', '<<<', '>>>', 'const',
1375
+ 'reg', 'par', 'seq', 'ASSERT', 'undefined', 'error',
1376
+ 'trace']
1377
+
1378
+ def get_tokens_unprocessed(self, text):
1379
+ stack = ['root']
1380
+ for index, token, value in \
1381
+ RegexLexer.get_tokens_unprocessed(self, text, stack):
1382
+ if token is Name and value in self.EXTRA_KEYWORDS:
1383
+ yield index, Name.Builtin, value
1384
+ else:
1385
+ yield index, token, value
1386
+
1387
+
897
1388
  class HaskellLexer(RegexLexer):
898
1389
  """
899
1390
  A Haskell lexer based on the lexemes defined in the Haskell 98 Report.
900
1391
 
901
- *New in Pygments 0.8.*
1392
+ .. versionadded:: 0.8
902
1393
  """
903
1394
  name = 'Haskell'
904
1395
  aliases = ['haskell', 'hs']
905
1396
  filenames = ['*.hs']
906
1397
  mimetypes = ['text/x-haskell']
907
1398
 
1399
+ flags = re.MULTILINE | re.UNICODE
1400
+
908
1401
  reserved = ['case','class','data','default','deriving','do','else',
909
1402
  'if','in','infix[lr]?','instance',
910
1403
  'let','newtype','of','then','type','where','_']
@@ -926,9 +1419,9 @@ class HaskellLexer(RegexLexer):
926
1419
  (r'\bmodule\b', Keyword.Reserved, 'module'),
927
1420
  (r'\berror\b', Name.Exception),
928
1421
  (r'\b(%s)(?!\')\b' % '|'.join(reserved), Keyword.Reserved),
929
- (r'^[_a-z][\w\']*', Name.Function),
930
- (r"'?[_a-z][\w']*", Name),
931
- (r"('')?[A-Z][\w\']*", Keyword.Type),
1422
+ (r'^[_' + uni.Ll + r'][\w\']*', Name.Function),
1423
+ (r"'?[_" + uni.Ll + r"'][\w']*", Name),
1424
+ (r"('')?[" + uni.Lu + r"][\w\']*", Keyword.Type),
932
1425
  # Operators
933
1426
  (r'\\(?![:!#$%&*+.\\/<=>?@^|~-]+)', Name.Function), # lambda operator
934
1427
  (r'(<-|::|->|=>|=)(?![:!#$%&*+.\\/<=>?@^|~-]+)', Operator.Word), # specials
@@ -956,26 +1449,135 @@ class HaskellLexer(RegexLexer):
956
1449
  (r'\)', Punctuation, '#pop'),
957
1450
  (r'qualified\b', Keyword),
958
1451
  # import X as Y
959
- (r'([A-Z][a-zA-Z0-9_.]*)(\s+)(as)(\s+)([A-Z][a-zA-Z0-9_.]*)',
1452
+ (r'([' + uni.Lu + r'][\w.]*)(\s+)(as)(\s+)([' + uni.Lu + r'][\w.]*)',
960
1453
  bygroups(Name.Namespace, Text, Keyword, Text, Name), '#pop'),
961
1454
  # import X hiding (functions)
962
- (r'([A-Z][a-zA-Z0-9_.]*)(\s+)(hiding)(\s+)(\()',
1455
+ (r'([' + uni.Lu + r'][\w.]*)(\s+)(hiding)(\s+)(\()',
963
1456
  bygroups(Name.Namespace, Text, Keyword, Text, Punctuation), 'funclist'),
964
1457
  # import X (functions)
965
- (r'([A-Z][a-zA-Z0-9_.]*)(\s+)(\()',
1458
+ (r'([' + uni.Lu + r'][\w.]*)(\s+)(\()',
966
1459
  bygroups(Name.Namespace, Text, Punctuation), 'funclist'),
967
1460
  # import X
968
- (r'[a-zA-Z0-9_.]+', Name.Namespace, '#pop'),
1461
+ (r'[\w.]+', Name.Namespace, '#pop'),
969
1462
  ],
970
1463
  'module': [
971
1464
  (r'\s+', Text),
972
- (r'([A-Z][a-zA-Z0-9_.]*)(\s+)(\()',
1465
+ (r'([' + uni.Lu + r'][\w.]*)(\s+)(\()',
973
1466
  bygroups(Name.Namespace, Text, Punctuation), 'funclist'),
974
- (r'[A-Z][a-zA-Z0-9_.]*', Name.Namespace, '#pop'),
1467
+ (r'[' + uni.Lu + r'][\w.]*', Name.Namespace, '#pop'),
975
1468
  ],
976
1469
  'funclist': [
977
1470
  (r'\s+', Text),
978
- (r'[A-Z][a-zA-Z0-9_]*', Keyword.Type),
1471
+ (r'[' + uni.Lu + r']\w*', Keyword.Type),
1472
+ (r'(_[\w\']+|[' + uni.Ll + r'][\w\']*)', Name.Function),
1473
+ (r'--(?![!#$%&*+./<=>?@\^|_~:\\]).*?$', Comment.Single),
1474
+ (r'{-', Comment.Multiline, 'comment'),
1475
+ (r',', Punctuation),
1476
+ (r'[:!#$%&*+.\\/<=>?@^|~-]+', Operator),
1477
+ # (HACK, but it makes sense to push two instances, believe me)
1478
+ (r'\(', Punctuation, ('funclist', 'funclist')),
1479
+ (r'\)', Punctuation, '#pop:2'),
1480
+ ],
1481
+ # NOTE: the next four states are shared in the AgdaLexer; make sure
1482
+ # any change is compatible with Agda as well or copy over and change
1483
+ 'comment': [
1484
+ # Multiline Comments
1485
+ (r'[^-{}]+', Comment.Multiline),
1486
+ (r'{-', Comment.Multiline, '#push'),
1487
+ (r'-}', Comment.Multiline, '#pop'),
1488
+ (r'[-{}]', Comment.Multiline),
1489
+ ],
1490
+ 'character': [
1491
+ # Allows multi-chars, incorrectly.
1492
+ (r"[^\\']'", String.Char, '#pop'),
1493
+ (r"\\", String.Escape, 'escape'),
1494
+ ("'", String.Char, '#pop'),
1495
+ ],
1496
+ 'string': [
1497
+ (r'[^\\"]+', String),
1498
+ (r"\\", String.Escape, 'escape'),
1499
+ ('"', String, '#pop'),
1500
+ ],
1501
+ 'escape': [
1502
+ (r'[abfnrtv"\'&\\]', String.Escape, '#pop'),
1503
+ (r'\^[][' + uni.Lu + r'@\^_]', String.Escape, '#pop'),
1504
+ ('|'.join(ascii), String.Escape, '#pop'),
1505
+ (r'o[0-7]+', String.Escape, '#pop'),
1506
+ (r'x[\da-fA-F]+', String.Escape, '#pop'),
1507
+ (r'\d+', String.Escape, '#pop'),
1508
+ (r'\s+\\', String.Escape, '#pop'),
1509
+ ],
1510
+ }
1511
+
1512
+
1513
+ class IdrisLexer(RegexLexer):
1514
+ """
1515
+ A lexer for the dependently typed programming language Idris.
1516
+
1517
+ Based on the Haskell and Agda Lexer.
1518
+
1519
+ .. versionadded:: 2.0
1520
+ """
1521
+ name = 'Idris'
1522
+ aliases = ['idris', 'idr']
1523
+ filenames = ['*.idr']
1524
+ mimetypes = ['text/x-idris']
1525
+
1526
+ reserved = ['case','class','data','default','using','do','else',
1527
+ 'if','in','infix[lr]?','instance','rewrite','auto',
1528
+ 'namespace','codata','mutual','private','public','abstract',
1529
+ 'total','partial',
1530
+ 'let','proof','of','then','static','where','_','with',
1531
+ 'pattern', 'term', 'syntax','prefix',
1532
+ 'postulate','parameters','record','dsl','impossible','implicit',
1533
+ 'tactics','intros','intro','compute','refine','exaxt','trivial']
1534
+
1535
+ ascii = ['NUL','SOH','[SE]TX','EOT','ENQ','ACK',
1536
+ 'BEL','BS','HT','LF','VT','FF','CR','S[OI]','DLE',
1537
+ 'DC[1-4]','NAK','SYN','ETB','CAN',
1538
+ 'EM','SUB','ESC','[FGRU]S','SP','DEL']
1539
+
1540
+ annotations = ['assert_total','lib','link','include','provide','access',
1541
+ 'default']
1542
+
1543
+ tokens = {
1544
+ 'root': [
1545
+ # Declaration
1546
+ (r'^(\s*)([^\s\(\)\{\}]+)(\s*)(:)(\s*)',
1547
+ bygroups(Text, Name.Function, Text, Operator.Word, Text)),
1548
+ # Comments
1549
+ (r'^(\s*)(%%%s)' % '|'.join(annotations),
1550
+ bygroups(Text, Keyword.Reserved)),
1551
+ (r'--(?![!#$%&*+./<=>?@\^|_~:\\]).*?$', Comment.Single),
1552
+ (r'{-', Comment.Multiline, 'comment'),
1553
+ # Identifiers
1554
+ (r'\b(%s)(?!\')\b' % '|'.join(reserved), Keyword.Reserved),
1555
+ (r'(import|module)(\s+)', bygroups(Keyword.Reserved, Text), 'module'),
1556
+ (r"('')?[A-Z][\w\']*", Keyword.Type),
1557
+ (r'[a-z][\w\']*', Text),
1558
+ # Special Symbols
1559
+ (r'(<-|::|->|=>|=)', Operator.Word), # specials
1560
+ (r'([\(\)\{\}\[\]:!#$%&*+.\\/<=>?@^|~-]+)', Operator.Word), # specials
1561
+ # Numbers
1562
+ (r'\d+[eE][+-]?\d+', Number.Float),
1563
+ (r'\d+\.\d+([eE][+-]?\d+)?', Number.Float),
1564
+ (r'0[xX][\da-fA-F]+', Number.Hex),
1565
+ (r'\d+', Number.Integer),
1566
+ # Strings
1567
+ (r"'", String.Char, 'character'),
1568
+ (r'"', String, 'string'),
1569
+ (r'[^\s\(\)\{\}]+', Text),
1570
+ (r'\s+?', Text), # Whitespace
1571
+ ],
1572
+ 'module': [
1573
+ (r'\s+', Text),
1574
+ (r'([A-Z][\w.]*)(\s+)(\()',
1575
+ bygroups(Name.Namespace, Text, Punctuation), 'funclist'),
1576
+ (r'[A-Z][\w.]*', Name.Namespace, '#pop'),
1577
+ ],
1578
+ 'funclist': [
1579
+ (r'\s+', Text),
1580
+ (r'[A-Z]\w*', Keyword.Type),
979
1581
  (r'(_[\w\']+|[a-z][\w\']*)', Name.Function),
980
1582
  (r'--.*$', Comment.Single),
981
1583
  (r'{-', Comment.Multiline, 'comment'),
@@ -1012,7 +1614,7 @@ class HaskellLexer(RegexLexer):
1012
1614
  (r'o[0-7]+', String.Escape, '#pop'),
1013
1615
  (r'x[\da-fA-F]+', String.Escape, '#pop'),
1014
1616
  (r'\d+', String.Escape, '#pop'),
1015
- (r'\s+\\', String.Escape, '#pop'),
1617
+ (r'\s+\\', String.Escape, '#pop')
1016
1618
  ],
1017
1619
  }
1018
1620
 
@@ -1022,7 +1624,7 @@ class AgdaLexer(RegexLexer):
1022
1624
  For the `Agda <http://wiki.portal.chalmers.se/agda/pmwiki.php>`_
1023
1625
  dependently typed functional programming language and proof assistant.
1024
1626
 
1025
- *New in Pygments 1.7.*
1627
+ .. versionadded:: 2.0
1026
1628
  """
1027
1629
 
1028
1630
  name = 'Agda'
@@ -1049,12 +1651,12 @@ class AgdaLexer(RegexLexer):
1049
1651
  (r'{!', Comment.Directive, 'hole'),
1050
1652
  # Lexemes:
1051
1653
  # Identifiers
1052
- (ur'\b(%s)(?!\')\b' % '|'.join(reserved), Keyword.Reserved),
1654
+ (r'\b(%s)(?!\')\b' % '|'.join(reserved), Keyword.Reserved),
1053
1655
  (r'(import|module)(\s+)', bygroups(Keyword.Reserved, Text), 'module'),
1054
1656
  (r'\b(Set|Prop)\b', Keyword.Type),
1055
1657
  # Special Symbols
1056
1658
  (r'(\(|\)|\{|\})', Operator),
1057
- (ur'(\.{1,3}|\||[\u039B]|[\u2200]|[\u2192]|:|=|->)', Operator.Word),
1659
+ (u'(\\.{1,3}|\\||\u039B|\u2200|\u2192|:|=|->)', Operator.Word),
1058
1660
  # Numbers
1059
1661
  (r'\d+[eE][+-]?\d+', Number.Float),
1060
1662
  (r'\d+\.\d+([eE][+-]?\d+)?', Number.Float),
@@ -1075,7 +1677,7 @@ class AgdaLexer(RegexLexer):
1075
1677
  ],
1076
1678
  'module': [
1077
1679
  (r'{-', Comment.Multiline, 'comment'),
1078
- (r'[a-zA-Z][a-zA-Z0-9_.]*', Name, '#pop'),
1680
+ (r'[a-zA-Z][\w.]*', Name, '#pop'),
1079
1681
  (r'[^a-zA-Z]*', Text)
1080
1682
  ],
1081
1683
  'comment': HaskellLexer.tokens['comment'],
@@ -1150,6 +1752,29 @@ class LiterateLexer(Lexer):
1150
1752
  yield item
1151
1753
 
1152
1754
 
1755
+ class LiterateCryptolLexer(LiterateLexer):
1756
+ """
1757
+ For Literate Cryptol (Bird-style or LaTeX) source.
1758
+
1759
+ Additional options accepted:
1760
+
1761
+ `litstyle`
1762
+ If given, must be ``"bird"`` or ``"latex"``. If not given, the style
1763
+ is autodetected: if the first non-whitespace character in the source
1764
+ is a backslash or percent character, LaTeX is assumed, else Bird.
1765
+
1766
+ .. versionadded:: 0.9
1767
+ """
1768
+ name = 'Literate Cryptol'
1769
+ aliases = ['lcry', 'literate-cryptol', 'lcryptol']
1770
+ filenames = ['*.lcry']
1771
+ mimetypes = ['text/x-literate-cryptol']
1772
+
1773
+ def __init__(self, **options):
1774
+ crylexer = CryptolLexer(**options)
1775
+ LiterateLexer.__init__(self, crylexer, **options)
1776
+
1777
+
1153
1778
  class LiterateHaskellLexer(LiterateLexer):
1154
1779
  """
1155
1780
  For Literate Haskell (Bird-style or LaTeX) source.
@@ -1161,7 +1786,7 @@ class LiterateHaskellLexer(LiterateLexer):
1161
1786
  is autodetected: if the first non-whitespace character in the source
1162
1787
  is a backslash or percent character, LaTeX is assumed, else Bird.
1163
1788
 
1164
- *New in Pygments 0.9.*
1789
+ .. versionadded:: 0.9
1165
1790
  """
1166
1791
  name = 'Literate Haskell'
1167
1792
  aliases = ['lhs', 'literate-haskell', 'lhaskell']
@@ -1173,6 +1798,29 @@ class LiterateHaskellLexer(LiterateLexer):
1173
1798
  LiterateLexer.__init__(self, hslexer, **options)
1174
1799
 
1175
1800
 
1801
+ class LiterateIdrisLexer(LiterateLexer):
1802
+ """
1803
+ For Literate Idris (Bird-style or LaTeX) source.
1804
+
1805
+ Additional options accepted:
1806
+
1807
+ `litstyle`
1808
+ If given, must be ``"bird"`` or ``"latex"``. If not given, the style
1809
+ is autodetected: if the first non-whitespace character in the source
1810
+ is a backslash or percent character, LaTeX is assumed, else Bird.
1811
+
1812
+ .. versionadded:: 2.0
1813
+ """
1814
+ name = 'Literate Idris'
1815
+ aliases = ['lidr', 'literate-idris', 'lidris']
1816
+ filenames = ['*.lidr']
1817
+ mimetypes = ['text/x-literate-idris']
1818
+
1819
+ def __init__(self, **options):
1820
+ hslexer = IdrisLexer(**options)
1821
+ LiterateLexer.__init__(self, hslexer, **options)
1822
+
1823
+
1176
1824
  class LiterateAgdaLexer(LiterateLexer):
1177
1825
  """
1178
1826
  For Literate Agda source.
@@ -1184,7 +1832,7 @@ class LiterateAgdaLexer(LiterateLexer):
1184
1832
  is autodetected: if the first non-whitespace character in the source
1185
1833
  is a backslash or percent character, LaTeX is assumed, else Bird.
1186
1834
 
1187
- *New in Pygments 1.7.*
1835
+ .. versionadded:: 2.0
1188
1836
  """
1189
1837
  name = 'Literate Agda'
1190
1838
  aliases = ['lagda', 'literate-agda']
@@ -1200,7 +1848,7 @@ class SMLLexer(RegexLexer):
1200
1848
  """
1201
1849
  For the Standard ML language.
1202
1850
 
1203
- *New in Pygments 1.5.*
1851
+ .. versionadded:: 1.5
1204
1852
  """
1205
1853
 
1206
1854
  name = 'Standard ML'
@@ -1228,7 +1876,7 @@ class SMLLexer(RegexLexer):
1228
1876
 
1229
1877
  nonid_reserved = [ '(', ')', '[', ']', '{', '}', ',', ';', '...', '_' ]
1230
1878
 
1231
- alphanumid_re = r"[a-zA-Z][a-zA-Z0-9_']*"
1879
+ alphanumid_re = r"[a-zA-Z][\w']*"
1232
1880
  symbolicid_re = r"[!%&$#+\-/:<=>?@\\~`^|*]+"
1233
1881
 
1234
1882
  # A character constant is a sequence of the form #s, where s is a string
@@ -1318,7 +1966,7 @@ class SMLLexer(RegexLexer):
1318
1966
  (r'\b(type|eqtype)\b(?!\')', Keyword.Reserved, 'tname'),
1319
1967
 
1320
1968
  # Regular identifiers, long and otherwise
1321
- (r'\'[0-9a-zA-Z_\']*', Name.Decorator),
1969
+ (r'\'[\w\']*', Name.Decorator),
1322
1970
  (r'(%s)(\.)' % alphanumid_re, long_id_callback, "dotted"),
1323
1971
  (r'(%s)' % alphanumid_re, id_callback),
1324
1972
  (r'(%s)' % symbolicid_re, id_callback),
@@ -1333,7 +1981,7 @@ class SMLLexer(RegexLexer):
1333
1981
 
1334
1982
 
1335
1983
  # Main parser (prevents errors in files that have scoping errors)
1336
- 'root': [ (r'', Text, 'main') ],
1984
+ 'root': [ default('main') ],
1337
1985
 
1338
1986
  # In this scope, I expect '|' to not be followed by a function name,
1339
1987
  # and I expect 'and' to be followed by a binding site
@@ -1386,7 +2034,7 @@ class SMLLexer(RegexLexer):
1386
2034
  include('breakout'),
1387
2035
 
1388
2036
  (r'(%s)' % alphanumid_re, Name.Namespace),
1389
- (r'', Text, '#pop'),
2037
+ default('#pop'),
1390
2038
  ],
1391
2039
 
1392
2040
  # Dealing with what comes after the 'fun' (or 'and' or '|') keyword
@@ -1399,7 +2047,7 @@ class SMLLexer(RegexLexer):
1399
2047
  (r'(%s)' % symbolicid_re, Name.Function, '#pop'),
1400
2048
 
1401
2049
  # Ignore interesting function declarations like "fun (x + y) = ..."
1402
- (r'', Text, '#pop'),
2050
+ default('#pop'),
1403
2051
  ],
1404
2052
 
1405
2053
  # Dealing with what comes after the 'val' (or 'and') keyword
@@ -1416,7 +2064,7 @@ class SMLLexer(RegexLexer):
1416
2064
  (r'(%s)' % symbolicid_re, Name.Variable, '#pop'),
1417
2065
 
1418
2066
  # Ignore interesting patterns like 'val (x, y)'
1419
- (r'', Text, '#pop'),
2067
+ default('#pop'),
1420
2068
  ],
1421
2069
 
1422
2070
  # Dealing with what comes after the 'type' (or 'and') keyword
@@ -1526,7 +2174,7 @@ class OcamlLexer(RegexLexer):
1526
2174
  """
1527
2175
  For the OCaml language.
1528
2176
 
1529
- *New in Pygments 0.7.*
2177
+ .. versionadded:: 0.7
1530
2178
  """
1531
2179
 
1532
2180
  name = 'OCaml'
@@ -1565,9 +2213,9 @@ class OcamlLexer(RegexLexer):
1565
2213
  'root': [
1566
2214
  (r'\s+', Text),
1567
2215
  (r'false|true|\(\)|\[\]', Name.Builtin.Pseudo),
1568
- (r'\b([A-Z][A-Za-z0-9_\']*)(?=\s*\.)',
2216
+ (r'\b([A-Z][\w\']*)(?=\s*\.)',
1569
2217
  Name.Namespace, 'dotted'),
1570
- (r'\b([A-Z][A-Za-z0-9_\']*)', Name.Class),
2218
+ (r'\b([A-Z][\w\']*)', Name.Class),
1571
2219
  (r'\(\*(?![)])', Comment, 'comment'),
1572
2220
  (r'\b(%s)\b' % '|'.join(keywords), Keyword),
1573
2221
  (r'(%s)' % '|'.join(keyopts[::-1]), Operator),
@@ -1580,7 +2228,7 @@ class OcamlLexer(RegexLexer):
1580
2228
  (r'-?\d[\d_]*(.[\d_]*)?([eE][+\-]?\d[\d_]*)', Number.Float),
1581
2229
  (r'0[xX][\da-fA-F][\da-fA-F_]*', Number.Hex),
1582
2230
  (r'0[oO][0-7][0-7_]*', Number.Oct),
1583
- (r'0[bB][01][01_]*', Number.Binary),
2231
+ (r'0[bB][01][01_]*', Number.Bin),
1584
2232
  (r'\d[\d_]*', Number.Integer),
1585
2233
 
1586
2234
  (r"'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2}))'",
@@ -1607,9 +2255,9 @@ class OcamlLexer(RegexLexer):
1607
2255
  'dotted': [
1608
2256
  (r'\s+', Text),
1609
2257
  (r'\.', Punctuation),
1610
- (r'[A-Z][A-Za-z0-9_\']*(?=\s*\.)', Name.Namespace),
1611
- (r'[A-Z][A-Za-z0-9_\']*', Name.Class, '#pop'),
1612
- (r'[a-z_][A-Za-z0-9_\']*', Name, '#pop'),
2258
+ (r'[A-Z][\w\']*(?=\s*\.)', Name.Namespace),
2259
+ (r'[A-Z][\w\']*', Name.Class, '#pop'),
2260
+ (r'[a-z_][\w\']*', Name, '#pop'),
1613
2261
  ],
1614
2262
  }
1615
2263
 
@@ -1620,7 +2268,7 @@ class ErlangLexer(RegexLexer):
1620
2268
 
1621
2269
  Blame Jeremy Thurgood (http://jerith.za.net/).
1622
2270
 
1623
- *New in Pygments 0.9.*
2271
+ .. versionadded:: 0.9
1624
2272
  """
1625
2273
 
1626
2274
  name = 'Erlang'
@@ -1669,9 +2317,9 @@ class ErlangLexer(RegexLexer):
1669
2317
  'div', 'not', 'or', 'orelse', 'rem', 'xor'
1670
2318
  ]
1671
2319
 
1672
- atom_re = r"(?:[a-z][a-zA-Z0-9_]*|'[^\n']*[^\\]')"
2320
+ atom_re = r"(?:[a-z]\w*|'[^\n']*[^\\]')"
1673
2321
 
1674
- variable_re = r'(?:[A-Z_][a-zA-Z0-9_]*)'
2322
+ variable_re = r'(?:[A-Z_]\w*)'
1675
2323
 
1676
2324
  escape_re = r'(?:\\(?:[bdefnrstv\'"\\/]|[0-7][0-7]?[0-7]?|\^[a-zA-Z]))'
1677
2325
 
@@ -1725,7 +2373,7 @@ class ErlangShellLexer(Lexer):
1725
2373
  """
1726
2374
  Shell sessions in erl (for Erlang code).
1727
2375
 
1728
- *New in Pygments 1.1.*
2376
+ .. versionadded:: 1.1
1729
2377
  """
1730
2378
  name = 'Erlang erl session'
1731
2379
  aliases = ['erl']
@@ -1768,7 +2416,7 @@ class OpaLexer(RegexLexer):
1768
2416
  """
1769
2417
  Lexer for the Opa language (http://opalang.org).
1770
2418
 
1771
- *New in Pygments 1.5.*
2419
+ .. versionadded:: 1.5
1772
2420
  """
1773
2421
 
1774
2422
  name = 'Opa'
@@ -1828,7 +2476,7 @@ class OpaLexer(RegexLexer):
1828
2476
  (r'-?\d+[eE][+\-]?\d+', Number.Float),
1829
2477
  (r'0[xX][\da-fA-F]+', Number.Hex),
1830
2478
  (r'0[oO][0-7]+', Number.Oct),
1831
- (r'0[bB][01]+', Number.Binary),
2479
+ (r'0[bB][01]+', Number.Bin),
1832
2480
  (r'\d+', Number.Integer),
1833
2481
  # color literals
1834
2482
  (r'#[\da-fA-F]{3,6}', Number.Integer),
@@ -1918,7 +2566,7 @@ class OpaLexer(RegexLexer):
1918
2566
  'type': [
1919
2567
  include('comments-and-spaces'),
1920
2568
  (r'->', Keyword.Type),
1921
- (r'', Keyword.Type, ('#pop', 'type-lhs-1', 'type-with-slash')),
2569
+ default(('#pop', 'type-lhs-1', 'type-with-slash')),
1922
2570
  ],
1923
2571
 
1924
2572
  # parses all the atomic or closed constructions in the syntax of type
@@ -1935,7 +2583,7 @@ class OpaLexer(RegexLexer):
1935
2583
  # we think we are parsing types when in fact we are parsing
1936
2584
  # some css, so we just pop the states until we get back into
1937
2585
  # the root state
1938
- (r'', Keyword.Type, '#pop'),
2586
+ default('#pop'),
1939
2587
  ],
1940
2588
 
1941
2589
  # type-with-slash is either:
@@ -1943,13 +2591,13 @@ class OpaLexer(RegexLexer):
1943
2591
  # * type-1 (/ type-1)+
1944
2592
  'type-with-slash': [
1945
2593
  include('comments-and-spaces'),
1946
- (r'', Keyword.Type, ('#pop', 'slash-type-1', 'type-1')),
2594
+ default(('#pop', 'slash-type-1', 'type-1')),
1947
2595
  ],
1948
2596
  'slash-type-1': [
1949
2597
  include('comments-and-spaces'),
1950
2598
  ('/', Keyword.Type, ('#pop', 'type-1')),
1951
2599
  # same remark as above
1952
- (r'', Keyword.Type, '#pop'),
2600
+ default('#pop'),
1953
2601
  ],
1954
2602
 
1955
2603
  # we go in this state after having parsed a type-with-slash
@@ -1961,7 +2609,7 @@ class OpaLexer(RegexLexer):
1961
2609
  include('comments-and-spaces'),
1962
2610
  (r'->', Keyword.Type, ('#pop', 'type')),
1963
2611
  (r'(?=,)', Keyword.Type, ('#pop', 'type-arrow')),
1964
- (r'', Keyword.Type, '#pop'),
2612
+ default('#pop'),
1965
2613
  ],
1966
2614
  'type-arrow': [
1967
2615
  include('comments-and-spaces'),
@@ -1970,7 +2618,7 @@ class OpaLexer(RegexLexer):
1970
2618
  (r',(?=[^:]*?->)', Keyword.Type, 'type-with-slash'),
1971
2619
  (r'->', Keyword.Type, ('#pop', 'type')),
1972
2620
  # same remark as above
1973
- (r'', Keyword.Type, '#pop'),
2621
+ default('#pop'),
1974
2622
  ],
1975
2623
 
1976
2624
  # no need to do precise parsing for tuples and records
@@ -1997,7 +2645,7 @@ class OpaLexer(RegexLexer):
1997
2645
  # 'type-tuple': [
1998
2646
  # include('comments-and-spaces'),
1999
2647
  # (r'\)', Keyword.Type, '#pop'),
2000
- # (r'', Keyword.Type, ('#pop', 'type-tuple-1', 'type-1')),
2648
+ # default(('#pop', 'type-tuple-1', 'type-1')),
2001
2649
  # ],
2002
2650
  # 'type-tuple-1': [
2003
2651
  # include('comments-and-spaces'),
@@ -2091,7 +2739,7 @@ class CoqLexer(RegexLexer):
2091
2739
  """
2092
2740
  For the `Coq <http://coq.inria.fr/>`_ theorem prover.
2093
2741
 
2094
- *New in Pygments 1.5.*
2742
+ .. versionadded:: 1.5
2095
2743
  """
2096
2744
 
2097
2745
  name = 'Coq'
@@ -2177,9 +2825,9 @@ class CoqLexer(RegexLexer):
2177
2825
  (r'\b(%s)\b' % '|'.join(keywords4), Keyword),
2178
2826
  (r'\b(%s)\b' % '|'.join(keywords5), Keyword.Pseudo),
2179
2827
  (r'\b(%s)\b' % '|'.join(keywords6), Keyword.Reserved),
2180
- (r'\b([A-Z][A-Za-z0-9_\']*)(?=\s*\.)',
2828
+ (r'\b([A-Z][\w\']*)(?=\s*\.)',
2181
2829
  Name.Namespace, 'dotted'),
2182
- (r'\b([A-Z][A-Za-z0-9_\']*)', Name.Class),
2830
+ (r'\b([A-Z][\w\']*)', Name.Class),
2183
2831
  (r'(%s)' % '|'.join(keyopts[::-1]), Operator),
2184
2832
  (r'(%s|%s)?%s' % (infix_syms, prefix_syms, operators), Operator),
2185
2833
  (r'\b(%s)\b' % '|'.join(word_operators), Operator.Word),
@@ -2190,7 +2838,7 @@ class CoqLexer(RegexLexer):
2190
2838
  (r'\d[\d_]*', Number.Integer),
2191
2839
  (r'0[xX][\da-fA-F][\da-fA-F_]*', Number.Hex),
2192
2840
  (r'0[oO][0-7][0-7_]*', Number.Oct),
2193
- (r'0[bB][01][01_]*', Number.Binary),
2841
+ (r'0[bB][01][01_]*', Number.Bin),
2194
2842
  (r'-?\d[\d_]*(.[\d_]*)?([eE][+\-]?\d[\d_]*)', Number.Float),
2195
2843
 
2196
2844
  (r"'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2}))'",
@@ -2216,10 +2864,10 @@ class CoqLexer(RegexLexer):
2216
2864
  'dotted': [
2217
2865
  (r'\s+', Text),
2218
2866
  (r'\.', Punctuation),
2219
- (r'[A-Z][A-Za-z0-9_\']*(?=\s*\.)', Name.Namespace),
2220
- (r'[A-Z][A-Za-z0-9_\']*', Name.Class, '#pop'),
2867
+ (r'[A-Z][\w\']*(?=\s*\.)', Name.Namespace),
2868
+ (r'[A-Z][\w\']*', Name.Class, '#pop'),
2221
2869
  (r'[a-z][a-z0-9_\']*', Name, '#pop'),
2222
- (r'', Text, '#pop')
2870
+ default('#pop')
2223
2871
  ],
2224
2872
  }
2225
2873
 
@@ -2232,7 +2880,7 @@ class NewLispLexer(RegexLexer):
2232
2880
  """
2233
2881
  For `newLISP. <www.newlisp.org>`_ source code (version 10.3.0).
2234
2882
 
2235
- *New in Pygments 1.5.*
2883
+ .. versionadded:: 1.5
2236
2884
  """
2237
2885
 
2238
2886
  name = 'NewLisp'
@@ -2305,7 +2953,7 @@ class NewLispLexer(RegexLexer):
2305
2953
  ]
2306
2954
 
2307
2955
  # valid names
2308
- valid_name = r'([a-zA-Z0-9!$%&*+.,/<=>?@^_~|-])+|(\[.*?\])+'
2956
+ valid_name = r'([\w!$%&*+.,/<=>?@^~|-])+|(\[.*?\])+'
2309
2957
 
2310
2958
  tokens = {
2311
2959
  'root': [
@@ -2359,11 +3007,160 @@ class NewLispLexer(RegexLexer):
2359
3007
  }
2360
3008
 
2361
3009
 
3010
+ class NixLexer(RegexLexer):
3011
+ """
3012
+ For the `Nix language <http://nixos.org/nix/>`_.
3013
+
3014
+ .. versionadded:: 2.0
3015
+ """
3016
+
3017
+ name = 'Nix'
3018
+ aliases = ['nixos', 'nix']
3019
+ filenames = ['*.nix']
3020
+ mimetypes = ['text/x-nix']
3021
+
3022
+ flags = re.MULTILINE | re.UNICODE
3023
+
3024
+ keywords = ['rec', 'with', 'let', 'in', 'inherit', 'assert', 'if',
3025
+ 'else', 'then', '...']
3026
+ builtins = ['import', 'abort', 'baseNameOf', 'dirOf', 'isNull', 'builtins',
3027
+ 'map', 'removeAttrs', 'throw', 'toString', 'derivation']
3028
+ operators = ['++', '+', '?', '.', '!', '//', '==',
3029
+ '!=', '&&', '||', '->', '=']
3030
+
3031
+ punctuations = ["(", ")", "[", "]", ";", "{", "}", ":", ",", "@"]
3032
+
3033
+ tokens = {
3034
+ 'root': [
3035
+ # comments starting with #
3036
+ (r'#.*$', Comment.Single),
3037
+
3038
+ # multiline comments
3039
+ (r'/\*', Comment.Multiline, 'comment'),
3040
+
3041
+ # whitespace
3042
+ (r'\s+', Text),
3043
+
3044
+ # keywords
3045
+ ('(%s)' % '|'.join(re.escape(entry) + '\\b' for entry in keywords), Keyword),
3046
+
3047
+ # highlight the builtins
3048
+ ('(%s)' % '|'.join(re.escape(entry) + '\\b' for entry in builtins),
3049
+ Name.Builtin),
3050
+
3051
+ (r'\b(true|false|null)\b', Name.Constant),
3052
+
3053
+ # operators
3054
+ ('(%s)' % '|'.join(re.escape(entry) for entry in operators),
3055
+ Operator),
3056
+
3057
+ # word operators
3058
+ (r'\b(or|and)\b', Operator.Word),
3059
+
3060
+ # punctuations
3061
+ ('(%s)' % '|'.join(re.escape(entry) for entry in punctuations), Punctuation),
3062
+
3063
+ # integers
3064
+ (r'[0-9]+', Number.Integer),
3065
+
3066
+ # strings
3067
+ (r'"', String.Double, 'doublequote'),
3068
+ (r"''", String.Single, 'singlequote'),
3069
+
3070
+ # paths
3071
+ (r'[\w.+-]*(\/[\w.+-]+)+', Literal),
3072
+ (r'\<[\w.+-]+(\/[\w.+-]+)*\>', Literal),
3073
+
3074
+ # urls
3075
+ (r'[a-zA-Z][a-zA-Z0-9\+\-\.]*\:[\w%/?:@&=+$,\\.!~*\'-]+', Literal),
3076
+
3077
+ # names of variables
3078
+ (r'[\w-]+\s*=', String.Symbol),
3079
+ (r'[a-zA-Z_][\w\'-]*', Text),
3080
+
3081
+ ],
3082
+ 'comment': [
3083
+ (r'[^/\*]+', Comment.Multiline),
3084
+ (r'/\*', Comment.Multiline, '#push'),
3085
+ (r'\*/', Comment.Multiline, '#pop'),
3086
+ (r'[\*/]', Comment.Multiline),
3087
+ ],
3088
+ 'singlequote': [
3089
+ (r"'''", String.Escape),
3090
+ (r"''\$\{", String.Escape),
3091
+ (r"''\n", String.Escape),
3092
+ (r"''\r", String.Escape),
3093
+ (r"''\t", String.Escape),
3094
+ (r"''", String.Single, '#pop'),
3095
+ (r'\$\{', String.Interpol, 'antiquote'),
3096
+ (r"[^']", String.Single),
3097
+ ],
3098
+ 'doublequote': [
3099
+ (r'\\', String.Escape),
3100
+ (r'\\"', String.Escape),
3101
+ (r'\\${', String.Escape),
3102
+ (r'"', String.Double, '#pop'),
3103
+ (r'\$\{', String.Interpol, 'antiquote'),
3104
+ (r'[^"]', String.Double),
3105
+ ],
3106
+ 'antiquote': [
3107
+ (r"}", String.Interpol, '#pop'),
3108
+ # TODO: we should probably escape also here ''${ \${
3109
+ (r"\$\{", String.Interpol, '#push'),
3110
+ include('root'),
3111
+ ],
3112
+ }
3113
+
3114
+ def analyse_text(text):
3115
+ rv = 0.0
3116
+ # TODO: let/in
3117
+ if re.search(r'import.+?<[^>]+>', text):
3118
+ rv += 0.4
3119
+ if re.search(r'mkDerivation\s+(\(|\{|rec)', text):
3120
+ rv += 0.4
3121
+ if re.search(r'with\s+[a-zA-Z\.]+;', text):
3122
+ rv += 0.2
3123
+ if re.search(r'inherit\s+[a-zA-Z()\.];', text):
3124
+ rv += 0.2
3125
+ if re.search(r'=\s+mkIf\s+', text):
3126
+ rv += 0.4
3127
+ if re.search(r'\{[a-zA-Z,\s]+\}:', text):
3128
+ rv += 0.1
3129
+ return rv
3130
+
3131
+
3132
+ def gen_elixir_string_rules(name, symbol, token):
3133
+ states = {}
3134
+ states['string_' + name] = [
3135
+ (r'[^#%s\\]+' % (symbol,), token),
3136
+ include('escapes'),
3137
+ (r'\\.', token),
3138
+ (r'(%s)(:?)' % (symbol,), bygroups(token, Punctuation), "#pop"),
3139
+ include('interpol')
3140
+ ]
3141
+ return states
3142
+
3143
+ def gen_elixir_sigstr_rules(term, token, interpol=True):
3144
+ if interpol:
3145
+ return [
3146
+ (r'[^#%s\\]+' % (term,), token),
3147
+ include('escapes'),
3148
+ (r'\\.', token),
3149
+ (r'%s[a-zA-Z]*' % (term,), token, '#pop'),
3150
+ include('interpol')
3151
+ ]
3152
+ else:
3153
+ return [
3154
+ (r'[^%s\\]+' % (term,), token),
3155
+ (r'\\.', token),
3156
+ (r'%s[a-zA-Z]*' % (term,), token, '#pop'),
3157
+ ]
3158
+
2362
3159
  class ElixirLexer(RegexLexer):
2363
3160
  """
2364
3161
  For the `Elixir language <http://elixir-lang.org>`_.
2365
3162
 
2366
- *New in Pygments 1.5.*
3163
+ .. versionadded:: 1.5
2367
3164
  """
2368
3165
 
2369
3166
  name = 'Elixir'
@@ -2371,89 +3168,228 @@ class ElixirLexer(RegexLexer):
2371
3168
  filenames = ['*.ex', '*.exs']
2372
3169
  mimetypes = ['text/x-elixir']
2373
3170
 
3171
+ KEYWORD = ['fn', 'do', 'end', 'after', 'else', 'rescue', 'catch']
3172
+ KEYWORD_OPERATOR = ['not', 'and', 'or', 'xor', 'when', 'in']
3173
+ BUILTIN = [
3174
+ 'case', 'cond', 'for', 'if', 'unless', 'try', 'receive', 'raise',
3175
+ 'quote', 'unquote', 'unquote_splicing', 'throw', 'super'
3176
+ ]
3177
+ BUILTIN_DECLARATION = [
3178
+ 'def', 'defp', 'defmodule', 'defprotocol', 'defmacro', 'defmacrop',
3179
+ 'defdelegate', 'defexception', 'defstruct', 'defimpl', 'defcallback'
3180
+ ]
3181
+
3182
+ BUILTIN_NAMESPACE = ['import', 'require', 'use', 'alias']
3183
+ CONSTANT = ['nil', 'true', 'false']
3184
+
3185
+ PSEUDO_VAR = ['_', '__MODULE__', '__DIR__', '__ENV__', '__CALLER__']
3186
+
3187
+ OPERATORS3 = ['<<<', '>>>', '|||', '&&&', '^^^', '~~~', '===', '!==']
3188
+ OPERATORS2 = [
3189
+ '==', '!=', '<=', '>=', '&&', '||', '<>', '++', '--', '|>', '=~'
3190
+ ]
3191
+ OPERATORS1 = ['<', '>', '+', '-', '*', '/', '!', '^', '&']
3192
+
3193
+ PUNCTUATION = [
3194
+ '\\\\', '<<', '>>', '::', '->', '<-', '=>', '|', '(', ')',
3195
+ '{', '}', ';', ',', '.', '[', ']', '%', '='
3196
+ ]
3197
+
3198
+ def get_tokens_unprocessed(self, text):
3199
+ for index, token, value in RegexLexer.get_tokens_unprocessed(self, text):
3200
+ if token is Name:
3201
+ if value in self.KEYWORD:
3202
+ yield index, Keyword, value
3203
+ elif value in self.KEYWORD_OPERATOR:
3204
+ yield index, Operator.Word, value
3205
+ elif value in self.BUILTIN:
3206
+ yield index, Keyword, value
3207
+ elif value in self.BUILTIN_DECLARATION:
3208
+ yield index, Keyword.Declaration, value
3209
+ elif value in self.BUILTIN_NAMESPACE:
3210
+ yield index, Keyword.Namespace, value
3211
+ elif value in self.CONSTANT:
3212
+ yield index, Name.Constant, value
3213
+ elif value in self.PSEUDO_VAR:
3214
+ yield index, Name.Builtin.Pseudo, value
3215
+ else:
3216
+ yield index, token, value
3217
+ else:
3218
+ yield index, token, value
3219
+
2374
3220
  def gen_elixir_sigil_rules():
2375
- states = {}
2376
-
2377
- states['strings'] = [
2378
- (r'(%[A-Ba-z])?"""(?:.|\n)*?"""', String.Doc),
2379
- (r"'''(?:.|\n)*?'''", String.Doc),
2380
- (r'"', String.Double, 'dqs'),
2381
- (r"'.*'", String.Single),
2382
- (r'(?<!\w)\?(\\(x\d{1,2}|\h{1,2}(?!\h)\b|0[0-7]{0,2}(?![0-7])\b|'
2383
- r'[^x0MC])|(\\[MC]-)+\w|[^\s\\])', String.Other)
3221
+ # these braces are balanced inside the sigil string
3222
+ braces = [
3223
+ (r'\{', r'\}', 'cb'),
3224
+ (r'\[', r'\]', 'sb'),
3225
+ (r'\(', r'\)', 'pa'),
3226
+ (r'\<', r'\>', 'ab'),
3227
+ ]
3228
+
3229
+ # these are also valid sigil terminators, they are not balanced
3230
+ terms = [
3231
+ (r'/', 'slas'), (r'\|', 'pipe'), ('"', 'quot'), ("'", 'apos'),
2384
3232
  ]
2385
3233
 
2386
- for lbrace, rbrace, name, in ('\\{', '\\}', 'cb'), \
2387
- ('\\[', '\\]', 'sb'), \
2388
- ('\\(', '\\)', 'pa'), \
2389
- ('\\<', '\\>', 'lt'):
3234
+ # heredocs have slightly different rules, they are not balanced
3235
+ triquotes = [(r'"""', 'triquot'), (r"'''", 'triapos')]
3236
+
3237
+ token = String.Other
3238
+ states = {'sigils': []}
3239
+
3240
+ for term, name in triquotes:
3241
+ states['sigils'] += [
3242
+ (r'(~[a-z])(%s)' % (term,), bygroups(token, String.Heredoc),
3243
+ (name + '-end', name + '-intp')),
3244
+ (r'(~[A-Z])(%s)' % (term,), bygroups(token, String.Heredoc),
3245
+ (name + '-end', name + '-no-intp')),
3246
+ ]
2390
3247
 
2391
- states['strings'] += [
2392
- (r'%[a-z]' + lbrace, String.Double, name + 'intp'),
2393
- (r'%[A-Z]' + lbrace, String.Double, name + 'no-intp')
3248
+ states[name +'-end'] = [(r'[a-zA-Z]*', token, '#pop')]
3249
+ states[name +'-intp'] = [
3250
+ (r'^\s*' + term, String.Heredoc, '#pop'),
3251
+ include('heredoc_interpol'),
3252
+ ]
3253
+ states[name +'-no-intp'] = [
3254
+ (r'^\s*' + term, String.Heredoc, '#pop'),
3255
+ include('heredoc_no_interpol'),
2394
3256
  ]
2395
3257
 
2396
- states[name +'intp'] = [
2397
- (r'' + rbrace + '[a-z]*', String.Double, "#pop"),
2398
- include('enddoublestr')
3258
+ for term, name in terms:
3259
+ states['sigils'] += [
3260
+ (r'~[a-z]' + term, token, name + '-intp'),
3261
+ (r'~[A-Z]' + term, token, name + '-no-intp'),
2399
3262
  ]
2400
3263
 
2401
- states[name +'no-intp'] = [
2402
- (r'.*' + rbrace + '[a-z]*', String.Double , "#pop")
3264
+ # Similar states to the braced sigils, but no balancing of
3265
+ # terminators
3266
+ states[name +'-intp'] = gen_elixir_sigstr_rules(term, token)
3267
+ states[name +'-no-intp'] = \
3268
+ gen_elixir_sigstr_rules(term, token, interpol=False)
3269
+
3270
+ for lbrace, rbrace, name in braces:
3271
+ states['sigils'] += [
3272
+ (r'~[a-z]' + lbrace, token, name + '-intp'),
3273
+ (r'~[A-Z]' + lbrace, token, name + '-no-intp')
2403
3274
  ]
2404
3275
 
3276
+ states[name +'-intp'] = [
3277
+ (r'\\.', token),
3278
+ (lbrace, token, '#push'),
3279
+ ] + gen_elixir_sigstr_rules(rbrace, token)
3280
+
3281
+ states[name +'-no-intp'] = [
3282
+ (r'\\.', token),
3283
+ (lbrace, token, '#push'),
3284
+ ] + gen_elixir_sigstr_rules(rbrace, token, interpol=False)
3285
+
2405
3286
  return states
2406
3287
 
3288
+ op3_re = "|".join(re.escape(s) for s in OPERATORS3)
3289
+ op2_re = "|".join(re.escape(s) for s in OPERATORS2)
3290
+ op1_re = "|".join(re.escape(s) for s in OPERATORS1)
3291
+ ops_re = r'(?:%s|%s|%s)' % (op3_re, op2_re, op1_re)
3292
+ punctuation_re = "|".join(re.escape(s) for s in PUNCTUATION)
3293
+ name_re = r'[a-z_][a-zA-Z_0-9]*[!\?]?'
3294
+ modname_re = r'[A-Z][A-Za-z_]*(?:\.[A-Z][A-Za-z_]*)*'
3295
+ complex_name_re = r'(?:%s|%s|%s)' % (name_re, modname_re, ops_re)
3296
+ special_atom_re = r'(?:\.\.\.|<<>>|%{}|%|{})'
3297
+
2407
3298
  tokens = {
2408
3299
  'root': [
2409
3300
  (r'\s+', Text),
2410
3301
  (r'#.*$', Comment.Single),
2411
- (r'\b(case|cond|end|bc|lc|if|unless|try|loop|receive|fn|defmodule|'
2412
- r'defp?|defprotocol|defimpl|defrecord|defmacrop?|defdelegate|'
2413
- r'defexception|exit|raise|throw|unless|after|rescue|catch|else)\b(?![?!])|'
2414
- r'(?<!\.)\b(do|\-\>)\b\s*', Keyword),
2415
- (r'\b(import|require|use|recur|quote|unquote|super|refer)\b(?![?!])',
2416
- Keyword.Namespace),
2417
- (r'(?<!\.)\b(and|not|or|when|xor|in)\b', Operator.Word),
2418
- (r'%=|\*=|\*\*=|\+=|\-=|\^=|\|\|=|'
2419
- r'<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?=[ \t])\?|'
2420
- r'(?<=[ \t])!+|&&|\|\||\^|\*|\+|\-|/|'
2421
- r'\||\+\+|\-\-|\*\*|\/\/|\<\-|\<\>|<<|>>|=|\.', Operator),
2422
- (r'(?<!:)(:)([a-zA-Z_]\w*([?!]|=(?![>=]))?|\<\>|===?|>=?|<=?|'
2423
- r'<=>|&&?|%\(\)|%\[\]|%\{\}|\+\+?|\-\-?|\|\|?|\!|//|[%&`/\|]|'
2424
- r'\*\*?|=?~|<\-)|([a-zA-Z_]\w*([?!])?)(:)(?!:)', String.Symbol),
2425
- (r':"', String.Symbol, 'interpoling_symbol'),
2426
- (r'\b(nil|true|false)\b(?![?!])|\b[A-Z]\w*\b', Name.Constant),
2427
- (r'\b(__(FILE|LINE|MODULE|MAIN|FUNCTION)__)\b(?![?!])', Name.Builtin.Pseudo),
2428
- (r'[a-zA-Z_!][\w_]*[!\?]?', Name),
2429
- (r'[(){};,/\|:\\\[\]]', Punctuation),
2430
- (r'@[a-zA-Z_]\w*|&\d', Name.Variable),
2431
- (r'\b(0[xX][0-9A-Fa-f]+|\d(_?\d)*(\.(?![^\d\s])'
2432
- r'(_?\d)*)?([eE][-+]?\d(_?\d)*)?|0[bB][01]+)\b', Number),
2433
- (r'%r\/.*\/', String.Regex),
2434
- include('strings'),
2435
- ],
2436
- 'dqs': [
2437
- (r'"', String.Double, "#pop"),
2438
- include('enddoublestr')
2439
- ],
2440
- 'interpoling': [
2441
- (r'#{', String.Interpol, 'interpoling_string'),
2442
- ],
2443
- 'interpoling_string' : [
3302
+
3303
+ # Various kinds of characters
3304
+ (r'(?i)(\?)(\\x{)([\da-f]+)(})',
3305
+ bygroups(String.Char,
3306
+ String.Escape, Number.Hex, String.Escape)),
3307
+ (r'(?i)(\?)(\\x[\da-f]{1,2})',
3308
+ bygroups(String.Char, String.Escape)),
3309
+ (r'(\?)(\\[0-7]{1,3})',
3310
+ bygroups(String.Char, String.Escape)),
3311
+ (r'(\?)(\\[abdefnrstv])',
3312
+ bygroups(String.Char, String.Escape)),
3313
+ (r'\?\\?.', String.Char),
3314
+
3315
+ # atoms
3316
+ (r':' + special_atom_re, String.Symbol),
3317
+ (r':' + complex_name_re, String.Symbol),
3318
+ (r':"', String.Symbol, 'string_double_atom'),
3319
+ (r":'", String.Symbol, 'string_single_atom'),
3320
+
3321
+ # [keywords: ...]
3322
+ (r'(%s|%s)(:)(?=\s|\n)' % (special_atom_re, complex_name_re),
3323
+ bygroups(String.Symbol, Punctuation)),
3324
+
3325
+ # @attributes
3326
+ (r'@' + name_re, Name.Attribute),
3327
+
3328
+ # operators and punctuation
3329
+ (op3_re, Operator),
3330
+ (op2_re, Operator),
3331
+ (punctuation_re, Punctuation),
3332
+ (r'&\d', Name.Entity), # anon func arguments
3333
+ (op1_re, Operator),
3334
+
3335
+ # identifiers
3336
+ (name_re, Name),
3337
+ (modname_re, Name.Class),
3338
+
3339
+ # numbers
3340
+ (r'0[bB][01]+', Number.Bin),
3341
+ (r'0[0-7]+', Number.Oct),
3342
+ (r'(?i)0x[\da-f]+', Number.Hex),
3343
+ (r'\d(_?\d)*\.\d(_?\d)*([eE][-+]?\d(_?\d)*)?', Number.Float),
3344
+ (r'\d(_?\d)*', Number.Integer),
3345
+
3346
+ # strings and heredocs
3347
+ (r'"""\s*', String.Heredoc, 'heredoc_double'),
3348
+ (r"'''\s*$", String.Heredoc, 'heredoc_single'),
3349
+ (r'"', String.Double, 'string_double'),
3350
+ (r"'", String.Single, 'string_single'),
3351
+
3352
+ include('sigils'),
3353
+ ],
3354
+ 'heredoc_double': [
3355
+ (r'^\s*"""', String.Heredoc, '#pop'),
3356
+ include('heredoc_interpol'),
3357
+ ],
3358
+ 'heredoc_single': [
3359
+ (r"^\s*'''", String.Heredoc, '#pop'),
3360
+ include('heredoc_interpol'),
3361
+ ],
3362
+ 'heredoc_interpol': [
3363
+ (r'[^#\\\n]+', String.Heredoc),
3364
+ include('escapes'),
3365
+ (r'\\.', String.Heredoc),
3366
+ (r'\n+', String.Heredoc),
3367
+ include('interpol'),
3368
+ ],
3369
+ 'heredoc_no_interpol': [
3370
+ (r'[^\\\n]+', String.Heredoc),
3371
+ (r'\\.', String.Heredoc),
3372
+ (r'\n+', String.Heredoc),
3373
+ ],
3374
+ 'escapes': [
3375
+ (r'(?i)(\\x{)([\da-f]+)(})',
3376
+ bygroups(String.Escape, Number.Hex, String.Escape)),
3377
+ (r'(?i)\\x[\da-f]{1,2}', String.Escape),
3378
+ (r'\\[0-7]{1,3}', String.Escape),
3379
+ (r'\\[abdefnrstv]', String.Escape),
3380
+ ],
3381
+ 'interpol': [
3382
+ (r'#{', String.Interpol, 'interpol_string'),
3383
+ ],
3384
+ 'interpol_string' : [
2444
3385
  (r'}', String.Interpol, "#pop"),
2445
3386
  include('root')
2446
3387
  ],
2447
- 'interpoling_symbol': [
2448
- (r'"', String.Symbol, "#pop"),
2449
- include('interpoling'),
2450
- (r'[^#"]+', String.Symbol),
2451
- ],
2452
- 'enddoublestr' : [
2453
- include('interpoling'),
2454
- (r'[^#"]+', String.Double),
2455
- ]
2456
3388
  }
3389
+ tokens.update(gen_elixir_string_rules('double', '"', String.Double))
3390
+ tokens.update(gen_elixir_string_rules('single', "'", String.Single))
3391
+ tokens.update(gen_elixir_string_rules('double_atom', '"', String.Symbol))
3392
+ tokens.update(gen_elixir_string_rules('single_atom', "'", String.Symbol))
2457
3393
  tokens.update(gen_elixir_sigil_rules())
2458
3394
 
2459
3395
 
@@ -2474,29 +3410,32 @@ class ElixirConsoleLexer(Lexer):
2474
3410
  iex> length [head | tail]
2475
3411
  3
2476
3412
 
2477
- *New in Pygments 1.5.*
3413
+ .. versionadded:: 1.5
2478
3414
  """
2479
3415
 
2480
3416
  name = 'Elixir iex session'
2481
3417
  aliases = ['iex']
2482
3418
  mimetypes = ['text/x-elixir-shellsession']
2483
3419
 
2484
- _prompt_re = re.compile('(iex|\.{3})> ')
3420
+ _prompt_re = re.compile('(iex|\.{3})(\(\d+\))?> ')
2485
3421
 
2486
3422
  def get_tokens_unprocessed(self, text):
2487
3423
  exlexer = ElixirLexer(**self.options)
2488
3424
 
2489
3425
  curcode = ''
3426
+ in_error = False
2490
3427
  insertions = []
2491
3428
  for match in line_re.finditer(text):
2492
3429
  line = match.group()
2493
3430
  if line.startswith(u'** '):
3431
+ in_error = True
2494
3432
  insertions.append((len(curcode),
2495
3433
  [(0, Generic.Error, line[:-1])]))
2496
3434
  curcode += line[-1:]
2497
3435
  else:
2498
3436
  m = self._prompt_re.match(line)
2499
3437
  if m is not None:
3438
+ in_error = False
2500
3439
  end = m.end()
2501
3440
  insertions.append((len(curcode),
2502
3441
  [(0, Generic.Prompt, line[:end])]))
@@ -2504,14 +3443,15 @@ class ElixirConsoleLexer(Lexer):
2504
3443
  else:
2505
3444
  if curcode:
2506
3445
  for item in do_insertions(insertions,
2507
- exlexer.get_tokens_unprocessed(curcode)):
3446
+ exlexer.get_tokens_unprocessed(curcode)):
2508
3447
  yield item
2509
3448
  curcode = ''
2510
3449
  insertions = []
2511
- yield match.start(), Generic.Output, line
3450
+ token = Generic.Error if in_error else Generic.Output
3451
+ yield match.start(), token, line
2512
3452
  if curcode:
2513
3453
  for item in do_insertions(insertions,
2514
- exlexer.get_tokens_unprocessed(curcode)):
3454
+ exlexer.get_tokens_unprocessed(curcode)):
2515
3455
  yield item
2516
3456
 
2517
3457
 
@@ -2520,7 +3460,7 @@ class KokaLexer(RegexLexer):
2520
3460
  Lexer for the `Koka <http://koka.codeplex.com>`_
2521
3461
  language.
2522
3462
 
2523
- *New in Pygments 1.6.*
3463
+ .. versionadded:: 1.6
2524
3464
  """
2525
3465
 
2526
3466
  name = 'Koka'
@@ -2690,7 +3630,7 @@ class KokaLexer(RegexLexer):
2690
3630
  (r'::|\->|[\.:|]', tokenType),
2691
3631
 
2692
3632
  #catchall
2693
- (r'', Text, '#pop')
3633
+ default('#pop')
2694
3634
  ],
2695
3635
 
2696
3636
  # comments and literals