gitlab-pygments.rb 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (399) hide show
  1. data/.gitignore +6 -0
  2. data/Gemfile +2 -0
  3. data/README.md +91 -0
  4. data/Rakefile +78 -0
  5. data/bench.rb +22 -0
  6. data/cache-lexers.rb +8 -0
  7. data/lexers +0 -0
  8. data/lib/pygments/lexer.rb +148 -0
  9. data/lib/pygments/mentos.py +344 -0
  10. data/lib/pygments/popen.rb +389 -0
  11. data/lib/pygments/version.rb +3 -0
  12. data/lib/pygments.rb +8 -0
  13. data/pygments.rb.gemspec +24 -0
  14. data/test/test_data.c +2581 -0
  15. data/test/test_data.py +514 -0
  16. data/test/test_data_generated +2582 -0
  17. data/test/test_pygments.rb +276 -0
  18. data/vendor/custom_formatters/gitlab.py +171 -0
  19. data/vendor/custom_lexers/github.py +362 -0
  20. data/vendor/pygments-main/AUTHORS +115 -0
  21. data/vendor/pygments-main/CHANGES +762 -0
  22. data/vendor/pygments-main/LICENSE +25 -0
  23. data/vendor/pygments-main/MANIFEST.in +6 -0
  24. data/vendor/pygments-main/Makefile +59 -0
  25. data/vendor/pygments-main/REVISION +1 -0
  26. data/vendor/pygments-main/TODO +15 -0
  27. data/vendor/pygments-main/docs/generate.py +472 -0
  28. data/vendor/pygments-main/docs/pygmentize.1 +94 -0
  29. data/vendor/pygments-main/docs/src/api.txt +270 -0
  30. data/vendor/pygments-main/docs/src/authors.txt +5 -0
  31. data/vendor/pygments-main/docs/src/changelog.txt +5 -0
  32. data/vendor/pygments-main/docs/src/cmdline.txt +147 -0
  33. data/vendor/pygments-main/docs/src/filterdevelopment.txt +70 -0
  34. data/vendor/pygments-main/docs/src/filters.txt +42 -0
  35. data/vendor/pygments-main/docs/src/formatterdevelopment.txt +169 -0
  36. data/vendor/pygments-main/docs/src/formatters.txt +48 -0
  37. data/vendor/pygments-main/docs/src/index.txt +69 -0
  38. data/vendor/pygments-main/docs/src/installation.txt +71 -0
  39. data/vendor/pygments-main/docs/src/integrate.txt +43 -0
  40. data/vendor/pygments-main/docs/src/lexerdevelopment.txt +551 -0
  41. data/vendor/pygments-main/docs/src/lexers.txt +67 -0
  42. data/vendor/pygments-main/docs/src/moinmoin.txt +39 -0
  43. data/vendor/pygments-main/docs/src/plugins.txt +93 -0
  44. data/vendor/pygments-main/docs/src/quickstart.txt +202 -0
  45. data/vendor/pygments-main/docs/src/rstdirective.txt +22 -0
  46. data/vendor/pygments-main/docs/src/styles.txt +143 -0
  47. data/vendor/pygments-main/docs/src/tokens.txt +349 -0
  48. data/vendor/pygments-main/docs/src/unicode.txt +49 -0
  49. data/vendor/pygments-main/external/markdown-processor.py +67 -0
  50. data/vendor/pygments-main/external/moin-parser.py +112 -0
  51. data/vendor/pygments-main/external/pygments.bashcomp +38 -0
  52. data/vendor/pygments-main/external/rst-directive-old.py +77 -0
  53. data/vendor/pygments-main/external/rst-directive.py +83 -0
  54. data/vendor/pygments-main/ez_setup.py +276 -0
  55. data/vendor/pygments-main/pygmentize +7 -0
  56. data/vendor/pygments-main/pygments/__init__.py +91 -0
  57. data/vendor/pygments-main/pygments/cmdline.py +433 -0
  58. data/vendor/pygments-main/pygments/console.py +74 -0
  59. data/vendor/pygments-main/pygments/filter.py +74 -0
  60. data/vendor/pygments-main/pygments/filters/__init__.py +357 -0
  61. data/vendor/pygments-main/pygments/formatter.py +92 -0
  62. data/vendor/pygments-main/pygments/formatters/__init__.py +68 -0
  63. data/vendor/pygments-main/pygments/formatters/_mapping.py +94 -0
  64. data/vendor/pygments-main/pygments/formatters/bbcode.py +109 -0
  65. data/vendor/pygments-main/pygments/formatters/gitlab.py +171 -0
  66. data/vendor/pygments-main/pygments/formatters/html.py +750 -0
  67. data/vendor/pygments-main/pygments/formatters/img.py +553 -0
  68. data/vendor/pygments-main/pygments/formatters/latex.py +378 -0
  69. data/vendor/pygments-main/pygments/formatters/other.py +117 -0
  70. data/vendor/pygments-main/pygments/formatters/rtf.py +136 -0
  71. data/vendor/pygments-main/pygments/formatters/svg.py +154 -0
  72. data/vendor/pygments-main/pygments/formatters/terminal.py +112 -0
  73. data/vendor/pygments-main/pygments/formatters/terminal256.py +222 -0
  74. data/vendor/pygments-main/pygments/lexer.py +697 -0
  75. data/vendor/pygments-main/pygments/lexers/__init__.py +229 -0
  76. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1645 -0
  77. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +232 -0
  78. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +249 -0
  79. data/vendor/pygments-main/pygments/lexers/_mapping.py +298 -0
  80. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +3787 -0
  81. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +232 -0
  82. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +29 -0
  83. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +3 -0
  84. data/vendor/pygments-main/pygments/lexers/agile.py +1803 -0
  85. data/vendor/pygments-main/pygments/lexers/asm.py +360 -0
  86. data/vendor/pygments-main/pygments/lexers/compiled.py +2891 -0
  87. data/vendor/pygments-main/pygments/lexers/dotnet.py +636 -0
  88. data/vendor/pygments-main/pygments/lexers/functional.py +1832 -0
  89. data/vendor/pygments-main/pygments/lexers/github.py +362 -0
  90. data/vendor/pygments-main/pygments/lexers/hdl.py +356 -0
  91. data/vendor/pygments-main/pygments/lexers/jvm.py +847 -0
  92. data/vendor/pygments-main/pygments/lexers/math.py +1072 -0
  93. data/vendor/pygments-main/pygments/lexers/other.py +3339 -0
  94. data/vendor/pygments-main/pygments/lexers/parsers.py +695 -0
  95. data/vendor/pygments-main/pygments/lexers/shell.py +361 -0
  96. data/vendor/pygments-main/pygments/lexers/special.py +100 -0
  97. data/vendor/pygments-main/pygments/lexers/sql.py +559 -0
  98. data/vendor/pygments-main/pygments/lexers/templates.py +1631 -0
  99. data/vendor/pygments-main/pygments/lexers/text.py +1753 -0
  100. data/vendor/pygments-main/pygments/lexers/web.py +2864 -0
  101. data/vendor/pygments-main/pygments/plugin.py +74 -0
  102. data/vendor/pygments-main/pygments/scanner.py +104 -0
  103. data/vendor/pygments-main/pygments/style.py +117 -0
  104. data/vendor/pygments-main/pygments/styles/__init__.py +70 -0
  105. data/vendor/pygments-main/pygments/styles/autumn.py +65 -0
  106. data/vendor/pygments-main/pygments/styles/borland.py +51 -0
  107. data/vendor/pygments-main/pygments/styles/bw.py +49 -0
  108. data/vendor/pygments-main/pygments/styles/colorful.py +81 -0
  109. data/vendor/pygments-main/pygments/styles/default.py +73 -0
  110. data/vendor/pygments-main/pygments/styles/emacs.py +72 -0
  111. data/vendor/pygments-main/pygments/styles/friendly.py +72 -0
  112. data/vendor/pygments-main/pygments/styles/fruity.py +42 -0
  113. data/vendor/pygments-main/pygments/styles/manni.py +75 -0
  114. data/vendor/pygments-main/pygments/styles/monokai.py +106 -0
  115. data/vendor/pygments-main/pygments/styles/murphy.py +80 -0
  116. data/vendor/pygments-main/pygments/styles/native.py +65 -0
  117. data/vendor/pygments-main/pygments/styles/pastie.py +75 -0
  118. data/vendor/pygments-main/pygments/styles/perldoc.py +69 -0
  119. data/vendor/pygments-main/pygments/styles/rrt.py +33 -0
  120. data/vendor/pygments-main/pygments/styles/tango.py +141 -0
  121. data/vendor/pygments-main/pygments/styles/trac.py +63 -0
  122. data/vendor/pygments-main/pygments/styles/vim.py +63 -0
  123. data/vendor/pygments-main/pygments/styles/vs.py +38 -0
  124. data/vendor/pygments-main/pygments/token.py +195 -0
  125. data/vendor/pygments-main/pygments/unistring.py +130 -0
  126. data/vendor/pygments-main/pygments/util.py +232 -0
  127. data/vendor/pygments-main/scripts/check_sources.py +242 -0
  128. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +30 -0
  129. data/vendor/pygments-main/scripts/epydoc.css +280 -0
  130. data/vendor/pygments-main/scripts/find_codetags.py +205 -0
  131. data/vendor/pygments-main/scripts/find_error.py +171 -0
  132. data/vendor/pygments-main/scripts/get_vimkw.py +43 -0
  133. data/vendor/pygments-main/scripts/pylintrc +301 -0
  134. data/vendor/pygments-main/scripts/reindent.py +291 -0
  135. data/vendor/pygments-main/scripts/vim2pygments.py +933 -0
  136. data/vendor/pygments-main/setup.cfg +6 -0
  137. data/vendor/pygments-main/setup.py +88 -0
  138. data/vendor/pygments-main/tests/dtds/HTML4-f.dtd +37 -0
  139. data/vendor/pygments-main/tests/dtds/HTML4-s.dtd +869 -0
  140. data/vendor/pygments-main/tests/dtds/HTML4.dcl +88 -0
  141. data/vendor/pygments-main/tests/dtds/HTML4.dtd +1092 -0
  142. data/vendor/pygments-main/tests/dtds/HTML4.soc +9 -0
  143. data/vendor/pygments-main/tests/dtds/HTMLlat1.ent +195 -0
  144. data/vendor/pygments-main/tests/dtds/HTMLspec.ent +77 -0
  145. data/vendor/pygments-main/tests/dtds/HTMLsym.ent +241 -0
  146. data/vendor/pygments-main/tests/examplefiles/ANTLRv3.g +608 -0
  147. data/vendor/pygments-main/tests/examplefiles/AcidStateAdvanced.hs +209 -0
  148. data/vendor/pygments-main/tests/examplefiles/AlternatingGroup.mu +102 -0
  149. data/vendor/pygments-main/tests/examplefiles/CPDictionary.j +611 -0
  150. data/vendor/pygments-main/tests/examplefiles/Constants.mo +158 -0
  151. data/vendor/pygments-main/tests/examplefiles/DancingSudoku.lhs +411 -0
  152. data/vendor/pygments-main/tests/examplefiles/Errors.scala +18 -0
  153. data/vendor/pygments-main/tests/examplefiles/File.hy +174 -0
  154. data/vendor/pygments-main/tests/examplefiles/Intro.java +1660 -0
  155. data/vendor/pygments-main/tests/examplefiles/Makefile +1131 -0
  156. data/vendor/pygments-main/tests/examplefiles/Object.st +4394 -0
  157. data/vendor/pygments-main/tests/examplefiles/OrderedMap.hx +584 -0
  158. data/vendor/pygments-main/tests/examplefiles/SmallCheck.hs +378 -0
  159. data/vendor/pygments-main/tests/examplefiles/Sorting.mod +470 -0
  160. data/vendor/pygments-main/tests/examplefiles/Sudoku.lhs +382 -0
  161. data/vendor/pygments-main/tests/examplefiles/addressbook.proto +30 -0
  162. data/vendor/pygments-main/tests/examplefiles/antlr_throws +1 -0
  163. data/vendor/pygments-main/tests/examplefiles/apache2.conf +393 -0
  164. data/vendor/pygments-main/tests/examplefiles/as3_test.as +143 -0
  165. data/vendor/pygments-main/tests/examplefiles/as3_test2.as +46 -0
  166. data/vendor/pygments-main/tests/examplefiles/as3_test3.as +3 -0
  167. data/vendor/pygments-main/tests/examplefiles/aspx-cs_example +27 -0
  168. data/vendor/pygments-main/tests/examplefiles/badcase.java +2 -0
  169. data/vendor/pygments-main/tests/examplefiles/batchfile.bat +49 -0
  170. data/vendor/pygments-main/tests/examplefiles/boot-9.scm +1557 -0
  171. data/vendor/pygments-main/tests/examplefiles/cells.ps +515 -0
  172. data/vendor/pygments-main/tests/examplefiles/ceval.c +2604 -0
  173. data/vendor/pygments-main/tests/examplefiles/cheetah_example.html +13 -0
  174. data/vendor/pygments-main/tests/examplefiles/classes.dylan +40 -0
  175. data/vendor/pygments-main/tests/examplefiles/condensed_ruby.rb +10 -0
  176. data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +447 -0
  177. data/vendor/pygments-main/tests/examplefiles/database.pytb +20 -0
  178. data/vendor/pygments-main/tests/examplefiles/de.MoinMoin.po +2461 -0
  179. data/vendor/pygments-main/tests/examplefiles/demo.ahk +181 -0
  180. data/vendor/pygments-main/tests/examplefiles/demo.cfm +38 -0
  181. data/vendor/pygments-main/tests/examplefiles/django_sample.html+django +68 -0
  182. data/vendor/pygments-main/tests/examplefiles/dwarf.cw +17 -0
  183. data/vendor/pygments-main/tests/examplefiles/erl_session +10 -0
  184. data/vendor/pygments-main/tests/examplefiles/escape_semicolon.clj +1 -0
  185. data/vendor/pygments-main/tests/examplefiles/evil_regex.js +48 -0
  186. data/vendor/pygments-main/tests/examplefiles/example.c +2080 -0
  187. data/vendor/pygments-main/tests/examplefiles/example.cls +15 -0
  188. data/vendor/pygments-main/tests/examplefiles/example.cpp +2363 -0
  189. data/vendor/pygments-main/tests/examplefiles/example.gs +106 -0
  190. data/vendor/pygments-main/tests/examplefiles/example.gst +7 -0
  191. data/vendor/pygments-main/tests/examplefiles/example.kt +47 -0
  192. data/vendor/pygments-main/tests/examplefiles/example.lua +250 -0
  193. data/vendor/pygments-main/tests/examplefiles/example.moo +26 -0
  194. data/vendor/pygments-main/tests/examplefiles/example.moon +629 -0
  195. data/vendor/pygments-main/tests/examplefiles/example.nim +1010 -0
  196. data/vendor/pygments-main/tests/examplefiles/example.ns2 +69 -0
  197. data/vendor/pygments-main/tests/examplefiles/example.p +34 -0
  198. data/vendor/pygments-main/tests/examplefiles/example.pas +2708 -0
  199. data/vendor/pygments-main/tests/examplefiles/example.rb +1852 -0
  200. data/vendor/pygments-main/tests/examplefiles/example.rhtml +561 -0
  201. data/vendor/pygments-main/tests/examplefiles/example.sh-session +19 -0
  202. data/vendor/pygments-main/tests/examplefiles/example.sml +156 -0
  203. data/vendor/pygments-main/tests/examplefiles/example.snobol +15 -0
  204. data/vendor/pygments-main/tests/examplefiles/example.tea +34 -0
  205. data/vendor/pygments-main/tests/examplefiles/example.u +548 -0
  206. data/vendor/pygments-main/tests/examplefiles/example.weechatlog +9 -0
  207. data/vendor/pygments-main/tests/examplefiles/example.xhtml +376 -0
  208. data/vendor/pygments-main/tests/examplefiles/example.yaml +302 -0
  209. data/vendor/pygments-main/tests/examplefiles/example2.aspx +29 -0
  210. data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +363 -0
  211. data/vendor/pygments-main/tests/examplefiles/example_file.fy +128 -0
  212. data/vendor/pygments-main/tests/examplefiles/firefox.mak +586 -0
  213. data/vendor/pygments-main/tests/examplefiles/flipflop.sv +19 -0
  214. data/vendor/pygments-main/tests/examplefiles/foo.sce +6 -0
  215. data/vendor/pygments-main/tests/examplefiles/format.ml +1213 -0
  216. data/vendor/pygments-main/tests/examplefiles/fucked_up.rb +77 -0
  217. data/vendor/pygments-main/tests/examplefiles/function.mu +1 -0
  218. data/vendor/pygments-main/tests/examplefiles/functional.rst +1472 -0
  219. data/vendor/pygments-main/tests/examplefiles/genclass.clj +510 -0
  220. data/vendor/pygments-main/tests/examplefiles/genshi_example.xml+genshi +193 -0
  221. data/vendor/pygments-main/tests/examplefiles/genshitext_example.genshitext +33 -0
  222. data/vendor/pygments-main/tests/examplefiles/glsl.frag +7 -0
  223. data/vendor/pygments-main/tests/examplefiles/glsl.vert +13 -0
  224. data/vendor/pygments-main/tests/examplefiles/html+php_faulty.php +1 -0
  225. data/vendor/pygments-main/tests/examplefiles/http_request_example +14 -0
  226. data/vendor/pygments-main/tests/examplefiles/http_response_example +27 -0
  227. data/vendor/pygments-main/tests/examplefiles/import.hs +4 -0
  228. data/vendor/pygments-main/tests/examplefiles/intro.ik +24 -0
  229. data/vendor/pygments-main/tests/examplefiles/ints.php +10 -0
  230. data/vendor/pygments-main/tests/examplefiles/intsyn.fun +675 -0
  231. data/vendor/pygments-main/tests/examplefiles/intsyn.sig +286 -0
  232. data/vendor/pygments-main/tests/examplefiles/irb_heredoc +8 -0
  233. data/vendor/pygments-main/tests/examplefiles/irc.lsp +214 -0
  234. data/vendor/pygments-main/tests/examplefiles/java.properties +16 -0
  235. data/vendor/pygments-main/tests/examplefiles/jbst_example1.jbst +28 -0
  236. data/vendor/pygments-main/tests/examplefiles/jbst_example2.jbst +45 -0
  237. data/vendor/pygments-main/tests/examplefiles/jinjadesignerdoc.rst +713 -0
  238. data/vendor/pygments-main/tests/examplefiles/lighttpd_config.conf +13 -0
  239. data/vendor/pygments-main/tests/examplefiles/linecontinuation.py +47 -0
  240. data/vendor/pygments-main/tests/examplefiles/ltmain.sh +2849 -0
  241. data/vendor/pygments-main/tests/examplefiles/main.cmake +42 -0
  242. data/vendor/pygments-main/tests/examplefiles/markdown.lsp +679 -0
  243. data/vendor/pygments-main/tests/examplefiles/matlab_noreturn +3 -0
  244. data/vendor/pygments-main/tests/examplefiles/matlab_sample +27 -0
  245. data/vendor/pygments-main/tests/examplefiles/matlabsession_sample.txt +37 -0
  246. data/vendor/pygments-main/tests/examplefiles/minimal.ns2 +4 -0
  247. data/vendor/pygments-main/tests/examplefiles/moin_SyntaxReference.txt +340 -0
  248. data/vendor/pygments-main/tests/examplefiles/multiline_regexes.rb +38 -0
  249. data/vendor/pygments-main/tests/examplefiles/nasm_aoutso.asm +96 -0
  250. data/vendor/pygments-main/tests/examplefiles/nasm_objexe.asm +30 -0
  251. data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +87 -0
  252. data/vendor/pygments-main/tests/examplefiles/nginx_nginx.conf +118 -0
  253. data/vendor/pygments-main/tests/examplefiles/numbers.c +12 -0
  254. data/vendor/pygments-main/tests/examplefiles/objc_example.m +25 -0
  255. data/vendor/pygments-main/tests/examplefiles/objc_example2.m +24 -0
  256. data/vendor/pygments-main/tests/examplefiles/perl_misc +62 -0
  257. data/vendor/pygments-main/tests/examplefiles/perl_perl5db +998 -0
  258. data/vendor/pygments-main/tests/examplefiles/perl_regex-delims +120 -0
  259. data/vendor/pygments-main/tests/examplefiles/perlfunc.1 +856 -0
  260. data/vendor/pygments-main/tests/examplefiles/phpcomplete.vim +567 -0
  261. data/vendor/pygments-main/tests/examplefiles/pleac.in.rb +1223 -0
  262. data/vendor/pygments-main/tests/examplefiles/postgresql_test.txt +47 -0
  263. data/vendor/pygments-main/tests/examplefiles/pppoe.applescript +10 -0
  264. data/vendor/pygments-main/tests/examplefiles/psql_session.txt +122 -0
  265. data/vendor/pygments-main/tests/examplefiles/py3_test.txt +2 -0
  266. data/vendor/pygments-main/tests/examplefiles/pycon_test.pycon +14 -0
  267. data/vendor/pygments-main/tests/examplefiles/pytb_test2.pytb +2 -0
  268. data/vendor/pygments-main/tests/examplefiles/python25-bsd.mak +234 -0
  269. data/vendor/pygments-main/tests/examplefiles/qsort.prolog +13 -0
  270. data/vendor/pygments-main/tests/examplefiles/r-console-transcript.Rout +38 -0
  271. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_rlscan +280 -0
  272. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_snippet +2 -0
  273. data/vendor/pygments-main/tests/examplefiles/regex.js +22 -0
  274. data/vendor/pygments-main/tests/examplefiles/reversi.lsp +427 -0
  275. data/vendor/pygments-main/tests/examplefiles/ruby_func_def.rb +11 -0
  276. data/vendor/pygments-main/tests/examplefiles/scilab.sci +30 -0
  277. data/vendor/pygments-main/tests/examplefiles/sibling.prolog +19 -0
  278. data/vendor/pygments-main/tests/examplefiles/simple.md +747 -0
  279. data/vendor/pygments-main/tests/examplefiles/smarty_example.html +209 -0
  280. data/vendor/pygments-main/tests/examplefiles/source.lgt +343 -0
  281. data/vendor/pygments-main/tests/examplefiles/sources.list +62 -0
  282. data/vendor/pygments-main/tests/examplefiles/sphere.pov +18 -0
  283. data/vendor/pygments-main/tests/examplefiles/sqlite3.sqlite3-console +27 -0
  284. data/vendor/pygments-main/tests/examplefiles/squid.conf +30 -0
  285. data/vendor/pygments-main/tests/examplefiles/string.jl +1031 -0
  286. data/vendor/pygments-main/tests/examplefiles/string_delimiters.d +21 -0
  287. data/vendor/pygments-main/tests/examplefiles/stripheredoc.sh +3 -0
  288. data/vendor/pygments-main/tests/examplefiles/test.R +119 -0
  289. data/vendor/pygments-main/tests/examplefiles/test.adb +211 -0
  290. data/vendor/pygments-main/tests/examplefiles/test.asy +131 -0
  291. data/vendor/pygments-main/tests/examplefiles/test.awk +121 -0
  292. data/vendor/pygments-main/tests/examplefiles/test.bas +29 -0
  293. data/vendor/pygments-main/tests/examplefiles/test.bmx +145 -0
  294. data/vendor/pygments-main/tests/examplefiles/test.boo +39 -0
  295. data/vendor/pygments-main/tests/examplefiles/test.bro +250 -0
  296. data/vendor/pygments-main/tests/examplefiles/test.cs +374 -0
  297. data/vendor/pygments-main/tests/examplefiles/test.css +54 -0
  298. data/vendor/pygments-main/tests/examplefiles/test.d +135 -0
  299. data/vendor/pygments-main/tests/examplefiles/test.dart +23 -0
  300. data/vendor/pygments-main/tests/examplefiles/test.dtd +89 -0
  301. data/vendor/pygments-main/tests/examplefiles/test.ec +605 -0
  302. data/vendor/pygments-main/tests/examplefiles/test.ecl +58 -0
  303. data/vendor/pygments-main/tests/examplefiles/test.eh +315 -0
  304. data/vendor/pygments-main/tests/examplefiles/test.erl +169 -0
  305. data/vendor/pygments-main/tests/examplefiles/test.evoque +33 -0
  306. data/vendor/pygments-main/tests/examplefiles/test.fan +818 -0
  307. data/vendor/pygments-main/tests/examplefiles/test.flx +57 -0
  308. data/vendor/pygments-main/tests/examplefiles/test.gdc +13 -0
  309. data/vendor/pygments-main/tests/examplefiles/test.groovy +97 -0
  310. data/vendor/pygments-main/tests/examplefiles/test.html +339 -0
  311. data/vendor/pygments-main/tests/examplefiles/test.ini +10 -0
  312. data/vendor/pygments-main/tests/examplefiles/test.java +653 -0
  313. data/vendor/pygments-main/tests/examplefiles/test.jsp +24 -0
  314. data/vendor/pygments-main/tests/examplefiles/test.maql +45 -0
  315. data/vendor/pygments-main/tests/examplefiles/test.mod +374 -0
  316. data/vendor/pygments-main/tests/examplefiles/test.moo +51 -0
  317. data/vendor/pygments-main/tests/examplefiles/test.myt +166 -0
  318. data/vendor/pygments-main/tests/examplefiles/test.nim +93 -0
  319. data/vendor/pygments-main/tests/examplefiles/test.pas +743 -0
  320. data/vendor/pygments-main/tests/examplefiles/test.php +505 -0
  321. data/vendor/pygments-main/tests/examplefiles/test.plot +333 -0
  322. data/vendor/pygments-main/tests/examplefiles/test.ps1 +108 -0
  323. data/vendor/pygments-main/tests/examplefiles/test.pypylog +1839 -0
  324. data/vendor/pygments-main/tests/examplefiles/test.r3 +94 -0
  325. data/vendor/pygments-main/tests/examplefiles/test.rb +177 -0
  326. data/vendor/pygments-main/tests/examplefiles/test.rhtml +43 -0
  327. data/vendor/pygments-main/tests/examplefiles/test.scaml +8 -0
  328. data/vendor/pygments-main/tests/examplefiles/test.ssp +12 -0
  329. data/vendor/pygments-main/tests/examplefiles/test.tcsh +830 -0
  330. data/vendor/pygments-main/tests/examplefiles/test.vb +407 -0
  331. data/vendor/pygments-main/tests/examplefiles/test.vhdl +161 -0
  332. data/vendor/pygments-main/tests/examplefiles/test.xqy +138 -0
  333. data/vendor/pygments-main/tests/examplefiles/test.xsl +23 -0
  334. data/vendor/pygments-main/tests/examplefiles/truncated.pytb +15 -0
  335. data/vendor/pygments-main/tests/examplefiles/type.lisp +1202 -0
  336. data/vendor/pygments-main/tests/examplefiles/underscore.coffee +603 -0
  337. data/vendor/pygments-main/tests/examplefiles/unicode.applescript +5 -0
  338. data/vendor/pygments-main/tests/examplefiles/unicodedoc.py +11 -0
  339. data/vendor/pygments-main/tests/examplefiles/webkit-transition.css +3 -0
  340. data/vendor/pygments-main/tests/examplefiles/while.pov +13 -0
  341. data/vendor/pygments-main/tests/examplefiles/wiki.factor +384 -0
  342. data/vendor/pygments-main/tests/examplefiles/xml_example +1897 -0
  343. data/vendor/pygments-main/tests/examplefiles/zmlrpc.f90 +798 -0
  344. data/vendor/pygments-main/tests/old_run.py +138 -0
  345. data/vendor/pygments-main/tests/run.py +48 -0
  346. data/vendor/pygments-main/tests/support.py +15 -0
  347. data/vendor/pygments-main/tests/test_basic_api.py +294 -0
  348. data/vendor/pygments-main/tests/test_clexer.py +31 -0
  349. data/vendor/pygments-main/tests/test_cmdline.py +105 -0
  350. data/vendor/pygments-main/tests/test_examplefiles.py +97 -0
  351. data/vendor/pygments-main/tests/test_html_formatter.py +162 -0
  352. data/vendor/pygments-main/tests/test_latex_formatter.py +55 -0
  353. data/vendor/pygments-main/tests/test_perllexer.py +137 -0
  354. data/vendor/pygments-main/tests/test_regexlexer.py +47 -0
  355. data/vendor/pygments-main/tests/test_token.py +46 -0
  356. data/vendor/pygments-main/tests/test_using_api.py +40 -0
  357. data/vendor/pygments-main/tests/test_util.py +116 -0
  358. data/vendor/simplejson/.gitignore +10 -0
  359. data/vendor/simplejson/.travis.yml +5 -0
  360. data/vendor/simplejson/CHANGES.txt +291 -0
  361. data/vendor/simplejson/LICENSE.txt +19 -0
  362. data/vendor/simplejson/MANIFEST.in +5 -0
  363. data/vendor/simplejson/README.rst +19 -0
  364. data/vendor/simplejson/conf.py +179 -0
  365. data/vendor/simplejson/index.rst +628 -0
  366. data/vendor/simplejson/scripts/make_docs.py +18 -0
  367. data/vendor/simplejson/setup.py +104 -0
  368. data/vendor/simplejson/simplejson/__init__.py +510 -0
  369. data/vendor/simplejson/simplejson/_speedups.c +2745 -0
  370. data/vendor/simplejson/simplejson/decoder.py +425 -0
  371. data/vendor/simplejson/simplejson/encoder.py +567 -0
  372. data/vendor/simplejson/simplejson/ordered_dict.py +119 -0
  373. data/vendor/simplejson/simplejson/scanner.py +77 -0
  374. data/vendor/simplejson/simplejson/tests/__init__.py +67 -0
  375. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +55 -0
  376. data/vendor/simplejson/simplejson/tests/test_check_circular.py +30 -0
  377. data/vendor/simplejson/simplejson/tests/test_decimal.py +66 -0
  378. data/vendor/simplejson/simplejson/tests/test_decode.py +83 -0
  379. data/vendor/simplejson/simplejson/tests/test_default.py +9 -0
  380. data/vendor/simplejson/simplejson/tests/test_dump.py +67 -0
  381. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +46 -0
  382. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +32 -0
  383. data/vendor/simplejson/simplejson/tests/test_errors.py +34 -0
  384. data/vendor/simplejson/simplejson/tests/test_fail.py +91 -0
  385. data/vendor/simplejson/simplejson/tests/test_float.py +19 -0
  386. data/vendor/simplejson/simplejson/tests/test_indent.py +86 -0
  387. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +20 -0
  388. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +121 -0
  389. data/vendor/simplejson/simplejson/tests/test_pass1.py +76 -0
  390. data/vendor/simplejson/simplejson/tests/test_pass2.py +14 -0
  391. data/vendor/simplejson/simplejson/tests/test_pass3.py +20 -0
  392. data/vendor/simplejson/simplejson/tests/test_recursion.py +67 -0
  393. data/vendor/simplejson/simplejson/tests/test_scanstring.py +117 -0
  394. data/vendor/simplejson/simplejson/tests/test_separators.py +42 -0
  395. data/vendor/simplejson/simplejson/tests/test_speedups.py +20 -0
  396. data/vendor/simplejson/simplejson/tests/test_tuple.py +49 -0
  397. data/vendor/simplejson/simplejson/tests/test_unicode.py +109 -0
  398. data/vendor/simplejson/simplejson/tool.py +39 -0
  399. metadata +492 -0
@@ -0,0 +1,695 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.lexers.parsers
4
+ ~~~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ Lexers for parser generators.
7
+
8
+ :copyright: Copyright 2006-2012 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, DelegatingLexer, \
15
+ include, bygroups, using
16
+ from pygments.token import Punctuation, Other, Text, Comment, Operator, \
17
+ Keyword, Name, String, Number, Whitespace
18
+ from pygments.lexers.compiled import JavaLexer, CLexer, CppLexer, \
19
+ ObjectiveCLexer, DLexer
20
+ from pygments.lexers.dotnet import CSharpLexer
21
+ from pygments.lexers.agile import RubyLexer, PythonLexer, PerlLexer
22
+ from pygments.lexers.web import ActionScriptLexer
23
+
24
+
25
+ __all__ = ['RagelLexer', 'RagelEmbeddedLexer', 'RagelCLexer', 'RagelDLexer',
26
+ 'RagelCppLexer', 'RagelObjectiveCLexer', 'RagelRubyLexer',
27
+ 'RagelJavaLexer', 'AntlrLexer', 'AntlrPythonLexer',
28
+ 'AntlrPerlLexer', 'AntlrRubyLexer', 'AntlrCppLexer',
29
+ #'AntlrCLexer',
30
+ 'AntlrCSharpLexer', 'AntlrObjectiveCLexer',
31
+ 'AntlrJavaLexer', "AntlrActionScriptLexer"]
32
+
33
+
34
+ class RagelLexer(RegexLexer):
35
+ """
36
+ A pure `Ragel <http://www.complang.org/ragel/>`_ lexer. Use this for
37
+ fragments of Ragel. For ``.rl`` files, use RagelEmbeddedLexer instead
38
+ (or one of the language-specific subclasses).
39
+
40
+ *New in Pygments 1.1.*
41
+ """
42
+
43
+ name = 'Ragel'
44
+ aliases = ['ragel']
45
+ filenames = []
46
+
47
+ tokens = {
48
+ 'whitespace': [
49
+ (r'\s+', Whitespace)
50
+ ],
51
+ 'comments': [
52
+ (r'\#.*$', Comment),
53
+ ],
54
+ 'keywords': [
55
+ (r'(access|action|alphtype)\b', Keyword),
56
+ (r'(getkey|write|machine|include)\b', Keyword),
57
+ (r'(any|ascii|extend|alpha|digit|alnum|lower|upper)\b', Keyword),
58
+ (r'(xdigit|cntrl|graph|print|punct|space|zlen|empty)\b', Keyword)
59
+ ],
60
+ 'numbers': [
61
+ (r'0x[0-9A-Fa-f]+', Number.Hex),
62
+ (r'[+-]?[0-9]+', Number.Integer),
63
+ ],
64
+ 'literals': [
65
+ (r'"(\\\\|\\"|[^"])*"', String), # double quote string
66
+ (r"'(\\\\|\\'|[^'])*'", String), # single quote string
67
+ (r'\[(\\\\|\\\]|[^\]])*\]', String), # square bracket literals
68
+ (r'/(?!\*)(\\\\|\\/|[^/])*/', String.Regex), # regular expressions
69
+ ],
70
+ 'identifiers': [
71
+ (r'[a-zA-Z_][a-zA-Z_0-9]*', Name.Variable),
72
+ ],
73
+ 'operators': [
74
+ (r',', Operator), # Join
75
+ (r'\||&|--?', Operator), # Union, Intersection and Subtraction
76
+ (r'\.|<:|:>>?', Operator), # Concatention
77
+ (r':', Operator), # Label
78
+ (r'->', Operator), # Epsilon Transition
79
+ (r'(>|\$|%|<|@|<>)(/|eof\b)', Operator), # EOF Actions
80
+ (r'(>|\$|%|<|@|<>)(!|err\b)', Operator), # Global Error Actions
81
+ (r'(>|\$|%|<|@|<>)(\^|lerr\b)', Operator), # Local Error Actions
82
+ (r'(>|\$|%|<|@|<>)(~|to\b)', Operator), # To-State Actions
83
+ (r'(>|\$|%|<|@|<>)(\*|from\b)', Operator), # From-State Actions
84
+ (r'>|@|\$|%', Operator), # Transition Actions and Priorities
85
+ (r'\*|\?|\+|{[0-9]*,[0-9]*}', Operator), # Repetition
86
+ (r'!|\^', Operator), # Negation
87
+ (r'\(|\)', Operator), # Grouping
88
+ ],
89
+ 'root': [
90
+ include('literals'),
91
+ include('whitespace'),
92
+ include('comments'),
93
+ include('keywords'),
94
+ include('numbers'),
95
+ include('identifiers'),
96
+ include('operators'),
97
+ (r'{', Punctuation, 'host'),
98
+ (r'=', Operator),
99
+ (r';', Punctuation),
100
+ ],
101
+ 'host': [
102
+ (r'(' + r'|'.join(( # keep host code in largest possible chunks
103
+ r'[^{}\'"/#]+', # exclude unsafe characters
104
+ r'[^\\][\\][{}]', # allow escaped { or }
105
+
106
+ # strings and comments may safely contain unsafe characters
107
+ r'"(\\\\|\\"|[^"])*"', # double quote string
108
+ r"'(\\\\|\\'|[^'])*'", # single quote string
109
+ r'//.*$\n?', # single line comment
110
+ r'/\*(.|\n)*?\*/', # multi-line javadoc-style comment
111
+ r'\#.*$\n?', # ruby comment
112
+
113
+ # regular expression: There's no reason for it to start
114
+ # with a * and this stops confusion with comments.
115
+ r'/(?!\*)(\\\\|\\/|[^/])*/',
116
+
117
+ # / is safe now that we've handled regex and javadoc comments
118
+ r'/',
119
+ )) + r')+', Other),
120
+
121
+ (r'{', Punctuation, '#push'),
122
+ (r'}', Punctuation, '#pop'),
123
+ ],
124
+ }
125
+
126
+
127
+ class RagelEmbeddedLexer(RegexLexer):
128
+ """
129
+ A lexer for `Ragel`_ embedded in a host language file.
130
+
131
+ This will only highlight Ragel statements. If you want host language
132
+ highlighting then call the language-specific Ragel lexer.
133
+
134
+ *New in Pygments 1.1.*
135
+ """
136
+
137
+ name = 'Embedded Ragel'
138
+ aliases = ['ragel-em']
139
+ filenames = ['*.rl']
140
+
141
+ tokens = {
142
+ 'root': [
143
+ (r'(' + r'|'.join(( # keep host code in largest possible chunks
144
+ r'[^%\'"/#]+', # exclude unsafe characters
145
+ r'%(?=[^%]|$)', # a single % sign is okay, just not 2 of them
146
+
147
+ # strings and comments may safely contain unsafe characters
148
+ r'"(\\\\|\\"|[^"])*"', # double quote string
149
+ r"'(\\\\|\\'|[^'])*'", # single quote string
150
+ r'/\*(.|\n)*?\*/', # multi-line javadoc-style comment
151
+ r'//.*$\n?', # single line comment
152
+ r'\#.*$\n?', # ruby/ragel comment
153
+ r'/(?!\*)(\\\\|\\/|[^/])*/', # regular expression
154
+
155
+ # / is safe now that we've handled regex and javadoc comments
156
+ r'/',
157
+ )) + r')+', Other),
158
+
159
+ # Single Line FSM.
160
+ # Please don't put a quoted newline in a single line FSM.
161
+ # That's just mean. It will break this.
162
+ (r'(%%)(?![{%])(.*)($|;)(\n?)', bygroups(Punctuation,
163
+ using(RagelLexer),
164
+ Punctuation, Text)),
165
+
166
+ # Multi Line FSM.
167
+ (r'(%%%%|%%){', Punctuation, 'multi-line-fsm'),
168
+ ],
169
+ 'multi-line-fsm': [
170
+ (r'(' + r'|'.join(( # keep ragel code in largest possible chunks.
171
+ r'(' + r'|'.join((
172
+ r'[^}\'"\[/#]', # exclude unsafe characters
173
+ r'}(?=[^%]|$)', # } is okay as long as it's not followed by %
174
+ r'}%(?=[^%]|$)', # ...well, one %'s okay, just not two...
175
+ r'[^\\][\\][{}]', # ...and } is okay if it's escaped
176
+
177
+ # allow / if it's preceded with one of these symbols
178
+ # (ragel EOF actions)
179
+ r'(>|\$|%|<|@|<>)/',
180
+
181
+ # specifically allow regex followed immediately by *
182
+ # so it doesn't get mistaken for a comment
183
+ r'/(?!\*)(\\\\|\\/|[^/])*/\*',
184
+
185
+ # allow / as long as it's not followed by another / or by a *
186
+ r'/(?=[^/\*]|$)',
187
+
188
+ # We want to match as many of these as we can in one block.
189
+ # Not sure if we need the + sign here,
190
+ # does it help performance?
191
+ )) + r')+',
192
+
193
+ # strings and comments may safely contain unsafe characters
194
+ r'"(\\\\|\\"|[^"])*"', # double quote string
195
+ r"'(\\\\|\\'|[^'])*'", # single quote string
196
+ r"\[(\\\\|\\\]|[^\]])*\]", # square bracket literal
197
+ r'/\*(.|\n)*?\*/', # multi-line javadoc-style comment
198
+ r'//.*$\n?', # single line comment
199
+ r'\#.*$\n?', # ruby/ragel comment
200
+ )) + r')+', using(RagelLexer)),
201
+
202
+ (r'}%%', Punctuation, '#pop'),
203
+ ]
204
+ }
205
+
206
+ def analyse_text(text):
207
+ return '@LANG: indep' in text or 0.1
208
+
209
+
210
+ class RagelRubyLexer(DelegatingLexer):
211
+ """
212
+ A lexer for `Ragel`_ in a Ruby host file.
213
+
214
+ *New in Pygments 1.1.*
215
+ """
216
+
217
+ name = 'Ragel in Ruby Host'
218
+ aliases = ['ragel-ruby', 'ragel-rb']
219
+ filenames = ['*.rl']
220
+
221
+ def __init__(self, **options):
222
+ super(RagelRubyLexer, self).__init__(RubyLexer, RagelEmbeddedLexer,
223
+ **options)
224
+
225
+ def analyse_text(text):
226
+ return '@LANG: ruby' in text
227
+
228
+
229
+ class RagelCLexer(DelegatingLexer):
230
+ """
231
+ A lexer for `Ragel`_ in a C host file.
232
+
233
+ *New in Pygments 1.1.*
234
+ """
235
+
236
+ name = 'Ragel in C Host'
237
+ aliases = ['ragel-c']
238
+ filenames = ['*.rl']
239
+
240
+ def __init__(self, **options):
241
+ super(RagelCLexer, self).__init__(CLexer, RagelEmbeddedLexer,
242
+ **options)
243
+
244
+ def analyse_text(text):
245
+ return '@LANG: c' in text
246
+
247
+
248
+ class RagelDLexer(DelegatingLexer):
249
+ """
250
+ A lexer for `Ragel`_ in a D host file.
251
+
252
+ *New in Pygments 1.1.*
253
+ """
254
+
255
+ name = 'Ragel in D Host'
256
+ aliases = ['ragel-d']
257
+ filenames = ['*.rl']
258
+
259
+ def __init__(self, **options):
260
+ super(RagelDLexer, self).__init__(DLexer, RagelEmbeddedLexer, **options)
261
+
262
+ def analyse_text(text):
263
+ return '@LANG: d' in text
264
+
265
+
266
+ class RagelCppLexer(DelegatingLexer):
267
+ """
268
+ A lexer for `Ragel`_ in a CPP host file.
269
+
270
+ *New in Pygments 1.1.*
271
+ """
272
+
273
+ name = 'Ragel in CPP Host'
274
+ aliases = ['ragel-cpp']
275
+ filenames = ['*.rl']
276
+
277
+ def __init__(self, **options):
278
+ super(RagelCppLexer, self).__init__(CppLexer, RagelEmbeddedLexer, **options)
279
+
280
+ def analyse_text(text):
281
+ return '@LANG: c++' in text
282
+
283
+
284
+ class RagelObjectiveCLexer(DelegatingLexer):
285
+ """
286
+ A lexer for `Ragel`_ in an Objective C host file.
287
+
288
+ *New in Pygments 1.1.*
289
+ """
290
+
291
+ name = 'Ragel in Objective C Host'
292
+ aliases = ['ragel-objc']
293
+ filenames = ['*.rl']
294
+
295
+ def __init__(self, **options):
296
+ super(RagelObjectiveCLexer, self).__init__(ObjectiveCLexer,
297
+ RagelEmbeddedLexer,
298
+ **options)
299
+
300
+ def analyse_text(text):
301
+ return '@LANG: objc' in text
302
+
303
+
304
+ class RagelJavaLexer(DelegatingLexer):
305
+ """
306
+ A lexer for `Ragel`_ in a Java host file.
307
+
308
+ *New in Pygments 1.1.*
309
+ """
310
+
311
+ name = 'Ragel in Java Host'
312
+ aliases = ['ragel-java']
313
+ filenames = ['*.rl']
314
+
315
+ def __init__(self, **options):
316
+ super(RagelJavaLexer, self).__init__(JavaLexer, RagelEmbeddedLexer,
317
+ **options)
318
+
319
+ def analyse_text(text):
320
+ return '@LANG: java' in text
321
+
322
+
323
+ class AntlrLexer(RegexLexer):
324
+ """
325
+ Generic `ANTLR`_ Lexer.
326
+ Should not be called directly, instead
327
+ use DelegatingLexer for your target language.
328
+
329
+ *New in Pygments 1.1.*
330
+
331
+ .. _ANTLR: http://www.antlr.org/
332
+ """
333
+
334
+ name = 'ANTLR'
335
+ aliases = ['antlr']
336
+ filenames = []
337
+
338
+ _id = r'[A-Za-z][A-Za-z_0-9]*'
339
+ _TOKEN_REF = r'[A-Z][A-Za-z_0-9]*'
340
+ _RULE_REF = r'[a-z][A-Za-z_0-9]*'
341
+ _STRING_LITERAL = r'\'(?:\\\\|\\\'|[^\']*)\''
342
+ _INT = r'[0-9]+'
343
+
344
+ tokens = {
345
+ 'whitespace': [
346
+ (r'\s+', Whitespace),
347
+ ],
348
+ 'comments': [
349
+ (r'//.*$', Comment),
350
+ (r'/\*(.|\n)*?\*/', Comment),
351
+ ],
352
+ 'root': [
353
+ include('whitespace'),
354
+ include('comments'),
355
+
356
+ (r'(lexer|parser|tree)?(\s*)(grammar\b)(\s*)(' + _id + ')(;)',
357
+ bygroups(Keyword, Whitespace, Keyword, Whitespace, Name.Class,
358
+ Punctuation)),
359
+ # optionsSpec
360
+ (r'options\b', Keyword, 'options'),
361
+ # tokensSpec
362
+ (r'tokens\b', Keyword, 'tokens'),
363
+ # attrScope
364
+ (r'(scope)(\s*)(' + _id + ')(\s*)({)',
365
+ bygroups(Keyword, Whitespace, Name.Variable, Whitespace,
366
+ Punctuation), 'action'),
367
+ # exception
368
+ (r'(catch|finally)\b', Keyword, 'exception'),
369
+ # action
370
+ (r'(@' + _id + ')(\s*)(::)?(\s*)(' + _id + ')(\s*)({)',
371
+ bygroups(Name.Label, Whitespace, Punctuation, Whitespace,
372
+ Name.Label, Whitespace, Punctuation), 'action'),
373
+ # rule
374
+ (r'((?:protected|private|public|fragment)\b)?(\s*)(' + _id + ')(!)?', \
375
+ bygroups(Keyword, Whitespace, Name.Label, Punctuation),
376
+ ('rule-alts', 'rule-prelims')),
377
+ ],
378
+ 'exception': [
379
+ (r'\n', Whitespace, '#pop'),
380
+ (r'\s', Whitespace),
381
+ include('comments'),
382
+
383
+ (r'\[', Punctuation, 'nested-arg-action'),
384
+ (r'\{', Punctuation, 'action'),
385
+ ],
386
+ 'rule-prelims': [
387
+ include('whitespace'),
388
+ include('comments'),
389
+
390
+ (r'returns\b', Keyword),
391
+ (r'\[', Punctuation, 'nested-arg-action'),
392
+ (r'\{', Punctuation, 'action'),
393
+ # throwsSpec
394
+ (r'(throws)(\s+)(' + _id + ')',
395
+ bygroups(Keyword, Whitespace, Name.Label)),
396
+ (r'(,)(\s*)(' + _id + ')',
397
+ bygroups(Punctuation, Whitespace, Name.Label)), # Additional throws
398
+ # optionsSpec
399
+ (r'options\b', Keyword, 'options'),
400
+ # ruleScopeSpec - scope followed by target language code or name of action
401
+ # TODO finish implementing other possibilities for scope
402
+ # L173 ANTLRv3.g from ANTLR book
403
+ (r'(scope)(\s+)({)', bygroups(Keyword, Whitespace, Punctuation),
404
+ 'action'),
405
+ (r'(scope)(\s+)(' + _id + ')(\s*)(;)',
406
+ bygroups(Keyword, Whitespace, Name.Label, Whitespace, Punctuation)),
407
+ # ruleAction
408
+ (r'(@' + _id + ')(\s*)({)',
409
+ bygroups(Name.Label, Whitespace, Punctuation), 'action'),
410
+ # finished prelims, go to rule alts!
411
+ (r':', Punctuation, '#pop')
412
+ ],
413
+ 'rule-alts': [
414
+ include('whitespace'),
415
+ include('comments'),
416
+
417
+ # These might need to go in a separate 'block' state triggered by (
418
+ (r'options\b', Keyword, 'options'),
419
+ (r':', Punctuation),
420
+
421
+ # literals
422
+ (r"'(\\\\|\\'|[^'])*'", String),
423
+ (r'"(\\\\|\\"|[^"])*"', String),
424
+ (r'<<([^>]|>[^>])>>', String),
425
+ # identifiers
426
+ # Tokens start with capital letter.
427
+ (r'\$?[A-Z_][A-Za-z_0-9]*', Name.Constant),
428
+ # Rules start with small letter.
429
+ (r'\$?[a-z_][A-Za-z_0-9]*', Name.Variable),
430
+ # operators
431
+ (r'(\+|\||->|=>|=|\(|\)|\.\.|\.|\?|\*|\^|!|\#|~)', Operator),
432
+ (r',', Punctuation),
433
+ (r'\[', Punctuation, 'nested-arg-action'),
434
+ (r'\{', Punctuation, 'action'),
435
+ (r';', Punctuation, '#pop')
436
+ ],
437
+ 'tokens': [
438
+ include('whitespace'),
439
+ include('comments'),
440
+ (r'{', Punctuation),
441
+ (r'(' + _TOKEN_REF + r')(\s*)(=)?(\s*)(' + _STRING_LITERAL
442
+ + ')?(\s*)(;)',
443
+ bygroups(Name.Label, Whitespace, Punctuation, Whitespace,
444
+ String, Whitespace, Punctuation)),
445
+ (r'}', Punctuation, '#pop'),
446
+ ],
447
+ 'options': [
448
+ include('whitespace'),
449
+ include('comments'),
450
+ (r'{', Punctuation),
451
+ (r'(' + _id + r')(\s*)(=)(\s*)(' +
452
+ '|'.join((_id, _STRING_LITERAL, _INT, '\*'))+ ')(\s*)(;)',
453
+ bygroups(Name.Variable, Whitespace, Punctuation, Whitespace,
454
+ Text, Whitespace, Punctuation)),
455
+ (r'}', Punctuation, '#pop'),
456
+ ],
457
+ 'action': [
458
+ (r'(' + r'|'.join(( # keep host code in largest possible chunks
459
+ r'[^\${}\'"/\\]+', # exclude unsafe characters
460
+
461
+ # strings and comments may safely contain unsafe characters
462
+ r'"(\\\\|\\"|[^"])*"', # double quote string
463
+ r"'(\\\\|\\'|[^'])*'", # single quote string
464
+ r'//.*$\n?', # single line comment
465
+ r'/\*(.|\n)*?\*/', # multi-line javadoc-style comment
466
+
467
+ # regular expression: There's no reason for it to start
468
+ # with a * and this stops confusion with comments.
469
+ r'/(?!\*)(\\\\|\\/|[^/])*/',
470
+
471
+ # backslashes are okay, as long as we are not backslashing a %
472
+ r'\\(?!%)',
473
+
474
+ # Now that we've handled regex and javadoc comments
475
+ # it's safe to let / through.
476
+ r'/',
477
+ )) + r')+', Other),
478
+ (r'(\\)(%)', bygroups(Punctuation, Other)),
479
+ (r'(\$[a-zA-Z]+)(\.?)(text|value)?',
480
+ bygroups(Name.Variable, Punctuation, Name.Property)),
481
+ (r'{', Punctuation, '#push'),
482
+ (r'}', Punctuation, '#pop'),
483
+ ],
484
+ 'nested-arg-action': [
485
+ (r'(' + r'|'.join(( # keep host code in largest possible chunks.
486
+ r'[^\$\[\]\'"/]+', # exclude unsafe characters
487
+
488
+ # strings and comments may safely contain unsafe characters
489
+ r'"(\\\\|\\"|[^"])*"', # double quote string
490
+ r"'(\\\\|\\'|[^'])*'", # single quote string
491
+ r'//.*$\n?', # single line comment
492
+ r'/\*(.|\n)*?\*/', # multi-line javadoc-style comment
493
+
494
+ # regular expression: There's no reason for it to start
495
+ # with a * and this stops confusion with comments.
496
+ r'/(?!\*)(\\\\|\\/|[^/])*/',
497
+
498
+ # Now that we've handled regex and javadoc comments
499
+ # it's safe to let / through.
500
+ r'/',
501
+ )) + r')+', Other),
502
+
503
+
504
+ (r'\[', Punctuation, '#push'),
505
+ (r'\]', Punctuation, '#pop'),
506
+ (r'(\$[a-zA-Z]+)(\.?)(text|value)?',
507
+ bygroups(Name.Variable, Punctuation, Name.Property)),
508
+ (r'(\\\\|\\\]|\\\[|[^\[\]])+', Other),
509
+ ]
510
+ }
511
+
512
+ def analyse_text(text):
513
+ return re.search(r'^\s*grammar\s+[a-zA-Z0-9]+\s*;', text, re.M)
514
+
515
+ # http://www.antlr.org/wiki/display/ANTLR3/Code+Generation+Targets
516
+
517
+ # TH: I'm not aware of any language features of C++ that will cause
518
+ # incorrect lexing of C files. Antlr doesn't appear to make a distinction,
519
+ # so just assume they're C++. No idea how to make Objective C work in the
520
+ # future.
521
+
522
+ #class AntlrCLexer(DelegatingLexer):
523
+ # """
524
+ # ANTLR with C Target
525
+ #
526
+ # *New in Pygments 1.1*
527
+ # """
528
+ #
529
+ # name = 'ANTLR With C Target'
530
+ # aliases = ['antlr-c']
531
+ # filenames = ['*.G', '*.g']
532
+ #
533
+ # def __init__(self, **options):
534
+ # super(AntlrCLexer, self).__init__(CLexer, AntlrLexer, **options)
535
+ #
536
+ # def analyse_text(text):
537
+ # return re.match(r'^\s*language\s*=\s*C\s*;', text)
538
+
539
+ class AntlrCppLexer(DelegatingLexer):
540
+ """
541
+ `ANTLR`_ with CPP Target
542
+
543
+ *New in Pygments 1.1.*
544
+ """
545
+
546
+ name = 'ANTLR With CPP Target'
547
+ aliases = ['antlr-cpp']
548
+ filenames = ['*.G', '*.g']
549
+
550
+ def __init__(self, **options):
551
+ super(AntlrCppLexer, self).__init__(CppLexer, AntlrLexer, **options)
552
+
553
+ def analyse_text(text):
554
+ return AntlrLexer.analyse_text(text) and \
555
+ re.search(r'^\s*language\s*=\s*C\s*;', text, re.M)
556
+
557
+
558
+ class AntlrObjectiveCLexer(DelegatingLexer):
559
+ """
560
+ `ANTLR`_ with Objective-C Target
561
+
562
+ *New in Pygments 1.1.*
563
+ """
564
+
565
+ name = 'ANTLR With ObjectiveC Target'
566
+ aliases = ['antlr-objc']
567
+ filenames = ['*.G', '*.g']
568
+
569
+ def __init__(self, **options):
570
+ super(AntlrObjectiveCLexer, self).__init__(ObjectiveCLexer,
571
+ AntlrLexer, **options)
572
+
573
+ def analyse_text(text):
574
+ return AntlrLexer.analyse_text(text) and \
575
+ re.search(r'^\s*language\s*=\s*ObjC\s*;', text)
576
+
577
+
578
+ class AntlrCSharpLexer(DelegatingLexer):
579
+ """
580
+ `ANTLR`_ with C# Target
581
+
582
+ *New in Pygments 1.1.*
583
+ """
584
+
585
+ name = 'ANTLR With C# Target'
586
+ aliases = ['antlr-csharp', 'antlr-c#']
587
+ filenames = ['*.G', '*.g']
588
+
589
+ def __init__(self, **options):
590
+ super(AntlrCSharpLexer, self).__init__(CSharpLexer, AntlrLexer,
591
+ **options)
592
+
593
+ def analyse_text(text):
594
+ return AntlrLexer.analyse_text(text) and \
595
+ re.search(r'^\s*language\s*=\s*CSharp2\s*;', text, re.M)
596
+
597
+
598
+ class AntlrPythonLexer(DelegatingLexer):
599
+ """
600
+ `ANTLR`_ with Python Target
601
+
602
+ *New in Pygments 1.1.*
603
+ """
604
+
605
+ name = 'ANTLR With Python Target'
606
+ aliases = ['antlr-python']
607
+ filenames = ['*.G', '*.g']
608
+
609
+ def __init__(self, **options):
610
+ super(AntlrPythonLexer, self).__init__(PythonLexer, AntlrLexer,
611
+ **options)
612
+
613
+ def analyse_text(text):
614
+ return AntlrLexer.analyse_text(text) and \
615
+ re.search(r'^\s*language\s*=\s*Python\s*;', text, re.M)
616
+
617
+
618
+ class AntlrJavaLexer(DelegatingLexer):
619
+ """
620
+ `ANTLR`_ with Java Target
621
+
622
+ *New in Pygments 1.1*
623
+ """
624
+
625
+ name = 'ANTLR With Java Target'
626
+ aliases = ['antlr-java']
627
+ filenames = ['*.G', '*.g']
628
+
629
+ def __init__(self, **options):
630
+ super(AntlrJavaLexer, self).__init__(JavaLexer, AntlrLexer,
631
+ **options)
632
+
633
+ def analyse_text(text):
634
+ # Antlr language is Java by default
635
+ return AntlrLexer.analyse_text(text) and 0.9
636
+
637
+
638
+ class AntlrRubyLexer(DelegatingLexer):
639
+ """
640
+ `ANTLR`_ with Ruby Target
641
+
642
+ *New in Pygments 1.1.*
643
+ """
644
+
645
+ name = 'ANTLR With Ruby Target'
646
+ aliases = ['antlr-ruby', 'antlr-rb']
647
+ filenames = ['*.G', '*.g']
648
+
649
+ def __init__(self, **options):
650
+ super(AntlrRubyLexer, self).__init__(RubyLexer, AntlrLexer,
651
+ **options)
652
+
653
+ def analyse_text(text):
654
+ return AntlrLexer.analyse_text(text) and \
655
+ re.search(r'^\s*language\s*=\s*Ruby\s*;', text, re.M)
656
+
657
+
658
+ class AntlrPerlLexer(DelegatingLexer):
659
+ """
660
+ `ANTLR`_ with Perl Target
661
+
662
+ *New in Pygments 1.1.*
663
+ """
664
+
665
+ name = 'ANTLR With Perl Target'
666
+ aliases = ['antlr-perl']
667
+ filenames = ['*.G', '*.g']
668
+
669
+ def __init__(self, **options):
670
+ super(AntlrPerlLexer, self).__init__(PerlLexer, AntlrLexer,
671
+ **options)
672
+
673
+ def analyse_text(text):
674
+ return AntlrLexer.analyse_text(text) and \
675
+ re.search(r'^\s*language\s*=\s*Perl5\s*;', text, re.M)
676
+
677
+
678
+ class AntlrActionScriptLexer(DelegatingLexer):
679
+ """
680
+ `ANTLR`_ with ActionScript Target
681
+
682
+ *New in Pygments 1.1.*
683
+ """
684
+
685
+ name = 'ANTLR With ActionScript Target'
686
+ aliases = ['antlr-as', 'antlr-actionscript']
687
+ filenames = ['*.G', '*.g']
688
+
689
+ def __init__(self, **options):
690
+ super(AntlrActionScriptLexer, self).__init__(ActionScriptLexer,
691
+ AntlrLexer, **options)
692
+
693
+ def analyse_text(text):
694
+ return AntlrLexer.analyse_text(text) and \
695
+ re.search(r'^\s*language\s*=\s*ActionScript\s*;', text, re.M)