pygments.rb-jruby 0.5.4

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 (473) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/CHANGELOG.md +71 -0
  4. data/Gemfile +2 -0
  5. data/LICENSE +17 -0
  6. data/README.md +118 -0
  7. data/Rakefile +66 -0
  8. data/bench.rb +22 -0
  9. data/cache-lexers.rb +8 -0
  10. data/lexers +0 -0
  11. data/lib/pygments.rb +8 -0
  12. data/lib/pygments/lexer.rb +148 -0
  13. data/lib/pygments/mentos.py +351 -0
  14. data/lib/pygments/popen.rb +404 -0
  15. data/lib/pygments/version.rb +3 -0
  16. data/pygments.rb.gemspec +24 -0
  17. data/test/test_data.c +2581 -0
  18. data/test/test_data.py +514 -0
  19. data/test/test_data_generated +2582 -0
  20. data/test/test_pygments.rb +287 -0
  21. data/vendor/custom_lexers/github.py +565 -0
  22. data/vendor/pygments-main/AUTHORS +153 -0
  23. data/vendor/pygments-main/CHANGES +889 -0
  24. data/vendor/pygments-main/LICENSE +25 -0
  25. data/vendor/pygments-main/MANIFEST.in +6 -0
  26. data/vendor/pygments-main/Makefile +59 -0
  27. data/vendor/pygments-main/REVISION +1 -0
  28. data/vendor/pygments-main/TODO +15 -0
  29. data/vendor/pygments-main/docs/generate.py +472 -0
  30. data/vendor/pygments-main/docs/pygmentize.1 +94 -0
  31. data/vendor/pygments-main/docs/src/api.txt +270 -0
  32. data/vendor/pygments-main/docs/src/authors.txt +5 -0
  33. data/vendor/pygments-main/docs/src/changelog.txt +5 -0
  34. data/vendor/pygments-main/docs/src/cmdline.txt +147 -0
  35. data/vendor/pygments-main/docs/src/filterdevelopment.txt +70 -0
  36. data/vendor/pygments-main/docs/src/filters.txt +42 -0
  37. data/vendor/pygments-main/docs/src/formatterdevelopment.txt +169 -0
  38. data/vendor/pygments-main/docs/src/formatters.txt +48 -0
  39. data/vendor/pygments-main/docs/src/index.txt +69 -0
  40. data/vendor/pygments-main/docs/src/installation.txt +71 -0
  41. data/vendor/pygments-main/docs/src/integrate.txt +48 -0
  42. data/vendor/pygments-main/docs/src/java.txt +70 -0
  43. data/vendor/pygments-main/docs/src/lexerdevelopment.txt +603 -0
  44. data/vendor/pygments-main/docs/src/lexers.txt +67 -0
  45. data/vendor/pygments-main/docs/src/moinmoin.txt +39 -0
  46. data/vendor/pygments-main/docs/src/plugins.txt +93 -0
  47. data/vendor/pygments-main/docs/src/quickstart.txt +202 -0
  48. data/vendor/pygments-main/docs/src/rstdirective.txt +22 -0
  49. data/vendor/pygments-main/docs/src/styles.txt +143 -0
  50. data/vendor/pygments-main/docs/src/tokens.txt +349 -0
  51. data/vendor/pygments-main/docs/src/unicode.txt +49 -0
  52. data/vendor/pygments-main/external/autopygmentize +64 -0
  53. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +144 -0
  54. data/vendor/pygments-main/external/markdown-processor.py +67 -0
  55. data/vendor/pygments-main/external/moin-parser.py +112 -0
  56. data/vendor/pygments-main/external/pygments.bashcomp +38 -0
  57. data/vendor/pygments-main/external/rst-directive-old.py +77 -0
  58. data/vendor/pygments-main/external/rst-directive.py +83 -0
  59. data/vendor/pygments-main/ez_setup.py +276 -0
  60. data/vendor/pygments-main/pygmentize +7 -0
  61. data/vendor/pygments-main/pygments/__init__.py +91 -0
  62. data/vendor/pygments-main/pygments/cmdline.py +441 -0
  63. data/vendor/pygments-main/pygments/console.py +74 -0
  64. data/vendor/pygments-main/pygments/filter.py +74 -0
  65. data/vendor/pygments-main/pygments/filters/__init__.py +356 -0
  66. data/vendor/pygments-main/pygments/formatter.py +95 -0
  67. data/vendor/pygments-main/pygments/formatters/__init__.py +68 -0
  68. data/vendor/pygments-main/pygments/formatters/_mapping.py +92 -0
  69. data/vendor/pygments-main/pygments/formatters/bbcode.py +109 -0
  70. data/vendor/pygments-main/pygments/formatters/html.py +821 -0
  71. data/vendor/pygments-main/pygments/formatters/img.py +553 -0
  72. data/vendor/pygments-main/pygments/formatters/latex.py +378 -0
  73. data/vendor/pygments-main/pygments/formatters/other.py +115 -0
  74. data/vendor/pygments-main/pygments/formatters/rtf.py +136 -0
  75. data/vendor/pygments-main/pygments/formatters/svg.py +154 -0
  76. data/vendor/pygments-main/pygments/formatters/terminal.py +112 -0
  77. data/vendor/pygments-main/pygments/formatters/terminal256.py +222 -0
  78. data/vendor/pygments-main/pygments/lexer.py +765 -0
  79. data/vendor/pygments-main/pygments/lexers/__init__.py +240 -0
  80. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1645 -0
  81. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +232 -0
  82. data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +5172 -0
  83. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +249 -0
  84. data/vendor/pygments-main/pygments/lexers/_mapping.py +354 -0
  85. data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +562 -0
  86. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +3787 -0
  87. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +233 -0
  88. data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +557 -0
  89. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +40 -0
  90. data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +1072 -0
  91. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +360 -0
  92. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +13 -0
  93. data/vendor/pygments-main/pygments/lexers/agile.py +2290 -0
  94. data/vendor/pygments-main/pygments/lexers/asm.py +398 -0
  95. data/vendor/pygments-main/pygments/lexers/compiled.py +3723 -0
  96. data/vendor/pygments-main/pygments/lexers/dalvik.py +104 -0
  97. data/vendor/pygments-main/pygments/lexers/dotnet.py +671 -0
  98. data/vendor/pygments-main/pygments/lexers/foxpro.py +428 -0
  99. data/vendor/pygments-main/pygments/lexers/functional.py +2731 -0
  100. data/vendor/pygments-main/pygments/lexers/github.py +565 -0
  101. data/vendor/pygments-main/pygments/lexers/hdl.py +356 -0
  102. data/vendor/pygments-main/pygments/lexers/jvm.py +1112 -0
  103. data/vendor/pygments-main/pygments/lexers/math.py +1918 -0
  104. data/vendor/pygments-main/pygments/lexers/other.py +3778 -0
  105. data/vendor/pygments-main/pygments/lexers/parsers.py +778 -0
  106. data/vendor/pygments-main/pygments/lexers/shell.py +424 -0
  107. data/vendor/pygments-main/pygments/lexers/special.py +100 -0
  108. data/vendor/pygments-main/pygments/lexers/sql.py +559 -0
  109. data/vendor/pygments-main/pygments/lexers/templates.py +1742 -0
  110. data/vendor/pygments-main/pygments/lexers/text.py +1893 -0
  111. data/vendor/pygments-main/pygments/lexers/web.py +4045 -0
  112. data/vendor/pygments-main/pygments/modeline.py +40 -0
  113. data/vendor/pygments-main/pygments/plugin.py +74 -0
  114. data/vendor/pygments-main/pygments/scanner.py +104 -0
  115. data/vendor/pygments-main/pygments/style.py +117 -0
  116. data/vendor/pygments-main/pygments/styles/__init__.py +70 -0
  117. data/vendor/pygments-main/pygments/styles/autumn.py +65 -0
  118. data/vendor/pygments-main/pygments/styles/borland.py +51 -0
  119. data/vendor/pygments-main/pygments/styles/bw.py +49 -0
  120. data/vendor/pygments-main/pygments/styles/colorful.py +81 -0
  121. data/vendor/pygments-main/pygments/styles/default.py +73 -0
  122. data/vendor/pygments-main/pygments/styles/emacs.py +72 -0
  123. data/vendor/pygments-main/pygments/styles/friendly.py +72 -0
  124. data/vendor/pygments-main/pygments/styles/fruity.py +42 -0
  125. data/vendor/pygments-main/pygments/styles/manni.py +75 -0
  126. data/vendor/pygments-main/pygments/styles/monokai.py +106 -0
  127. data/vendor/pygments-main/pygments/styles/murphy.py +80 -0
  128. data/vendor/pygments-main/pygments/styles/native.py +65 -0
  129. data/vendor/pygments-main/pygments/styles/pastie.py +75 -0
  130. data/vendor/pygments-main/pygments/styles/perldoc.py +69 -0
  131. data/vendor/pygments-main/pygments/styles/rrt.py +33 -0
  132. data/vendor/pygments-main/pygments/styles/tango.py +141 -0
  133. data/vendor/pygments-main/pygments/styles/trac.py +63 -0
  134. data/vendor/pygments-main/pygments/styles/vim.py +63 -0
  135. data/vendor/pygments-main/pygments/styles/vs.py +38 -0
  136. data/vendor/pygments-main/pygments/token.py +195 -0
  137. data/vendor/pygments-main/pygments/unistring.py +140 -0
  138. data/vendor/pygments-main/pygments/util.py +277 -0
  139. data/vendor/pygments-main/scripts/check_sources.py +242 -0
  140. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +32 -0
  141. data/vendor/pygments-main/scripts/epydoc.css +280 -0
  142. data/vendor/pygments-main/scripts/find_codetags.py +205 -0
  143. data/vendor/pygments-main/scripts/find_error.py +170 -0
  144. data/vendor/pygments-main/scripts/get_vimkw.py +43 -0
  145. data/vendor/pygments-main/scripts/pylintrc +301 -0
  146. data/vendor/pygments-main/scripts/reindent.py +291 -0
  147. data/vendor/pygments-main/scripts/vim2pygments.py +933 -0
  148. data/vendor/pygments-main/setup.cfg +7 -0
  149. data/vendor/pygments-main/setup.py +90 -0
  150. data/vendor/pygments-main/tests/dtds/HTML4-f.dtd +37 -0
  151. data/vendor/pygments-main/tests/dtds/HTML4-s.dtd +869 -0
  152. data/vendor/pygments-main/tests/dtds/HTML4.dcl +88 -0
  153. data/vendor/pygments-main/tests/dtds/HTML4.dtd +1092 -0
  154. data/vendor/pygments-main/tests/dtds/HTML4.soc +9 -0
  155. data/vendor/pygments-main/tests/dtds/HTMLlat1.ent +195 -0
  156. data/vendor/pygments-main/tests/dtds/HTMLspec.ent +77 -0
  157. data/vendor/pygments-main/tests/dtds/HTMLsym.ent +241 -0
  158. data/vendor/pygments-main/tests/examplefiles/ANTLRv3.g +608 -0
  159. data/vendor/pygments-main/tests/examplefiles/AcidStateAdvanced.hs +209 -0
  160. data/vendor/pygments-main/tests/examplefiles/AlternatingGroup.mu +102 -0
  161. data/vendor/pygments-main/tests/examplefiles/BOM.js +1 -0
  162. data/vendor/pygments-main/tests/examplefiles/CPDictionary.j +611 -0
  163. data/vendor/pygments-main/tests/examplefiles/Config.in.cache +1973 -0
  164. data/vendor/pygments-main/tests/examplefiles/Constants.mo +158 -0
  165. data/vendor/pygments-main/tests/examplefiles/DancingSudoku.lhs +411 -0
  166. data/vendor/pygments-main/tests/examplefiles/Deflate.fs +578 -0
  167. data/vendor/pygments-main/tests/examplefiles/Errors.scala +18 -0
  168. data/vendor/pygments-main/tests/examplefiles/File.hy +174 -0
  169. data/vendor/pygments-main/tests/examplefiles/Get-CommandDefinitionHtml.ps1 +66 -0
  170. data/vendor/pygments-main/tests/examplefiles/IPDispatchC.nc +104 -0
  171. data/vendor/pygments-main/tests/examplefiles/IPDispatchP.nc +671 -0
  172. data/vendor/pygments-main/tests/examplefiles/Intro.java +1660 -0
  173. data/vendor/pygments-main/tests/examplefiles/Makefile +1131 -0
  174. data/vendor/pygments-main/tests/examplefiles/Object.st +4394 -0
  175. data/vendor/pygments-main/tests/examplefiles/OrderedMap.hx +584 -0
  176. data/vendor/pygments-main/tests/examplefiles/RoleQ.pm6 +23 -0
  177. data/vendor/pygments-main/tests/examplefiles/SmallCheck.hs +378 -0
  178. data/vendor/pygments-main/tests/examplefiles/Sorting.mod +470 -0
  179. data/vendor/pygments-main/tests/examplefiles/Sudoku.lhs +382 -0
  180. data/vendor/pygments-main/tests/examplefiles/addressbook.proto +30 -0
  181. data/vendor/pygments-main/tests/examplefiles/antlr_throws +1 -0
  182. data/vendor/pygments-main/tests/examplefiles/apache2.conf +393 -0
  183. data/vendor/pygments-main/tests/examplefiles/as3_test.as +143 -0
  184. data/vendor/pygments-main/tests/examplefiles/as3_test2.as +46 -0
  185. data/vendor/pygments-main/tests/examplefiles/as3_test3.as +3 -0
  186. data/vendor/pygments-main/tests/examplefiles/aspx-cs_example +27 -0
  187. data/vendor/pygments-main/tests/examplefiles/autoit_submit.au3 +25 -0
  188. data/vendor/pygments-main/tests/examplefiles/badcase.java +2 -0
  189. data/vendor/pygments-main/tests/examplefiles/batchfile.bat +49 -0
  190. data/vendor/pygments-main/tests/examplefiles/bigtest.nsi +308 -0
  191. data/vendor/pygments-main/tests/examplefiles/boot-9.scm +1557 -0
  192. data/vendor/pygments-main/tests/examplefiles/ca65_example +284 -0
  193. data/vendor/pygments-main/tests/examplefiles/cbmbas_example +9 -0
  194. data/vendor/pygments-main/tests/examplefiles/cells.ps +515 -0
  195. data/vendor/pygments-main/tests/examplefiles/ceval.c +2604 -0
  196. data/vendor/pygments-main/tests/examplefiles/cheetah_example.html +13 -0
  197. data/vendor/pygments-main/tests/examplefiles/classes.dylan +125 -0
  198. data/vendor/pygments-main/tests/examplefiles/condensed_ruby.rb +10 -0
  199. data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +447 -0
  200. data/vendor/pygments-main/tests/examplefiles/database.pytb +20 -0
  201. data/vendor/pygments-main/tests/examplefiles/de.MoinMoin.po +2461 -0
  202. data/vendor/pygments-main/tests/examplefiles/demo.ahk +181 -0
  203. data/vendor/pygments-main/tests/examplefiles/demo.cfm +38 -0
  204. data/vendor/pygments-main/tests/examplefiles/django_sample.html+django +68 -0
  205. data/vendor/pygments-main/tests/examplefiles/dwarf.cw +17 -0
  206. data/vendor/pygments-main/tests/examplefiles/erl_session +10 -0
  207. data/vendor/pygments-main/tests/examplefiles/escape_semicolon.clj +1 -0
  208. data/vendor/pygments-main/tests/examplefiles/evil_regex.js +48 -0
  209. data/vendor/pygments-main/tests/examplefiles/example.Rd +78 -0
  210. data/vendor/pygments-main/tests/examplefiles/example.bug +54 -0
  211. data/vendor/pygments-main/tests/examplefiles/example.c +2080 -0
  212. data/vendor/pygments-main/tests/examplefiles/example.ceylon +52 -0
  213. data/vendor/pygments-main/tests/examplefiles/example.clay +33 -0
  214. data/vendor/pygments-main/tests/examplefiles/example.cls +15 -0
  215. data/vendor/pygments-main/tests/examplefiles/example.cob +3556 -0
  216. data/vendor/pygments-main/tests/examplefiles/example.cpp +2363 -0
  217. data/vendor/pygments-main/tests/examplefiles/example.gs +106 -0
  218. data/vendor/pygments-main/tests/examplefiles/example.gst +7 -0
  219. data/vendor/pygments-main/tests/examplefiles/example.hx +142 -0
  220. data/vendor/pygments-main/tests/examplefiles/example.jag +48 -0
  221. data/vendor/pygments-main/tests/examplefiles/example.kt +47 -0
  222. data/vendor/pygments-main/tests/examplefiles/example.lagda +19 -0
  223. data/vendor/pygments-main/tests/examplefiles/example.lua +250 -0
  224. data/vendor/pygments-main/tests/examplefiles/example.monkey +152 -0
  225. data/vendor/pygments-main/tests/examplefiles/example.moo +26 -0
  226. data/vendor/pygments-main/tests/examplefiles/example.moon +629 -0
  227. data/vendor/pygments-main/tests/examplefiles/example.msc +43 -0
  228. data/vendor/pygments-main/tests/examplefiles/example.nim +1010 -0
  229. data/vendor/pygments-main/tests/examplefiles/example.ns2 +69 -0
  230. data/vendor/pygments-main/tests/examplefiles/example.p +34 -0
  231. data/vendor/pygments-main/tests/examplefiles/example.pas +2708 -0
  232. data/vendor/pygments-main/tests/examplefiles/example.prg +161 -0
  233. data/vendor/pygments-main/tests/examplefiles/example.rb +1852 -0
  234. data/vendor/pygments-main/tests/examplefiles/example.reg +19 -0
  235. data/vendor/pygments-main/tests/examplefiles/example.rexx +50 -0
  236. data/vendor/pygments-main/tests/examplefiles/example.rhtml +561 -0
  237. data/vendor/pygments-main/tests/examplefiles/example.rkt +95 -0
  238. data/vendor/pygments-main/tests/examplefiles/example.rpf +4 -0
  239. data/vendor/pygments-main/tests/examplefiles/example.sh-session +19 -0
  240. data/vendor/pygments-main/tests/examplefiles/example.shell-session +45 -0
  241. data/vendor/pygments-main/tests/examplefiles/example.sml +156 -0
  242. data/vendor/pygments-main/tests/examplefiles/example.snobol +15 -0
  243. data/vendor/pygments-main/tests/examplefiles/example.stan +108 -0
  244. data/vendor/pygments-main/tests/examplefiles/example.tea +34 -0
  245. data/vendor/pygments-main/tests/examplefiles/example.ts +28 -0
  246. data/vendor/pygments-main/tests/examplefiles/example.u +548 -0
  247. data/vendor/pygments-main/tests/examplefiles/example.weechatlog +9 -0
  248. data/vendor/pygments-main/tests/examplefiles/example.xhtml +376 -0
  249. data/vendor/pygments-main/tests/examplefiles/example.xtend +34 -0
  250. data/vendor/pygments-main/tests/examplefiles/example.yaml +302 -0
  251. data/vendor/pygments-main/tests/examplefiles/example2.aspx +29 -0
  252. data/vendor/pygments-main/tests/examplefiles/example2.msc +79 -0
  253. data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +363 -0
  254. data/vendor/pygments-main/tests/examplefiles/example_file.fy +128 -0
  255. data/vendor/pygments-main/tests/examplefiles/firefox.mak +586 -0
  256. data/vendor/pygments-main/tests/examplefiles/flipflop.sv +19 -0
  257. data/vendor/pygments-main/tests/examplefiles/foo.sce +6 -0
  258. data/vendor/pygments-main/tests/examplefiles/format.ml +1213 -0
  259. data/vendor/pygments-main/tests/examplefiles/fucked_up.rb +77 -0
  260. data/vendor/pygments-main/tests/examplefiles/function.mu +1 -0
  261. data/vendor/pygments-main/tests/examplefiles/functional.rst +1472 -0
  262. data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +133 -0
  263. data/vendor/pygments-main/tests/examplefiles/genclass.clj +510 -0
  264. data/vendor/pygments-main/tests/examplefiles/genshi_example.xml+genshi +193 -0
  265. data/vendor/pygments-main/tests/examplefiles/genshitext_example.genshitext +33 -0
  266. data/vendor/pygments-main/tests/examplefiles/glsl.frag +7 -0
  267. data/vendor/pygments-main/tests/examplefiles/glsl.vert +13 -0
  268. data/vendor/pygments-main/tests/examplefiles/grammar-test.p6 +22 -0
  269. data/vendor/pygments-main/tests/examplefiles/hello.smali +40 -0
  270. data/vendor/pygments-main/tests/examplefiles/hello.sp +9 -0
  271. data/vendor/pygments-main/tests/examplefiles/html+php_faulty.php +1 -0
  272. data/vendor/pygments-main/tests/examplefiles/http_request_example +15 -0
  273. data/vendor/pygments-main/tests/examplefiles/http_response_example +29 -0
  274. data/vendor/pygments-main/tests/examplefiles/import.hs +4 -0
  275. data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +71 -0
  276. data/vendor/pygments-main/tests/examplefiles/intro.ik +24 -0
  277. data/vendor/pygments-main/tests/examplefiles/ints.php +10 -0
  278. data/vendor/pygments-main/tests/examplefiles/intsyn.fun +675 -0
  279. data/vendor/pygments-main/tests/examplefiles/intsyn.sig +286 -0
  280. data/vendor/pygments-main/tests/examplefiles/irb_heredoc +8 -0
  281. data/vendor/pygments-main/tests/examplefiles/irc.lsp +214 -0
  282. data/vendor/pygments-main/tests/examplefiles/java.properties +16 -0
  283. data/vendor/pygments-main/tests/examplefiles/jbst_example1.jbst +28 -0
  284. data/vendor/pygments-main/tests/examplefiles/jbst_example2.jbst +45 -0
  285. data/vendor/pygments-main/tests/examplefiles/jinjadesignerdoc.rst +713 -0
  286. data/vendor/pygments-main/tests/examplefiles/json.lasso +301 -0
  287. data/vendor/pygments-main/tests/examplefiles/json.lasso9 +213 -0
  288. data/vendor/pygments-main/tests/examplefiles/lighttpd_config.conf +13 -0
  289. data/vendor/pygments-main/tests/examplefiles/linecontinuation.py +47 -0
  290. data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +41 -0
  291. data/vendor/pygments-main/tests/examplefiles/logos_example.xm +28 -0
  292. data/vendor/pygments-main/tests/examplefiles/ltmain.sh +2849 -0
  293. data/vendor/pygments-main/tests/examplefiles/main.cmake +42 -0
  294. data/vendor/pygments-main/tests/examplefiles/markdown.lsp +679 -0
  295. data/vendor/pygments-main/tests/examplefiles/matlab_noreturn +3 -0
  296. data/vendor/pygments-main/tests/examplefiles/matlab_sample +30 -0
  297. data/vendor/pygments-main/tests/examplefiles/matlabsession_sample.txt +37 -0
  298. data/vendor/pygments-main/tests/examplefiles/metagrammar.treetop +455 -0
  299. data/vendor/pygments-main/tests/examplefiles/mg_sample.pro +73 -0
  300. data/vendor/pygments-main/tests/examplefiles/minehunt.qml +112 -0
  301. data/vendor/pygments-main/tests/examplefiles/minimal.ns2 +4 -0
  302. data/vendor/pygments-main/tests/examplefiles/moin_SyntaxReference.txt +340 -0
  303. data/vendor/pygments-main/tests/examplefiles/multiline_regexes.rb +38 -0
  304. data/vendor/pygments-main/tests/examplefiles/nanomsg.intr +95 -0
  305. data/vendor/pygments-main/tests/examplefiles/nasm_aoutso.asm +96 -0
  306. data/vendor/pygments-main/tests/examplefiles/nasm_objexe.asm +30 -0
  307. data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +87 -0
  308. data/vendor/pygments-main/tests/examplefiles/nginx_nginx.conf +118 -0
  309. data/vendor/pygments-main/tests/examplefiles/numbers.c +12 -0
  310. data/vendor/pygments-main/tests/examplefiles/objc_example.m +32 -0
  311. data/vendor/pygments-main/tests/examplefiles/objc_example2.m +24 -0
  312. data/vendor/pygments-main/tests/examplefiles/perl_misc +62 -0
  313. data/vendor/pygments-main/tests/examplefiles/perl_perl5db +998 -0
  314. data/vendor/pygments-main/tests/examplefiles/perl_regex-delims +120 -0
  315. data/vendor/pygments-main/tests/examplefiles/perlfunc.1 +856 -0
  316. data/vendor/pygments-main/tests/examplefiles/phpMyAdmin.spec +163 -0
  317. data/vendor/pygments-main/tests/examplefiles/phpcomplete.vim +567 -0
  318. data/vendor/pygments-main/tests/examplefiles/pleac.in.rb +1223 -0
  319. data/vendor/pygments-main/tests/examplefiles/postgresql_test.txt +47 -0
  320. data/vendor/pygments-main/tests/examplefiles/pppoe.applescript +10 -0
  321. data/vendor/pygments-main/tests/examplefiles/psql_session.txt +122 -0
  322. data/vendor/pygments-main/tests/examplefiles/py3_test.txt +2 -0
  323. data/vendor/pygments-main/tests/examplefiles/py3tb_test.py3tb +4 -0
  324. data/vendor/pygments-main/tests/examplefiles/pycon_test.pycon +14 -0
  325. data/vendor/pygments-main/tests/examplefiles/pytb_test2.pytb +2 -0
  326. data/vendor/pygments-main/tests/examplefiles/pytb_test3.pytb +4 -0
  327. data/vendor/pygments-main/tests/examplefiles/python25-bsd.mak +234 -0
  328. data/vendor/pygments-main/tests/examplefiles/qsort.prolog +13 -0
  329. data/vendor/pygments-main/tests/examplefiles/r-console-transcript.Rout +38 -0
  330. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_rlscan +280 -0
  331. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_snippet +2 -0
  332. data/vendor/pygments-main/tests/examplefiles/regex.js +22 -0
  333. data/vendor/pygments-main/tests/examplefiles/reversi.lsp +427 -0
  334. data/vendor/pygments-main/tests/examplefiles/robotframework.txt +39 -0
  335. data/vendor/pygments-main/tests/examplefiles/ruby_func_def.rb +11 -0
  336. data/vendor/pygments-main/tests/examplefiles/rust_example.rs +233 -0
  337. data/vendor/pygments-main/tests/examplefiles/scilab.sci +30 -0
  338. data/vendor/pygments-main/tests/examplefiles/session.dylan-console +9 -0
  339. data/vendor/pygments-main/tests/examplefiles/sibling.prolog +19 -0
  340. data/vendor/pygments-main/tests/examplefiles/simple.md +747 -0
  341. data/vendor/pygments-main/tests/examplefiles/smarty_example.html +209 -0
  342. data/vendor/pygments-main/tests/examplefiles/source.lgt +343 -0
  343. data/vendor/pygments-main/tests/examplefiles/sources.list +62 -0
  344. data/vendor/pygments-main/tests/examplefiles/sphere.pov +18 -0
  345. data/vendor/pygments-main/tests/examplefiles/sqlite3.sqlite3-console +27 -0
  346. data/vendor/pygments-main/tests/examplefiles/squid.conf +30 -0
  347. data/vendor/pygments-main/tests/examplefiles/string.jl +1031 -0
  348. data/vendor/pygments-main/tests/examplefiles/string_delimiters.d +21 -0
  349. data/vendor/pygments-main/tests/examplefiles/stripheredoc.sh +3 -0
  350. data/vendor/pygments-main/tests/examplefiles/swig_java.swg +1329 -0
  351. data/vendor/pygments-main/tests/examplefiles/swig_std_vector.i +225 -0
  352. data/vendor/pygments-main/tests/examplefiles/test.R +153 -0
  353. data/vendor/pygments-main/tests/examplefiles/test.adb +211 -0
  354. data/vendor/pygments-main/tests/examplefiles/test.agda +102 -0
  355. data/vendor/pygments-main/tests/examplefiles/test.asy +131 -0
  356. data/vendor/pygments-main/tests/examplefiles/test.awk +121 -0
  357. data/vendor/pygments-main/tests/examplefiles/test.bas +29 -0
  358. data/vendor/pygments-main/tests/examplefiles/test.bb +95 -0
  359. data/vendor/pygments-main/tests/examplefiles/test.bmx +145 -0
  360. data/vendor/pygments-main/tests/examplefiles/test.boo +39 -0
  361. data/vendor/pygments-main/tests/examplefiles/test.bro +250 -0
  362. data/vendor/pygments-main/tests/examplefiles/test.cs +374 -0
  363. data/vendor/pygments-main/tests/examplefiles/test.css +54 -0
  364. data/vendor/pygments-main/tests/examplefiles/test.cu +36 -0
  365. data/vendor/pygments-main/tests/examplefiles/test.d +135 -0
  366. data/vendor/pygments-main/tests/examplefiles/test.dart +23 -0
  367. data/vendor/pygments-main/tests/examplefiles/test.dtd +89 -0
  368. data/vendor/pygments-main/tests/examplefiles/test.ebnf +31 -0
  369. data/vendor/pygments-main/tests/examplefiles/test.ec +605 -0
  370. data/vendor/pygments-main/tests/examplefiles/test.ecl +58 -0
  371. data/vendor/pygments-main/tests/examplefiles/test.eh +315 -0
  372. data/vendor/pygments-main/tests/examplefiles/test.erl +169 -0
  373. data/vendor/pygments-main/tests/examplefiles/test.evoque +33 -0
  374. data/vendor/pygments-main/tests/examplefiles/test.fan +818 -0
  375. data/vendor/pygments-main/tests/examplefiles/test.flx +57 -0
  376. data/vendor/pygments-main/tests/examplefiles/test.gdc +13 -0
  377. data/vendor/pygments-main/tests/examplefiles/test.groovy +97 -0
  378. data/vendor/pygments-main/tests/examplefiles/test.html +339 -0
  379. data/vendor/pygments-main/tests/examplefiles/test.ini +10 -0
  380. data/vendor/pygments-main/tests/examplefiles/test.java +653 -0
  381. data/vendor/pygments-main/tests/examplefiles/test.jsp +24 -0
  382. data/vendor/pygments-main/tests/examplefiles/test.maql +45 -0
  383. data/vendor/pygments-main/tests/examplefiles/test.mod +374 -0
  384. data/vendor/pygments-main/tests/examplefiles/test.moo +51 -0
  385. data/vendor/pygments-main/tests/examplefiles/test.myt +166 -0
  386. data/vendor/pygments-main/tests/examplefiles/test.nim +93 -0
  387. data/vendor/pygments-main/tests/examplefiles/test.opa +10 -0
  388. data/vendor/pygments-main/tests/examplefiles/test.p6 +252 -0
  389. data/vendor/pygments-main/tests/examplefiles/test.pas +743 -0
  390. data/vendor/pygments-main/tests/examplefiles/test.php +505 -0
  391. data/vendor/pygments-main/tests/examplefiles/test.plot +333 -0
  392. data/vendor/pygments-main/tests/examplefiles/test.ps1 +108 -0
  393. data/vendor/pygments-main/tests/examplefiles/test.pypylog +1839 -0
  394. data/vendor/pygments-main/tests/examplefiles/test.r3 +94 -0
  395. data/vendor/pygments-main/tests/examplefiles/test.rb +177 -0
  396. data/vendor/pygments-main/tests/examplefiles/test.rhtml +43 -0
  397. data/vendor/pygments-main/tests/examplefiles/test.scaml +8 -0
  398. data/vendor/pygments-main/tests/examplefiles/test.ssp +12 -0
  399. data/vendor/pygments-main/tests/examplefiles/test.tcsh +830 -0
  400. data/vendor/pygments-main/tests/examplefiles/test.vb +407 -0
  401. data/vendor/pygments-main/tests/examplefiles/test.vhdl +161 -0
  402. data/vendor/pygments-main/tests/examplefiles/test.xqy +138 -0
  403. data/vendor/pygments-main/tests/examplefiles/test.xsl +23 -0
  404. data/vendor/pygments-main/tests/examplefiles/test2.pypylog +120 -0
  405. data/vendor/pygments-main/tests/examplefiles/truncated.pytb +15 -0
  406. data/vendor/pygments-main/tests/examplefiles/type.lisp +1218 -0
  407. data/vendor/pygments-main/tests/examplefiles/underscore.coffee +603 -0
  408. data/vendor/pygments-main/tests/examplefiles/unicode.applescript +5 -0
  409. data/vendor/pygments-main/tests/examplefiles/unicodedoc.py +11 -0
  410. data/vendor/pygments-main/tests/examplefiles/unix-io.lid +37 -0
  411. data/vendor/pygments-main/tests/examplefiles/webkit-transition.css +3 -0
  412. data/vendor/pygments-main/tests/examplefiles/while.pov +13 -0
  413. data/vendor/pygments-main/tests/examplefiles/wiki.factor +384 -0
  414. data/vendor/pygments-main/tests/examplefiles/xml_example +1897 -0
  415. data/vendor/pygments-main/tests/examplefiles/zmlrpc.f90 +798 -0
  416. data/vendor/pygments-main/tests/old_run.py +138 -0
  417. data/vendor/pygments-main/tests/run.py +49 -0
  418. data/vendor/pygments-main/tests/support.py +15 -0
  419. data/vendor/pygments-main/tests/support/tags +36 -0
  420. data/vendor/pygments-main/tests/test_basic_api.py +295 -0
  421. data/vendor/pygments-main/tests/test_clexer.py +31 -0
  422. data/vendor/pygments-main/tests/test_cmdline.py +105 -0
  423. data/vendor/pygments-main/tests/test_examplefiles.py +99 -0
  424. data/vendor/pygments-main/tests/test_html_formatter.py +178 -0
  425. data/vendor/pygments-main/tests/test_latex_formatter.py +55 -0
  426. data/vendor/pygments-main/tests/test_lexers_other.py +68 -0
  427. data/vendor/pygments-main/tests/test_perllexer.py +137 -0
  428. data/vendor/pygments-main/tests/test_regexlexer.py +47 -0
  429. data/vendor/pygments-main/tests/test_token.py +46 -0
  430. data/vendor/pygments-main/tests/test_using_api.py +40 -0
  431. data/vendor/pygments-main/tests/test_util.py +135 -0
  432. data/vendor/simplejson/.gitignore +10 -0
  433. data/vendor/simplejson/.travis.yml +5 -0
  434. data/vendor/simplejson/CHANGES.txt +291 -0
  435. data/vendor/simplejson/LICENSE.txt +19 -0
  436. data/vendor/simplejson/MANIFEST.in +5 -0
  437. data/vendor/simplejson/README.rst +19 -0
  438. data/vendor/simplejson/conf.py +179 -0
  439. data/vendor/simplejson/index.rst +628 -0
  440. data/vendor/simplejson/scripts/make_docs.py +18 -0
  441. data/vendor/simplejson/setup.py +104 -0
  442. data/vendor/simplejson/simplejson/__init__.py +510 -0
  443. data/vendor/simplejson/simplejson/_speedups.c +2745 -0
  444. data/vendor/simplejson/simplejson/decoder.py +425 -0
  445. data/vendor/simplejson/simplejson/encoder.py +567 -0
  446. data/vendor/simplejson/simplejson/ordered_dict.py +119 -0
  447. data/vendor/simplejson/simplejson/scanner.py +77 -0
  448. data/vendor/simplejson/simplejson/tests/__init__.py +67 -0
  449. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +55 -0
  450. data/vendor/simplejson/simplejson/tests/test_check_circular.py +30 -0
  451. data/vendor/simplejson/simplejson/tests/test_decimal.py +66 -0
  452. data/vendor/simplejson/simplejson/tests/test_decode.py +83 -0
  453. data/vendor/simplejson/simplejson/tests/test_default.py +9 -0
  454. data/vendor/simplejson/simplejson/tests/test_dump.py +67 -0
  455. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +46 -0
  456. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +32 -0
  457. data/vendor/simplejson/simplejson/tests/test_errors.py +34 -0
  458. data/vendor/simplejson/simplejson/tests/test_fail.py +91 -0
  459. data/vendor/simplejson/simplejson/tests/test_float.py +19 -0
  460. data/vendor/simplejson/simplejson/tests/test_indent.py +86 -0
  461. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +20 -0
  462. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +121 -0
  463. data/vendor/simplejson/simplejson/tests/test_pass1.py +76 -0
  464. data/vendor/simplejson/simplejson/tests/test_pass2.py +14 -0
  465. data/vendor/simplejson/simplejson/tests/test_pass3.py +20 -0
  466. data/vendor/simplejson/simplejson/tests/test_recursion.py +67 -0
  467. data/vendor/simplejson/simplejson/tests/test_scanstring.py +117 -0
  468. data/vendor/simplejson/simplejson/tests/test_separators.py +42 -0
  469. data/vendor/simplejson/simplejson/tests/test_speedups.py +20 -0
  470. data/vendor/simplejson/simplejson/tests/test_tuple.py +49 -0
  471. data/vendor/simplejson/simplejson/tests/test_unicode.py +109 -0
  472. data/vendor/simplejson/simplejson/tool.py +39 -0
  473. metadata +557 -0
@@ -0,0 +1,3778 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.lexers.other
4
+ ~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ Lexers for other languages.
7
+
8
+ :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS.
9
+ :license: BSD, see LICENSE for details.
10
+ """
11
+
12
+ import re
13
+
14
+ from pygments.lexer import RegexLexer, include, bygroups, using, \
15
+ this, combined, ExtendedRegexLexer
16
+ from pygments.token import Error, Punctuation, Literal, Token, \
17
+ Text, Comment, Operator, Keyword, Name, String, Number, Generic, \
18
+ Whitespace
19
+ from pygments.util import get_bool_opt
20
+ from pygments.lexers.web import HtmlLexer
21
+
22
+ from pygments.lexers._openedgebuiltins import OPENEDGEKEYWORDS
23
+ from pygments.lexers._robotframeworklexer import RobotFrameworkLexer
24
+
25
+ # backwards compatibility
26
+ from pygments.lexers.sql import SqlLexer, MySqlLexer, SqliteConsoleLexer
27
+ from pygments.lexers.shell import BashLexer, BashSessionLexer, BatchLexer, \
28
+ TcshLexer
29
+
30
+ __all__ = ['BrainfuckLexer', 'BefungeLexer', 'RedcodeLexer', 'MOOCodeLexer',
31
+ 'SmalltalkLexer', 'LogtalkLexer', 'GnuplotLexer', 'PovrayLexer',
32
+ 'AppleScriptLexer', 'ModelicaLexer', 'RebolLexer', 'ABAPLexer',
33
+ 'NewspeakLexer', 'GherkinLexer', 'AsymptoteLexer', 'PostScriptLexer',
34
+ 'AutohotkeyLexer', 'GoodDataCLLexer', 'MaqlLexer', 'ProtoBufLexer',
35
+ 'HybrisLexer', 'AwkLexer', 'Cfengine3Lexer', 'SnobolLexer',
36
+ 'ECLLexer', 'UrbiscriptLexer', 'OpenEdgeLexer', 'BroLexer',
37
+ 'MscgenLexer', 'KconfigLexer', 'VGLLexer', 'SourcePawnLexer',
38
+ 'RobotFrameworkLexer', 'PuppetLexer', 'NSISLexer', 'RPMSpecLexer',
39
+ 'CbmBasicV2Lexer', 'AutoItLexer', 'RexxLexer']
40
+
41
+
42
+ class ECLLexer(RegexLexer):
43
+ """
44
+ Lexer for the declarative big-data `ECL
45
+ <http://hpccsystems.com/community/docs/ecl-language-reference/html>`_
46
+ language.
47
+
48
+ *New in Pygments 1.5.*
49
+ """
50
+
51
+ name = 'ECL'
52
+ aliases = ['ecl']
53
+ filenames = ['*.ecl']
54
+ mimetypes = ['application/x-ecl']
55
+
56
+ flags = re.IGNORECASE | re.MULTILINE
57
+
58
+ tokens = {
59
+ 'root': [
60
+ include('whitespace'),
61
+ include('statements'),
62
+ ],
63
+ 'whitespace': [
64
+ (r'\s+', Text),
65
+ (r'\/\/.*', Comment.Single),
66
+ (r'/(\\\n)?\*(.|\n)*?\*(\\\n)?/', Comment.Multiline),
67
+ ],
68
+ 'statements': [
69
+ include('types'),
70
+ include('keywords'),
71
+ include('functions'),
72
+ include('hash'),
73
+ (r'"', String, 'string'),
74
+ (r'\'', String, 'string'),
75
+ (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*', Number.Float),
76
+ (r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),
77
+ (r'0x[0-9a-fA-F]+[LlUu]*', Number.Hex),
78
+ (r'0[0-7]+[LlUu]*', Number.Oct),
79
+ (r'\d+[LlUu]*', Number.Integer),
80
+ (r'\*/', Error),
81
+ (r'[~!%^&*+=|?:<>/-]+', Operator),
82
+ (r'[{}()\[\],.;]', Punctuation),
83
+ (r'[a-zA-Z_][a-zA-Z0-9_]*', Name),
84
+ ],
85
+ 'hash': [
86
+ (r'^#.*$', Comment.Preproc),
87
+ ],
88
+ 'types': [
89
+ (r'(RECORD|END)\D', Keyword.Declaration),
90
+ (r'((?:ASCII|BIG_ENDIAN|BOOLEAN|DATA|DECIMAL|EBCDIC|INTEGER|PATTERN|'
91
+ r'QSTRING|REAL|RECORD|RULE|SET OF|STRING|TOKEN|UDECIMAL|UNICODE|'
92
+ r'UNSIGNED|VARSTRING|VARUNICODE)\d*)(\s+)',
93
+ bygroups(Keyword.Type, Text)),
94
+ ],
95
+ 'keywords': [
96
+ (r'(APPLY|ASSERT|BUILD|BUILDINDEX|EVALUATE|FAIL|KEYDIFF|KEYPATCH|'
97
+ r'LOADXML|NOTHOR|NOTIFY|OUTPUT|PARALLEL|SEQUENTIAL|SOAPCALL|WAIT'
98
+ r'CHECKPOINT|DEPRECATED|FAILCODE|FAILMESSAGE|FAILURE|GLOBAL|'
99
+ r'INDEPENDENT|ONWARNING|PERSIST|PRIORITY|RECOVERY|STORED|SUCCESS|'
100
+ r'WAIT|WHEN)\b', Keyword.Reserved),
101
+ # These are classed differently, check later
102
+ (r'(ALL|AND|ANY|AS|ATMOST|BEFORE|BEGINC\+\+|BEST|BETWEEN|CASE|CONST|'
103
+ r'COUNTER|CSV|DESCEND|ENCRYPT|ENDC\+\+|ENDMACRO|EXCEPT|EXCLUSIVE|'
104
+ r'EXPIRE|EXPORT|EXTEND|FALSE|FEW|FIRST|FLAT|FULL|FUNCTION|GROUP|'
105
+ r'HEADER|HEADING|HOLE|IFBLOCK|IMPORT|IN|JOINED|KEEP|KEYED|LAST|'
106
+ r'LEFT|LIMIT|LOAD|LOCAL|LOCALE|LOOKUP|MACRO|MANY|MAXCOUNT|'
107
+ r'MAXLENGTH|MIN SKEW|MODULE|INTERFACE|NAMED|NOCASE|NOROOT|NOSCAN|'
108
+ r'NOSORT|NOT|OF|ONLY|OPT|OR|OUTER|OVERWRITE|PACKED|PARTITION|'
109
+ r'PENALTY|PHYSICALLENGTH|PIPE|QUOTE|RELATIONSHIP|REPEAT|RETURN|'
110
+ r'RIGHT|SCAN|SELF|SEPARATOR|SERVICE|SHARED|SKEW|SKIP|SQL|STORE|'
111
+ r'TERMINATOR|THOR|THRESHOLD|TOKEN|TRANSFORM|TRIM|TRUE|TYPE|'
112
+ r'UNICODEORDER|UNSORTED|VALIDATE|VIRTUAL|WHOLE|WILD|WITHIN|XML|'
113
+ r'XPATH|__COMPRESSED__)\b', Keyword.Reserved),
114
+ ],
115
+ 'functions': [
116
+ (r'(ABS|ACOS|ALLNODES|ASCII|ASIN|ASSTRING|ATAN|ATAN2|AVE|CASE|'
117
+ r'CHOOSE|CHOOSEN|CHOOSESETS|CLUSTERSIZE|COMBINE|CORRELATION|COS|'
118
+ r'COSH|COUNT|COVARIANCE|CRON|DATASET|DEDUP|DEFINE|DENORMALIZE|'
119
+ r'DISTRIBUTE|DISTRIBUTED|DISTRIBUTION|EBCDIC|ENTH|ERROR|EVALUATE|'
120
+ r'EVENT|EVENTEXTRA|EVENTNAME|EXISTS|EXP|FAILCODE|FAILMESSAGE|'
121
+ r'FETCH|FROMUNICODE|GETISVALID|GLOBAL|GRAPH|GROUP|HASH|HASH32|'
122
+ r'HASH64|HASHCRC|HASHMD5|HAVING|IF|INDEX|INTFORMAT|ISVALID|'
123
+ r'ITERATE|JOIN|KEYUNICODE|LENGTH|LIBRARY|LIMIT|LN|LOCAL|LOG|LOOP|'
124
+ r'MAP|MATCHED|MATCHLENGTH|MATCHPOSITION|MATCHTEXT|MATCHUNICODE|'
125
+ r'MAX|MERGE|MERGEJOIN|MIN|NOLOCAL|NONEMPTY|NORMALIZE|PARSE|PIPE|'
126
+ r'POWER|PRELOAD|PROCESS|PROJECT|PULL|RANDOM|RANGE|RANK|RANKED|'
127
+ r'REALFORMAT|RECORDOF|REGEXFIND|REGEXREPLACE|REGROUP|REJECTED|'
128
+ r'ROLLUP|ROUND|ROUNDUP|ROW|ROWDIFF|SAMPLE|SET|SIN|SINH|SIZEOF|'
129
+ r'SOAPCALL|SORT|SORTED|SQRT|STEPPED|STORED|SUM|TABLE|TAN|TANH|'
130
+ r'THISNODE|TOPN|TOUNICODE|TRANSFER|TRIM|TRUNCATE|TYPEOF|UNGROUP|'
131
+ r'UNICODEORDER|VARIANCE|WHICH|WORKUNIT|XMLDECODE|XMLENCODE|'
132
+ r'XMLTEXT|XMLUNICODE)\b', Name.Function),
133
+ ],
134
+ 'string': [
135
+ (r'"', String, '#pop'),
136
+ (r'\'', String, '#pop'),
137
+ (r'[^"\']+', String),
138
+ ],
139
+ }
140
+
141
+
142
+ class BrainfuckLexer(RegexLexer):
143
+ """
144
+ Lexer for the esoteric `BrainFuck <http://www.muppetlabs.com/~breadbox/bf/>`_
145
+ language.
146
+ """
147
+
148
+ name = 'Brainfuck'
149
+ aliases = ['brainfuck', 'bf']
150
+ filenames = ['*.bf', '*.b']
151
+ mimetypes = ['application/x-brainfuck']
152
+
153
+ tokens = {
154
+ 'common': [
155
+ # use different colors for different instruction types
156
+ (r'[.,]+', Name.Tag),
157
+ (r'[+-]+', Name.Builtin),
158
+ (r'[<>]+', Name.Variable),
159
+ (r'[^.,+\-<>\[\]]+', Comment),
160
+ ],
161
+ 'root': [
162
+ (r'\[', Keyword, 'loop'),
163
+ (r'\]', Error),
164
+ include('common'),
165
+ ],
166
+ 'loop': [
167
+ (r'\[', Keyword, '#push'),
168
+ (r'\]', Keyword, '#pop'),
169
+ include('common'),
170
+ ]
171
+ }
172
+
173
+
174
+ class BefungeLexer(RegexLexer):
175
+ """
176
+ Lexer for the esoteric `Befunge <http://en.wikipedia.org/wiki/Befunge>`_
177
+ language.
178
+
179
+ *New in Pygments 0.7.*
180
+ """
181
+ name = 'Befunge'
182
+ aliases = ['befunge']
183
+ filenames = ['*.befunge']
184
+ mimetypes = ['application/x-befunge']
185
+
186
+ tokens = {
187
+ 'root': [
188
+ (r'[0-9a-f]', Number),
189
+ (r'[\+\*/%!`-]', Operator), # Traditional math
190
+ (r'[<>^v?\[\]rxjk]', Name.Variable), # Move, imperatives
191
+ (r'[:\\$.,n]', Name.Builtin), # Stack ops, imperatives
192
+ (r'[|_mw]', Keyword),
193
+ (r'[{}]', Name.Tag), # Befunge-98 stack ops
194
+ (r'".*?"', String.Double), # Strings don't appear to allow escapes
195
+ (r'\'.', String.Single), # Single character
196
+ (r'[#;]', Comment), # Trampoline... depends on direction hit
197
+ (r'[pg&~=@iotsy]', Keyword), # Misc
198
+ (r'[()A-Z]', Comment), # Fingerprints
199
+ (r'\s+', Text), # Whitespace doesn't matter
200
+ ],
201
+ }
202
+
203
+
204
+ class RedcodeLexer(RegexLexer):
205
+ """
206
+ A simple Redcode lexer based on ICWS'94.
207
+ Contributed by Adam Blinkinsop <blinks@acm.org>.
208
+
209
+ *New in Pygments 0.8.*
210
+ """
211
+ name = 'Redcode'
212
+ aliases = ['redcode']
213
+ filenames = ['*.cw']
214
+
215
+ opcodes = ['DAT','MOV','ADD','SUB','MUL','DIV','MOD',
216
+ 'JMP','JMZ','JMN','DJN','CMP','SLT','SPL',
217
+ 'ORG','EQU','END']
218
+ modifiers = ['A','B','AB','BA','F','X','I']
219
+
220
+ tokens = {
221
+ 'root': [
222
+ # Whitespace:
223
+ (r'\s+', Text),
224
+ (r';.*$', Comment.Single),
225
+ # Lexemes:
226
+ # Identifiers
227
+ (r'\b(%s)\b' % '|'.join(opcodes), Name.Function),
228
+ (r'\b(%s)\b' % '|'.join(modifiers), Name.Decorator),
229
+ (r'[A-Za-z_][A-Za-z_0-9]+', Name),
230
+ # Operators
231
+ (r'[-+*/%]', Operator),
232
+ (r'[#$@<>]', Operator), # mode
233
+ (r'[.,]', Punctuation), # mode
234
+ # Numbers
235
+ (r'[-+]?\d+', Number.Integer),
236
+ ],
237
+ }
238
+
239
+
240
+ class MOOCodeLexer(RegexLexer):
241
+ """
242
+ For `MOOCode <http://www.moo.mud.org/>`_ (the MOO scripting
243
+ language).
244
+
245
+ *New in Pygments 0.9.*
246
+ """
247
+ name = 'MOOCode'
248
+ filenames = ['*.moo']
249
+ aliases = ['moocode', 'moo']
250
+ mimetypes = ['text/x-moocode']
251
+
252
+ tokens = {
253
+ 'root' : [
254
+ # Numbers
255
+ (r'(0|[1-9][0-9_]*)', Number.Integer),
256
+ # Strings
257
+ (r'"(\\\\|\\"|[^"])*"', String),
258
+ # exceptions
259
+ (r'(E_PERM|E_DIV)', Name.Exception),
260
+ # db-refs
261
+ (r'((#[-0-9]+)|(\$[a-z_A-Z0-9]+))', Name.Entity),
262
+ # Keywords
263
+ (r'\b(if|else|elseif|endif|for|endfor|fork|endfork|while'
264
+ r'|endwhile|break|continue|return|try'
265
+ r'|except|endtry|finally|in)\b', Keyword),
266
+ # builtins
267
+ (r'(random|length)', Name.Builtin),
268
+ # special variables
269
+ (r'(player|caller|this|args)', Name.Variable.Instance),
270
+ # skip whitespace
271
+ (r'\s+', Text),
272
+ (r'\n', Text),
273
+ # other operators
274
+ (r'([!;=,{}&\|:\.\[\]@\(\)\<\>\?]+)', Operator),
275
+ # function call
276
+ (r'([a-z_A-Z0-9]+)(\()', bygroups(Name.Function, Operator)),
277
+ # variables
278
+ (r'([a-zA-Z_0-9]+)', Text),
279
+ ]
280
+ }
281
+
282
+
283
+ class SmalltalkLexer(RegexLexer):
284
+ """
285
+ For `Smalltalk <http://www.smalltalk.org/>`_ syntax.
286
+ Contributed by Stefan Matthias Aust.
287
+ Rewritten by Nils Winter.
288
+
289
+ *New in Pygments 0.10.*
290
+ """
291
+ name = 'Smalltalk'
292
+ filenames = ['*.st']
293
+ aliases = ['smalltalk', 'squeak', 'st']
294
+ mimetypes = ['text/x-smalltalk']
295
+
296
+ tokens = {
297
+ 'root' : [
298
+ (r'(<)(\w+:)(.*?)(>)', bygroups(Text, Keyword, Text, Text)),
299
+ include('squeak fileout'),
300
+ include('whitespaces'),
301
+ include('method definition'),
302
+ (r'(\|)([\w\s]*)(\|)', bygroups(Operator, Name.Variable, Operator)),
303
+ include('objects'),
304
+ (r'\^|\:=|\_', Operator),
305
+ # temporaries
306
+ (r'[\]({}.;!]', Text),
307
+ ],
308
+ 'method definition' : [
309
+ # Not perfect can't allow whitespaces at the beginning and the
310
+ # without breaking everything
311
+ (r'([a-zA-Z]+\w*:)(\s*)(\w+)',
312
+ bygroups(Name.Function, Text, Name.Variable)),
313
+ (r'^(\b[a-zA-Z]+\w*\b)(\s*)$', bygroups(Name.Function, Text)),
314
+ (r'^([-+*/\\~<>=|&!?,@%]+)(\s*)(\w+)(\s*)$',
315
+ bygroups(Name.Function, Text, Name.Variable, Text)),
316
+ ],
317
+ 'blockvariables' : [
318
+ include('whitespaces'),
319
+ (r'(:)(\s*)(\w+)',
320
+ bygroups(Operator, Text, Name.Variable)),
321
+ (r'\|', Operator, '#pop'),
322
+ (r'', Text, '#pop'), # else pop
323
+ ],
324
+ 'literals' : [
325
+ (r"'(''|[^'])*'", String, 'afterobject'),
326
+ (r'\$.', String.Char, 'afterobject'),
327
+ (r'#\(', String.Symbol, 'parenth'),
328
+ (r'\)', Text, 'afterobject'),
329
+ (r'(\d+r)?-?\d+(\.\d+)?(e-?\d+)?', Number, 'afterobject'),
330
+ ],
331
+ '_parenth_helper' : [
332
+ include('whitespaces'),
333
+ (r'(\d+r)?-?\d+(\.\d+)?(e-?\d+)?', Number),
334
+ (r'[-+*/\\~<>=|&#!?,@%\w:]+', String.Symbol),
335
+ # literals
336
+ (r"'(''|[^'])*'", String),
337
+ (r'\$.', String.Char),
338
+ (r'#*\(', String.Symbol, 'inner_parenth'),
339
+ ],
340
+ 'parenth' : [
341
+ # This state is a bit tricky since
342
+ # we can't just pop this state
343
+ (r'\)', String.Symbol, ('root', 'afterobject')),
344
+ include('_parenth_helper'),
345
+ ],
346
+ 'inner_parenth': [
347
+ (r'\)', String.Symbol, '#pop'),
348
+ include('_parenth_helper'),
349
+ ],
350
+ 'whitespaces' : [
351
+ # skip whitespace and comments
352
+ (r'\s+', Text),
353
+ (r'"(""|[^"])*"', Comment),
354
+ ],
355
+ 'objects' : [
356
+ (r'\[', Text, 'blockvariables'),
357
+ (r'\]', Text, 'afterobject'),
358
+ (r'\b(self|super|true|false|nil|thisContext)\b',
359
+ Name.Builtin.Pseudo, 'afterobject'),
360
+ (r'\b[A-Z]\w*(?!:)\b', Name.Class, 'afterobject'),
361
+ (r'\b[a-z]\w*(?!:)\b', Name.Variable, 'afterobject'),
362
+ (r'#("(""|[^"])*"|[-+*/\\~<>=|&!?,@%]+|[\w:]+)',
363
+ String.Symbol, 'afterobject'),
364
+ include('literals'),
365
+ ],
366
+ 'afterobject' : [
367
+ (r'! !$', Keyword , '#pop'), # squeak chunk delimiter
368
+ include('whitespaces'),
369
+ (r'\b(ifTrue:|ifFalse:|whileTrue:|whileFalse:|timesRepeat:)',
370
+ Name.Builtin, '#pop'),
371
+ (r'\b(new\b(?!:))', Name.Builtin),
372
+ (r'\:=|\_', Operator, '#pop'),
373
+ (r'\b[a-zA-Z]+\w*:', Name.Function, '#pop'),
374
+ (r'\b[a-zA-Z]+\w*', Name.Function),
375
+ (r'\w+:?|[-+*/\\~<>=|&!?,@%]+', Name.Function, '#pop'),
376
+ (r'\.', Punctuation, '#pop'),
377
+ (r';', Punctuation),
378
+ (r'[\])}]', Text),
379
+ (r'[\[({]', Text, '#pop'),
380
+ ],
381
+ 'squeak fileout' : [
382
+ # Squeak fileout format (optional)
383
+ (r'^"(""|[^"])*"!', Keyword),
384
+ (r"^'(''|[^'])*'!", Keyword),
385
+ (r'^(!)(\w+)( commentStamp: )(.*?)( prior: .*?!\n)(.*?)(!)',
386
+ bygroups(Keyword, Name.Class, Keyword, String, Keyword, Text, Keyword)),
387
+ (r"^(!)(\w+(?: class)?)( methodsFor: )('(?:''|[^'])*')(.*?!)",
388
+ bygroups(Keyword, Name.Class, Keyword, String, Keyword)),
389
+ (r'^(\w+)( subclass: )(#\w+)'
390
+ r'(\s+instanceVariableNames: )(.*?)'
391
+ r'(\s+classVariableNames: )(.*?)'
392
+ r'(\s+poolDictionaries: )(.*?)'
393
+ r'(\s+category: )(.*?)(!)',
394
+ bygroups(Name.Class, Keyword, String.Symbol, Keyword, String, Keyword,
395
+ String, Keyword, String, Keyword, String, Keyword)),
396
+ (r'^(\w+(?: class)?)(\s+instanceVariableNames: )(.*?)(!)',
397
+ bygroups(Name.Class, Keyword, String, Keyword)),
398
+ (r'(!\n)(\].*)(! !)$', bygroups(Keyword, Text, Keyword)),
399
+ (r'! !$', Keyword),
400
+ ],
401
+ }
402
+
403
+
404
+ class LogtalkLexer(RegexLexer):
405
+ """
406
+ For `Logtalk <http://logtalk.org/>`_ source code.
407
+
408
+ *New in Pygments 0.10.*
409
+ """
410
+
411
+ name = 'Logtalk'
412
+ aliases = ['logtalk']
413
+ filenames = ['*.lgt']
414
+ mimetypes = ['text/x-logtalk']
415
+
416
+ tokens = {
417
+ 'root': [
418
+ # Directives
419
+ (r'^\s*:-\s',Punctuation,'directive'),
420
+ # Comments
421
+ (r'%.*?\n', Comment),
422
+ (r'/\*(.|\n)*?\*/',Comment),
423
+ # Whitespace
424
+ (r'\n', Text),
425
+ (r'\s+', Text),
426
+ # Numbers
427
+ (r"0'.", Number),
428
+ (r'0b[01]+', Number),
429
+ (r'0o[0-7]+', Number),
430
+ (r'0x[0-9a-fA-F]+', Number),
431
+ (r'\d+\.?\d*((e|E)(\+|-)?\d+)?', Number),
432
+ # Variables
433
+ (r'([A-Z_][a-zA-Z0-9_]*)', Name.Variable),
434
+ # Event handlers
435
+ (r'(after|before)(?=[(])', Keyword),
436
+ # Execution-context methods
437
+ (r'(parameter|this|se(lf|nder))(?=[(])', Keyword),
438
+ # Reflection
439
+ (r'(current_predicate|predicate_property)(?=[(])', Keyword),
440
+ # DCGs and term expansion
441
+ (r'(expand_(goal|term)|(goal|term)_expansion|phrase)(?=[(])',
442
+ Keyword),
443
+ # Entity
444
+ (r'(abolish|c(reate|urrent))_(object|protocol|category)(?=[(])',
445
+ Keyword),
446
+ (r'(object|protocol|category)_property(?=[(])', Keyword),
447
+ # Entity relations
448
+ (r'co(mplements_object|nforms_to_protocol)(?=[(])', Keyword),
449
+ (r'extends_(object|protocol|category)(?=[(])', Keyword),
450
+ (r'imp(lements_protocol|orts_category)(?=[(])', Keyword),
451
+ (r'(instantiat|specializ)es_class(?=[(])', Keyword),
452
+ # Events
453
+ (r'(current_event|(abolish|define)_events)(?=[(])', Keyword),
454
+ # Flags
455
+ (r'(current|set)_logtalk_flag(?=[(])', Keyword),
456
+ # Compiling, loading, and library paths
457
+ (r'logtalk_(compile|l(ibrary_path|oad_context|oad))(?=[(])',
458
+ Keyword),
459
+ # Database
460
+ (r'(clause|retract(all)?)(?=[(])', Keyword),
461
+ (r'a(bolish|ssert(a|z))(?=[(])', Keyword),
462
+ # Control constructs
463
+ (r'(ca(ll|tch)|throw)(?=[(])', Keyword),
464
+ (r'(fail|true)\b', Keyword),
465
+ # All solutions
466
+ (r'((bag|set)of|f(ind|or)all)(?=[(])', Keyword),
467
+ # Multi-threading meta-predicates
468
+ (r'threaded(_(call|once|ignore|exit|peek|wait|notify))?(?=[(])',
469
+ Keyword),
470
+ # Term unification
471
+ (r'unify_with_occurs_check(?=[(])', Keyword),
472
+ # Term creation and decomposition
473
+ (r'(functor|arg|copy_term|numbervars)(?=[(])', Keyword),
474
+ # Evaluable functors
475
+ (r'(rem|mod|abs|sign)(?=[(])', Keyword),
476
+ (r'float(_(integer|fractional)_part)?(?=[(])', Keyword),
477
+ (r'(floor|truncate|round|ceiling)(?=[(])', Keyword),
478
+ # Other arithmetic functors
479
+ (r'(cos|atan|exp|log|s(in|qrt))(?=[(])', Keyword),
480
+ # Term testing
481
+ (r'(var|atom(ic)?|integer|float|c(allable|ompound)|n(onvar|umber)|'
482
+ r'ground)(?=[(])', Keyword),
483
+ # Term comparison
484
+ (r'compare(?=[(])', Keyword),
485
+ # Stream selection and control
486
+ (r'(curren|se)t_(in|out)put(?=[(])', Keyword),
487
+ (r'(open|close)(?=[(])', Keyword),
488
+ (r'flush_output(?=[(])', Keyword),
489
+ (r'(at_end_of_stream|flush_output)\b', Keyword),
490
+ (r'(stream_property|at_end_of_stream|set_stream_position)(?=[(])',
491
+ Keyword),
492
+ # Character and byte input/output
493
+ (r'(nl|(get|peek|put)_(byte|c(har|ode)))(?=[(])', Keyword),
494
+ (r'\bnl\b', Keyword),
495
+ # Term input/output
496
+ (r'read(_term)?(?=[(])', Keyword),
497
+ (r'write(q|_(canonical|term))?(?=[(])', Keyword),
498
+ (r'(current_)?op(?=[(])', Keyword),
499
+ (r'(current_)?char_conversion(?=[(])', Keyword),
500
+ # Atomic term processing
501
+ (r'atom_(length|c(hars|o(ncat|des)))(?=[(])', Keyword),
502
+ (r'(char_code|sub_atom)(?=[(])', Keyword),
503
+ (r'number_c(har|ode)s(?=[(])', Keyword),
504
+ # Implementation defined hooks functions
505
+ (r'(se|curren)t_prolog_flag(?=[(])', Keyword),
506
+ (r'\bhalt\b', Keyword),
507
+ (r'halt(?=[(])', Keyword),
508
+ # Message sending operators
509
+ (r'(::|:|\^\^)', Operator),
510
+ # External call
511
+ (r'[{}]', Keyword),
512
+ # Logic and control
513
+ (r'\b(ignore|once)(?=[(])', Keyword),
514
+ (r'\brepeat\b', Keyword),
515
+ # Sorting
516
+ (r'(key)?sort(?=[(])', Keyword),
517
+ # Bitwise functors
518
+ (r'(>>|<<|/\\|\\\\|\\)', Operator),
519
+ # Arithemtic evaluation
520
+ (r'\bis\b', Keyword),
521
+ # Arithemtic comparison
522
+ (r'(=:=|=\\=|<|=<|>=|>)', Operator),
523
+ # Term creation and decomposition
524
+ (r'=\.\.', Operator),
525
+ # Term unification
526
+ (r'(=|\\=)', Operator),
527
+ # Term comparison
528
+ (r'(==|\\==|@=<|@<|@>=|@>)', Operator),
529
+ # Evaluable functors
530
+ (r'(//|[-+*/])', Operator),
531
+ (r'\b(e|pi|mod|rem)\b', Operator),
532
+ # Other arithemtic functors
533
+ (r'\b\*\*\b', Operator),
534
+ # DCG rules
535
+ (r'-->', Operator),
536
+ # Control constructs
537
+ (r'([!;]|->)', Operator),
538
+ # Logic and control
539
+ (r'\\+', Operator),
540
+ # Mode operators
541
+ (r'[?@]', Operator),
542
+ # Existential quantifier
543
+ (r'\^', Operator),
544
+ # Strings
545
+ (r'"(\\\\|\\"|[^"])*"', String),
546
+ # Ponctuation
547
+ (r'[()\[\],.|]', Text),
548
+ # Atoms
549
+ (r"[a-z][a-zA-Z0-9_]*", Text),
550
+ (r"'", String, 'quoted_atom'),
551
+ ],
552
+
553
+ 'quoted_atom': [
554
+ (r"''", String),
555
+ (r"'", String, '#pop'),
556
+ (r'\\([\\abfnrtv"\']|(x[a-fA-F0-9]+|[0-7]+)\\)', String.Escape),
557
+ (r"[^\\'\n]+", String),
558
+ (r'\\', String),
559
+ ],
560
+
561
+ 'directive': [
562
+ # Conditional compilation directives
563
+ (r'(el)?if(?=[(])', Keyword, 'root'),
564
+ (r'(e(lse|ndif))[.]', Keyword, 'root'),
565
+ # Entity directives
566
+ (r'(category|object|protocol)(?=[(])', Keyword, 'entityrelations'),
567
+ (r'(end_(category|object|protocol))[.]',Keyword, 'root'),
568
+ # Predicate scope directives
569
+ (r'(public|protected|private)(?=[(])', Keyword, 'root'),
570
+ # Other directives
571
+ (r'e(n(coding|sure_loaded)|xport)(?=[(])', Keyword, 'root'),
572
+ (r'in(fo|itialization)(?=[(])', Keyword, 'root'),
573
+ (r'(dynamic|synchronized|threaded)[.]', Keyword, 'root'),
574
+ (r'(alias|d(ynamic|iscontiguous)|m(eta_predicate|ode|ultifile)|'
575
+ r's(et_(logtalk|prolog)_flag|ynchronized))(?=[(])',
576
+ Keyword, 'root'),
577
+ (r'op(?=[(])', Keyword, 'root'),
578
+ (r'(c(alls|oinductive)|reexport|use(s|_module))(?=[(])',
579
+ Keyword, 'root'),
580
+ (r'[a-z][a-zA-Z0-9_]*(?=[(])', Text, 'root'),
581
+ (r'[a-z][a-zA-Z0-9_]*[.]', Text, 'root'),
582
+ ],
583
+
584
+ 'entityrelations': [
585
+ (r'(complements|extends|i(nstantiates|mp(lements|orts))|specializes)'
586
+ r'(?=[(])', Keyword),
587
+ # Numbers
588
+ (r"0'.", Number),
589
+ (r'0b[01]+', Number),
590
+ (r'0o[0-7]+', Number),
591
+ (r'0x[0-9a-fA-F]+', Number),
592
+ (r'\d+\.?\d*((e|E)(\+|-)?\d+)?', Number),
593
+ # Variables
594
+ (r'([A-Z_][a-zA-Z0-9_]*)', Name.Variable),
595
+ # Atoms
596
+ (r"[a-z][a-zA-Z0-9_]*", Text),
597
+ (r"'", String, 'quoted_atom'),
598
+ # Strings
599
+ (r'"(\\\\|\\"|[^"])*"', String),
600
+ # End of entity-opening directive
601
+ (r'([)]\.)', Text, 'root'),
602
+ # Scope operator
603
+ (r'(::)', Operator),
604
+ # Ponctuation
605
+ (r'[()\[\],.|]', Text),
606
+ # Comments
607
+ (r'%.*?\n', Comment),
608
+ (r'/\*(.|\n)*?\*/',Comment),
609
+ # Whitespace
610
+ (r'\n', Text),
611
+ (r'\s+', Text),
612
+ ]
613
+ }
614
+
615
+ def analyse_text(text):
616
+ if ':- object(' in text:
617
+ return True
618
+ if ':- protocol(' in text:
619
+ return True
620
+ if ':- category(' in text:
621
+ return True
622
+ return False
623
+
624
+
625
+ def _shortened(word):
626
+ dpos = word.find('$')
627
+ return '|'.join([word[:dpos] + word[dpos+1:i] + r'\b'
628
+ for i in range(len(word), dpos, -1)])
629
+ def _shortened_many(*words):
630
+ return '|'.join(map(_shortened, words))
631
+
632
+ class GnuplotLexer(RegexLexer):
633
+ """
634
+ For `Gnuplot <http://gnuplot.info/>`_ plotting scripts.
635
+
636
+ *New in Pygments 0.11.*
637
+ """
638
+
639
+ name = 'Gnuplot'
640
+ aliases = ['gnuplot']
641
+ filenames = ['*.plot', '*.plt']
642
+ mimetypes = ['text/x-gnuplot']
643
+
644
+ tokens = {
645
+ 'root': [
646
+ include('whitespace'),
647
+ (_shortened('bi$nd'), Keyword, 'bind'),
648
+ (_shortened_many('ex$it', 'q$uit'), Keyword, 'quit'),
649
+ (_shortened('f$it'), Keyword, 'fit'),
650
+ (r'(if)(\s*)(\()', bygroups(Keyword, Text, Punctuation), 'if'),
651
+ (r'else\b', Keyword),
652
+ (_shortened('pa$use'), Keyword, 'pause'),
653
+ (_shortened_many('p$lot', 'rep$lot', 'sp$lot'), Keyword, 'plot'),
654
+ (_shortened('sa$ve'), Keyword, 'save'),
655
+ (_shortened('se$t'), Keyword, ('genericargs', 'optionarg')),
656
+ (_shortened_many('sh$ow', 'uns$et'),
657
+ Keyword, ('noargs', 'optionarg')),
658
+ (_shortened_many('low$er', 'ra$ise', 'ca$ll', 'cd$', 'cl$ear',
659
+ 'h$elp', '\\?$', 'hi$story', 'l$oad', 'pr$int',
660
+ 'pwd$', 're$read', 'res$et', 'scr$eendump',
661
+ 'she$ll', 'sy$stem', 'up$date'),
662
+ Keyword, 'genericargs'),
663
+ (_shortened_many('pwd$', 're$read', 'res$et', 'scr$eendump',
664
+ 'she$ll', 'test$'),
665
+ Keyword, 'noargs'),
666
+ ('([a-zA-Z_][a-zA-Z0-9_]*)(\s*)(=)',
667
+ bygroups(Name.Variable, Text, Operator), 'genericargs'),
668
+ ('([a-zA-Z_][a-zA-Z0-9_]*)(\s*\(.*?\)\s*)(=)',
669
+ bygroups(Name.Function, Text, Operator), 'genericargs'),
670
+ (r'@[a-zA-Z_][a-zA-Z0-9_]*', Name.Constant), # macros
671
+ (r';', Keyword),
672
+ ],
673
+ 'comment': [
674
+ (r'[^\\\n]', Comment),
675
+ (r'\\\n', Comment),
676
+ (r'\\', Comment),
677
+ # don't add the newline to the Comment token
678
+ ('', Comment, '#pop'),
679
+ ],
680
+ 'whitespace': [
681
+ ('#', Comment, 'comment'),
682
+ (r'[ \t\v\f]+', Text),
683
+ ],
684
+ 'noargs': [
685
+ include('whitespace'),
686
+ # semicolon and newline end the argument list
687
+ (r';', Punctuation, '#pop'),
688
+ (r'\n', Text, '#pop'),
689
+ ],
690
+ 'dqstring': [
691
+ (r'"', String, '#pop'),
692
+ (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape),
693
+ (r'[^\\"\n]+', String), # all other characters
694
+ (r'\\\n', String), # line continuation
695
+ (r'\\', String), # stray backslash
696
+ (r'\n', String, '#pop'), # newline ends the string too
697
+ ],
698
+ 'sqstring': [
699
+ (r"''", String), # escaped single quote
700
+ (r"'", String, '#pop'),
701
+ (r"[^\\'\n]+", String), # all other characters
702
+ (r'\\\n', String), # line continuation
703
+ (r'\\', String), # normal backslash
704
+ (r'\n', String, '#pop'), # newline ends the string too
705
+ ],
706
+ 'genericargs': [
707
+ include('noargs'),
708
+ (r'"', String, 'dqstring'),
709
+ (r"'", String, 'sqstring'),
710
+ (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+', Number.Float),
711
+ (r'(\d+\.\d*|\.\d+)', Number.Float),
712
+ (r'-?\d+', Number.Integer),
713
+ ('[,.~!%^&*+=|?:<>/-]', Operator),
714
+ ('[{}()\[\]]', Punctuation),
715
+ (r'(eq|ne)\b', Operator.Word),
716
+ (r'([a-zA-Z_][a-zA-Z0-9_]*)(\s*)(\()',
717
+ bygroups(Name.Function, Text, Punctuation)),
718
+ (r'[a-zA-Z_][a-zA-Z0-9_]*', Name),
719
+ (r'@[a-zA-Z_][a-zA-Z0-9_]*', Name.Constant), # macros
720
+ (r'\\\n', Text),
721
+ ],
722
+ 'optionarg': [
723
+ include('whitespace'),
724
+ (_shortened_many(
725
+ "a$ll","an$gles","ar$row","au$toscale","b$ars","bor$der",
726
+ "box$width","cl$abel","c$lip","cn$trparam","co$ntour","da$ta",
727
+ "data$file","dg$rid3d","du$mmy","enc$oding","dec$imalsign",
728
+ "fit$","font$path","fo$rmat","fu$nction","fu$nctions","g$rid",
729
+ "hid$den3d","his$torysize","is$osamples","k$ey","keyt$itle",
730
+ "la$bel","li$nestyle","ls$","loa$dpath","loc$ale","log$scale",
731
+ "mac$ros","map$ping","map$ping3d","mar$gin","lmar$gin",
732
+ "rmar$gin","tmar$gin","bmar$gin","mo$use","multi$plot",
733
+ "mxt$ics","nomxt$ics","mx2t$ics","nomx2t$ics","myt$ics",
734
+ "nomyt$ics","my2t$ics","nomy2t$ics","mzt$ics","nomzt$ics",
735
+ "mcbt$ics","nomcbt$ics","of$fsets","or$igin","o$utput",
736
+ "pa$rametric","pm$3d","pal$ette","colorb$ox","p$lot",
737
+ "poi$ntsize","pol$ar","pr$int","obj$ect","sa$mples","si$ze",
738
+ "st$yle","su$rface","table$","t$erminal","termo$ptions","ti$cs",
739
+ "ticsc$ale","ticsl$evel","timef$mt","tim$estamp","tit$le",
740
+ "v$ariables","ve$rsion","vi$ew","xyp$lane","xda$ta","x2da$ta",
741
+ "yda$ta","y2da$ta","zda$ta","cbda$ta","xl$abel","x2l$abel",
742
+ "yl$abel","y2l$abel","zl$abel","cbl$abel","xti$cs","noxti$cs",
743
+ "x2ti$cs","nox2ti$cs","yti$cs","noyti$cs","y2ti$cs","noy2ti$cs",
744
+ "zti$cs","nozti$cs","cbti$cs","nocbti$cs","xdti$cs","noxdti$cs",
745
+ "x2dti$cs","nox2dti$cs","ydti$cs","noydti$cs","y2dti$cs",
746
+ "noy2dti$cs","zdti$cs","nozdti$cs","cbdti$cs","nocbdti$cs",
747
+ "xmti$cs","noxmti$cs","x2mti$cs","nox2mti$cs","ymti$cs",
748
+ "noymti$cs","y2mti$cs","noy2mti$cs","zmti$cs","nozmti$cs",
749
+ "cbmti$cs","nocbmti$cs","xr$ange","x2r$ange","yr$ange",
750
+ "y2r$ange","zr$ange","cbr$ange","rr$ange","tr$ange","ur$ange",
751
+ "vr$ange","xzeroa$xis","x2zeroa$xis","yzeroa$xis","y2zeroa$xis",
752
+ "zzeroa$xis","zeroa$xis","z$ero"), Name.Builtin, '#pop'),
753
+ ],
754
+ 'bind': [
755
+ ('!', Keyword, '#pop'),
756
+ (_shortened('all$windows'), Name.Builtin),
757
+ include('genericargs'),
758
+ ],
759
+ 'quit': [
760
+ (r'gnuplot\b', Keyword),
761
+ include('noargs'),
762
+ ],
763
+ 'fit': [
764
+ (r'via\b', Name.Builtin),
765
+ include('plot'),
766
+ ],
767
+ 'if': [
768
+ (r'\)', Punctuation, '#pop'),
769
+ include('genericargs'),
770
+ ],
771
+ 'pause': [
772
+ (r'(mouse|any|button1|button2|button3)\b', Name.Builtin),
773
+ (_shortened('key$press'), Name.Builtin),
774
+ include('genericargs'),
775
+ ],
776
+ 'plot': [
777
+ (_shortened_many('ax$es', 'axi$s', 'bin$ary', 'ev$ery', 'i$ndex',
778
+ 'mat$rix', 's$mooth', 'thru$', 't$itle',
779
+ 'not$itle', 'u$sing', 'w$ith'),
780
+ Name.Builtin),
781
+ include('genericargs'),
782
+ ],
783
+ 'save': [
784
+ (_shortened_many('f$unctions', 's$et', 't$erminal', 'v$ariables'),
785
+ Name.Builtin),
786
+ include('genericargs'),
787
+ ],
788
+ }
789
+
790
+
791
+ class PovrayLexer(RegexLexer):
792
+ """
793
+ For `Persistence of Vision Raytracer <http://www.povray.org/>`_ files.
794
+
795
+ *New in Pygments 0.11.*
796
+ """
797
+ name = 'POVRay'
798
+ aliases = ['pov']
799
+ filenames = ['*.pov', '*.inc']
800
+ mimetypes = ['text/x-povray']
801
+
802
+ tokens = {
803
+ 'root': [
804
+ (r'/\*[\w\W]*?\*/', Comment.Multiline),
805
+ (r'//.*\n', Comment.Single),
806
+ (r'(?s)"(?:\\.|[^"\\])+"', String.Double),
807
+ (r'#(debug|default|else|end|error|fclose|fopen|ifdef|ifndef|'
808
+ r'include|range|read|render|statistics|switch|undef|version|'
809
+ r'warning|while|write|define|macro|local|declare)\b',
810
+ Comment.Preproc),
811
+ (r'\b(aa_level|aa_threshold|abs|acos|acosh|adaptive|adc_bailout|'
812
+ r'agate|agate_turb|all|alpha|ambient|ambient_light|angle|'
813
+ r'aperture|arc_angle|area_light|asc|asin|asinh|assumed_gamma|'
814
+ r'atan|atan2|atanh|atmosphere|atmospheric_attenuation|'
815
+ r'attenuating|average|background|black_hole|blue|blur_samples|'
816
+ r'bounded_by|box_mapping|bozo|break|brick|brick_size|'
817
+ r'brightness|brilliance|bumps|bumpy1|bumpy2|bumpy3|bump_map|'
818
+ r'bump_size|case|caustics|ceil|checker|chr|clipped_by|clock|'
819
+ r'color|color_map|colour|colour_map|component|composite|concat|'
820
+ r'confidence|conic_sweep|constant|control0|control1|cos|cosh|'
821
+ r'count|crackle|crand|cube|cubic_spline|cylindrical_mapping|'
822
+ r'debug|declare|default|degrees|dents|diffuse|direction|'
823
+ r'distance|distance_maximum|div|dust|dust_type|eccentricity|'
824
+ r'else|emitting|end|error|error_bound|exp|exponent|'
825
+ r'fade_distance|fade_power|falloff|falloff_angle|false|'
826
+ r'file_exists|filter|finish|fisheye|flatness|flip|floor|'
827
+ r'focal_point|fog|fog_alt|fog_offset|fog_type|frequency|gif|'
828
+ r'global_settings|glowing|gradient|granite|gray_threshold|'
829
+ r'green|halo|hexagon|hf_gray_16|hierarchy|hollow|hypercomplex|'
830
+ r'if|ifdef|iff|image_map|incidence|include|int|interpolate|'
831
+ r'inverse|ior|irid|irid_wavelength|jitter|lambda|leopard|'
832
+ r'linear|linear_spline|linear_sweep|location|log|looks_like|'
833
+ r'look_at|low_error_factor|mandel|map_type|marble|material_map|'
834
+ r'matrix|max|max_intersections|max_iteration|max_trace_level|'
835
+ r'max_value|metallic|min|minimum_reuse|mod|mortar|'
836
+ r'nearest_count|no|normal|normal_map|no_shadow|number_of_waves|'
837
+ r'octaves|off|offset|omega|omnimax|on|once|onion|open|'
838
+ r'orthographic|panoramic|pattern1|pattern2|pattern3|'
839
+ r'perspective|pgm|phase|phong|phong_size|pi|pigment|'
840
+ r'pigment_map|planar_mapping|png|point_at|pot|pow|ppm|'
841
+ r'precision|pwr|quadratic_spline|quaternion|quick_color|'
842
+ r'quick_colour|quilted|radial|radians|radiosity|radius|rainbow|'
843
+ r'ramp_wave|rand|range|reciprocal|recursion_limit|red|'
844
+ r'reflection|refraction|render|repeat|rgb|rgbf|rgbft|rgbt|'
845
+ r'right|ripples|rotate|roughness|samples|scale|scallop_wave|'
846
+ r'scattering|seed|shadowless|sin|sine_wave|sinh|sky|sky_sphere|'
847
+ r'slice|slope_map|smooth|specular|spherical_mapping|spiral|'
848
+ r'spiral1|spiral2|spotlight|spotted|sqr|sqrt|statistics|str|'
849
+ r'strcmp|strength|strlen|strlwr|strupr|sturm|substr|switch|sys|'
850
+ r't|tan|tanh|test_camera_1|test_camera_2|test_camera_3|'
851
+ r'test_camera_4|texture|texture_map|tga|thickness|threshold|'
852
+ r'tightness|tile2|tiles|track|transform|translate|transmit|'
853
+ r'triangle_wave|true|ttf|turbulence|turb_depth|type|'
854
+ r'ultra_wide_angle|up|use_color|use_colour|use_index|u_steps|'
855
+ r'val|variance|vaxis_rotate|vcross|vdot|version|vlength|'
856
+ r'vnormalize|volume_object|volume_rendered|vol_with_light|'
857
+ r'vrotate|v_steps|warning|warp|water_level|waves|while|width|'
858
+ r'wood|wrinkles|yes)\b', Keyword),
859
+ (r'(bicubic_patch|blob|box|camera|cone|cubic|cylinder|difference|'
860
+ r'disc|height_field|intersection|julia_fractal|lathe|'
861
+ r'light_source|merge|mesh|object|plane|poly|polygon|prism|'
862
+ r'quadric|quartic|smooth_triangle|sor|sphere|superellipsoid|'
863
+ r'text|torus|triangle|union)\b', Name.Builtin),
864
+ # TODO: <=, etc
865
+ (r'[\[\](){}<>;,]', Punctuation),
866
+ (r'[-+*/=]', Operator),
867
+ (r'\b(x|y|z|u|v)\b', Name.Builtin.Pseudo),
868
+ (r'[a-zA-Z_][a-zA-Z_0-9]*', Name),
869
+ (r'[0-9]+\.[0-9]*', Number.Float),
870
+ (r'\.[0-9]+', Number.Float),
871
+ (r'[0-9]+', Number.Integer),
872
+ (r'\s+', Text),
873
+ ]
874
+ }
875
+
876
+
877
+ class AppleScriptLexer(RegexLexer):
878
+ """
879
+ For `AppleScript source code
880
+ <http://developer.apple.com/documentation/AppleScript/
881
+ Conceptual/AppleScriptLangGuide>`_,
882
+ including `AppleScript Studio
883
+ <http://developer.apple.com/documentation/AppleScript/
884
+ Reference/StudioReference>`_.
885
+ Contributed by Andreas Amann <aamann@mac.com>.
886
+ """
887
+
888
+ name = 'AppleScript'
889
+ aliases = ['applescript']
890
+ filenames = ['*.applescript']
891
+
892
+ flags = re.MULTILINE | re.DOTALL
893
+
894
+ Identifiers = r'[a-zA-Z]\w*'
895
+ Literals = ['AppleScript', 'current application', 'false', 'linefeed',
896
+ 'missing value', 'pi','quote', 'result', 'return', 'space',
897
+ 'tab', 'text item delimiters', 'true', 'version']
898
+ Classes = ['alias ', 'application ', 'boolean ', 'class ', 'constant ',
899
+ 'date ', 'file ', 'integer ', 'list ', 'number ', 'POSIX file ',
900
+ 'real ', 'record ', 'reference ', 'RGB color ', 'script ',
901
+ 'text ', 'unit types', '(?:Unicode )?text', 'string']
902
+ BuiltIn = ['attachment', 'attribute run', 'character', 'day', 'month',
903
+ 'paragraph', 'word', 'year']
904
+ HandlerParams = ['about', 'above', 'against', 'apart from', 'around',
905
+ 'aside from', 'at', 'below', 'beneath', 'beside',
906
+ 'between', 'for', 'given', 'instead of', 'on', 'onto',
907
+ 'out of', 'over', 'since']
908
+ Commands = ['ASCII (character|number)', 'activate', 'beep', 'choose URL',
909
+ 'choose application', 'choose color', 'choose file( name)?',
910
+ 'choose folder', 'choose from list',
911
+ 'choose remote application', 'clipboard info',
912
+ 'close( access)?', 'copy', 'count', 'current date', 'delay',
913
+ 'delete', 'display (alert|dialog)', 'do shell script',
914
+ 'duplicate', 'exists', 'get eof', 'get volume settings',
915
+ 'info for', 'launch', 'list (disks|folder)', 'load script',
916
+ 'log', 'make', 'mount volume', 'new', 'offset',
917
+ 'open( (for access|location))?', 'path to', 'print', 'quit',
918
+ 'random number', 'read', 'round', 'run( script)?',
919
+ 'say', 'scripting components',
920
+ 'set (eof|the clipboard to|volume)', 'store script',
921
+ 'summarize', 'system attribute', 'system info',
922
+ 'the clipboard', 'time to GMT', 'write', 'quoted form']
923
+ References = ['(in )?back of', '(in )?front of', '[0-9]+(st|nd|rd|th)',
924
+ 'first', 'second', 'third', 'fourth', 'fifth', 'sixth',
925
+ 'seventh', 'eighth', 'ninth', 'tenth', 'after', 'back',
926
+ 'before', 'behind', 'every', 'front', 'index', 'last',
927
+ 'middle', 'some', 'that', 'through', 'thru', 'where', 'whose']
928
+ Operators = ["and", "or", "is equal", "equals", "(is )?equal to", "is not",
929
+ "isn't", "isn't equal( to)?", "is not equal( to)?",
930
+ "doesn't equal", "does not equal", "(is )?greater than",
931
+ "comes after", "is not less than or equal( to)?",
932
+ "isn't less than or equal( to)?", "(is )?less than",
933
+ "comes before", "is not greater than or equal( to)?",
934
+ "isn't greater than or equal( to)?",
935
+ "(is )?greater than or equal( to)?", "is not less than",
936
+ "isn't less than", "does not come before",
937
+ "doesn't come before", "(is )?less than or equal( to)?",
938
+ "is not greater than", "isn't greater than",
939
+ "does not come after", "doesn't come after", "starts? with",
940
+ "begins? with", "ends? with", "contains?", "does not contain",
941
+ "doesn't contain", "is in", "is contained by", "is not in",
942
+ "is not contained by", "isn't contained by", "div", "mod",
943
+ "not", "(a )?(ref( to)?|reference to)", "is", "does"]
944
+ Control = ['considering', 'else', 'error', 'exit', 'from', 'if',
945
+ 'ignoring', 'in', 'repeat', 'tell', 'then', 'times', 'to',
946
+ 'try', 'until', 'using terms from', 'while', 'whith',
947
+ 'with timeout( of)?', 'with transaction', 'by', 'continue',
948
+ 'end', 'its?', 'me', 'my', 'return', 'of' , 'as']
949
+ Declarations = ['global', 'local', 'prop(erty)?', 'set', 'get']
950
+ Reserved = ['but', 'put', 'returning', 'the']
951
+ StudioClasses = ['action cell', 'alert reply', 'application', 'box',
952
+ 'browser( cell)?', 'bundle', 'button( cell)?', 'cell',
953
+ 'clip view', 'color well', 'color-panel',
954
+ 'combo box( item)?', 'control',
955
+ 'data( (cell|column|item|row|source))?', 'default entry',
956
+ 'dialog reply', 'document', 'drag info', 'drawer',
957
+ 'event', 'font(-panel)?', 'formatter',
958
+ 'image( (cell|view))?', 'matrix', 'menu( item)?', 'item',
959
+ 'movie( view)?', 'open-panel', 'outline view', 'panel',
960
+ 'pasteboard', 'plugin', 'popup button',
961
+ 'progress indicator', 'responder', 'save-panel',
962
+ 'scroll view', 'secure text field( cell)?', 'slider',
963
+ 'sound', 'split view', 'stepper', 'tab view( item)?',
964
+ 'table( (column|header cell|header view|view))',
965
+ 'text( (field( cell)?|view))?', 'toolbar( item)?',
966
+ 'user-defaults', 'view', 'window']
967
+ StudioEvents = ['accept outline drop', 'accept table drop', 'action',
968
+ 'activated', 'alert ended', 'awake from nib', 'became key',
969
+ 'became main', 'begin editing', 'bounds changed',
970
+ 'cell value', 'cell value changed', 'change cell value',
971
+ 'change item value', 'changed', 'child of item',
972
+ 'choose menu item', 'clicked', 'clicked toolbar item',
973
+ 'closed', 'column clicked', 'column moved',
974
+ 'column resized', 'conclude drop', 'data representation',
975
+ 'deminiaturized', 'dialog ended', 'document nib name',
976
+ 'double clicked', 'drag( (entered|exited|updated))?',
977
+ 'drop', 'end editing', 'exposed', 'idle', 'item expandable',
978
+ 'item value', 'item value changed', 'items changed',
979
+ 'keyboard down', 'keyboard up', 'launched',
980
+ 'load data representation', 'miniaturized', 'mouse down',
981
+ 'mouse dragged', 'mouse entered', 'mouse exited',
982
+ 'mouse moved', 'mouse up', 'moved',
983
+ 'number of browser rows', 'number of items',
984
+ 'number of rows', 'open untitled', 'opened', 'panel ended',
985
+ 'parameters updated', 'plugin loaded', 'prepare drop',
986
+ 'prepare outline drag', 'prepare outline drop',
987
+ 'prepare table drag', 'prepare table drop',
988
+ 'read from file', 'resigned active', 'resigned key',
989
+ 'resigned main', 'resized( sub views)?',
990
+ 'right mouse down', 'right mouse dragged',
991
+ 'right mouse up', 'rows changed', 'scroll wheel',
992
+ 'selected tab view item', 'selection changed',
993
+ 'selection changing', 'should begin editing',
994
+ 'should close', 'should collapse item',
995
+ 'should end editing', 'should expand item',
996
+ 'should open( untitled)?',
997
+ 'should quit( after last window closed)?',
998
+ 'should select column', 'should select item',
999
+ 'should select row', 'should select tab view item',
1000
+ 'should selection change', 'should zoom', 'shown',
1001
+ 'update menu item', 'update parameters',
1002
+ 'update toolbar item', 'was hidden', 'was miniaturized',
1003
+ 'will become active', 'will close', 'will dismiss',
1004
+ 'will display browser cell', 'will display cell',
1005
+ 'will display item cell', 'will display outline cell',
1006
+ 'will finish launching', 'will hide', 'will miniaturize',
1007
+ 'will move', 'will open', 'will pop up', 'will quit',
1008
+ 'will resign active', 'will resize( sub views)?',
1009
+ 'will select tab view item', 'will show', 'will zoom',
1010
+ 'write to file', 'zoomed']
1011
+ StudioCommands = ['animate', 'append', 'call method', 'center',
1012
+ 'close drawer', 'close panel', 'display',
1013
+ 'display alert', 'display dialog', 'display panel', 'go',
1014
+ 'hide', 'highlight', 'increment', 'item for',
1015
+ 'load image', 'load movie', 'load nib', 'load panel',
1016
+ 'load sound', 'localized string', 'lock focus', 'log',
1017
+ 'open drawer', 'path for', 'pause', 'perform action',
1018
+ 'play', 'register', 'resume', 'scroll', 'select( all)?',
1019
+ 'show', 'size to fit', 'start', 'step back',
1020
+ 'step forward', 'stop', 'synchronize', 'unlock focus',
1021
+ 'update']
1022
+ StudioProperties = ['accepts arrow key', 'action method', 'active',
1023
+ 'alignment', 'allowed identifiers',
1024
+ 'allows branch selection', 'allows column reordering',
1025
+ 'allows column resizing', 'allows column selection',
1026
+ 'allows customization',
1027
+ 'allows editing text attributes',
1028
+ 'allows empty selection', 'allows mixed state',
1029
+ 'allows multiple selection', 'allows reordering',
1030
+ 'allows undo', 'alpha( value)?', 'alternate image',
1031
+ 'alternate increment value', 'alternate title',
1032
+ 'animation delay', 'associated file name',
1033
+ 'associated object', 'auto completes', 'auto display',
1034
+ 'auto enables items', 'auto repeat',
1035
+ 'auto resizes( outline column)?',
1036
+ 'auto save expanded items', 'auto save name',
1037
+ 'auto save table columns', 'auto saves configuration',
1038
+ 'auto scroll', 'auto sizes all columns to fit',
1039
+ 'auto sizes cells', 'background color', 'bezel state',
1040
+ 'bezel style', 'bezeled', 'border rect', 'border type',
1041
+ 'bordered', 'bounds( rotation)?', 'box type',
1042
+ 'button returned', 'button type',
1043
+ 'can choose directories', 'can choose files',
1044
+ 'can draw', 'can hide',
1045
+ 'cell( (background color|size|type))?', 'characters',
1046
+ 'class', 'click count', 'clicked( data)? column',
1047
+ 'clicked data item', 'clicked( data)? row',
1048
+ 'closeable', 'collating', 'color( (mode|panel))',
1049
+ 'command key down', 'configuration',
1050
+ 'content(s| (size|view( margins)?))?', 'context',
1051
+ 'continuous', 'control key down', 'control size',
1052
+ 'control tint', 'control view',
1053
+ 'controller visible', 'coordinate system',
1054
+ 'copies( on scroll)?', 'corner view', 'current cell',
1055
+ 'current column', 'current( field)? editor',
1056
+ 'current( menu)? item', 'current row',
1057
+ 'current tab view item', 'data source',
1058
+ 'default identifiers', 'delta (x|y|z)',
1059
+ 'destination window', 'directory', 'display mode',
1060
+ 'displayed cell', 'document( (edited|rect|view))?',
1061
+ 'double value', 'dragged column', 'dragged distance',
1062
+ 'dragged items', 'draws( cell)? background',
1063
+ 'draws grid', 'dynamically scrolls', 'echos bullets',
1064
+ 'edge', 'editable', 'edited( data)? column',
1065
+ 'edited data item', 'edited( data)? row', 'enabled',
1066
+ 'enclosing scroll view', 'ending page',
1067
+ 'error handling', 'event number', 'event type',
1068
+ 'excluded from windows menu', 'executable path',
1069
+ 'expanded', 'fax number', 'field editor', 'file kind',
1070
+ 'file name', 'file type', 'first responder',
1071
+ 'first visible column', 'flipped', 'floating',
1072
+ 'font( panel)?', 'formatter', 'frameworks path',
1073
+ 'frontmost', 'gave up', 'grid color', 'has data items',
1074
+ 'has horizontal ruler', 'has horizontal scroller',
1075
+ 'has parent data item', 'has resize indicator',
1076
+ 'has shadow', 'has sub menu', 'has vertical ruler',
1077
+ 'has vertical scroller', 'header cell', 'header view',
1078
+ 'hidden', 'hides when deactivated', 'highlights by',
1079
+ 'horizontal line scroll', 'horizontal page scroll',
1080
+ 'horizontal ruler view', 'horizontally resizable',
1081
+ 'icon image', 'id', 'identifier',
1082
+ 'ignores multiple clicks',
1083
+ 'image( (alignment|dims when disabled|frame style|'
1084
+ 'scaling))?',
1085
+ 'imports graphics', 'increment value',
1086
+ 'indentation per level', 'indeterminate', 'index',
1087
+ 'integer value', 'intercell spacing', 'item height',
1088
+ 'key( (code|equivalent( modifier)?|window))?',
1089
+ 'knob thickness', 'label', 'last( visible)? column',
1090
+ 'leading offset', 'leaf', 'level', 'line scroll',
1091
+ 'loaded', 'localized sort', 'location', 'loop mode',
1092
+ 'main( (bunde|menu|window))?', 'marker follows cell',
1093
+ 'matrix mode', 'maximum( content)? size',
1094
+ 'maximum visible columns',
1095
+ 'menu( form representation)?', 'miniaturizable',
1096
+ 'miniaturized', 'minimized image', 'minimized title',
1097
+ 'minimum column width', 'minimum( content)? size',
1098
+ 'modal', 'modified', 'mouse down state',
1099
+ 'movie( (controller|file|rect))?', 'muted', 'name',
1100
+ 'needs display', 'next state', 'next text',
1101
+ 'number of tick marks', 'only tick mark values',
1102
+ 'opaque', 'open panel', 'option key down',
1103
+ 'outline table column', 'page scroll', 'pages across',
1104
+ 'pages down', 'palette label', 'pane splitter',
1105
+ 'parent data item', 'parent window', 'pasteboard',
1106
+ 'path( (names|separator))?', 'playing',
1107
+ 'plays every frame', 'plays selection only', 'position',
1108
+ 'preferred edge', 'preferred type', 'pressure',
1109
+ 'previous text', 'prompt', 'properties',
1110
+ 'prototype cell', 'pulls down', 'rate',
1111
+ 'released when closed', 'repeated',
1112
+ 'requested print time', 'required file type',
1113
+ 'resizable', 'resized column', 'resource path',
1114
+ 'returns records', 'reuses columns', 'rich text',
1115
+ 'roll over', 'row height', 'rulers visible',
1116
+ 'save panel', 'scripts path', 'scrollable',
1117
+ 'selectable( identifiers)?', 'selected cell',
1118
+ 'selected( data)? columns?', 'selected data items?',
1119
+ 'selected( data)? rows?', 'selected item identifier',
1120
+ 'selection by rect', 'send action on arrow key',
1121
+ 'sends action when done editing', 'separates columns',
1122
+ 'separator item', 'sequence number', 'services menu',
1123
+ 'shared frameworks path', 'shared support path',
1124
+ 'sheet', 'shift key down', 'shows alpha',
1125
+ 'shows state by', 'size( mode)?',
1126
+ 'smart insert delete enabled', 'sort case sensitivity',
1127
+ 'sort column', 'sort order', 'sort type',
1128
+ 'sorted( data rows)?', 'sound', 'source( mask)?',
1129
+ 'spell checking enabled', 'starting page', 'state',
1130
+ 'string value', 'sub menu', 'super menu', 'super view',
1131
+ 'tab key traverses cells', 'tab state', 'tab type',
1132
+ 'tab view', 'table view', 'tag', 'target( printer)?',
1133
+ 'text color', 'text container insert',
1134
+ 'text container origin', 'text returned',
1135
+ 'tick mark position', 'time stamp',
1136
+ 'title(d| (cell|font|height|position|rect))?',
1137
+ 'tool tip', 'toolbar', 'trailing offset', 'transparent',
1138
+ 'treat packages as directories', 'truncated labels',
1139
+ 'types', 'unmodified characters', 'update views',
1140
+ 'use sort indicator', 'user defaults',
1141
+ 'uses data source', 'uses ruler',
1142
+ 'uses threaded animation',
1143
+ 'uses title from previous column', 'value wraps',
1144
+ 'version',
1145
+ 'vertical( (line scroll|page scroll|ruler view))?',
1146
+ 'vertically resizable', 'view',
1147
+ 'visible( document rect)?', 'volume', 'width', 'window',
1148
+ 'windows menu', 'wraps', 'zoomable', 'zoomed']
1149
+
1150
+ tokens = {
1151
+ 'root': [
1152
+ (r'\s+', Text),
1153
+ (ur'¬\n', String.Escape),
1154
+ (r"'s\s+", Text), # This is a possessive, consider moving
1155
+ (r'(--|#).*?$', Comment),
1156
+ (r'\(\*', Comment.Multiline, 'comment'),
1157
+ (r'[\(\){}!,.:]', Punctuation),
1158
+ (ur'(«)([^»]+)(»)',
1159
+ bygroups(Text, Name.Builtin, Text)),
1160
+ (r'\b((?:considering|ignoring)\s*)'
1161
+ r'(application responses|case|diacriticals|hyphens|'
1162
+ r'numeric strings|punctuation|white space)',
1163
+ bygroups(Keyword, Name.Builtin)),
1164
+ (ur'(-|\*|\+|&|≠|>=?|<=?|=|≥|≤|/|÷|\^)', Operator),
1165
+ (r"\b(%s)\b" % '|'.join(Operators), Operator.Word),
1166
+ (r'^(\s*(?:on|end)\s+)'
1167
+ r'(%s)' % '|'.join(StudioEvents[::-1]),
1168
+ bygroups(Keyword, Name.Function)),
1169
+ (r'^(\s*)(in|on|script|to)(\s+)', bygroups(Text, Keyword, Text)),
1170
+ (r'\b(as )(%s)\b' % '|'.join(Classes),
1171
+ bygroups(Keyword, Name.Class)),
1172
+ (r'\b(%s)\b' % '|'.join(Literals), Name.Constant),
1173
+ (r'\b(%s)\b' % '|'.join(Commands), Name.Builtin),
1174
+ (r'\b(%s)\b' % '|'.join(Control), Keyword),
1175
+ (r'\b(%s)\b' % '|'.join(Declarations), Keyword),
1176
+ (r'\b(%s)\b' % '|'.join(Reserved), Name.Builtin),
1177
+ (r'\b(%s)s?\b' % '|'.join(BuiltIn), Name.Builtin),
1178
+ (r'\b(%s)\b' % '|'.join(HandlerParams), Name.Builtin),
1179
+ (r'\b(%s)\b' % '|'.join(StudioProperties), Name.Attribute),
1180
+ (r'\b(%s)s?\b' % '|'.join(StudioClasses), Name.Builtin),
1181
+ (r'\b(%s)\b' % '|'.join(StudioCommands), Name.Builtin),
1182
+ (r'\b(%s)\b' % '|'.join(References), Name.Builtin),
1183
+ (r'"(\\\\|\\"|[^"])*"', String.Double),
1184
+ (r'\b(%s)\b' % Identifiers, Name.Variable),
1185
+ (r'[-+]?(\d+\.\d*|\d*\.\d+)(E[-+][0-9]+)?', Number.Float),
1186
+ (r'[-+]?\d+', Number.Integer),
1187
+ ],
1188
+ 'comment': [
1189
+ ('\(\*', Comment.Multiline, '#push'),
1190
+ ('\*\)', Comment.Multiline, '#pop'),
1191
+ ('[^*(]+', Comment.Multiline),
1192
+ ('[*(]', Comment.Multiline),
1193
+ ],
1194
+ }
1195
+
1196
+
1197
+ class ModelicaLexer(RegexLexer):
1198
+ """
1199
+ For `Modelica <http://www.modelica.org/>`_ source code.
1200
+
1201
+ *New in Pygments 1.1.*
1202
+ """
1203
+ name = 'Modelica'
1204
+ aliases = ['modelica']
1205
+ filenames = ['*.mo']
1206
+ mimetypes = ['text/x-modelica']
1207
+
1208
+ flags = re.IGNORECASE | re.DOTALL
1209
+
1210
+ tokens = {
1211
+ 'whitespace': [
1212
+ (r'\n', Text),
1213
+ (r'\s+', Text),
1214
+ (r'\\\n', Text), # line continuation
1215
+ (r'//(\n|(.|\n)*?[^\\]\n)', Comment),
1216
+ (r'/(\\\n)?\*(.|\n)*?\*(\\\n)?/', Comment),
1217
+ ],
1218
+ 'statements': [
1219
+ (r'"', String, 'string'),
1220
+ (r'(\d+\.\d*|\.\d+|\d+|\d.)[eE][+-]?\d+[lL]?', Number.Float),
1221
+ (r'(\d+\.\d*|\.\d+)', Number.Float),
1222
+ (r'\d+[Ll]?', Number.Integer),
1223
+ (r'[~!%^&*+=|?:<>/-]', Operator),
1224
+ (r'[()\[\]{},.;]', Punctuation),
1225
+ (r'(true|false|NULL|Real|Integer|Boolean)\b', Name.Builtin),
1226
+ (r"([a-zA-Z_][\w]*|'[a-zA-Z_\+\-\*\/\^][\w]*')"
1227
+ r"(\.([a-zA-Z_][\w]*|'[a-zA-Z_\+\-\*\/\^][\w]*'))+", Name.Class),
1228
+ (r"('[\w\+\-\*\/\^]+'|\w+)", Name),
1229
+ ],
1230
+ 'root': [
1231
+ include('whitespace'),
1232
+ include('keywords'),
1233
+ include('functions'),
1234
+ include('operators'),
1235
+ include('classes'),
1236
+ (r'("<html>|<html>)', Name.Tag, 'html-content'),
1237
+ include('statements'),
1238
+ ],
1239
+ 'keywords': [
1240
+ (r'(algorithm|annotation|break|connect|constant|constrainedby|'
1241
+ r'discrete|each|else|elseif|elsewhen|encapsulated|enumeration|'
1242
+ r'end|equation|exit|expandable|extends|'
1243
+ r'external|false|final|flow|for|if|import|impure|in|initial\sequation|'
1244
+ r'inner|input|loop|nondiscrete|outer|output|parameter|partial|'
1245
+ r'protected|public|pure|redeclare|replaceable|stream|time|then|true|'
1246
+ r'when|while|within)\b', Keyword),
1247
+ ],
1248
+ 'functions': [
1249
+ (r'(abs|acos|acosh|asin|asinh|atan|atan2|atan3|ceil|cos|cosh|'
1250
+ r'cross|div|exp|floor|getInstanceName|log|log10|mod|rem|'
1251
+ r'semiLinear|sign|sin|sinh|size|spatialDistribution|sqrt|tan|'
1252
+ r'tanh|zeros)\b', Name.Function),
1253
+ ],
1254
+ 'operators': [
1255
+ (r'(actualStream|and|assert|cardinality|change|Clock|delay|der|edge|'
1256
+ r'hold|homotopy|initial|inStream|noEvent|not|or|pre|previous|reinit|'
1257
+ r'return|sample|smooth|spatialDistribution|subSample|terminal|'
1258
+ r'terminate)\b', Name.Builtin),
1259
+ ],
1260
+ 'classes': [
1261
+ (r'(block|class|connector|function|model|package|'
1262
+ r'record|type)(\s+)([A-Za-z_]+)',
1263
+ bygroups(Keyword, Text, Name.Class))
1264
+ ],
1265
+ 'string': [
1266
+ (r'"', String, '#pop'),
1267
+ (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})',
1268
+ String.Escape),
1269
+ (r'[^\\"\n]+', String), # all other characters
1270
+ (r'\\\n', String), # line continuation
1271
+ (r'\\', String), # stray backslash
1272
+ ],
1273
+ 'html-content': [
1274
+ (r'<\s*/\s*html\s*>', Name.Tag, '#pop'),
1275
+ (r'.+?(?=<\s*/\s*html\s*>)', using(HtmlLexer)),
1276
+ ]
1277
+ }
1278
+
1279
+
1280
+ class RebolLexer(RegexLexer):
1281
+ """
1282
+ A `REBOL <http://www.rebol.com/>`_ lexer.
1283
+
1284
+ *New in Pygments 1.1.*
1285
+ """
1286
+ name = 'REBOL'
1287
+ aliases = ['rebol']
1288
+ filenames = ['*.r', '*.r3']
1289
+ mimetypes = ['text/x-rebol']
1290
+
1291
+ flags = re.IGNORECASE | re.MULTILINE
1292
+
1293
+ re.IGNORECASE
1294
+
1295
+ escape_re = r'(?:\^\([0-9a-fA-F]{1,4}\)*)'
1296
+
1297
+ def word_callback(lexer, match):
1298
+ word = match.group()
1299
+
1300
+ if re.match(".*:$", word):
1301
+ yield match.start(), Generic.Subheading, word
1302
+ elif re.match(
1303
+ r'(native|alias|all|any|as-string|as-binary|bind|bound\?|case|'
1304
+ r'catch|checksum|comment|debase|dehex|exclude|difference|disarm|'
1305
+ r'either|else|enbase|foreach|remove-each|form|free|get|get-env|if|'
1306
+ r'in|intersect|loop|minimum-of|maximum-of|mold|new-line|'
1307
+ r'new-line\?|not|now|prin|print|reduce|compose|construct|repeat|'
1308
+ r'reverse|save|script\?|set|shift|switch|throw|to-hex|trace|try|'
1309
+ r'type\?|union|unique|unless|unprotect|unset|until|use|value\?|'
1310
+ r'while|compress|decompress|secure|open|close|read|read-io|'
1311
+ r'write-io|write|update|query|wait|input\?|exp|log-10|log-2|'
1312
+ r'log-e|square-root|cosine|sine|tangent|arccosine|arcsine|'
1313
+ r'arctangent|protect|lowercase|uppercase|entab|detab|connected\?|'
1314
+ r'browse|launch|stats|get-modes|set-modes|to-local-file|'
1315
+ r'to-rebol-file|encloak|decloak|create-link|do-browser|bind\?|'
1316
+ r'hide|draw|show|size-text|textinfo|offset-to-caret|'
1317
+ r'caret-to-offset|local-request-file|rgb-to-hsv|hsv-to-rgb|'
1318
+ r'crypt-strength\?|dh-make-key|dh-generate-key|dh-compute-key|'
1319
+ r'dsa-make-key|dsa-generate-key|dsa-make-signature|'
1320
+ r'dsa-verify-signature|rsa-make-key|rsa-generate-key|'
1321
+ r'rsa-encrypt)$', word):
1322
+ yield match.start(), Name.Builtin, word
1323
+ elif re.match(
1324
+ r'(add|subtract|multiply|divide|remainder|power|and~|or~|xor~|'
1325
+ r'minimum|maximum|negate|complement|absolute|random|head|tail|'
1326
+ r'next|back|skip|at|pick|first|second|third|fourth|fifth|sixth|'
1327
+ r'seventh|eighth|ninth|tenth|last|path|find|select|make|to|copy\*|'
1328
+ r'insert|remove|change|poke|clear|trim|sort|min|max|abs|cp|'
1329
+ r'copy)$', word):
1330
+ yield match.start(), Name.Function, word
1331
+ elif re.match(
1332
+ r'(error|source|input|license|help|install|echo|Usage|with|func|'
1333
+ r'throw-on-error|function|does|has|context|probe|\?\?|as-pair|'
1334
+ r'mod|modulo|round|repend|about|set-net|append|join|rejoin|reform|'
1335
+ r'remold|charset|array|replace|move|extract|forskip|forall|alter|'
1336
+ r'first+|also|take|for|forever|dispatch|attempt|what-dir|'
1337
+ r'change-dir|clean-path|list-dir|dirize|rename|split-path|delete|'
1338
+ r'make-dir|delete-dir|in-dir|confirm|dump-obj|upgrade|what|'
1339
+ r'build-tag|process-source|build-markup|decode-cgi|read-cgi|'
1340
+ r'write-user|save-user|set-user-name|protect-system|parse-xml|'
1341
+ r'cvs-date|cvs-version|do-boot|get-net-info|desktop|layout|'
1342
+ r'scroll-para|get-face|alert|set-face|uninstall|unfocus|'
1343
+ r'request-dir|center-face|do-events|net-error|decode-url|'
1344
+ r'parse-header|parse-header-date|parse-email-addrs|import-email|'
1345
+ r'send|build-attach-body|resend|show-popup|hide-popup|open-events|'
1346
+ r'find-key-face|do-face|viewtop|confine|find-window|'
1347
+ r'insert-event-func|remove-event-func|inform|dump-pane|dump-face|'
1348
+ r'flag-face|deflag-face|clear-fields|read-net|vbug|path-thru|'
1349
+ r'read-thru|load-thru|do-thru|launch-thru|load-image|'
1350
+ r'request-download|do-face-alt|set-font|set-para|get-style|'
1351
+ r'set-style|make-face|stylize|choose|hilight-text|hilight-all|'
1352
+ r'unlight-text|focus|scroll-drag|clear-face|reset-face|scroll-face|'
1353
+ r'resize-face|load-stock|load-stock-block|notify|request|flash|'
1354
+ r'request-color|request-pass|request-text|request-list|'
1355
+ r'request-date|request-file|dbug|editor|link-relative-path|'
1356
+ r'emailer|parse-error)$', word):
1357
+ yield match.start(), Keyword.Namespace, word
1358
+ elif re.match(
1359
+ r'(halt|quit|do|load|q|recycle|call|run|ask|parse|view|unview|'
1360
+ r'return|exit|break)$', word):
1361
+ yield match.start(), Name.Exception, word
1362
+ elif re.match('REBOL$', word):
1363
+ yield match.start(), Generic.Heading, word
1364
+ elif re.match("to-.*", word):
1365
+ yield match.start(), Keyword, word
1366
+ elif re.match('(\+|-|\*|/|//|\*\*|and|or|xor|=\?|=|==|<>|<|>|<=|>=)$',
1367
+ word):
1368
+ yield match.start(), Operator, word
1369
+ elif re.match(".*\?$", word):
1370
+ yield match.start(), Keyword, word
1371
+ elif re.match(".*\!$", word):
1372
+ yield match.start(), Keyword.Type, word
1373
+ elif re.match("'.*", word):
1374
+ yield match.start(), Name.Variable.Instance, word # lit-word
1375
+ elif re.match("#.*", word):
1376
+ yield match.start(), Name.Label, word # issue
1377
+ elif re.match("%.*", word):
1378
+ yield match.start(), Name.Decorator, word # file
1379
+ else:
1380
+ yield match.start(), Name.Variable, word
1381
+
1382
+ tokens = {
1383
+ 'root': [
1384
+ (r'REBOL', Generic.Strong, 'script'),
1385
+ (r'R', Comment),
1386
+ (r'[^R]+', Comment),
1387
+ ],
1388
+ 'script': [
1389
+ (r'\s+', Text),
1390
+ (r'#"', String.Char, 'char'),
1391
+ (r'#{[0-9a-fA-F]*}', Number.Hex),
1392
+ (r'2#{', Number.Hex, 'bin2'),
1393
+ (r'64#{[0-9a-zA-Z+/=\s]*}', Number.Hex),
1394
+ (r'"', String, 'string'),
1395
+ (r'{', String, 'string2'),
1396
+ (r';#+.*\n', Comment.Special),
1397
+ (r';\*+.*\n', Comment.Preproc),
1398
+ (r';.*\n', Comment),
1399
+ (r'%"', Name.Decorator, 'stringFile'),
1400
+ (r'%[^(\^{^")\s\[\]]+', Name.Decorator),
1401
+ (r'[+-]?([a-zA-Z]{1,3})?\$\d+(\.\d+)?', Number.Float), # money
1402
+ (r'[+-]?\d+\:\d+(\:\d+)?(\.\d+)?', String.Other), # time
1403
+ (r'\d+\-[0-9a-zA-Z]+\-\d+(\/\d+\:\d+(\:\d+)?'
1404
+ r'([\.\d+]?([+-]?\d+:\d+)?)?)?', String.Other), # date
1405
+ (r'\d+(\.\d+)+\.\d+', Keyword.Constant), # tuple
1406
+ (r'\d+[xX]\d+', Keyword.Constant), # pair
1407
+ (r'[+-]?\d+(\'\d+)?([\.,]\d*)?[eE][+-]?\d+', Number.Float),
1408
+ (r'[+-]?\d+(\'\d+)?[\.,]\d*', Number.Float),
1409
+ (r'[+-]?\d+(\'\d+)?', Number),
1410
+ (r'[\[\]\(\)]', Generic.Strong),
1411
+ (r'[a-zA-Z]+[^(\^{"\s:)]*://[^(\^{"\s)]*', Name.Decorator), # url
1412
+ (r'mailto:[^(\^{"@\s)]+@[^(\^{"@\s)]+', Name.Decorator), # url
1413
+ (r'[^(\^{"@\s)]+@[^(\^{"@\s)]+', Name.Decorator), # email
1414
+ (r'comment\s', Comment, 'comment'),
1415
+ (r'/[^(\^{^")\s/[\]]*', Name.Attribute),
1416
+ (r'([^(\^{^")\s/[\]]+)(?=[:({"\s/\[\]])', word_callback),
1417
+ (r'<[a-zA-Z0-9:._-]*>', Name.Tag),
1418
+ (r'<[^(<>\s")]+', Name.Tag, 'tag'),
1419
+ (r'([^(\^{^")\s]+)', Text),
1420
+ ],
1421
+ 'string': [
1422
+ (r'[^(\^")]+', String),
1423
+ (escape_re, String.Escape),
1424
+ (r'[\(|\)]+', String),
1425
+ (r'\^.', String.Escape),
1426
+ (r'"', String, '#pop'),
1427
+ ],
1428
+ 'string2': [
1429
+ (r'[^(\^{^})]+', String),
1430
+ (escape_re, String.Escape),
1431
+ (r'[\(|\)]+', String),
1432
+ (r'\^.', String.Escape),
1433
+ (r'{', String, '#push'),
1434
+ (r'}', String, '#pop'),
1435
+ ],
1436
+ 'stringFile': [
1437
+ (r'[^(\^")]+', Name.Decorator),
1438
+ (escape_re, Name.Decorator),
1439
+ (r'\^.', Name.Decorator),
1440
+ (r'"', Name.Decorator, '#pop'),
1441
+ ],
1442
+ 'char': [
1443
+ (escape_re + '"', String.Char, '#pop'),
1444
+ (r'\^."', String.Char, '#pop'),
1445
+ (r'."', String.Char, '#pop'),
1446
+ ],
1447
+ 'tag': [
1448
+ (escape_re, Name.Tag),
1449
+ (r'"', Name.Tag, 'tagString'),
1450
+ (r'[^(<>\r\n")]+', Name.Tag),
1451
+ (r'>', Name.Tag, '#pop'),
1452
+ ],
1453
+ 'tagString': [
1454
+ (r'[^(\^")]+', Name.Tag),
1455
+ (escape_re, Name.Tag),
1456
+ (r'[\(|\)]+', Name.Tag),
1457
+ (r'\^.', Name.Tag),
1458
+ (r'"', Name.Tag, '#pop'),
1459
+ ],
1460
+ 'tuple': [
1461
+ (r'(\d+\.)+', Keyword.Constant),
1462
+ (r'\d+', Keyword.Constant, '#pop'),
1463
+ ],
1464
+ 'bin2': [
1465
+ (r'\s+', Number.Hex),
1466
+ (r'([0-1]\s*){8}', Number.Hex),
1467
+ (r'}', Number.Hex, '#pop'),
1468
+ ],
1469
+ 'comment': [
1470
+ (r'"', Comment, 'commentString1'),
1471
+ (r'{', Comment, 'commentString2'),
1472
+ (r'\[', Comment, 'commentBlock'),
1473
+ (r'[^(\s{\"\[]+', Comment, '#pop'),
1474
+ ],
1475
+ 'commentString1': [
1476
+ (r'[^(\^")]+', Comment),
1477
+ (escape_re, Comment),
1478
+ (r'[\(|\)]+', Comment),
1479
+ (r'\^.', Comment),
1480
+ (r'"', Comment, '#pop'),
1481
+ ],
1482
+ 'commentString2': [
1483
+ (r'[^(\^{^})]+', Comment),
1484
+ (escape_re, Comment),
1485
+ (r'[\(|\)]+', Comment),
1486
+ (r'\^.', Comment),
1487
+ (r'{', Comment, '#push'),
1488
+ (r'}', Comment, '#pop'),
1489
+ ],
1490
+ 'commentBlock': [
1491
+ (r'\[', Comment, '#push'),
1492
+ (r'\]', Comment, '#pop'),
1493
+ (r'[^(\[\])]+', Comment),
1494
+ ],
1495
+ }
1496
+
1497
+
1498
+ class ABAPLexer(RegexLexer):
1499
+ """
1500
+ Lexer for ABAP, SAP's integrated language.
1501
+
1502
+ *New in Pygments 1.1.*
1503
+ """
1504
+ name = 'ABAP'
1505
+ aliases = ['abap']
1506
+ filenames = ['*.abap']
1507
+ mimetypes = ['text/x-abap']
1508
+
1509
+ flags = re.IGNORECASE | re.MULTILINE
1510
+
1511
+ tokens = {
1512
+ 'common': [
1513
+ (r'\s+', Text),
1514
+ (r'^\*.*$', Comment.Single),
1515
+ (r'\".*?\n', Comment.Single),
1516
+ ],
1517
+ 'variable-names': [
1518
+ (r'<[\S_]+>', Name.Variable),
1519
+ (r'\w[\w~]*(?:(\[\])|->\*)?', Name.Variable),
1520
+ ],
1521
+ 'root': [
1522
+ include('common'),
1523
+ #function calls
1524
+ (r'(CALL\s+(?:BADI|CUSTOMER-FUNCTION|FUNCTION))(\s+)(\'?\S+\'?)',
1525
+ bygroups(Keyword, Text, Name.Function)),
1526
+ (r'(CALL\s+(?:DIALOG|SCREEN|SUBSCREEN|SELECTION-SCREEN|'
1527
+ r'TRANSACTION|TRANSFORMATION))\b',
1528
+ Keyword),
1529
+ (r'(FORM|PERFORM)(\s+)(\w+)',
1530
+ bygroups(Keyword, Text, Name.Function)),
1531
+ (r'(PERFORM)(\s+)(\()(\w+)(\))',
1532
+ bygroups(Keyword, Text, Punctuation, Name.Variable, Punctuation )),
1533
+ (r'(MODULE)(\s+)(\S+)(\s+)(INPUT|OUTPUT)',
1534
+ bygroups(Keyword, Text, Name.Function, Text, Keyword)),
1535
+
1536
+ # method implementation
1537
+ (r'(METHOD)(\s+)([\w~]+)',
1538
+ bygroups(Keyword, Text, Name.Function)),
1539
+ # method calls
1540
+ (r'(\s+)([\w\-]+)([=\-]>)([\w\-~]+)',
1541
+ bygroups(Text, Name.Variable, Operator, Name.Function)),
1542
+ # call methodnames returning style
1543
+ (r'(?<=(=|-)>)([\w\-~]+)(?=\()', Name.Function),
1544
+
1545
+ # keywords with dashes in them.
1546
+ # these need to be first, because for instance the -ID part
1547
+ # of MESSAGE-ID wouldn't get highlighted if MESSAGE was
1548
+ # first in the list of keywords.
1549
+ (r'(ADD-CORRESPONDING|AUTHORITY-CHECK|'
1550
+ r'CLASS-DATA|CLASS-EVENTS|CLASS-METHODS|CLASS-POOL|'
1551
+ r'DELETE-ADJACENT|DIVIDE-CORRESPONDING|'
1552
+ r'EDITOR-CALL|ENHANCEMENT-POINT|ENHANCEMENT-SECTION|EXIT-COMMAND|'
1553
+ r'FIELD-GROUPS|FIELD-SYMBOLS|FUNCTION-POOL|'
1554
+ r'INTERFACE-POOL|INVERTED-DATE|'
1555
+ r'LOAD-OF-PROGRAM|LOG-POINT|'
1556
+ r'MESSAGE-ID|MOVE-CORRESPONDING|MULTIPLY-CORRESPONDING|'
1557
+ r'NEW-LINE|NEW-PAGE|NEW-SECTION|NO-EXTENSION|'
1558
+ r'OUTPUT-LENGTH|PRINT-CONTROL|'
1559
+ r'SELECT-OPTIONS|START-OF-SELECTION|SUBTRACT-CORRESPONDING|'
1560
+ r'SYNTAX-CHECK|SYSTEM-EXCEPTIONS|'
1561
+ r'TYPE-POOL|TYPE-POOLS'
1562
+ r')\b', Keyword),
1563
+
1564
+ # keyword kombinations
1565
+ (r'CREATE\s+(PUBLIC|PRIVATE|DATA|OBJECT)|'
1566
+ r'((PUBLIC|PRIVATE|PROTECTED)\s+SECTION|'
1567
+ r'(TYPE|LIKE)(\s+(LINE\s+OF|REF\s+TO|'
1568
+ r'(SORTED|STANDARD|HASHED)\s+TABLE\s+OF))?|'
1569
+ r'FROM\s+(DATABASE|MEMORY)|CALL\s+METHOD|'
1570
+ r'(GROUP|ORDER) BY|HAVING|SEPARATED BY|'
1571
+ r'GET\s+(BADI|BIT|CURSOR|DATASET|LOCALE|PARAMETER|'
1572
+ r'PF-STATUS|(PROPERTY|REFERENCE)\s+OF|'
1573
+ r'RUN\s+TIME|TIME\s+(STAMP)?)?|'
1574
+ r'SET\s+(BIT|BLANK\s+LINES|COUNTRY|CURSOR|DATASET|EXTENDED\s+CHECK|'
1575
+ r'HANDLER|HOLD\s+DATA|LANGUAGE|LEFT\s+SCROLL-BOUNDARY|'
1576
+ r'LOCALE|MARGIN|PARAMETER|PF-STATUS|PROPERTY\s+OF|'
1577
+ r'RUN\s+TIME\s+(ANALYZER|CLOCK\s+RESOLUTION)|SCREEN|'
1578
+ r'TITLEBAR|UPADTE\s+TASK\s+LOCAL|USER-COMMAND)|'
1579
+ r'CONVERT\s+((INVERTED-)?DATE|TIME|TIME\s+STAMP|TEXT)|'
1580
+ r'(CLOSE|OPEN)\s+(DATASET|CURSOR)|'
1581
+ r'(TO|FROM)\s+(DATA BUFFER|INTERNAL TABLE|MEMORY ID|'
1582
+ r'DATABASE|SHARED\s+(MEMORY|BUFFER))|'
1583
+ r'DESCRIBE\s+(DISTANCE\s+BETWEEN|FIELD|LIST|TABLE)|'
1584
+ r'FREE\s(MEMORY|OBJECT)?|'
1585
+ r'PROCESS\s+(BEFORE\s+OUTPUT|AFTER\s+INPUT|'
1586
+ r'ON\s+(VALUE-REQUEST|HELP-REQUEST))|'
1587
+ r'AT\s+(LINE-SELECTION|USER-COMMAND|END\s+OF|NEW)|'
1588
+ r'AT\s+SELECTION-SCREEN(\s+(ON(\s+(BLOCK|(HELP|VALUE)-REQUEST\s+FOR|'
1589
+ r'END\s+OF|RADIOBUTTON\s+GROUP))?|OUTPUT))?|'
1590
+ r'SELECTION-SCREEN:?\s+((BEGIN|END)\s+OF\s+((TABBED\s+)?BLOCK|LINE|'
1591
+ r'SCREEN)|COMMENT|FUNCTION\s+KEY|'
1592
+ r'INCLUDE\s+BLOCKS|POSITION|PUSHBUTTON|'
1593
+ r'SKIP|ULINE)|'
1594
+ r'LEAVE\s+(LIST-PROCESSING|PROGRAM|SCREEN|'
1595
+ r'TO LIST-PROCESSING|TO TRANSACTION)'
1596
+ r'(ENDING|STARTING)\s+AT|'
1597
+ r'FORMAT\s+(COLOR|INTENSIFIED|INVERSE|HOTSPOT|INPUT|FRAMES|RESET)|'
1598
+ r'AS\s+(CHECKBOX|SUBSCREEN|WINDOW)|'
1599
+ r'WITH\s+(((NON-)?UNIQUE)?\s+KEY|FRAME)|'
1600
+ r'(BEGIN|END)\s+OF|'
1601
+ r'DELETE(\s+ADJACENT\s+DUPLICATES\sFROM)?|'
1602
+ r'COMPARING(\s+ALL\s+FIELDS)?|'
1603
+ r'INSERT(\s+INITIAL\s+LINE\s+INTO|\s+LINES\s+OF)?|'
1604
+ r'IN\s+((BYTE|CHARACTER)\s+MODE|PROGRAM)|'
1605
+ r'END-OF-(DEFINITION|PAGE|SELECTION)|'
1606
+ r'WITH\s+FRAME(\s+TITLE)|'
1607
+
1608
+ # simple kombinations
1609
+ r'AND\s+(MARK|RETURN)|CLIENT\s+SPECIFIED|CORRESPONDING\s+FIELDS\s+OF|'
1610
+ r'IF\s+FOUND|FOR\s+EVENT|INHERITING\s+FROM|LEAVE\s+TO\s+SCREEN|'
1611
+ r'LOOP\s+AT\s+(SCREEN)?|LOWER\s+CASE|MATCHCODE\s+OBJECT|MODIF\s+ID|'
1612
+ r'MODIFY\s+SCREEN|NESTING\s+LEVEL|NO\s+INTERVALS|OF\s+STRUCTURE|'
1613
+ r'RADIOBUTTON\s+GROUP|RANGE\s+OF|REF\s+TO|SUPPRESS DIALOG|'
1614
+ r'TABLE\s+OF|UPPER\s+CASE|TRANSPORTING\s+NO\s+FIELDS|'
1615
+ r'VALUE\s+CHECK|VISIBLE\s+LENGTH|HEADER\s+LINE)\b', Keyword),
1616
+
1617
+ # single word keywords.
1618
+ (r'(^|(?<=(\s|\.)))(ABBREVIATED|ADD|ALIASES|APPEND|ASSERT|'
1619
+ r'ASSIGN(ING)?|AT(\s+FIRST)?|'
1620
+ r'BACK|BLOCK|BREAK-POINT|'
1621
+ r'CASE|CATCH|CHANGING|CHECK|CLASS|CLEAR|COLLECT|COLOR|COMMIT|'
1622
+ r'CREATE|COMMUNICATION|COMPONENTS?|COMPUTE|CONCATENATE|CONDENSE|'
1623
+ r'CONSTANTS|CONTEXTS|CONTINUE|CONTROLS|'
1624
+ r'DATA|DECIMALS|DEFAULT|DEFINE|DEFINITION|DEFERRED|DEMAND|'
1625
+ r'DETAIL|DIRECTORY|DIVIDE|DO|'
1626
+ r'ELSE(IF)?|ENDAT|ENDCASE|ENDCLASS|ENDDO|ENDFORM|ENDFUNCTION|'
1627
+ r'ENDIF|ENDLOOP|ENDMETHOD|ENDMODULE|ENDSELECT|ENDTRY|'
1628
+ r'ENHANCEMENT|EVENTS|EXCEPTIONS|EXIT|EXPORT|EXPORTING|EXTRACT|'
1629
+ r'FETCH|FIELDS?|FIND|FOR|FORM|FORMAT|FREE|FROM|'
1630
+ r'HIDE|'
1631
+ r'ID|IF|IMPORT|IMPLEMENTATION|IMPORTING|IN|INCLUDE|INCLUDING|'
1632
+ r'INDEX|INFOTYPES|INITIALIZATION|INTERFACE|INTERFACES|INTO|'
1633
+ r'LENGTH|LINES|LOAD|LOCAL|'
1634
+ r'JOIN|'
1635
+ r'KEY|'
1636
+ r'MAXIMUM|MESSAGE|METHOD[S]?|MINIMUM|MODULE|MODIFY|MOVE|MULTIPLY|'
1637
+ r'NODES|'
1638
+ r'OBLIGATORY|OF|OFF|ON|OVERLAY|'
1639
+ r'PACK|PARAMETERS|PERCENTAGE|POSITION|PROGRAM|PROVIDE|PUBLIC|PUT|'
1640
+ r'RAISE|RAISING|RANGES|READ|RECEIVE|REFRESH|REJECT|REPORT|RESERVE|'
1641
+ r'RESUME|RETRY|RETURN|RETURNING|RIGHT|ROLLBACK|'
1642
+ r'SCROLL|SEARCH|SELECT|SHIFT|SINGLE|SKIP|SORT|SPLIT|STATICS|STOP|'
1643
+ r'SUBMIT|SUBTRACT|SUM|SUMMARY|SUMMING|SUPPLY|'
1644
+ r'TABLE|TABLES|TIMES|TITLE|TO|TOP-OF-PAGE|TRANSFER|TRANSLATE|TRY|TYPES|'
1645
+ r'ULINE|UNDER|UNPACK|UPDATE|USING|'
1646
+ r'VALUE|VALUES|VIA|'
1647
+ r'WAIT|WHEN|WHERE|WHILE|WITH|WINDOW|WRITE)\b', Keyword),
1648
+
1649
+ # builtins
1650
+ (r'(abs|acos|asin|atan|'
1651
+ r'boolc|boolx|bit_set|'
1652
+ r'char_off|charlen|ceil|cmax|cmin|condense|contains|'
1653
+ r'contains_any_of|contains_any_not_of|concat_lines_of|cos|cosh|'
1654
+ r'count|count_any_of|count_any_not_of|'
1655
+ r'dbmaxlen|distance|'
1656
+ r'escape|exp|'
1657
+ r'find|find_end|find_any_of|find_any_not_of|floor|frac|from_mixed|'
1658
+ r'insert|'
1659
+ r'lines|log|log10|'
1660
+ r'match|matches|'
1661
+ r'nmax|nmin|numofchar|'
1662
+ r'repeat|replace|rescale|reverse|round|'
1663
+ r'segment|shift_left|shift_right|sign|sin|sinh|sqrt|strlen|'
1664
+ r'substring|substring_after|substring_from|substring_before|substring_to|'
1665
+ r'tan|tanh|to_upper|to_lower|to_mixed|translate|trunc|'
1666
+ r'xstrlen)(\()\b', bygroups(Name.Builtin, Punctuation)),
1667
+
1668
+ (r'&[0-9]', Name),
1669
+ (r'[0-9]+', Number.Integer),
1670
+
1671
+ # operators which look like variable names before
1672
+ # parsing variable names.
1673
+ (r'(?<=(\s|.))(AND|EQ|NE|GT|LT|GE|LE|CO|CN|CA|NA|CS|NOT|NS|CP|NP|'
1674
+ r'BYTE-CO|BYTE-CN|BYTE-CA|BYTE-NA|BYTE-CS|BYTE-NS|'
1675
+ r'IS\s+(NOT\s+)?(INITIAL|ASSIGNED|REQUESTED|BOUND))\b', Operator),
1676
+
1677
+ include('variable-names'),
1678
+
1679
+ # standard oparators after variable names,
1680
+ # because < and > are part of field symbols.
1681
+ (r'[?*<>=\-+]', Operator),
1682
+ (r"'(''|[^'])*'", String.Single),
1683
+ (r'[/;:()\[\],\.]', Punctuation)
1684
+ ],
1685
+ }
1686
+
1687
+
1688
+ class NewspeakLexer(RegexLexer):
1689
+ """
1690
+ For `Newspeak <http://newspeaklanguage.org/>` syntax.
1691
+ """
1692
+ name = 'Newspeak'
1693
+ filenames = ['*.ns2']
1694
+ aliases = ['newspeak', ]
1695
+ mimetypes = ['text/x-newspeak']
1696
+
1697
+ tokens = {
1698
+ 'root' : [
1699
+ (r'\b(Newsqueak2)\b',Keyword.Declaration),
1700
+ (r"'[^']*'",String),
1701
+ (r'\b(class)(\s+)([a-zA-Z0-9_]+)(\s*)',
1702
+ bygroups(Keyword.Declaration,Text,Name.Class,Text)),
1703
+ (r'\b(mixin|self|super|private|public|protected|nil|true|false)\b',
1704
+ Keyword),
1705
+ (r'([a-zA-Z0-9_]+\:)(\s*)([a-zA-Z_]\w+)',
1706
+ bygroups(Name.Function,Text,Name.Variable)),
1707
+ (r'([a-zA-Z0-9_]+)(\s*)(=)',
1708
+ bygroups(Name.Attribute,Text,Operator)),
1709
+ (r'<[a-zA-Z0-9_]+>', Comment.Special),
1710
+ include('expressionstat'),
1711
+ include('whitespace')
1712
+ ],
1713
+
1714
+ 'expressionstat': [
1715
+ (r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),
1716
+ (r'\d+', Number.Integer),
1717
+ (r':\w+',Name.Variable),
1718
+ (r'(\w+)(::)', bygroups(Name.Variable, Operator)),
1719
+ (r'\w+:', Name.Function),
1720
+ (r'\w+', Name.Variable),
1721
+ (r'\(|\)', Punctuation),
1722
+ (r'\[|\]', Punctuation),
1723
+ (r'\{|\}', Punctuation),
1724
+
1725
+ (r'(\^|\+|\/|~|\*|<|>|=|@|%|\||&|\?|!|,|-|:)', Operator),
1726
+ (r'\.|;', Punctuation),
1727
+ include('whitespace'),
1728
+ include('literals'),
1729
+ ],
1730
+ 'literals': [
1731
+ (r'\$.', String),
1732
+ (r"'[^']*'", String),
1733
+ (r"#'[^']*'", String.Symbol),
1734
+ (r"#\w+:?", String.Symbol),
1735
+ (r"#(\+|\/|~|\*|<|>|=|@|%|\||&|\?|!|,|-)+", String.Symbol)
1736
+
1737
+ ],
1738
+ 'whitespace' : [
1739
+ (r'\s+', Text),
1740
+ (r'"[^"]*"', Comment)
1741
+ ]
1742
+ }
1743
+
1744
+
1745
+ class GherkinLexer(RegexLexer):
1746
+ """
1747
+ For `Gherkin <http://github.com/aslakhellesoy/gherkin/>` syntax.
1748
+
1749
+ *New in Pygments 1.2.*
1750
+ """
1751
+ name = 'Gherkin'
1752
+ aliases = ['Cucumber', 'cucumber', 'Gherkin', 'gherkin']
1753
+ filenames = ['*.feature']
1754
+ mimetypes = ['text/x-gherkin']
1755
+
1756
+ feature_keywords = ur'^(기능|機能|功能|フィーチャ|خاصية|תכונה|Функціонал|Функционалност|Функционал|Фича|Особина|Могућност|Özellik|Właściwość|Tính năng|Trajto|Savybė|Požiadavka|Požadavek|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Fīča|Funzionalità|Funktionalität|Funkcionalnost|Funkcionalitāte|Funcționalitate|Functionaliteit|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Feature|Egenskap|Egenskab|Crikey|Característica|Arwedd)(:)(.*)$'
1757
+ feature_element_keywords = ur'^(\s*)(시나리오 개요|시나리오|배경|背景|場景大綱|場景|场景大纲|场景|劇本大綱|劇本|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|シナリオ|سيناريو مخطط|سيناريو|الخلفية|תרחיש|תבנית תרחיש|רקע|Тарих|Сценарій|Сценарио|Сценарий структураси|Сценарий|Структура сценарію|Структура сценарија|Структура сценария|Скица|Рамка на сценарий|Пример|Предыстория|Предистория|Позадина|Передумова|Основа|Концепт|Контекст|Założenia|Wharrimean is|Tình huống|The thing of it is|Tausta|Taust|Tapausaihio|Tapaus|Szenariogrundriss|Szenario|Szablon scenariusza|Stsenaarium|Struktura scenarija|Skica|Skenario konsep|Skenario|Situācija|Senaryo taslağı|Senaryo|Scénář|Scénario|Schema dello scenario|Scenārijs pēc parauga|Scenārijs|Scenár|Scenaro|Scenariusz|Scenariul de şablon|Scenariul de sablon|Scenariu|Scenario Outline|Scenario Amlinellol|Scenario|Scenarijus|Scenarijaus šablonas|Scenarij|Scenarie|Rerefons|Raamstsenaarium|Primer|Pozadí|Pozadina|Pozadie|Plan du scénario|Plan du Scénario|Osnova scénáře|Osnova|Náčrt Scénáře|Náčrt Scenáru|Mate|MISHUN SRSLY|MISHUN|Kịch bản|Konturo de la scenaro|Kontext|Konteksts|Kontekstas|Kontekst|Koncept|Khung tình huống|Khung kịch bản|Háttér|Grundlage|Geçmiş|Forgatókönyv vázlat|Forgatókönyv|Fono|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l\'escenari|Escenario|Escenari|Dis is what went down|Dasar|Contexto|Contexte|Contesto|Condiţii|Conditii|Cenário|Cenario|Cefndir|Bối cảnh|Blokes|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|All y\'all|Achtergrond|Abstrakt Scenario|Abstract Scenario)(:)(.*)$'
1758
+ examples_keywords = ur'^(\s*)(예|例子|例|サンプル|امثلة|דוגמאות|Сценарији|Примери|Приклади|Мисоллар|Значения|Örnekler|Voorbeelden|Variantai|Tapaukset|Scenarios|Scenariji|Scenarijai|Příklady|Példák|Príklady|Przykłady|Primjeri|Primeri|Piemēri|Pavyzdžiai|Paraugs|Juhtumid|Exemplos|Exemples|Exemplele|Exempel|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|EXAMPLZ|Dữ liệu|Contoh|Cobber|Beispiele)(:)(.*)$'
1759
+ step_keywords = ur'^(\s*)(하지만|조건|먼저|만일|만약|단|그리고|그러면|那麼|那么|而且|當|当|前提|假設|假如|但是|但し|並且|もし|ならば|ただし|しかし|かつ|و |متى |لكن |عندما |ثم |بفرض |اذاً |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Унда |То |Припустимо, що |Припустимо |Онда |Но |Нехай |Лекин |Когато |Када |Кад |К тому же |И |Задато |Задати |Задате |Если |Допустим |Дадено |Ва |Бирок |Аммо |Али |Але |Агар |А |І |Și |És |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Youse know when youse got |Youse know like when |Yna |Ya know how |Ya gotta |Y |Wun |Wtedy |When y\'all |When |Wenn |WEN |Và |Ve |Und |Un |Thì |Then y\'all |Then |Tapi |Tak |Tada |Tad |Så |Stel |Soit |Siis |Si |Sed |Se |Quando |Quand |Quan |Pryd |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Når |När |Niin |Nhưng |N |Mutta |Men |Mas |Maka |Majd |Mais |Maar |Ma |Lorsque |Lorsqu\'|Kun |Kuid |Kui |Khi |Keď |Ketika |Když |Kaj |Kai |Kada |Kad |Jeżeli |Ja |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y\'all |Given |Gitt |Gegeven |Gegeben sei |Fakat |Eğer ki |Etant donné |Et |Então |Entonces |Entao |En |Eeldades |E |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Dengan |Den youse gotta |De |Dato |Dar |Dann |Dan |Dado |Dacă |Daca |DEN |Când |Cuando |Cho |Cept |Cand |Cal |But y\'all |But |Buh |Biết |Bet |BUT |Atès |Atunci |Atesa |Anrhegedig a |Angenommen |And y\'all |And |An |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Aber |AN |A také |A |\* )'
1760
+
1761
+ tokens = {
1762
+ 'comments': [
1763
+ (r'#.*$', Comment),
1764
+ ],
1765
+ 'feature_elements' : [
1766
+ (step_keywords, Keyword, "step_content_stack"),
1767
+ include('comments'),
1768
+ (r"(\s|.)", Name.Function),
1769
+ ],
1770
+ 'feature_elements_on_stack' : [
1771
+ (step_keywords, Keyword, "#pop:2"),
1772
+ include('comments'),
1773
+ (r"(\s|.)", Name.Function),
1774
+ ],
1775
+ 'examples_table': [
1776
+ (r"\s+\|", Keyword, 'examples_table_header'),
1777
+ include('comments'),
1778
+ (r"(\s|.)", Name.Function),
1779
+ ],
1780
+ 'examples_table_header': [
1781
+ (r"\s+\|\s*$", Keyword, "#pop:2"),
1782
+ include('comments'),
1783
+ (r"\s*\|", Keyword),
1784
+ (r"[^\|]", Name.Variable),
1785
+ ],
1786
+ 'scenario_sections_on_stack': [
1787
+ (feature_element_keywords, bygroups(Name.Function, Keyword, Keyword, Name.Function), "feature_elements_on_stack"),
1788
+ ],
1789
+ 'narrative': [
1790
+ include('scenario_sections_on_stack'),
1791
+ (r"(\s|.)", Name.Function),
1792
+ ],
1793
+ 'table_vars': [
1794
+ (r'(<[^>]+>)', Name.Variable),
1795
+ ],
1796
+ 'numbers': [
1797
+ (r'(\d+\.?\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', String),
1798
+ ],
1799
+ 'string': [
1800
+ include('table_vars'),
1801
+ (r'(\s|.)', String),
1802
+ ],
1803
+ 'py_string': [
1804
+ (r'"""', Keyword, "#pop"),
1805
+ include('string'),
1806
+ ],
1807
+ 'step_content_root':[
1808
+ (r"$", Keyword, "#pop"),
1809
+ include('step_content'),
1810
+ ],
1811
+ 'step_content_stack':[
1812
+ (r"$", Keyword, "#pop:2"),
1813
+ include('step_content'),
1814
+ ],
1815
+ 'step_content':[
1816
+ (r'"', Name.Function, "double_string"),
1817
+ include('table_vars'),
1818
+ include('numbers'),
1819
+ include('comments'),
1820
+ (r'(\s|.)', Name.Function),
1821
+ ],
1822
+ 'table_content': [
1823
+ (r"\s+\|\s*$", Keyword, "#pop"),
1824
+ include('comments'),
1825
+ (r"\s*\|", Keyword),
1826
+ include('string'),
1827
+ ],
1828
+ 'double_string': [
1829
+ (r'"', Name.Function, "#pop"),
1830
+ include('string'),
1831
+ ],
1832
+ 'root': [
1833
+ (r'\n', Name.Function),
1834
+ include('comments'),
1835
+ (r'"""', Keyword, "py_string"),
1836
+ (r'\s+\|', Keyword, 'table_content'),
1837
+ (r'"', Name.Function, "double_string"),
1838
+ include('table_vars'),
1839
+ include('numbers'),
1840
+ (r'(\s*)(@[^@\r\n\t ]+)', bygroups(Name.Function, Name.Tag)),
1841
+ (step_keywords, bygroups(Name.Function, Keyword),
1842
+ 'step_content_root'),
1843
+ (feature_keywords, bygroups(Keyword, Keyword, Name.Function),
1844
+ 'narrative'),
1845
+ (feature_element_keywords,
1846
+ bygroups(Name.Function, Keyword, Keyword, Name.Function),
1847
+ 'feature_elements'),
1848
+ (examples_keywords,
1849
+ bygroups(Name.Function, Keyword, Keyword, Name.Function),
1850
+ 'examples_table'),
1851
+ (r'(\s|.)', Name.Function),
1852
+ ]
1853
+ }
1854
+
1855
+ class AsymptoteLexer(RegexLexer):
1856
+ """
1857
+ For `Asymptote <http://asymptote.sf.net/>`_ source code.
1858
+
1859
+ *New in Pygments 1.2.*
1860
+ """
1861
+ name = 'Asymptote'
1862
+ aliases = ['asy', 'asymptote']
1863
+ filenames = ['*.asy']
1864
+ mimetypes = ['text/x-asymptote']
1865
+
1866
+ #: optional Comment or Whitespace
1867
+ _ws = r'(?:\s|//.*?\n|/\*.*?\*/)+'
1868
+
1869
+ tokens = {
1870
+ 'whitespace': [
1871
+ (r'\n', Text),
1872
+ (r'\s+', Text),
1873
+ (r'\\\n', Text), # line continuation
1874
+ (r'//(\n|(.|\n)*?[^\\]\n)', Comment),
1875
+ (r'/(\\\n)?\*(.|\n)*?\*(\\\n)?/', Comment),
1876
+ ],
1877
+ 'statements': [
1878
+ # simple string (TeX friendly)
1879
+ (r'"(\\\\|\\"|[^"])*"', String),
1880
+ # C style string (with character escapes)
1881
+ (r"'", String, 'string'),
1882
+ (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?', Number.Float),
1883
+ (r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),
1884
+ (r'0x[0-9a-fA-F]+[Ll]?', Number.Hex),
1885
+ (r'0[0-7]+[Ll]?', Number.Oct),
1886
+ (r'\d+[Ll]?', Number.Integer),
1887
+ (r'[~!%^&*+=|?:<>/-]', Operator),
1888
+ (r'[()\[\],.]', Punctuation),
1889
+ (r'\b(case)(.+?)(:)', bygroups(Keyword, using(this), Text)),
1890
+ (r'(and|controls|tension|atleast|curl|if|else|while|for|do|'
1891
+ r'return|break|continue|struct|typedef|new|access|import|'
1892
+ r'unravel|from|include|quote|static|public|private|restricted|'
1893
+ r'this|explicit|true|false|null|cycle|newframe|operator)\b', Keyword),
1894
+ # Since an asy-type-name can be also an asy-function-name,
1895
+ # in the following we test if the string " [a-zA-Z]" follows
1896
+ # the Keyword.Type.
1897
+ # Of course it is not perfect !
1898
+ (r'(Braid|FitResult|Label|Legend|TreeNode|abscissa|arc|arrowhead|'
1899
+ r'binarytree|binarytreeNode|block|bool|bool3|bounds|bqe|circle|'
1900
+ r'conic|coord|coordsys|cputime|ellipse|file|filltype|frame|grid3|'
1901
+ r'guide|horner|hsv|hyperbola|indexedTransform|int|inversion|key|'
1902
+ r'light|line|linefit|marginT|marker|mass|object|pair|parabola|path|'
1903
+ r'path3|pen|picture|point|position|projection|real|revolution|'
1904
+ r'scaleT|scientific|segment|side|slice|splitface|string|surface|'
1905
+ r'tensionSpecifier|ticklocate|ticksgridT|tickvalues|transform|'
1906
+ r'transformation|tree|triangle|trilinear|triple|vector|'
1907
+ r'vertex|void)(?=([ ]{1,}[a-zA-Z]))', Keyword.Type),
1908
+ # Now the asy-type-name which are not asy-function-name
1909
+ # except yours !
1910
+ # Perhaps useless
1911
+ (r'(Braid|FitResult|TreeNode|abscissa|arrowhead|block|bool|bool3|'
1912
+ r'bounds|coord|frame|guide|horner|int|linefit|marginT|pair|pen|'
1913
+ r'picture|position|real|revolution|slice|splitface|ticksgridT|'
1914
+ r'tickvalues|tree|triple|vertex|void)\b', Keyword.Type),
1915
+ ('[a-zA-Z_][a-zA-Z0-9_]*:(?!:)', Name.Label),
1916
+ ('[a-zA-Z_][a-zA-Z0-9_]*', Name),
1917
+ ],
1918
+ 'root': [
1919
+ include('whitespace'),
1920
+ # functions
1921
+ (r'((?:[a-zA-Z0-9_*\s])+?(?:\s|\*))' # return arguments
1922
+ r'([a-zA-Z_][a-zA-Z0-9_]*)' # method name
1923
+ r'(\s*\([^;]*?\))' # signature
1924
+ r'(' + _ws + r')({)',
1925
+ bygroups(using(this), Name.Function, using(this), using(this),
1926
+ Punctuation),
1927
+ 'function'),
1928
+ # function declarations
1929
+ (r'((?:[a-zA-Z0-9_*\s])+?(?:\s|\*))' # return arguments
1930
+ r'([a-zA-Z_][a-zA-Z0-9_]*)' # method name
1931
+ r'(\s*\([^;]*?\))' # signature
1932
+ r'(' + _ws + r')(;)',
1933
+ bygroups(using(this), Name.Function, using(this), using(this),
1934
+ Punctuation)),
1935
+ ('', Text, 'statement'),
1936
+ ],
1937
+ 'statement' : [
1938
+ include('whitespace'),
1939
+ include('statements'),
1940
+ ('[{}]', Punctuation),
1941
+ (';', Punctuation, '#pop'),
1942
+ ],
1943
+ 'function': [
1944
+ include('whitespace'),
1945
+ include('statements'),
1946
+ (';', Punctuation),
1947
+ ('{', Punctuation, '#push'),
1948
+ ('}', Punctuation, '#pop'),
1949
+ ],
1950
+ 'string': [
1951
+ (r"'", String, '#pop'),
1952
+ (r'\\([\\abfnrtv"\'?]|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape),
1953
+ (r'\n', String),
1954
+ (r"[^\\'\n]+", String), # all other characters
1955
+ (r'\\\n', String),
1956
+ (r'\\n', String), # line continuation
1957
+ (r'\\', String), # stray backslash
1958
+ ]
1959
+ }
1960
+
1961
+ def get_tokens_unprocessed(self, text):
1962
+ from pygments.lexers._asybuiltins import ASYFUNCNAME, ASYVARNAME
1963
+ for index, token, value in \
1964
+ RegexLexer.get_tokens_unprocessed(self, text):
1965
+ if token is Name and value in ASYFUNCNAME:
1966
+ token = Name.Function
1967
+ elif token is Name and value in ASYVARNAME:
1968
+ token = Name.Variable
1969
+ yield index, token, value
1970
+
1971
+
1972
+ class PostScriptLexer(RegexLexer):
1973
+ """
1974
+ Lexer for PostScript files.
1975
+
1976
+ The PostScript Language Reference published by Adobe at
1977
+ <http://partners.adobe.com/public/developer/en/ps/PLRM.pdf>
1978
+ is the authority for this.
1979
+
1980
+ *New in Pygments 1.4.*
1981
+ """
1982
+ name = 'PostScript'
1983
+ aliases = ['postscript', 'postscr']
1984
+ filenames = ['*.ps', '*.eps']
1985
+ mimetypes = ['application/postscript']
1986
+
1987
+ delimiter = r'\(\)\<\>\[\]\{\}\/\%\s'
1988
+ delimiter_end = r'(?=[%s])' % delimiter
1989
+
1990
+ valid_name_chars = r'[^%s]' % delimiter
1991
+ valid_name = r"%s+%s" % (valid_name_chars, delimiter_end)
1992
+
1993
+ tokens = {
1994
+ 'root': [
1995
+ # All comment types
1996
+ (r'^%!.+\n', Comment.Preproc),
1997
+ (r'%%.*\n', Comment.Special),
1998
+ (r'(^%.*\n){2,}', Comment.Multiline),
1999
+ (r'%.*\n', Comment.Single),
2000
+
2001
+ # String literals are awkward; enter separate state.
2002
+ (r'\(', String, 'stringliteral'),
2003
+
2004
+ (r'[\{\}(\<\<)(\>\>)\[\]]', Punctuation),
2005
+
2006
+ # Numbers
2007
+ (r'<[0-9A-Fa-f]+>' + delimiter_end, Number.Hex),
2008
+ # Slight abuse: use Oct to signify any explicit base system
2009
+ (r'[0-9]+\#(\-|\+)?([0-9]+\.?|[0-9]*\.[0-9]+|[0-9]+\.[0-9]*)'
2010
+ r'((e|E)[0-9]+)?' + delimiter_end, Number.Oct),
2011
+ (r'(\-|\+)?([0-9]+\.?|[0-9]*\.[0-9]+|[0-9]+\.[0-9]*)((e|E)[0-9]+)?'
2012
+ + delimiter_end, Number.Float),
2013
+ (r'(\-|\+)?[0-9]+' + delimiter_end, Number.Integer),
2014
+
2015
+ # References
2016
+ (r'\/%s' % valid_name, Name.Variable),
2017
+
2018
+ # Names
2019
+ (valid_name, Name.Function), # Anything else is executed
2020
+
2021
+ # These keywords taken from
2022
+ # <http://www.math.ubc.ca/~cass/graphics/manual/pdf/a1.pdf>
2023
+ # Is there an authoritative list anywhere that doesn't involve
2024
+ # trawling documentation?
2025
+
2026
+ (r'(false|true)' + delimiter_end, Keyword.Constant),
2027
+
2028
+ # Conditionals / flow control
2029
+ (r'(eq|ne|ge|gt|le|lt|and|or|not|if|ifelse|for|forall)'
2030
+ + delimiter_end, Keyword.Reserved),
2031
+
2032
+ ('(abs|add|aload|arc|arcn|array|atan|begin|bind|ceiling|charpath|'
2033
+ 'clip|closepath|concat|concatmatrix|copy|cos|currentlinewidth|'
2034
+ 'currentmatrix|currentpoint|curveto|cvi|cvs|def|defaultmatrix|'
2035
+ 'dict|dictstackoverflow|div|dtransform|dup|end|exch|exec|exit|exp|'
2036
+ 'fill|findfont|floor|get|getinterval|grestore|gsave|gt|'
2037
+ 'identmatrix|idiv|idtransform|index|invertmatrix|itransform|'
2038
+ 'length|lineto|ln|load|log|loop|matrix|mod|moveto|mul|neg|newpath|'
2039
+ 'pathforall|pathbbox|pop|print|pstack|put|quit|rand|rangecheck|'
2040
+ 'rcurveto|repeat|restore|rlineto|rmoveto|roll|rotate|round|run|'
2041
+ 'save|scale|scalefont|setdash|setfont|setgray|setlinecap|'
2042
+ 'setlinejoin|setlinewidth|setmatrix|setrgbcolor|shfill|show|'
2043
+ 'showpage|sin|sqrt|stack|stringwidth|stroke|strokepath|sub|'
2044
+ 'syntaxerror|transform|translate|truncate|typecheck|undefined|'
2045
+ 'undefinedfilename|undefinedresult)' + delimiter_end,
2046
+ Name.Builtin),
2047
+
2048
+ (r'\s+', Text),
2049
+ ],
2050
+
2051
+ 'stringliteral': [
2052
+ (r'[^\(\)\\]+', String),
2053
+ (r'\\', String.Escape, 'escape'),
2054
+ (r'\(', String, '#push'),
2055
+ (r'\)', String, '#pop'),
2056
+ ],
2057
+
2058
+ 'escape': [
2059
+ (r'([0-8]{3}|n|r|t|b|f|\\|\(|\))?', String.Escape, '#pop'),
2060
+ ],
2061
+ }
2062
+
2063
+
2064
+ class AutohotkeyLexer(RegexLexer):
2065
+ """
2066
+ For `autohotkey <http://www.autohotkey.com/>`_ source code.
2067
+
2068
+ *New in Pygments 1.4.*
2069
+ """
2070
+ name = 'autohotkey'
2071
+ aliases = ['ahk', 'autohotkey']
2072
+ filenames = ['*.ahk', '*.ahkl']
2073
+ mimetypes = ['text/x-autohotkey']
2074
+
2075
+ tokens = {
2076
+ 'root': [
2077
+ (r'^(\s*)(/\*)', bygroups(Text, Comment.Multiline),
2078
+ 'incomment'),
2079
+ (r'^(\s*)(\()', bygroups(Text, Generic), 'incontinuation'),
2080
+ (r'\s+;.*?$', Comment.Singleline),
2081
+ (r'^;.*?$', Comment.Singleline),
2082
+ (r'[]{}(),;[]', Punctuation),
2083
+ (r'(in|is|and|or|not)\b', Operator.Word),
2084
+ (r'\%[a-zA-Z_#@$][a-zA-Z0-9_#@$]*\%', Name.Variable),
2085
+ (r'!=|==|:=|\.=|<<|>>|[-~+/*%=<>&^|?:!.]', Operator),
2086
+ include('commands'),
2087
+ include('labels'),
2088
+ include('builtInFunctions'),
2089
+ include('builtInVariables'),
2090
+ (r'"', String, combined('stringescape', 'dqs')),
2091
+ include('numbers'),
2092
+ (r'[a-zA-Z_#@$][a-zA-Z0-9_#@$]*', Name),
2093
+ (r'\\|\'', Text),
2094
+ (r'\`([\,\%\`abfnrtv\-\+;])', String.Escape),
2095
+ include('garbage'),
2096
+ ],
2097
+ 'incomment': [
2098
+ (r'^\s*\*/', Comment.Multiline, '#pop'),
2099
+ (r'[^*/]', Comment.Multiline),
2100
+ (r'[*/]', Comment.Multiline)
2101
+ ],
2102
+ 'incontinuation': [
2103
+ (r'^\s*\)', Generic, '#pop'),
2104
+ (r'[^)]', Generic),
2105
+ (r'[)]', Generic),
2106
+ ],
2107
+ 'commands': [
2108
+ (r'(?i)^(\s*)(global|local|static|'
2109
+ r'#AllowSameLineComments|#ClipboardTimeout|#CommentFlag|'
2110
+ r'#ErrorStdOut|#EscapeChar|#HotkeyInterval|#HotkeyModifierTimeout|'
2111
+ r'#Hotstring|#IfWinActive|#IfWinExist|#IfWinNotActive|'
2112
+ r'#IfWinNotExist|#IncludeAgain|#Include|#InstallKeybdHook|'
2113
+ r'#InstallMouseHook|#KeyHistory|#LTrim|#MaxHotkeysPerInterval|'
2114
+ r'#MaxMem|#MaxThreads|#MaxThreadsBuffer|#MaxThreadsPerHotkey|'
2115
+ r'#NoEnv|#NoTrayIcon|#Persistent|#SingleInstance|#UseHook|'
2116
+ r'#WinActivateForce|AutoTrim|BlockInput|Break|Click|ClipWait|'
2117
+ r'Continue|Control|ControlClick|ControlFocus|ControlGetFocus|'
2118
+ r'ControlGetPos|ControlGetText|ControlGet|ControlMove|ControlSend|'
2119
+ r'ControlSendRaw|ControlSetText|CoordMode|Critical|'
2120
+ r'DetectHiddenText|DetectHiddenWindows|Drive|DriveGet|'
2121
+ r'DriveSpaceFree|Edit|Else|EnvAdd|EnvDiv|EnvGet|EnvMult|EnvSet|'
2122
+ r'EnvSub|EnvUpdate|Exit|ExitApp|FileAppend|'
2123
+ r'FileCopy|FileCopyDir|FileCreateDir|FileCreateShortcut|'
2124
+ r'FileDelete|FileGetAttrib|FileGetShortcut|FileGetSize|'
2125
+ r'FileGetTime|FileGetVersion|FileInstall|FileMove|FileMoveDir|'
2126
+ r'FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|'
2127
+ r'FileRemoveDir|FileSelectFile|FileSelectFolder|FileSetAttrib|'
2128
+ r'FileSetTime|FormatTime|GetKeyState|Gosub|Goto|GroupActivate|'
2129
+ r'GroupAdd|GroupClose|GroupDeactivate|Gui|GuiControl|'
2130
+ r'GuiControlGet|Hotkey|IfEqual|IfExist|IfGreaterOrEqual|IfGreater|'
2131
+ r'IfInString|IfLess|IfLessOrEqual|IfMsgBox|IfNotEqual|IfNotExist|'
2132
+ r'IfNotInString|IfWinActive|IfWinExist|IfWinNotActive|'
2133
+ r'IfWinNotExist|If |ImageSearch|IniDelete|IniRead|IniWrite|'
2134
+ r'InputBox|Input|KeyHistory|KeyWait|ListHotkeys|ListLines|'
2135
+ r'ListVars|Loop|Menu|MouseClickDrag|MouseClick|MouseGetPos|'
2136
+ r'MouseMove|MsgBox|OnExit|OutputDebug|Pause|PixelGetColor|'
2137
+ r'PixelSearch|PostMessage|Process|Progress|Random|RegDelete|'
2138
+ r'RegRead|RegWrite|Reload|Repeat|Return|RunAs|RunWait|Run|'
2139
+ r'SendEvent|SendInput|SendMessage|SendMode|SendPlay|SendRaw|Send|'
2140
+ r'SetBatchLines|SetCapslockState|SetControlDelay|'
2141
+ r'SetDefaultMouseSpeed|SetEnv|SetFormat|SetKeyDelay|'
2142
+ r'SetMouseDelay|SetNumlockState|SetScrollLockState|'
2143
+ r'SetStoreCapslockMode|SetTimer|SetTitleMatchMode|'
2144
+ r'SetWinDelay|SetWorkingDir|Shutdown|Sleep|Sort|SoundBeep|'
2145
+ r'SoundGet|SoundGetWaveVolume|SoundPlay|SoundSet|'
2146
+ r'SoundSetWaveVolume|SplashImage|SplashTextOff|SplashTextOn|'
2147
+ r'SplitPath|StatusBarGetText|StatusBarWait|StringCaseSense|'
2148
+ r'StringGetPos|StringLeft|StringLen|StringLower|StringMid|'
2149
+ r'StringReplace|StringRight|StringSplit|StringTrimLeft|'
2150
+ r'StringTrimRight|StringUpper|Suspend|SysGet|Thread|ToolTip|'
2151
+ r'Transform|TrayTip|URLDownloadToFile|While|WinActivate|'
2152
+ r'WinActivateBottom|WinClose|WinGetActiveStats|WinGetActiveTitle|'
2153
+ r'WinGetClass|WinGetPos|WinGetText|WinGetTitle|WinGet|WinHide|'
2154
+ r'WinKill|WinMaximize|WinMenuSelectItem|WinMinimizeAllUndo|'
2155
+ r'WinMinimizeAll|WinMinimize|WinMove|WinRestore|WinSetTitle|'
2156
+ r'WinSet|WinShow|WinWaitActive|WinWaitClose|WinWaitNotActive|'
2157
+ r'WinWait)\b', bygroups(Text, Name.Builtin)),
2158
+ ],
2159
+ 'builtInFunctions': [
2160
+ (r'(?i)(Abs|ACos|Asc|ASin|ATan|Ceil|Chr|Cos|DllCall|Exp|FileExist|'
2161
+ r'Floor|GetKeyState|IL_Add|IL_Create|IL_Destroy|InStr|IsFunc|'
2162
+ r'IsLabel|Ln|Log|LV_Add|LV_Delete|LV_DeleteCol|LV_GetCount|'
2163
+ r'LV_GetNext|LV_GetText|LV_Insert|LV_InsertCol|LV_Modify|'
2164
+ r'LV_ModifyCol|LV_SetImageList|Mod|NumGet|NumPut|OnMessage|'
2165
+ r'RegExMatch|RegExReplace|RegisterCallback|Round|SB_SetIcon|'
2166
+ r'SB_SetParts|SB_SetText|Sin|Sqrt|StrLen|SubStr|Tan|TV_Add|'
2167
+ r'TV_Delete|TV_GetChild|TV_GetCount|TV_GetNext|TV_Get|'
2168
+ r'TV_GetParent|TV_GetPrev|TV_GetSelection|TV_GetText|TV_Modify|'
2169
+ r'VarSetCapacity|WinActive|WinExist|Object|ComObjActive|'
2170
+ r'ComObjArray|ComObjEnwrap|ComObjUnwrap|ComObjParameter|'
2171
+ r'ComObjType|ComObjConnect|ComObjCreate|ComObjGet|ComObjError|'
2172
+ r'ComObjValue|Insert|MinIndex|MaxIndex|Remove|SetCapacity|'
2173
+ r'GetCapacity|GetAddress|_NewEnum|FileOpen|Read|Write|ReadLine|'
2174
+ r'WriteLine|ReadNumType|WriteNumType|RawRead|RawWrite|Seek|Tell|'
2175
+ r'Close|Next|IsObject|StrPut|StrGet|Trim|LTrim|RTrim)\b',
2176
+ Name.Function),
2177
+ ],
2178
+ 'builtInVariables': [
2179
+ (r'(?i)(A_AhkPath|A_AhkVersion|A_AppData|A_AppDataCommon|'
2180
+ r'A_AutoTrim|A_BatchLines|A_CaretX|A_CaretY|A_ComputerName|'
2181
+ r'A_ControlDelay|A_Cursor|A_DDDD|A_DDD|A_DD|A_DefaultMouseSpeed|'
2182
+ r'A_Desktop|A_DesktopCommon|A_DetectHiddenText|'
2183
+ r'A_DetectHiddenWindows|A_EndChar|A_EventInfo|A_ExitReason|'
2184
+ r'A_FormatFloat|A_FormatInteger|A_Gui|A_GuiEvent|A_GuiControl|'
2185
+ r'A_GuiControlEvent|A_GuiHeight|A_GuiWidth|A_GuiX|A_GuiY|A_Hour|'
2186
+ r'A_IconFile|A_IconHidden|A_IconNumber|A_IconTip|A_Index|'
2187
+ r'A_IPAddress1|A_IPAddress2|A_IPAddress3|A_IPAddress4|A_ISAdmin|'
2188
+ r'A_IsCompiled|A_IsCritical|A_IsPaused|A_IsSuspended|A_KeyDelay|'
2189
+ r'A_Language|A_LastError|A_LineFile|A_LineNumber|A_LoopField|'
2190
+ r'A_LoopFileAttrib|A_LoopFileDir|A_LoopFileExt|A_LoopFileFullPath|'
2191
+ r'A_LoopFileLongPath|A_LoopFileName|A_LoopFileShortName|'
2192
+ r'A_LoopFileShortPath|A_LoopFileSize|A_LoopFileSizeKB|'
2193
+ r'A_LoopFileSizeMB|A_LoopFileTimeAccessed|A_LoopFileTimeCreated|'
2194
+ r'A_LoopFileTimeModified|A_LoopReadLine|A_LoopRegKey|'
2195
+ r'A_LoopRegName|A_LoopRegSubkey|A_LoopRegTimeModified|'
2196
+ r'A_LoopRegType|A_MDAY|A_Min|A_MM|A_MMM|A_MMMM|A_Mon|A_MouseDelay|'
2197
+ r'A_MSec|A_MyDocuments|A_Now|A_NowUTC|A_NumBatchLines|A_OSType|'
2198
+ r'A_OSVersion|A_PriorHotkey|A_ProgramFiles|A_Programs|'
2199
+ r'A_ProgramsCommon|A_ScreenHeight|A_ScreenWidth|A_ScriptDir|'
2200
+ r'A_ScriptFullPath|A_ScriptName|A_Sec|A_Space|A_StartMenu|'
2201
+ r'A_StartMenuCommon|A_Startup|A_StartupCommon|A_StringCaseSense|'
2202
+ r'A_Tab|A_Temp|A_ThisFunc|A_ThisHotkey|A_ThisLabel|A_ThisMenu|'
2203
+ r'A_ThisMenuItem|A_ThisMenuItemPos|A_TickCount|A_TimeIdle|'
2204
+ r'A_TimeIdlePhysical|A_TimeSincePriorHotkey|A_TimeSinceThisHotkey|'
2205
+ r'A_TitleMatchMode|A_TitleMatchModeSpeed|A_UserName|A_WDay|'
2206
+ r'A_WinDelay|A_WinDir|A_WorkingDir|A_YDay|A_YEAR|A_YWeek|A_YYYY|'
2207
+ r'Clipboard|ClipboardAll|ComSpec|ErrorLevel|ProgramFiles|True|'
2208
+ r'False|A_IsUnicode|A_FileEncoding|A_OSVersion|A_PtrSize)\b',
2209
+ Name.Variable),
2210
+ ],
2211
+ 'labels': [
2212
+ # hotkeys and labels
2213
+ # technically, hotkey names are limited to named keys and buttons
2214
+ (r'(^\s*)([^:\s\(\"]+?:{1,2})', bygroups(Text, Name.Label)),
2215
+ (r'(^\s*)(::[^:\s]+?::)', bygroups(Text, Name.Label)),
2216
+ ],
2217
+ 'numbers': [
2218
+ (r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number.Float),
2219
+ (r'\d+[eE][+-]?[0-9]+', Number.Float),
2220
+ (r'0\d+', Number.Oct),
2221
+ (r'0[xX][a-fA-F0-9]+', Number.Hex),
2222
+ (r'\d+L', Number.Integer.Long),
2223
+ (r'\d+', Number.Integer)
2224
+ ],
2225
+ 'stringescape': [
2226
+ (r'\"\"|\`([\,\%\`abfnrtv])', String.Escape),
2227
+ ],
2228
+ 'strings': [
2229
+ (r'[^"\n]+', String),
2230
+ ],
2231
+ 'dqs': [
2232
+ (r'"', String, '#pop'),
2233
+ include('strings')
2234
+ ],
2235
+ 'garbage': [
2236
+ (r'[^\S\n]', Text),
2237
+ # (r'.', Text), # no cheating
2238
+ ],
2239
+ }
2240
+
2241
+
2242
+ class MaqlLexer(RegexLexer):
2243
+ """
2244
+ Lexer for `GoodData MAQL
2245
+ <https://secure.gooddata.com/docs/html/advanced.metric.tutorial.html>`_
2246
+ scripts.
2247
+
2248
+ *New in Pygments 1.4.*
2249
+ """
2250
+
2251
+ name = 'MAQL'
2252
+ aliases = ['maql']
2253
+ filenames = ['*.maql']
2254
+ mimetypes = ['text/x-gooddata-maql','application/x-gooddata-maql']
2255
+
2256
+ flags = re.IGNORECASE
2257
+ tokens = {
2258
+ 'root': [
2259
+ # IDENTITY
2260
+ (r'IDENTIFIER\b', Name.Builtin),
2261
+ # IDENTIFIER
2262
+ (r'\{[^}]+\}', Name.Variable),
2263
+ # NUMBER
2264
+ (r'[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]{1,3})?', Literal.Number),
2265
+ # STRING
2266
+ (r'"', Literal.String, 'string-literal'),
2267
+ # RELATION
2268
+ (r'\<\>|\!\=', Operator),
2269
+ (r'\=|\>\=|\>|\<\=|\<', Operator),
2270
+ # :=
2271
+ (r'\:\=', Operator),
2272
+ # OBJECT
2273
+ (r'\[[^]]+\]', Name.Variable.Class),
2274
+ # keywords
2275
+ (r'(DIMENSIONS?|BOTTOM|METRIC|COUNT|OTHER|FACT|WITH|TOP|OR|'
2276
+ r'ATTRIBUTE|CREATE|PARENT|FALSE|ROWS?|FROM|ALL|AS|PF|'
2277
+ r'COLUMNS?|DEFINE|REPORT|LIMIT|TABLE|LIKE|AND|BY|'
2278
+ r'BETWEEN|EXCEPT|SELECT|MATCH|WHERE|TRUE|FOR|IN|'
2279
+ r'WITHOUT|FILTER|ALIAS|ORDER|FACT|WHEN|NOT|ON|'
2280
+ r'KEYS|KEY|FULLSET|PRIMARY|LABELS|LABEL|VISUAL|'
2281
+ r'TITLE|DESCRIPTION|FOLDER|ALTER|DROP|ADD|DATASET|'
2282
+ r'DATATYPE|INT|BIGINT|DOUBLE|DATE|VARCHAR|DECIMAL|'
2283
+ r'SYNCHRONIZE|TYPE|DEFAULT|ORDER|ASC|DESC|HYPERLINK|'
2284
+ r'INCLUDE|TEMPLATE|MODIFY)\b', Keyword),
2285
+ # FUNCNAME
2286
+ (r'[a-zA-Z]\w*\b', Name.Function),
2287
+ # Comments
2288
+ (r'#.*', Comment.Single),
2289
+ # Punctuation
2290
+ (r'[,;\(\)]', Token.Punctuation),
2291
+ # Space is not significant
2292
+ (r'\s+', Text)
2293
+ ],
2294
+ 'string-literal': [
2295
+ (r'\\[tnrfbae"\\]', String.Escape),
2296
+ (r'"', Literal.String, '#pop'),
2297
+ (r'[^\\"]+', Literal.String)
2298
+ ],
2299
+ }
2300
+
2301
+
2302
+ class GoodDataCLLexer(RegexLexer):
2303
+ """
2304
+ Lexer for `GoodData-CL <http://github.com/gooddata/GoodData-CL/raw/master/cli/src/main/resources/com/gooddata/processor/COMMANDS.txt>`_
2305
+ script files.
2306
+
2307
+ *New in Pygments 1.4.*
2308
+ """
2309
+
2310
+ name = 'GoodData-CL'
2311
+ aliases = ['gooddata-cl']
2312
+ filenames = ['*.gdc']
2313
+ mimetypes = ['text/x-gooddata-cl']
2314
+
2315
+ flags = re.IGNORECASE
2316
+ tokens = {
2317
+ 'root': [
2318
+ # Comments
2319
+ (r'#.*', Comment.Single),
2320
+ # Function call
2321
+ (r'[a-zA-Z]\w*', Name.Function),
2322
+ # Argument list
2323
+ (r'\(', Token.Punctuation, 'args-list'),
2324
+ # Punctuation
2325
+ (r';', Token.Punctuation),
2326
+ # Space is not significant
2327
+ (r'\s+', Text)
2328
+ ],
2329
+ 'args-list': [
2330
+ (r'\)', Token.Punctuation, '#pop'),
2331
+ (r',', Token.Punctuation),
2332
+ (r'[a-zA-Z]\w*', Name.Variable),
2333
+ (r'=', Operator),
2334
+ (r'"', Literal.String, 'string-literal'),
2335
+ (r'[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]{1,3})?', Literal.Number),
2336
+ # Space is not significant
2337
+ (r'\s', Text)
2338
+ ],
2339
+ 'string-literal': [
2340
+ (r'\\[tnrfbae"\\]', String.Escape),
2341
+ (r'"', Literal.String, '#pop'),
2342
+ (r'[^\\"]+', Literal.String)
2343
+ ]
2344
+ }
2345
+
2346
+
2347
+ class ProtoBufLexer(RegexLexer):
2348
+ """
2349
+ Lexer for `Protocol Buffer <http://code.google.com/p/protobuf/>`_
2350
+ definition files.
2351
+
2352
+ *New in Pygments 1.4.*
2353
+ """
2354
+
2355
+ name = 'Protocol Buffer'
2356
+ aliases = ['protobuf', 'proto']
2357
+ filenames = ['*.proto']
2358
+
2359
+ tokens = {
2360
+ 'root': [
2361
+ (r'[ \t]+', Text),
2362
+ (r'[,;{}\[\]\(\)]', Punctuation),
2363
+ (r'/(\\\n)?/(\n|(.|\n)*?[^\\]\n)', Comment.Single),
2364
+ (r'/(\\\n)?\*(.|\n)*?\*(\\\n)?/', Comment.Multiline),
2365
+ (r'\b(import|option|optional|required|repeated|default|packed|'
2366
+ r'ctype|extensions|to|max|rpc|returns)\b', Keyword),
2367
+ (r'(int32|int64|uint32|uint64|sint32|sint64|'
2368
+ r'fixed32|fixed64|sfixed32|sfixed64|'
2369
+ r'float|double|bool|string|bytes)\b', Keyword.Type),
2370
+ (r'(true|false)\b', Keyword.Constant),
2371
+ (r'(package)(\s+)', bygroups(Keyword.Namespace, Text), 'package'),
2372
+ (r'(message|extend)(\s+)',
2373
+ bygroups(Keyword.Declaration, Text), 'message'),
2374
+ (r'(enum|group|service)(\s+)',
2375
+ bygroups(Keyword.Declaration, Text), 'type'),
2376
+ (r'\".*\"', String),
2377
+ (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*', Number.Float),
2378
+ (r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),
2379
+ (r'(\-?(inf|nan))', Number.Float),
2380
+ (r'0x[0-9a-fA-F]+[LlUu]*', Number.Hex),
2381
+ (r'0[0-7]+[LlUu]*', Number.Oct),
2382
+ (r'\d+[LlUu]*', Number.Integer),
2383
+ (r'[+-=]', Operator),
2384
+ (r'([a-zA-Z_][a-zA-Z0-9_\.]*)([ \t]*)(=)',
2385
+ bygroups(Name.Attribute, Text, Operator)),
2386
+ ('[a-zA-Z_][a-zA-Z0-9_\.]*', Name),
2387
+ ],
2388
+ 'package': [
2389
+ (r'[a-zA-Z_][a-zA-Z0-9_]*', Name.Namespace, '#pop')
2390
+ ],
2391
+ 'message': [
2392
+ (r'[a-zA-Z_][a-zA-Z0-9_]*', Name.Class, '#pop')
2393
+ ],
2394
+ 'type': [
2395
+ (r'[a-zA-Z_][a-zA-Z0-9_]*', Name, '#pop')
2396
+ ],
2397
+ }
2398
+
2399
+
2400
+ class HybrisLexer(RegexLexer):
2401
+ """
2402
+ For `Hybris <http://www.hybris-lang.org>`_ source code.
2403
+
2404
+ *New in Pygments 1.4.*
2405
+ """
2406
+
2407
+ name = 'Hybris'
2408
+ aliases = ['hybris', 'hy']
2409
+ filenames = ['*.hy', '*.hyb']
2410
+ mimetypes = ['text/x-hybris', 'application/x-hybris']
2411
+
2412
+ flags = re.MULTILINE | re.DOTALL
2413
+
2414
+ tokens = {
2415
+ 'root': [
2416
+ # method names
2417
+ (r'^(\s*(?:function|method|operator\s+)+?)'
2418
+ r'([a-zA-Z_][a-zA-Z0-9_]*)'
2419
+ r'(\s*)(\()', bygroups(Keyword, Name.Function, Text, Operator)),
2420
+ (r'[^\S\n]+', Text),
2421
+ (r'//.*?\n', Comment.Single),
2422
+ (r'/\*.*?\*/', Comment.Multiline),
2423
+ (r'@[a-zA-Z_][a-zA-Z0-9_\.]*', Name.Decorator),
2424
+ (r'(break|case|catch|next|default|do|else|finally|for|foreach|of|'
2425
+ r'unless|if|new|return|switch|me|throw|try|while)\b', Keyword),
2426
+ (r'(extends|private|protected|public|static|throws|function|method|'
2427
+ r'operator)\b', Keyword.Declaration),
2428
+ (r'(true|false|null|__FILE__|__LINE__|__VERSION__|__LIB_PATH__|'
2429
+ r'__INC_PATH__)\b', Keyword.Constant),
2430
+ (r'(class|struct)(\s+)',
2431
+ bygroups(Keyword.Declaration, Text), 'class'),
2432
+ (r'(import|include)(\s+)',
2433
+ bygroups(Keyword.Namespace, Text), 'import'),
2434
+ (r'(gc_collect|gc_mm_items|gc_mm_usage|gc_collect_threshold|'
2435
+ r'urlencode|urldecode|base64encode|base64decode|sha1|crc32|sha2|'
2436
+ r'md5|md5_file|acos|asin|atan|atan2|ceil|cos|cosh|exp|fabs|floor|'
2437
+ r'fmod|log|log10|pow|sin|sinh|sqrt|tan|tanh|isint|isfloat|ischar|'
2438
+ r'isstring|isarray|ismap|isalias|typeof|sizeof|toint|tostring|'
2439
+ r'fromxml|toxml|binary|pack|load|eval|var_names|var_values|'
2440
+ r'user_functions|dyn_functions|methods|call|call_method|mknod|'
2441
+ r'mkfifo|mount|umount2|umount|ticks|usleep|sleep|time|strtime|'
2442
+ r'strdate|dllopen|dlllink|dllcall|dllcall_argv|dllclose|env|exec|'
2443
+ r'fork|getpid|wait|popen|pclose|exit|kill|pthread_create|'
2444
+ r'pthread_create_argv|pthread_exit|pthread_join|pthread_kill|'
2445
+ r'smtp_send|http_get|http_post|http_download|socket|bind|listen|'
2446
+ r'accept|getsockname|getpeername|settimeout|connect|server|recv|'
2447
+ r'send|close|print|println|printf|input|readline|serial_open|'
2448
+ r'serial_fcntl|serial_get_attr|serial_get_ispeed|serial_get_ospeed|'
2449
+ r'serial_set_attr|serial_set_ispeed|serial_set_ospeed|serial_write|'
2450
+ r'serial_read|serial_close|xml_load|xml_parse|fopen|fseek|ftell|'
2451
+ r'fsize|fread|fwrite|fgets|fclose|file|readdir|pcre_replace|size|'
2452
+ r'pop|unmap|has|keys|values|length|find|substr|replace|split|trim|'
2453
+ r'remove|contains|join)\b', Name.Builtin),
2454
+ (r'(MethodReference|Runner|Dll|Thread|Pipe|Process|Runnable|'
2455
+ r'CGI|ClientSocket|Socket|ServerSocket|File|Console|Directory|'
2456
+ r'Exception)\b', Keyword.Type),
2457
+ (r'"(\\\\|\\"|[^"])*"', String),
2458
+ (r"'\\.'|'[^\\]'|'\\u[0-9a-f]{4}'", String.Char),
2459
+ (r'(\.)([a-zA-Z_][a-zA-Z0-9_]*)',
2460
+ bygroups(Operator, Name.Attribute)),
2461
+ (r'[a-zA-Z_][a-zA-Z0-9_]*:', Name.Label),
2462
+ (r'[a-zA-Z_\$][a-zA-Z0-9_]*', Name),
2463
+ (r'[~\^\*!%&\[\]\(\)\{\}<>\|+=:;,./?\-@]+', Operator),
2464
+ (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
2465
+ (r'0x[0-9a-f]+', Number.Hex),
2466
+ (r'[0-9]+L?', Number.Integer),
2467
+ (r'\n', Text),
2468
+ ],
2469
+ 'class': [
2470
+ (r'[a-zA-Z_][a-zA-Z0-9_]*', Name.Class, '#pop')
2471
+ ],
2472
+ 'import': [
2473
+ (r'[a-zA-Z0-9_.]+\*?', Name.Namespace, '#pop')
2474
+ ],
2475
+ }
2476
+
2477
+
2478
+ class AwkLexer(RegexLexer):
2479
+ """
2480
+ For Awk scripts.
2481
+
2482
+ *New in Pygments 1.5.*
2483
+ """
2484
+
2485
+ name = 'Awk'
2486
+ aliases = ['awk', 'gawk', 'mawk', 'nawk']
2487
+ filenames = ['*.awk']
2488
+ mimetypes = ['application/x-awk']
2489
+
2490
+ tokens = {
2491
+ 'commentsandwhitespace': [
2492
+ (r'\s+', Text),
2493
+ (r'#.*$', Comment.Single)
2494
+ ],
2495
+ 'slashstartsregex': [
2496
+ include('commentsandwhitespace'),
2497
+ (r'/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
2498
+ r'\B', String.Regex, '#pop'),
2499
+ (r'(?=/)', Text, ('#pop', 'badregex')),
2500
+ (r'', Text, '#pop')
2501
+ ],
2502
+ 'badregex': [
2503
+ (r'\n', Text, '#pop')
2504
+ ],
2505
+ 'root': [
2506
+ (r'^(?=\s|/)', Text, 'slashstartsregex'),
2507
+ include('commentsandwhitespace'),
2508
+ (r'\+\+|--|\|\||&&|in|\$|!?~|'
2509
+ r'(\*\*|[-<>+*%\^/!=])=?', Operator, 'slashstartsregex'),
2510
+ (r'[{(\[;,]', Punctuation, 'slashstartsregex'),
2511
+ (r'[})\].]', Punctuation),
2512
+ (r'(break|continue|do|while|exit|for|if|'
2513
+ r'return)\b', Keyword, 'slashstartsregex'),
2514
+ (r'function\b', Keyword.Declaration, 'slashstartsregex'),
2515
+ (r'(atan2|cos|exp|int|log|rand|sin|sqrt|srand|gensub|gsub|index|'
2516
+ r'length|match|split|sprintf|sub|substr|tolower|toupper|close|'
2517
+ r'fflush|getline|next|nextfile|print|printf|strftime|systime|'
2518
+ r'delete|system)\b', Keyword.Reserved),
2519
+ (r'(ARGC|ARGIND|ARGV|CONVFMT|ENVIRON|ERRNO|FIELDWIDTHS|FILENAME|FNR|FS|'
2520
+ r'IGNORECASE|NF|NR|OFMT|OFS|ORFS|RLENGTH|RS|RSTART|RT|'
2521
+ r'SUBSEP)\b', Name.Builtin),
2522
+ (r'[$a-zA-Z_][a-zA-Z0-9_]*', Name.Other),
2523
+ (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
2524
+ (r'0x[0-9a-fA-F]+', Number.Hex),
2525
+ (r'[0-9]+', Number.Integer),
2526
+ (r'"(\\\\|\\"|[^"])*"', String.Double),
2527
+ (r"'(\\\\|\\'|[^'])*'", String.Single),
2528
+ ]
2529
+ }
2530
+
2531
+
2532
+ class Cfengine3Lexer(RegexLexer):
2533
+ """
2534
+ Lexer for `CFEngine3 <http://cfengine.org>`_ policy files.
2535
+
2536
+ *New in Pygments 1.5.*
2537
+ """
2538
+
2539
+ name = 'CFEngine3'
2540
+ aliases = ['cfengine3', 'cf3']
2541
+ filenames = ['*.cf']
2542
+ mimetypes = []
2543
+
2544
+ tokens = {
2545
+ 'root': [
2546
+ (r'#.*?\n', Comment),
2547
+ (r'(body)(\s+)(\S+)(\s+)(control)',
2548
+ bygroups(Keyword, Text, Keyword, Text, Keyword)),
2549
+ (r'(body|bundle)(\s+)(\S+)(\s+)(\w+)(\()',
2550
+ bygroups(Keyword, Text, Keyword, Text, Name.Function, Punctuation),
2551
+ 'arglist'),
2552
+ (r'(body|bundle)(\s+)(\S+)(\s+)(\w+)',
2553
+ bygroups(Keyword, Text, Keyword, Text, Name.Function)),
2554
+ (r'(")([^"]+)(")(\s+)(string|slist|int|real)(\s*)(=>)(\s*)',
2555
+ bygroups(Punctuation,Name.Variable,Punctuation,
2556
+ Text,Keyword.Type,Text,Operator,Text)),
2557
+ (r'(\S+)(\s*)(=>)(\s*)',
2558
+ bygroups(Keyword.Reserved,Text,Operator,Text)),
2559
+ (r'"', String, 'string'),
2560
+ (r'(\w+)(\()', bygroups(Name.Function, Punctuation)),
2561
+ (r'([\w.!&|\(\)]+)(::)', bygroups(Name.Class, Punctuation)),
2562
+ (r'(\w+)(:)', bygroups(Keyword.Declaration,Punctuation)),
2563
+ (r'@[\{\(][^\)\}]+[\}\)]', Name.Variable),
2564
+ (r'[(){},;]', Punctuation),
2565
+ (r'=>', Operator),
2566
+ (r'->', Operator),
2567
+ (r'\d+\.\d+', Number.Float),
2568
+ (r'\d+', Number.Integer),
2569
+ (r'\w+', Name.Function),
2570
+ (r'\s+', Text),
2571
+ ],
2572
+ 'string': [
2573
+ (r'\$[\{\(]', String.Interpol, 'interpol'),
2574
+ (r'\\.', String.Escape),
2575
+ (r'"', String, '#pop'),
2576
+ (r'\n', String),
2577
+ (r'.', String),
2578
+ ],
2579
+ 'interpol': [
2580
+ (r'\$[\{\(]', String.Interpol, '#push'),
2581
+ (r'[\}\)]', String.Interpol, '#pop'),
2582
+ (r'[^\$\{\(\)\}]+', String.Interpol),
2583
+ ],
2584
+ 'arglist': [
2585
+ (r'\)', Punctuation, '#pop'),
2586
+ (r',', Punctuation),
2587
+ (r'\w+', Name.Variable),
2588
+ (r'\s+', Text),
2589
+ ],
2590
+ }
2591
+
2592
+
2593
+ class SnobolLexer(RegexLexer):
2594
+ """
2595
+ Lexer for the SNOBOL4 programming language.
2596
+
2597
+ Recognizes the common ASCII equivalents of the original SNOBOL4 operators.
2598
+ Does not require spaces around binary operators.
2599
+
2600
+ *New in Pygments 1.5.*
2601
+ """
2602
+
2603
+ name = "Snobol"
2604
+ aliases = ["snobol"]
2605
+ filenames = ['*.snobol']
2606
+ mimetypes = ['text/x-snobol']
2607
+
2608
+ tokens = {
2609
+ # root state, start of line
2610
+ # comments, continuation lines, and directives start in column 1
2611
+ # as do labels
2612
+ 'root': [
2613
+ (r'\*.*\n', Comment),
2614
+ (r'[\+\.] ', Punctuation, 'statement'),
2615
+ (r'-.*\n', Comment),
2616
+ (r'END\s*\n', Name.Label, 'heredoc'),
2617
+ (r'[A-Za-z\$][\w$]*', Name.Label, 'statement'),
2618
+ (r'\s+', Text, 'statement'),
2619
+ ],
2620
+ # statement state, line after continuation or label
2621
+ 'statement': [
2622
+ (r'\s*\n', Text, '#pop'),
2623
+ (r'\s+', Text),
2624
+ (r'(?<=[^\w.])(LT|LE|EQ|NE|GE|GT|INTEGER|IDENT|DIFFER|LGT|SIZE|'
2625
+ r'REPLACE|TRIM|DUPL|REMDR|DATE|TIME|EVAL|APPLY|OPSYN|LOAD|UNLOAD|'
2626
+ r'LEN|SPAN|BREAK|ANY|NOTANY|TAB|RTAB|REM|POS|RPOS|FAIL|FENCE|'
2627
+ r'ABORT|ARB|ARBNO|BAL|SUCCEED|INPUT|OUTPUT|TERMINAL)(?=[^\w.])',
2628
+ Name.Builtin),
2629
+ (r'[A-Za-z][\w\.]*', Name),
2630
+ # ASCII equivalents of original operators
2631
+ # | for the EBCDIC equivalent, ! likewise
2632
+ # \ for EBCDIC negation
2633
+ (r'\*\*|[\?\$\.!%\*/#+\-@\|&\\=]', Operator),
2634
+ (r'"[^"]*"', String),
2635
+ (r"'[^']*'", String),
2636
+ # Accept SPITBOL syntax for real numbers
2637
+ # as well as Macro SNOBOL4
2638
+ (r'[0-9]+(?=[^\.EeDd])', Number.Integer),
2639
+ (r'[0-9]+(\.[0-9]*)?([EDed][-+]?[0-9]+)?', Number.Float),
2640
+ # Goto
2641
+ (r':', Punctuation, 'goto'),
2642
+ (r'[\(\)<>,;]', Punctuation),
2643
+ ],
2644
+ # Goto block
2645
+ 'goto': [
2646
+ (r'\s*\n', Text, "#pop:2"),
2647
+ (r'\s+', Text),
2648
+ (r'F|S', Keyword),
2649
+ (r'(\()([A-Za-z][\w.]*)(\))',
2650
+ bygroups(Punctuation, Name.Label, Punctuation))
2651
+ ],
2652
+ # everything after the END statement is basically one
2653
+ # big heredoc.
2654
+ 'heredoc': [
2655
+ (r'.*\n', String.Heredoc)
2656
+ ]
2657
+ }
2658
+
2659
+
2660
+ class UrbiscriptLexer(ExtendedRegexLexer):
2661
+ """
2662
+ For UrbiScript source code.
2663
+
2664
+ *New in Pygments 1.5.*
2665
+ """
2666
+
2667
+ name = 'UrbiScript'
2668
+ aliases = ['urbiscript']
2669
+ filenames = ['*.u']
2670
+ mimetypes = ['application/x-urbiscript']
2671
+
2672
+ flags = re.DOTALL
2673
+
2674
+ ## TODO
2675
+ # - handle Experimental and deprecated tags with specific tokens
2676
+ # - handle Angles and Durations with specific tokens
2677
+
2678
+ def blob_callback(lexer, match, ctx):
2679
+ text_before_blob = match.group(1)
2680
+ blob_start = match.group(2)
2681
+ blob_size_str = match.group(3)
2682
+ blob_size = int(blob_size_str)
2683
+ yield match.start(), String, text_before_blob
2684
+ ctx.pos += len(text_before_blob)
2685
+
2686
+ # if blob size doesn't match blob format (example : "\B(2)(aaa)")
2687
+ # yield blob as a string
2688
+ if ctx.text[match.end() + blob_size] != ")":
2689
+ result = "\\B(" + blob_size_str + ")("
2690
+ yield match.start(), String, result
2691
+ ctx.pos += len(result)
2692
+ return
2693
+
2694
+ # if blob is well formated, yield as Escape
2695
+ blob_text = blob_start + ctx.text[match.end():match.end()+blob_size] + ")"
2696
+ yield match.start(), String.Escape, blob_text
2697
+ ctx.pos = match.end() + blob_size + 1 # +1 is the ending ")"
2698
+
2699
+ tokens = {
2700
+ 'root': [
2701
+ (r'\s+', Text),
2702
+ # comments
2703
+ (r'//.*?\n', Comment),
2704
+ (r'/\*', Comment.Multiline, 'comment'),
2705
+ (r'(?:every|for|loop|while)(?:;|&|\||,)',Keyword),
2706
+ (r'(?:assert|at|break|case|catch|closure|compl|continue|'
2707
+ r'default|else|enum|every|external|finally|for|freezeif|if|new|'
2708
+ r'onleave|return|stopif|switch|this|throw|timeout|try|'
2709
+ r'waituntil|whenever|while)\b', Keyword),
2710
+ (r'(?:asm|auto|bool|char|const_cast|delete|double|dynamic_cast|'
2711
+ r'explicit|export|extern|float|friend|goto|inline|int|'
2712
+ r'long|mutable|namespace|register|reinterpret_cast|short|'
2713
+ r'signed|sizeof|static_cast|struct|template|typedef|typeid|'
2714
+ r'typename|union|unsigned|using|virtual|volatile|'
2715
+ r'wchar_t)\b', Keyword.Reserved),
2716
+ # deprecated keywords, use a meaningfull token when available
2717
+ (r'(?:emit|foreach|internal|loopn|static)\b', Keyword),
2718
+ # ignored keywords, use a meaningfull token when available
2719
+ (r'(?:private|protected|public)\b', Keyword),
2720
+ (r'(?:var|do|const|function|class)\b', Keyword.Declaration),
2721
+ (r'(?:true|false|nil|void)\b', Keyword.Constant),
2722
+ (r'(?:Barrier|Binary|Boolean|CallMessage|Channel|Code|'
2723
+ r'Comparable|Container|Control|Date|Dictionary|Directory|'
2724
+ r'Duration|Enumeration|Event|Exception|Executable|File|Finalizable|'
2725
+ r'Float|FormatInfo|Formatter|Global|Group|Hash|InputStream|'
2726
+ r'IoService|Job|Kernel|Lazy|List|Loadable|Lobby|Location|Logger|Math|'
2727
+ r'Mutex|nil|Object|Orderable|OutputStream|Pair|Path|Pattern|Position|'
2728
+ r'Primitive|Process|Profile|PseudoLazy|PubSub|RangeIterable|Regexp|'
2729
+ r'Semaphore|Server|Singleton|Socket|StackFrame|Stream|String|System|'
2730
+ r'Tag|Timeout|Traceable|TrajectoryGenerator|Triplet|Tuple'
2731
+ r'|UObject|UValue|UVar)\b', Name.Builtin),
2732
+ (r'(?:this)\b', Name.Builtin.Pseudo),
2733
+ # don't match single | and &
2734
+ (r'(?:[-=+*%/<>~^:]+|\.&?|\|\||&&)', Operator),
2735
+ (r'(?:and_eq|and|bitand|bitor|in|not|not_eq|or_eq|or|xor_eq|xor)\b',
2736
+ Operator.Word),
2737
+ (r'[{}\[\]()]+', Punctuation),
2738
+ (r'(?:;|\||,|&|\?|!)+', Punctuation),
2739
+ (r'[$a-zA-Z_][a-zA-Z0-9_]*', Name.Other),
2740
+ (r'0x[0-9a-fA-F]+', Number.Hex),
2741
+ # Float, Integer, Angle and Duration
2742
+ (r'(?:[0-9]+(?:(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?)?'
2743
+ r'((?:rad|deg|grad)|(?:ms|s|min|h|d))?)\b', Number.Float),
2744
+ # handle binary blob in strings
2745
+ (r'"', String.Double, "string.double"),
2746
+ (r"'", String.Single, "string.single"),
2747
+ ],
2748
+ 'string.double': [
2749
+ (r'((?:\\\\|\\"|[^"])*?)(\\B\((\d+)\)\()', blob_callback),
2750
+ (r'(\\\\|\\"|[^"])*?"', String.Double, '#pop'),
2751
+ ],
2752
+ 'string.single': [
2753
+ (r"((?:\\\\|\\'|[^'])*?)(\\B\((\d+)\)\()", blob_callback),
2754
+ (r"(\\\\|\\'|[^'])*?'", String.Single, '#pop'),
2755
+ ],
2756
+ # from http://pygments.org/docs/lexerdevelopment/#changing-states
2757
+ 'comment': [
2758
+ (r'[^*/]', Comment.Multiline),
2759
+ (r'/\*', Comment.Multiline, '#push'),
2760
+ (r'\*/', Comment.Multiline, '#pop'),
2761
+ (r'[*/]', Comment.Multiline),
2762
+ ]
2763
+ }
2764
+
2765
+
2766
+ class OpenEdgeLexer(RegexLexer):
2767
+ """
2768
+ Lexer for `OpenEdge ABL (formerly Progress)
2769
+ <http://web.progress.com/en/openedge/abl.html>`_ source code.
2770
+
2771
+ *New in Pygments 1.5.*
2772
+ """
2773
+ name = 'OpenEdge ABL'
2774
+ aliases = ['openedge', 'abl', 'progress']
2775
+ filenames = ['*.p', '*.cls']
2776
+ mimetypes = ['text/x-openedge', 'application/x-openedge']
2777
+
2778
+ types = (r'(?i)(^|(?<=[^0-9a-z_\-]))(CHARACTER|CHAR|CHARA|CHARAC|CHARACT|CHARACTE|'
2779
+ r'COM-HANDLE|DATE|DATETIME|DATETIME-TZ|'
2780
+ r'DECIMAL|DEC|DECI|DECIM|DECIMA|HANDLE|'
2781
+ r'INT64|INTEGER|INT|INTE|INTEG|INTEGE|'
2782
+ r'LOGICAL|LONGCHAR|MEMPTR|RAW|RECID|ROWID)\s*($|(?=[^0-9a-z_\-]))')
2783
+
2784
+ keywords = (r'(?i)(^|(?<=[^0-9a-z_\-]))(' +
2785
+ r'|'.join(OPENEDGEKEYWORDS) +
2786
+ r')\s*($|(?=[^0-9a-z_\-]))')
2787
+ tokens = {
2788
+ 'root': [
2789
+ (r'/\*', Comment.Multiline, 'comment'),
2790
+ (r'\{', Comment.Preproc, 'preprocessor'),
2791
+ (r'\s*&.*', Comment.Preproc),
2792
+ (r'0[xX][0-9a-fA-F]+[LlUu]*', Number.Hex),
2793
+ (r'(?i)(DEFINE|DEF|DEFI|DEFIN)\b', Keyword.Declaration),
2794
+ (types, Keyword.Type),
2795
+ (keywords, Name.Builtin),
2796
+ (r'"(\\\\|\\"|[^"])*"', String.Double),
2797
+ (r"'(\\\\|\\'|[^'])*'", String.Single),
2798
+ (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
2799
+ (r'[0-9]+', Number.Integer),
2800
+ (r'\s+', Text),
2801
+ (r'[+*/=-]', Operator),
2802
+ (r'[.:()]', Punctuation),
2803
+ (r'.', Name.Variable), # Lazy catch-all
2804
+ ],
2805
+ 'comment': [
2806
+ (r'[^*/]', Comment.Multiline),
2807
+ (r'/\*', Comment.Multiline, '#push'),
2808
+ (r'\*/', Comment.Multiline, '#pop'),
2809
+ (r'[*/]', Comment.Multiline)
2810
+ ],
2811
+ 'preprocessor': [
2812
+ (r'[^{}]', Comment.Preproc),
2813
+ (r'{', Comment.Preproc, '#push'),
2814
+ (r'}', Comment.Preproc, '#pop'),
2815
+ ],
2816
+ }
2817
+
2818
+
2819
+ class BroLexer(RegexLexer):
2820
+ """
2821
+ For `Bro <http://bro-ids.org/>`_ scripts.
2822
+
2823
+ *New in Pygments 1.5.*
2824
+ """
2825
+ name = 'Bro'
2826
+ aliases = ['bro']
2827
+ filenames = ['*.bro']
2828
+
2829
+ _hex = r'[0-9a-fA-F_]+'
2830
+ _float = r'((\d*\.?\d+)|(\d+\.?\d*))([eE][-+]?\d+)?'
2831
+ _h = r'[A-Za-z0-9][-A-Za-z0-9]*'
2832
+
2833
+ tokens = {
2834
+ 'root': [
2835
+ # Whitespace
2836
+ (r'^@.*?\n', Comment.Preproc),
2837
+ (r'#.*?\n', Comment.Single),
2838
+ (r'\n', Text),
2839
+ (r'\s+', Text),
2840
+ (r'\\\n', Text),
2841
+ # Keywords
2842
+ (r'(add|alarm|break|case|const|continue|delete|do|else|enum|event'
2843
+ r'|export|for|function|if|global|hook|local|module|next'
2844
+ r'|of|print|redef|return|schedule|switch|type|when|while)\b', Keyword),
2845
+ (r'(addr|any|bool|count|counter|double|file|int|interval|net'
2846
+ r'|pattern|port|record|set|string|subnet|table|time|timer'
2847
+ r'|vector)\b', Keyword.Type),
2848
+ (r'(T|F)\b', Keyword.Constant),
2849
+ (r'(&)((?:add|delete|expire)_func|attr|(?:create|read|write)_expire'
2850
+ r'|default|disable_print_hook|raw_output|encrypt|group|log'
2851
+ r'|mergeable|optional|persistent|priority|redef'
2852
+ r'|rotate_(?:interval|size)|synchronized)\b', bygroups(Punctuation,
2853
+ Keyword)),
2854
+ (r'\s+module\b', Keyword.Namespace),
2855
+ # Addresses, ports and networks
2856
+ (r'\d+/(tcp|udp|icmp|unknown)\b', Number),
2857
+ (r'(\d+\.){3}\d+', Number),
2858
+ (r'(' + _hex + r'){7}' + _hex, Number),
2859
+ (r'0x' + _hex + r'(' + _hex + r'|:)*::(' + _hex + r'|:)*', Number),
2860
+ (r'((\d+|:)(' + _hex + r'|:)*)?::(' + _hex + r'|:)*', Number),
2861
+ (r'(\d+\.\d+\.|(\d+\.){2}\d+)', Number),
2862
+ # Hostnames
2863
+ (_h + r'(\.' + _h + r')+', String),
2864
+ # Numeric
2865
+ (_float + r'\s+(day|hr|min|sec|msec|usec)s?\b', Literal.Date),
2866
+ (r'0[xX]' + _hex, Number.Hex),
2867
+ (_float, Number.Float),
2868
+ (r'\d+', Number.Integer),
2869
+ (r'/', String.Regex, 'regex'),
2870
+ (r'"', String, 'string'),
2871
+ # Operators
2872
+ (r'[!%*/+:<=>?~|-]', Operator),
2873
+ (r'([-+=&|]{2}|[+=!><-]=)', Operator),
2874
+ (r'(in|match)\b', Operator.Word),
2875
+ (r'[{}()\[\]$.,;]', Punctuation),
2876
+ # Identfier
2877
+ (r'([_a-zA-Z]\w*)(::)', bygroups(Name, Name.Namespace)),
2878
+ (r'[a-zA-Z_][a-zA-Z_0-9]*', Name)
2879
+ ],
2880
+ 'string': [
2881
+ (r'"', String, '#pop'),
2882
+ (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape),
2883
+ (r'[^\\"\n]+', String),
2884
+ (r'\\\n', String),
2885
+ (r'\\', String)
2886
+ ],
2887
+ 'regex': [
2888
+ (r'/', String.Regex, '#pop'),
2889
+ (r'\\[\\nt/]', String.Regex), # String.Escape is too intense here.
2890
+ (r'[^\\/\n]+', String.Regex),
2891
+ (r'\\\n', String.Regex),
2892
+ (r'\\', String.Regex)
2893
+ ]
2894
+ }
2895
+
2896
+
2897
+ class CbmBasicV2Lexer(RegexLexer):
2898
+ """
2899
+ For CBM BASIC V2 sources.
2900
+
2901
+ *New in Pygments 1.6.*
2902
+ """
2903
+ name = 'CBM BASIC V2'
2904
+ aliases = ['cbmbas']
2905
+ filenames = ['*.bas']
2906
+
2907
+ flags = re.IGNORECASE
2908
+
2909
+ tokens = {
2910
+ 'root': [
2911
+ (r'rem.*\n', Comment.Single),
2912
+ (r'\s+', Text),
2913
+ (r'new|run|end|for|to|next|step|go(to|sub)?|on|return|stop|cont'
2914
+ r'|if|then|input#?|read|wait|load|save|verify|poke|sys|print#?'
2915
+ r'|list|clr|cmd|open|close|get#?', Keyword.Reserved),
2916
+ (r'data|restore|dim|let|def|fn', Keyword.Declaration),
2917
+ (r'tab|spc|sgn|int|abs|usr|fre|pos|sqr|rnd|log|exp|cos|sin|tan|atn'
2918
+ r'|peek|len|val|asc|(str|chr|left|right|mid)\$', Name.Builtin),
2919
+ (r'[-+*/^<>=]', Operator),
2920
+ (r'not|and|or', Operator.Word),
2921
+ (r'"[^"\n]*.', String),
2922
+ (r'\d+|[-+]?\d*\.\d*(e[-+]?\d+)?', Number.Float),
2923
+ (r'[\(\),:;]', Punctuation),
2924
+ (r'\w+[$%]?', Name),
2925
+ ]
2926
+ }
2927
+
2928
+ def analyse_text(self, text):
2929
+ # if it starts with a line number, it shouldn't be a "modern" Basic
2930
+ # like VB.net
2931
+ if re.match(r'\d+', text):
2932
+ return True
2933
+
2934
+
2935
+ class MscgenLexer(RegexLexer):
2936
+ """
2937
+ For `Mscgen <http://www.mcternan.me.uk/mscgen/>`_ files.
2938
+
2939
+ *New in Pygments 1.6.*
2940
+ """
2941
+ name = 'Mscgen'
2942
+ aliases = ['mscgen', 'msc']
2943
+ filenames = ['*.msc']
2944
+
2945
+ _var = r'([a-zA-Z0-9_]+|"(?:\\"|[^"])*")'
2946
+
2947
+ tokens = {
2948
+ 'root': [
2949
+ (r'msc\b', Keyword.Type),
2950
+ # Options
2951
+ (r'(hscale|HSCALE|width|WIDTH|wordwraparcs|WORDWRAPARCS'
2952
+ r'|arcgradient|ARCGRADIENT)\b', Name.Property),
2953
+ # Operators
2954
+ (r'(abox|ABOX|rbox|RBOX|box|BOX|note|NOTE)\b', Operator.Word),
2955
+ (r'(\.|-|\|){3}', Keyword),
2956
+ (r'(?:-|=|\.|:){2}'
2957
+ r'|<<=>>|<->|<=>|<<>>|<:>'
2958
+ r'|->|=>>|>>|=>|:>|-x|-X'
2959
+ r'|<-|<<=|<<|<=|<:|x-|X-|=', Operator),
2960
+ # Names
2961
+ (r'\*', Name.Builtin),
2962
+ (_var, Name.Variable),
2963
+ # Other
2964
+ (r'\[', Punctuation, 'attrs'),
2965
+ (r'\{|\}|,|;', Punctuation),
2966
+ include('comments')
2967
+ ],
2968
+ 'attrs': [
2969
+ (r'\]', Punctuation, '#pop'),
2970
+ (_var + r'(\s*)(=)(\s*)' + _var,
2971
+ bygroups(Name.Attribute, Text.Whitespace, Operator, Text.Whitespace,
2972
+ String)),
2973
+ (r',', Punctuation),
2974
+ include('comments')
2975
+ ],
2976
+ 'comments': [
2977
+ (r'(?://|#).*?\n', Comment.Single),
2978
+ (r'/\*(?:.|\n)*?\*/', Comment.Multiline),
2979
+ (r'[ \t\r\n]+', Text.Whitespace)
2980
+ ]
2981
+ }
2982
+
2983
+
2984
+ def _rx_indent(level):
2985
+ # Kconfig *always* interprets a tab as 8 spaces, so this is the default.
2986
+ # Edit this if you are in an environment where KconfigLexer gets expanded
2987
+ # input (tabs expanded to spaces) and the expansion tab width is != 8,
2988
+ # e.g. in connection with Trac (trac.ini, [mimeviewer], tab_width).
2989
+ # Value range here is 2 <= {tab_width} <= 8.
2990
+ tab_width = 8
2991
+ # Regex matching a given indentation {level}, assuming that indentation is
2992
+ # a multiple of {tab_width}. In other cases there might be problems.
2993
+ return r'(?:\t| {1,%s}\t| {%s}){%s}.*\n' % (tab_width-1, tab_width, level)
2994
+
2995
+
2996
+ class KconfigLexer(RegexLexer):
2997
+ """
2998
+ For Linux-style Kconfig files.
2999
+
3000
+ *New in Pygments 1.6.*
3001
+ """
3002
+
3003
+ name = 'Kconfig'
3004
+ aliases = ['kconfig', 'menuconfig', 'linux-config', 'kernel-config']
3005
+ # Adjust this if new kconfig file names appear in your environment
3006
+ filenames = ['Kconfig', '*Config.in*', 'external.in*',
3007
+ 'standard-modules.in']
3008
+ mimetypes = ['text/x-kconfig']
3009
+ # No re.MULTILINE, indentation-aware help text needs line-by-line handling
3010
+ flags = 0
3011
+
3012
+ def call_indent(level):
3013
+ # If indentation >= {level} is detected, enter state 'indent{level}'
3014
+ return (_rx_indent(level), String.Doc, 'indent%s' % level)
3015
+
3016
+ def do_indent(level):
3017
+ # Print paragraphs of indentation level >= {level} as String.Doc,
3018
+ # ignoring blank lines. Then return to 'root' state.
3019
+ return [
3020
+ (_rx_indent(level), String.Doc),
3021
+ (r'\s*\n', Text),
3022
+ (r'', Generic, '#pop:2')
3023
+ ]
3024
+
3025
+ tokens = {
3026
+ 'root': [
3027
+ (r'\s+', Text),
3028
+ (r'#.*?\n', Comment.Single),
3029
+ (r'(mainmenu|config|menuconfig|choice|endchoice|comment|menu|'
3030
+ r'endmenu|visible if|if|endif|source|prompt|select|depends on|'
3031
+ r'default|range|option)\b', Keyword),
3032
+ (r'(---help---|help)[\t ]*\n', Keyword, 'help'),
3033
+ (r'(bool|tristate|string|hex|int|defconfig_list|modules|env)\b',
3034
+ Name.Builtin),
3035
+ (r'[!=&|]', Operator),
3036
+ (r'[()]', Punctuation),
3037
+ (r'[0-9]+', Number.Integer),
3038
+ (r"'(''|[^'])*'", String.Single),
3039
+ (r'"(""|[^"])*"', String.Double),
3040
+ (r'\S+', Text),
3041
+ ],
3042
+ # Help text is indented, multi-line and ends when a lower indentation
3043
+ # level is detected.
3044
+ 'help': [
3045
+ # Skip blank lines after help token, if any
3046
+ (r'\s*\n', Text),
3047
+ # Determine the first help line's indentation level heuristically(!).
3048
+ # Attention: this is not perfect, but works for 99% of "normal"
3049
+ # indentation schemes up to a max. indentation level of 7.
3050
+ call_indent(7),
3051
+ call_indent(6),
3052
+ call_indent(5),
3053
+ call_indent(4),
3054
+ call_indent(3),
3055
+ call_indent(2),
3056
+ call_indent(1),
3057
+ ('', Text, '#pop'), # for incomplete help sections without text
3058
+ ],
3059
+ # Handle text for indentation levels 7 to 1
3060
+ 'indent7': do_indent(7),
3061
+ 'indent6': do_indent(6),
3062
+ 'indent5': do_indent(5),
3063
+ 'indent4': do_indent(4),
3064
+ 'indent3': do_indent(3),
3065
+ 'indent2': do_indent(2),
3066
+ 'indent1': do_indent(1),
3067
+ }
3068
+
3069
+
3070
+ class VGLLexer(RegexLexer):
3071
+ """
3072
+ For `SampleManager VGL <http://www.thermoscientific.com/samplemanager>`_
3073
+ source code.
3074
+
3075
+ *New in Pygments 1.6.*
3076
+ """
3077
+ name = 'VGL'
3078
+ aliases = ['vgl']
3079
+ filenames = ['*.rpf']
3080
+
3081
+ flags = re.MULTILINE | re.DOTALL | re.IGNORECASE
3082
+
3083
+ tokens = {
3084
+ 'root': [
3085
+ (r'\{[^\}]*\}', Comment.Multiline),
3086
+ (r'declare', Keyword.Constant),
3087
+ (r'(if|then|else|endif|while|do|endwhile|and|or|prompt|object'
3088
+ r'|create|on|line|with|global|routine|value|endroutine|constant'
3089
+ r'|global|set|join|library|compile_option|file|exists|create|copy'
3090
+ r'|delete|enable|windows|name|notprotected)(?! *[=<>.,()])',
3091
+ Keyword),
3092
+ (r'(true|false|null|empty|error|locked)', Keyword.Constant),
3093
+ (r'[~\^\*\#!%&\[\]\(\)<>\|+=:;,./?-]', Operator),
3094
+ (r'"[^"]*"', String),
3095
+ (r'(\.)([a-z_\$][a-z0-9_\$]*)', bygroups(Operator, Name.Attribute)),
3096
+ (r'[0-9][0-9]*(\.[0-9]+(e[+\-]?[0-9]+)?)?', Number),
3097
+ (r'[a-z_\$][a-z0-9_\$]*', Name),
3098
+ (r'[\r\n]+', Text),
3099
+ (r'\s+', Text)
3100
+ ]
3101
+ }
3102
+
3103
+
3104
+ class SourcePawnLexer(RegexLexer):
3105
+ """
3106
+ For SourcePawn source code with preprocessor directives.
3107
+
3108
+ *New in Pygments 1.6.*
3109
+ """
3110
+ name = 'SourcePawn'
3111
+ aliases = ['sp']
3112
+ filenames = ['*.sp']
3113
+ mimetypes = ['text/x-sourcepawn']
3114
+
3115
+ #: optional Comment or Whitespace
3116
+ _ws = r'(?:\s|//.*?\n|/\*.*?\*/)+'
3117
+
3118
+ tokens = {
3119
+ 'root': [
3120
+ # preprocessor directives: without whitespace
3121
+ ('^#if\s+0', Comment.Preproc, 'if0'),
3122
+ ('^#', Comment.Preproc, 'macro'),
3123
+ # or with whitespace
3124
+ ('^' + _ws + r'#if\s+0', Comment.Preproc, 'if0'),
3125
+ ('^' + _ws + '#', Comment.Preproc, 'macro'),
3126
+ (r'\n', Text),
3127
+ (r'\s+', Text),
3128
+ (r'\\\n', Text), # line continuation
3129
+ (r'/(\\\n)?/(\n|(.|\n)*?[^\\]\n)', Comment.Single),
3130
+ (r'/(\\\n)?\*(.|\n)*?\*(\\\n)?/', Comment.Multiline),
3131
+ (r'[{}]', Punctuation),
3132
+ (r'L?"', String, 'string'),
3133
+ (r"L?'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'", String.Char),
3134
+ (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*', Number.Float),
3135
+ (r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),
3136
+ (r'0x[0-9a-fA-F]+[LlUu]*', Number.Hex),
3137
+ (r'0[0-7]+[LlUu]*', Number.Oct),
3138
+ (r'\d+[LlUu]*', Number.Integer),
3139
+ (r'\*/', Error),
3140
+ (r'[~!%^&*+=|?:<>/-]', Operator),
3141
+ (r'[()\[\],.;]', Punctuation),
3142
+ (r'(case|const|continue|native|'
3143
+ r'default|else|enum|for|if|new|operator|'
3144
+ r'public|return|sizeof|static|decl|struct|switch)\b', Keyword),
3145
+ (r'(bool|Float)\b', Keyword.Type),
3146
+ (r'(true|false)\b', Keyword.Constant),
3147
+ ('[a-zA-Z_][a-zA-Z0-9_]*', Name),
3148
+ ],
3149
+ 'string': [
3150
+ (r'"', String, '#pop'),
3151
+ (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape),
3152
+ (r'[^\\"\n]+', String), # all other characters
3153
+ (r'\\\n', String), # line continuation
3154
+ (r'\\', String), # stray backslash
3155
+ ],
3156
+ 'macro': [
3157
+ (r'[^/\n]+', Comment.Preproc),
3158
+ (r'/\*(.|\n)*?\*/', Comment.Multiline),
3159
+ (r'//.*?\n', Comment.Single, '#pop'),
3160
+ (r'/', Comment.Preproc),
3161
+ (r'(?<=\\)\n', Comment.Preproc),
3162
+ (r'\n', Comment.Preproc, '#pop'),
3163
+ ],
3164
+ 'if0': [
3165
+ (r'^\s*#if.*?(?<!\\)\n', Comment.Preproc, '#push'),
3166
+ (r'^\s*#endif.*?(?<!\\)\n', Comment.Preproc, '#pop'),
3167
+ (r'.*?\n', Comment),
3168
+ ]
3169
+ }
3170
+
3171
+ SM_TYPES = ['Action', 'bool', 'Float', 'Plugin', 'String', 'any',
3172
+ 'AdminFlag', 'OverrideType', 'OverrideRule', 'ImmunityType',
3173
+ 'GroupId', 'AdminId', 'AdmAccessMode', 'AdminCachePart',
3174
+ 'CookieAccess', 'CookieMenu', 'CookieMenuAction', 'NetFlow',
3175
+ 'ConVarBounds', 'QueryCookie', 'ReplySource',
3176
+ 'ConVarQueryResult', 'ConVarQueryFinished', 'Function',
3177
+ 'Action', 'Identity', 'PluginStatus', 'PluginInfo', 'DBResult',
3178
+ 'DBBindType', 'DBPriority', 'PropType', 'PropFieldType',
3179
+ 'MoveType', 'RenderMode', 'RenderFx', 'EventHookMode',
3180
+ 'EventHook', 'FileType', 'FileTimeMode', 'PathType',
3181
+ 'ParamType', 'ExecType', 'DialogType', 'Handle', 'KvDataTypes',
3182
+ 'NominateResult', 'MapChange', 'MenuStyle', 'MenuAction',
3183
+ 'MenuSource', 'RegexError', 'SDKCallType', 'SDKLibrary',
3184
+ 'SDKFuncConfSource', 'SDKType', 'SDKPassMethod', 'RayType',
3185
+ 'TraceEntityFilter', 'ListenOverride', 'SortOrder', 'SortType',
3186
+ 'SortFunc2D', 'APLRes', 'FeatureType', 'FeatureStatus',
3187
+ 'SMCResult', 'SMCError', 'TFClassType', 'TFTeam', 'TFCond',
3188
+ 'TFResourceType', 'Timer', 'TopMenuAction', 'TopMenuObjectType',
3189
+ 'TopMenuPosition', 'TopMenuObject', 'UserMsg']
3190
+
3191
+ def __init__(self, **options):
3192
+ self.smhighlighting = get_bool_opt(options,
3193
+ 'sourcemod', True)
3194
+
3195
+ self._functions = []
3196
+ if self.smhighlighting:
3197
+ from pygments.lexers._sourcemodbuiltins import FUNCTIONS
3198
+ self._functions.extend(FUNCTIONS)
3199
+ RegexLexer.__init__(self, **options)
3200
+
3201
+ def get_tokens_unprocessed(self, text):
3202
+ for index, token, value in \
3203
+ RegexLexer.get_tokens_unprocessed(self, text):
3204
+ if token is Name:
3205
+ if self.smhighlighting:
3206
+ if value in self.SM_TYPES:
3207
+ token = Keyword.Type
3208
+ elif value in self._functions:
3209
+ token = Name.Builtin
3210
+ yield index, token, value
3211
+
3212
+
3213
+ class PuppetLexer(RegexLexer):
3214
+ """
3215
+ For `Puppet <http://puppetlabs.com/>`__ configuration DSL.
3216
+
3217
+ *New in Pygments 1.6.*
3218
+ """
3219
+ name = 'Puppet'
3220
+ aliases = ['puppet']
3221
+ filenames = ['*.pp']
3222
+
3223
+ tokens = {
3224
+ 'root': [
3225
+ include('comments'),
3226
+ include('keywords'),
3227
+ include('names'),
3228
+ include('numbers'),
3229
+ include('operators'),
3230
+ include('strings'),
3231
+
3232
+ (r'[]{}:(),;[]', Punctuation),
3233
+ (r'[^\S\n]+', Text),
3234
+ ],
3235
+
3236
+ 'comments': [
3237
+ (r'\s*#.*$', Comment),
3238
+ (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),
3239
+ ],
3240
+
3241
+ 'operators': [
3242
+ (r'(=>|\?|<|>|=|\+|-|/|\*|~|!|\|)', Operator),
3243
+ (r'(in|and|or|not)\b', Operator.Word),
3244
+ ],
3245
+
3246
+ 'names': [
3247
+ ('[a-zA-Z_][a-zA-Z0-9_]*', Name.Attribute),
3248
+ (r'(\$\S+)(\[)(\S+)(\])', bygroups(Name.Variable, Punctuation,
3249
+ String, Punctuation)),
3250
+ (r'\$\S+', Name.Variable),
3251
+ ],
3252
+
3253
+ 'numbers': [
3254
+ # Copypasta from the Python lexer
3255
+ (r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?j?', Number.Float),
3256
+ (r'\d+[eE][+-]?[0-9]+j?', Number.Float),
3257
+ (r'0[0-7]+j?', Number.Oct),
3258
+ (r'0[xX][a-fA-F0-9]+', Number.Hex),
3259
+ (r'\d+L', Number.Integer.Long),
3260
+ (r'\d+j?', Number.Integer)
3261
+ ],
3262
+
3263
+ 'keywords': [
3264
+ # Left out 'group' and 'require'
3265
+ # Since they're often used as attributes
3266
+ (r'(?i)(absent|alert|alias|audit|augeas|before|case|check|class|'
3267
+ r'computer|configured|contained|create_resources|crit|cron|debug|'
3268
+ r'default|define|defined|directory|else|elsif|emerg|err|exec|'
3269
+ r'extlookup|fail|false|file|filebucket|fqdn_rand|generate|host|if|'
3270
+ r'import|include|info|inherits|inline_template|installed|'
3271
+ r'interface|k5login|latest|link|loglevel|macauthorization|'
3272
+ r'mailalias|maillist|mcx|md5|mount|mounted|nagios_command|'
3273
+ r'nagios_contact|nagios_contactgroup|nagios_host|'
3274
+ r'nagios_hostdependency|nagios_hostescalation|nagios_hostextinfo|'
3275
+ r'nagios_hostgroup|nagios_service|nagios_servicedependency|'
3276
+ r'nagios_serviceescalation|nagios_serviceextinfo|'
3277
+ r'nagios_servicegroup|nagios_timeperiod|node|noop|notice|notify|'
3278
+ r'package|present|purged|realize|regsubst|resources|role|router|'
3279
+ r'running|schedule|scheduled_task|search|selboolean|selmodule|'
3280
+ r'service|sha1|shellquote|split|sprintf|ssh_authorized_key|sshkey|'
3281
+ r'stage|stopped|subscribe|tag|tagged|template|tidy|true|undef|'
3282
+ r'unmounted|user|versioncmp|vlan|warning|yumrepo|zfs|zone|'
3283
+ r'zpool)\b', Keyword),
3284
+ ],
3285
+
3286
+ 'strings': [
3287
+ (r'"([^"])*"', String),
3288
+ (r'\'([^\'])*\'', String),
3289
+ ],
3290
+
3291
+ }
3292
+
3293
+
3294
+ class NSISLexer(RegexLexer):
3295
+ """
3296
+ For `NSIS <http://nsis.sourceforge.net/>`_ scripts.
3297
+
3298
+ *New in Pygments 1.6.*
3299
+ """
3300
+ name = 'NSIS'
3301
+ aliases = ['nsis', 'nsi', 'nsh']
3302
+ filenames = ['*.nsi', '*.nsh']
3303
+ mimetypes = ['text/x-nsis']
3304
+
3305
+ flags = re.IGNORECASE
3306
+
3307
+ tokens = {
3308
+ 'root': [
3309
+ (r'[;\#].*\n', Comment),
3310
+ (r"'.*?'", String.Single),
3311
+ (r'"', String.Double, 'str_double'),
3312
+ (r'`', String.Backtick, 'str_backtick'),
3313
+ include('macro'),
3314
+ include('interpol'),
3315
+ include('basic'),
3316
+ (r'\$\{[a-z_|][\w|]*\}', Keyword.Pseudo),
3317
+ (r'/[a-z_]\w*', Name.Attribute),
3318
+ ('.', Text),
3319
+ ],
3320
+ 'basic': [
3321
+ (r'(\n)(Function)(\s+)([._a-z][.\w]*)\b',
3322
+ bygroups(Text, Keyword, Text, Name.Function)),
3323
+ (r'\b([_a-z]\w*)(::)([a-z][a-z0-9]*)\b',
3324
+ bygroups(Keyword.Namespace, Punctuation, Name.Function)),
3325
+ (r'\b([_a-z]\w*)(:)', bygroups(Name.Label, Punctuation)),
3326
+ (r'(\b[ULS]|\B)([\!\<\>=]?=|\<\>?|\>)\B', Operator),
3327
+ (r'[|+-]', Operator),
3328
+ (r'\\', Punctuation),
3329
+ (r'\b(Abort|Add(?:BrandingImage|Size)|'
3330
+ r'Allow(?:RootDirInstall|SkipFiles)|AutoCloseWindow|'
3331
+ r'BG(?:Font|Gradient)|BrandingText|BringToFront|Call(?:InstDLL)?|'
3332
+ r'(?:Sub)?Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|'
3333
+ r'ComponentText|CopyFiles|CRCCheck|'
3334
+ r'Create(?:Directory|Font|Shortcut)|Delete(?:INI(?:Sec|Str)|'
3335
+ r'Reg(?:Key|Value))?|DetailPrint|DetailsButtonText|'
3336
+ r'Dir(?:Show|Text|Var|Verify)|(?:Disabled|Enabled)Bitmap|'
3337
+ r'EnableWindow|EnumReg(?:Key|Value)|Exch|Exec(?:Shell|Wait)?|'
3338
+ r'ExpandEnvStrings|File(?:BufSize|Close|ErrorText|Open|'
3339
+ r'Read(?:Byte)?|Seek|Write(?:Byte)?)?|'
3340
+ r'Find(?:Close|First|Next|Window)|FlushINI|Function(?:End)?|'
3341
+ r'Get(?:CurInstType|CurrentAddress|DlgItem|DLLVersion(?:Local)?|'
3342
+ r'ErrorLevel|FileTime(?:Local)?|FullPathName|FunctionAddress|'
3343
+ r'InstDirError|LabelAddress|TempFileName)|'
3344
+ r'Goto|HideWindow|Icon|'
3345
+ r'If(?:Abort|Errors|FileExists|RebootFlag|Silent)|'
3346
+ r'InitPluginsDir|Install(?:ButtonText|Colors|Dir(?:RegKey)?)|'
3347
+ r'Inst(?:ProgressFlags|Type(?:[GS]etText)?)|Int(?:CmpU?|Fmt|Op)|'
3348
+ r'IsWindow|LangString(?:UP)?|'
3349
+ r'License(?:BkColor|Data|ForceSelection|LangString|Text)|'
3350
+ r'LoadLanguageFile|LockWindow|Log(?:Set|Text)|MessageBox|'
3351
+ r'MiscButtonText|Name|Nop|OutFile|(?:Uninst)?Page(?:Ex(?:End)?)?|'
3352
+ r'PluginDir|Pop|Push|Quit|Read(?:(?:Env|INI|Reg)Str|RegDWORD)|'
3353
+ r'Reboot|(?:Un)?RegDLL|Rename|RequestExecutionLevel|ReserveFile|'
3354
+ r'Return|RMDir|SearchPath|Section(?:Divider|End|'
3355
+ r'(?:(?:Get|Set)(?:Flags|InstTypes|Size|Text))|Group(?:End)?|In)?|'
3356
+ r'SendMessage|Set(?:AutoClose|BrandingImage|Compress(?:ionLevel|'
3357
+ r'or(?:DictSize)?)?|CtlColors|CurInstType|DatablockOptimize|'
3358
+ r'DateSave|Details(?:Print|View)|Error(?:s|Level)|FileAttributes|'
3359
+ r'Font|OutPath|Overwrite|PluginUnload|RebootFlag|ShellVarContext|'
3360
+ r'Silent|StaticBkColor)|'
3361
+ r'Show(?:(?:I|Uni)nstDetails|Window)|Silent(?:Un)?Install|Sleep|'
3362
+ r'SpaceTexts|Str(?:CmpS?|Cpy|Len)|SubSection(?:End)?|'
3363
+ r'Uninstall(?:ButtonText|(?:Sub)?Caption|EXEName|Icon|Text)|'
3364
+ r'UninstPage|Var|VI(?:AddVersionKey|ProductVersion)|WindowIcon|'
3365
+ r'Write(?:INIStr|Reg(:?Bin|DWORD|(?:Expand)?Str)|Uninstaller)|'
3366
+ r'XPStyle)\b', Keyword),
3367
+ (r'\b(CUR|END|(?:FILE_ATTRIBUTE_)?'
3368
+ r'(?:ARCHIVE|HIDDEN|NORMAL|OFFLINE|READONLY|SYSTEM|TEMPORARY)|'
3369
+ r'HK(CC|CR|CU|DD|LM|PD|U)|'
3370
+ r'HKEY_(?:CLASSES_ROOT|CURRENT_(?:CONFIG|USER)|DYN_DATA|'
3371
+ r'LOCAL_MACHINE|PERFORMANCE_DATA|USERS)|'
3372
+ r'ID(?:ABORT|CANCEL|IGNORE|NO|OK|RETRY|YES)|'
3373
+ r'MB_(?:ABORTRETRYIGNORE|DEFBUTTON[1-4]|'
3374
+ r'ICON(?:EXCLAMATION|INFORMATION|QUESTION|STOP)|'
3375
+ r'OK(?:CANCEL)?|RETRYCANCEL|RIGHT|SETFOREGROUND|TOPMOST|USERICON|'
3376
+ r'YESNO(?:CANCEL)?)|SET|SHCTX|'
3377
+ r'SW_(?:HIDE|SHOW(?:MAXIMIZED|MINIMIZED|NORMAL))|'
3378
+ r'admin|all|auto|both|bottom|bzip2|checkbox|colored|current|false|'
3379
+ r'force|hide|highest|if(?:diff|newer)|lastused|leave|left|'
3380
+ r'listonly|lzma|nevershow|none|normal|off|on|pop|push|'
3381
+ r'radiobuttons|right|show|silent|silentlog|smooth|textonly|top|'
3382
+ r'true|try|user|zlib)\b', Name.Constant),
3383
+ ],
3384
+ 'macro': [
3385
+ (r'\!(addincludedir(?:dir)?|addplugindir|appendfile|cd|define|'
3386
+ r'delfilefile|echo(?:message)?|else|endif|error|execute|'
3387
+ r'if(?:macro)?n?(?:def)?|include|insertmacro|macro(?:end)?|packhdr|'
3388
+ r'search(?:parse|replace)|system|tempfilesymbol|undef|verbose|'
3389
+ r'warning)\b', Comment.Preproc),
3390
+ ],
3391
+ 'interpol': [
3392
+ (r'\$(R?[0-9])', Name.Builtin.Pseudo), # registers
3393
+ (r'\$(ADMINTOOLS|APPDATA|CDBURN_AREA|COOKIES|COMMONFILES(?:32|64)|'
3394
+ r'DESKTOP|DOCUMENTS|EXE(?:DIR|FILE|PATH)|FAVORITES|FONTS|HISTORY|'
3395
+ r'HWNDPARENT|INTERNET_CACHE|LOCALAPPDATA|MUSIC|NETHOOD|PICTURES|'
3396
+ r'PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES(?:32|64)|QUICKLAUNCH|'
3397
+ r'RECENT|RESOURCES(?:_LOCALIZED)?|SENDTO|SM(?:PROGRAMS|STARTUP)|'
3398
+ r'STARTMENU|SYSDIR|TEMP(?:LATES)?|VIDEOS|WINDIR|\{NSISDIR\})',
3399
+ Name.Builtin),
3400
+ (r'\$(CMDLINE|INSTDIR|OUTDIR|LANGUAGE)', Name.Variable.Global),
3401
+ (r'\$[a-z_]\w*', Name.Variable),
3402
+ ],
3403
+ 'str_double': [
3404
+ (r'"', String, '#pop'),
3405
+ (r'\$(\\[nrt"]|\$)', String.Escape),
3406
+ include('interpol'),
3407
+ (r'.', String.Double),
3408
+ ],
3409
+ 'str_backtick': [
3410
+ (r'`', String, '#pop'),
3411
+ (r'\$(\\[nrt"]|\$)', String.Escape),
3412
+ include('interpol'),
3413
+ (r'.', String.Double),
3414
+ ],
3415
+ }
3416
+
3417
+
3418
+ class RPMSpecLexer(RegexLexer):
3419
+ """
3420
+ For RPM *.spec files
3421
+
3422
+ *New in Pygments 1.6.*
3423
+ """
3424
+
3425
+ name = 'RPMSpec'
3426
+ aliases = ['spec']
3427
+ filenames = ['*.spec']
3428
+ mimetypes = ['text/x-rpm-spec']
3429
+
3430
+ _directives = ('(?:package|prep|build|install|clean|check|pre[a-z]*|'
3431
+ 'post[a-z]*|trigger[a-z]*|files)')
3432
+
3433
+ tokens = {
3434
+ 'root': [
3435
+ (r'#.*\n', Comment),
3436
+ include('basic'),
3437
+ ],
3438
+ 'description': [
3439
+ (r'^(%' + _directives + ')(.*)$',
3440
+ bygroups(Name.Decorator, Text), '#pop'),
3441
+ (r'\n', Text),
3442
+ (r'.', Text),
3443
+ ],
3444
+ 'changelog': [
3445
+ (r'\*.*\n', Generic.Subheading),
3446
+ (r'^(%' + _directives + ')(.*)$',
3447
+ bygroups(Name.Decorator, Text), '#pop'),
3448
+ (r'\n', Text),
3449
+ (r'.', Text),
3450
+ ],
3451
+ 'string': [
3452
+ (r'"', String.Double, '#pop'),
3453
+ (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape),
3454
+ include('interpol'),
3455
+ (r'.', String.Double),
3456
+ ],
3457
+ 'basic': [
3458
+ include('macro'),
3459
+ (r'(?i)^(Name|Version|Release|Epoch|Summary|Group|License|Packager|'
3460
+ r'Vendor|Icon|URL|Distribution|Prefix|Patch[0-9]*|Source[0-9]*|'
3461
+ r'Requires\(?[a-z]*\)?|[a-z]+Req|Obsoletes|Suggests|Provides|Conflicts|'
3462
+ r'Build[a-z]+|[a-z]+Arch|Auto[a-z]+)(:)(.*)$',
3463
+ bygroups(Generic.Heading, Punctuation, using(this))),
3464
+ (r'^%description', Name.Decorator, 'description'),
3465
+ (r'^%changelog', Name.Decorator, 'changelog'),
3466
+ (r'^(%' + _directives + ')(.*)$', bygroups(Name.Decorator, Text)),
3467
+ (r'%(attr|defattr|dir|doc(?:dir)?|setup|config(?:ure)?|'
3468
+ r'make(?:install)|ghost|patch[0-9]+|find_lang|exclude|verify)',
3469
+ Keyword),
3470
+ include('interpol'),
3471
+ (r"'.*?'", String.Single),
3472
+ (r'"', String.Double, 'string'),
3473
+ (r'.', Text),
3474
+ ],
3475
+ 'macro': [
3476
+ (r'%define.*\n', Comment.Preproc),
3477
+ (r'%\{\!\?.*%define.*\}', Comment.Preproc),
3478
+ (r'(%(?:if(?:n?arch)?|else(?:if)?|endif))(.*)$',
3479
+ bygroups(Comment.Preproc, Text)),
3480
+ ],
3481
+ 'interpol': [
3482
+ (r'%\{?__[a-z_]+\}?', Name.Function),
3483
+ (r'%\{?_([a-z_]+dir|[a-z_]+path|prefix)\}?', Keyword.Pseudo),
3484
+ (r'%\{\?[A-Za-z0-9_]+\}', Name.Variable),
3485
+ (r'\$\{?RPM_[A-Z0-9_]+\}?', Name.Variable.Global),
3486
+ (r'%\{[a-zA-Z][a-zA-Z0-9_]+\}', Keyword.Constant),
3487
+ ]
3488
+ }
3489
+
3490
+
3491
+ class AutoItLexer(RegexLexer):
3492
+ """
3493
+ For `AutoIt <http://www.autoitscript.com/site/autoit/>`_ files.
3494
+
3495
+ AutoIt is a freeware BASIC-like scripting language
3496
+ designed for automating the Windows GUI and general scripting
3497
+
3498
+ *New in Pygments 1.6.*
3499
+ """
3500
+ name = 'AutoIt'
3501
+ aliases = ['autoit', 'Autoit']
3502
+ filenames = ['*.au3']
3503
+ mimetypes = ['text/x-autoit']
3504
+
3505
+ # Keywords, functions, macros from au3.keywords.properties
3506
+ # which can be found in AutoIt installed directory, e.g.
3507
+ # c:\Program Files (x86)\AutoIt3\SciTE\au3.keywords.properties
3508
+
3509
+ keywords = """\
3510
+ #include-once #include #endregion #forcedef #forceref #region
3511
+ and byref case continueloop dim do else elseif endfunc endif
3512
+ endselect exit exitloop for func global
3513
+ if local next not or return select step
3514
+ then to until wend while exit""".split()
3515
+
3516
+ functions = """\
3517
+ abs acos adlibregister adlibunregister asc ascw asin assign atan
3518
+ autoitsetoption autoitwingettitle autoitwinsettitle beep binary binarylen
3519
+ binarymid binarytostring bitand bitnot bitor bitrotate bitshift bitxor
3520
+ blockinput break call cdtray ceiling chr chrw clipget clipput consoleread
3521
+ consolewrite consolewriteerror controlclick controlcommand controldisable
3522
+ controlenable controlfocus controlgetfocus controlgethandle controlgetpos
3523
+ controlgettext controlhide controllistview controlmove controlsend
3524
+ controlsettext controlshow controltreeview cos dec dircopy dircreate
3525
+ dirgetsize dirmove dirremove dllcall dllcalladdress dllcallbackfree
3526
+ dllcallbackgetptr dllcallbackregister dllclose dllopen dllstructcreate
3527
+ dllstructgetdata dllstructgetptr dllstructgetsize dllstructsetdata
3528
+ drivegetdrive drivegetfilesystem drivegetlabel drivegetserial drivegettype
3529
+ drivemapadd drivemapdel drivemapget drivesetlabel drivespacefree
3530
+ drivespacetotal drivestatus envget envset envupdate eval execute exp
3531
+ filechangedir fileclose filecopy filecreatentfslink filecreateshortcut
3532
+ filedelete fileexists filefindfirstfile filefindnextfile fileflush
3533
+ filegetattrib filegetencoding filegetlongname filegetpos filegetshortcut
3534
+ filegetshortname filegetsize filegettime filegetversion fileinstall filemove
3535
+ fileopen fileopendialog fileread filereadline filerecycle filerecycleempty
3536
+ filesavedialog fileselectfolder filesetattrib filesetpos filesettime
3537
+ filewrite filewriteline floor ftpsetproxy guicreate guictrlcreateavi
3538
+ guictrlcreatebutton guictrlcreatecheckbox guictrlcreatecombo
3539
+ guictrlcreatecontextmenu guictrlcreatedate guictrlcreatedummy
3540
+ guictrlcreateedit guictrlcreategraphic guictrlcreategroup guictrlcreateicon
3541
+ guictrlcreateinput guictrlcreatelabel guictrlcreatelist
3542
+ guictrlcreatelistview guictrlcreatelistviewitem guictrlcreatemenu
3543
+ guictrlcreatemenuitem guictrlcreatemonthcal guictrlcreateobj
3544
+ guictrlcreatepic guictrlcreateprogress guictrlcreateradio
3545
+ guictrlcreateslider guictrlcreatetab guictrlcreatetabitem
3546
+ guictrlcreatetreeview guictrlcreatetreeviewitem guictrlcreateupdown
3547
+ guictrldelete guictrlgethandle guictrlgetstate guictrlread guictrlrecvmsg
3548
+ guictrlregisterlistviewsort guictrlsendmsg guictrlsendtodummy
3549
+ guictrlsetbkcolor guictrlsetcolor guictrlsetcursor guictrlsetdata
3550
+ guictrlsetdefbkcolor guictrlsetdefcolor guictrlsetfont guictrlsetgraphic
3551
+ guictrlsetimage guictrlsetlimit guictrlsetonevent guictrlsetpos
3552
+ guictrlsetresizing guictrlsetstate guictrlsetstyle guictrlsettip guidelete
3553
+ guigetcursorinfo guigetmsg guigetstyle guiregistermsg guisetaccelerators
3554
+ guisetbkcolor guisetcoord guisetcursor guisetfont guisethelp guiseticon
3555
+ guisetonevent guisetstate guisetstyle guistartgroup guiswitch hex hotkeyset
3556
+ httpsetproxy httpsetuseragent hwnd inetclose inetget inetgetinfo inetgetsize
3557
+ inetread inidelete iniread inireadsection inireadsectionnames
3558
+ inirenamesection iniwrite iniwritesection inputbox int isadmin isarray
3559
+ isbinary isbool isdeclared isdllstruct isfloat ishwnd isint iskeyword
3560
+ isnumber isobj isptr isstring log memgetstats mod mouseclick mouseclickdrag
3561
+ mousedown mousegetcursor mousegetpos mousemove mouseup mousewheel msgbox
3562
+ number objcreate objcreateinterface objevent objevent objget objname
3563
+ onautoitexitregister onautoitexitunregister opt ping pixelchecksum
3564
+ pixelgetcolor pixelsearch pluginclose pluginopen processclose processexists
3565
+ processgetstats processlist processsetpriority processwait processwaitclose
3566
+ progressoff progresson progressset ptr random regdelete regenumkey
3567
+ regenumval regread regwrite round run runas runaswait runwait send
3568
+ sendkeepactive seterror setextended shellexecute shellexecutewait shutdown
3569
+ sin sleep soundplay soundsetwavevolume splashimageon splashoff splashtexton
3570
+ sqrt srandom statusbargettext stderrread stdinwrite stdioclose stdoutread
3571
+ string stringaddcr stringcompare stringformat stringfromasciiarray
3572
+ stringinstr stringisalnum stringisalpha stringisascii stringisdigit
3573
+ stringisfloat stringisint stringislower stringisspace stringisupper
3574
+ stringisxdigit stringleft stringlen stringlower stringmid stringregexp
3575
+ stringregexpreplace stringreplace stringright stringsplit stringstripcr
3576
+ stringstripws stringtoasciiarray stringtobinary stringtrimleft
3577
+ stringtrimright stringupper tan tcpaccept tcpclosesocket tcpconnect
3578
+ tcplisten tcpnametoip tcprecv tcpsend tcpshutdown tcpstartup timerdiff
3579
+ timerinit tooltip traycreateitem traycreatemenu traygetmsg trayitemdelete
3580
+ trayitemgethandle trayitemgetstate trayitemgettext trayitemsetonevent
3581
+ trayitemsetstate trayitemsettext traysetclick trayseticon traysetonevent
3582
+ traysetpauseicon traysetstate traysettooltip traytip ubound udpbind
3583
+ udpclosesocket udpopen udprecv udpsend udpshutdown udpstartup vargettype
3584
+ winactivate winactive winclose winexists winflash wingetcaretpos
3585
+ wingetclasslist wingetclientsize wingethandle wingetpos wingetprocess
3586
+ wingetstate wingettext wingettitle winkill winlist winmenuselectitem
3587
+ winminimizeall winminimizeallundo winmove winsetontop winsetstate
3588
+ winsettitle winsettrans winwait winwaitactive winwaitclose
3589
+ winwaitnotactive""".split()
3590
+
3591
+ macros = """\
3592
+ @appdatacommondir @appdatadir @autoitexe @autoitpid @autoitversion
3593
+ @autoitx64 @com_eventobj @commonfilesdir @compiled @computername @comspec
3594
+ @cpuarch @cr @crlf @desktopcommondir @desktopdepth @desktopdir
3595
+ @desktopheight @desktoprefresh @desktopwidth @documentscommondir @error
3596
+ @exitcode @exitmethod @extended @favoritescommondir @favoritesdir
3597
+ @gui_ctrlhandle @gui_ctrlid @gui_dragfile @gui_dragid @gui_dropid
3598
+ @gui_winhandle @homedrive @homepath @homeshare @hotkeypressed @hour
3599
+ @ipaddress1 @ipaddress2 @ipaddress3 @ipaddress4 @kblayout @lf
3600
+ @logondnsdomain @logondomain @logonserver @mday @min @mon @msec @muilang
3601
+ @mydocumentsdir @numparams @osarch @osbuild @oslang @osservicepack @ostype
3602
+ @osversion @programfilesdir @programscommondir @programsdir @scriptdir
3603
+ @scriptfullpath @scriptlinenumber @scriptname @sec @startmenucommondir
3604
+ @startmenudir @startupcommondir @startupdir @sw_disable @sw_enable @sw_hide
3605
+ @sw_lock @sw_maximize @sw_minimize @sw_restore @sw_show @sw_showdefault
3606
+ @sw_showmaximized @sw_showminimized @sw_showminnoactive @sw_showna
3607
+ @sw_shownoactivate @sw_shownormal @sw_unlock @systemdir @tab @tempdir
3608
+ @tray_id @trayiconflashing @trayiconvisible @username @userprofiledir @wday
3609
+ @windowsdir @workingdir @yday @year""".split()
3610
+
3611
+ tokens = {
3612
+ 'root': [
3613
+ (r';.*\n', Comment.Single),
3614
+ (r'(#comments-start|#cs).*?(#comments-end|#ce)', Comment.Multiline),
3615
+ (r'[\[\]{}(),;]', Punctuation),
3616
+ (r'(and|or|not)\b', Operator.Word),
3617
+ (r'[\$|@][a-zA-Z_][a-zA-Z0-9_]*', Name.Variable),
3618
+ (r'!=|==|:=|\.=|<<|>>|[-~+/*%=<>&^|?:!.]', Operator),
3619
+ include('commands'),
3620
+ include('labels'),
3621
+ include('builtInFunctions'),
3622
+ include('builtInMarcros'),
3623
+ (r'"', String, combined('stringescape', 'dqs')),
3624
+ include('numbers'),
3625
+ (r'[a-zA-Z_#@$][a-zA-Z0-9_#@$]*', Name),
3626
+ (r'\\|\'', Text),
3627
+ (r'\`([\,\%\`abfnrtv\-\+;])', String.Escape),
3628
+ (r'_\n', Text), # Line continuation
3629
+ include('garbage'),
3630
+ ],
3631
+ 'commands': [
3632
+ (r'(?i)(\s*)(%s)\b' % '|'.join(keywords),
3633
+ bygroups(Text, Name.Builtin)),
3634
+ ],
3635
+ 'builtInFunctions': [
3636
+ (r'(?i)(%s)\b' % '|'.join(functions),
3637
+ Name.Function),
3638
+ ],
3639
+ 'builtInMarcros': [
3640
+ (r'(?i)(%s)\b' % '|'.join(macros),
3641
+ Name.Variable.Global),
3642
+ ],
3643
+ 'labels': [
3644
+ # sendkeys
3645
+ (r'(^\s*)({\S+?})', bygroups(Text, Name.Label)),
3646
+ ],
3647
+ 'numbers': [
3648
+ (r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number.Float),
3649
+ (r'\d+[eE][+-]?[0-9]+', Number.Float),
3650
+ (r'0\d+', Number.Oct),
3651
+ (r'0[xX][a-fA-F0-9]+', Number.Hex),
3652
+ (r'\d+L', Number.Integer.Long),
3653
+ (r'\d+', Number.Integer)
3654
+ ],
3655
+ 'stringescape': [
3656
+ (r'\"\"|\`([\,\%\`abfnrtv])', String.Escape),
3657
+ ],
3658
+ 'strings': [
3659
+ (r'[^"\n]+', String),
3660
+ ],
3661
+ 'dqs': [
3662
+ (r'"', String, '#pop'),
3663
+ include('strings')
3664
+ ],
3665
+ 'garbage': [
3666
+ (r'[^\S\n]', Text),
3667
+ ],
3668
+ }
3669
+
3670
+
3671
+ class RexxLexer(RegexLexer):
3672
+ """
3673
+ `Rexx <http://www.rexxinfo.org/>`_ is a scripting language available for
3674
+ a wide range of different platforms with its roots found on mainframe
3675
+ systems. It is popular for I/O- and data based tasks and can act as glue
3676
+ language to bind different applications together.
3677
+
3678
+ *New in Pygments 1.7.*
3679
+ """
3680
+ name = 'Rexx'
3681
+ aliases = ['rexx', 'ARexx', 'arexx']
3682
+ filenames = ['*.rexx', '*.rex', '*.rx', '*.arexx']
3683
+ mimetypes = ['text/x-rexx']
3684
+ flags = re.IGNORECASE
3685
+
3686
+ tokens = {
3687
+ 'root': [
3688
+ (r'\s', Whitespace),
3689
+ (r'/\*', Comment.Multiline, 'comment'),
3690
+ (r'"', String, 'string_double'),
3691
+ (r"'", String, 'string_single'),
3692
+ (r'[0-9]+(\.[0-9]+)?(e[+-]?[0-9])?', Number),
3693
+ (r'([a-z_][a-z0-9_]*)(\s*)(:)(\s*)(procedure)\b',
3694
+ bygroups(Name.Function, Whitespace, Operator, Whitespace,
3695
+ Keyword.Declaration)),
3696
+ (r'([a-z_][a-z0-9_]*)(\s*)(:)',
3697
+ bygroups(Name.Label, Whitespace, Operator)),
3698
+ include('function'),
3699
+ include('keyword'),
3700
+ include('operator'),
3701
+ (r'[a-z_][a-z0-9_]*', Text),
3702
+ ],
3703
+ 'function': [
3704
+ (r'(abbrev|abs|address|arg|b2x|bitand|bitor|bitxor|c2d|c2x|'
3705
+ r'center|charin|charout|chars|compare|condition|copies|d2c|'
3706
+ r'd2x|datatype|date|delstr|delword|digits|errortext|form|'
3707
+ r'format|fuzz|insert|lastpos|left|length|linein|lineout|lines|'
3708
+ r'max|min|overlay|pos|queued|random|reverse|right|sign|'
3709
+ r'sourceline|space|stream|strip|substr|subword|symbol|time|'
3710
+ r'trace|translate|trunc|value|verify|word|wordindex|'
3711
+ r'wordlength|wordpos|words|x2b|x2c|x2d|xrange)(\s*)(\()',
3712
+ bygroups(Name.Builtin, Whitespace, Operator)),
3713
+ ],
3714
+ 'keyword': [
3715
+ (r'(address|arg|by|call|do|drop|else|end|exit|for|forever|if|'
3716
+ r'interpret|iterate|leave|nop|numeric|off|on|options|parse|'
3717
+ r'pull|push|queue|return|say|select|signal|to|then|trace|until|'
3718
+ r'while)\b', Keyword.Reserved),
3719
+ ],
3720
+ 'operator': [
3721
+ (ur'(-|//|/|\(|\)|\*\*|\*|\\<<|\\<|\\==|\\=|\\>>|\\>|\\|\|\||\||'
3722
+ ur'&&|&|%|\+|<<=|<<|<=|<>|<|==|=|><|>=|>>=|>>|>|¬<<|¬<|¬==|¬=|'
3723
+ ur'¬>>|¬>|¬|\.|,)', Operator),
3724
+ ],
3725
+ 'string_double': [
3726
+ (r'[^"\n]+', String),
3727
+ (r'""', String),
3728
+ (r'"', String, '#pop'),
3729
+ (r'\n', Text, '#pop'), # Stray linefeed also terminates strings.
3730
+ ],
3731
+ 'string_single': [
3732
+ (r'[^\'\n]', String),
3733
+ (r'\'\'', String),
3734
+ (r'\'', String, '#pop'),
3735
+ (r'\n', Text, '#pop'), # Stray linefeed also terminates strings.
3736
+ ],
3737
+ 'comment': [
3738
+ (r'[^*]+', Comment.Multiline),
3739
+ (r'\*/', Comment.Multiline, '#pop'),
3740
+ (r'\*', Comment.Multiline),
3741
+ ]
3742
+ }
3743
+
3744
+ _c = lambda s: re.compile(s, re.MULTILINE)
3745
+ _ADDRESS_COMMAND_PATTERN = _c(r'^\s*address\s+command\b')
3746
+ _ADDRESS_PATTERN = _c(r'^\s*address\s+')
3747
+ _DO_WHILE_PATTERN = _c(r'^\s*do\s+while\b')
3748
+ _IF_THEN_DO_PATTERN = _c(r'^\s*if\b.+\bthen\s+do\s*$')
3749
+ _PROCEDURE_PATTERN = _c(r'^\s*([a-z_][a-z0-9_]*)(\s*)(:)(\s*)(procedure)\b')
3750
+ _ELSE_DO_PATTERN = _c(r'\belse\s+do\s*$')
3751
+ _PARSE_ARG_PATTERN = _c(r'^\s*parse\s+(upper\s+)?(arg|value)\b')
3752
+ PATTERNS_AND_WEIGHTS = (
3753
+ (_ADDRESS_COMMAND_PATTERN, 0.2),
3754
+ (_ADDRESS_PATTERN, 0.05),
3755
+ (_DO_WHILE_PATTERN, 0.1),
3756
+ (_ELSE_DO_PATTERN, 0.1),
3757
+ (_IF_THEN_DO_PATTERN, 0.1),
3758
+ (_PROCEDURE_PATTERN, 0.5),
3759
+ (_PARSE_ARG_PATTERN, 0.2),
3760
+ )
3761
+
3762
+ def analyse_text(text):
3763
+ """
3764
+ Check for inital comment and patterns that distinguish Rexx from other
3765
+ C-like languages.
3766
+ """
3767
+ if re.search(r'/\*\**\s*rexx', text, re.IGNORECASE):
3768
+ # Header matches MVS Rexx requirements, this is certainly a Rexx
3769
+ # script.
3770
+ return 1.0
3771
+ elif text.startswith('/*'):
3772
+ # Header matches general Rexx requirements; the source code might
3773
+ # still be any language using C comments such as C++, C# or Java.
3774
+ lowerText = text.lower()
3775
+ result = sum(weight
3776
+ for (pattern, weight) in RexxLexer.PATTERNS_AND_WEIGHTS
3777
+ if pattern.search(lowerText)) + 0.01
3778
+ return min(result, 1.0)