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,608 @@
1
+ /*
2
+ [The "BSD licence"]
3
+ Copyright (c) 2005-2007 Terence Parr
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions
8
+ are met:
9
+ 1. Redistributions of source code must retain the above copyright
10
+ notice, this list of conditions and the following disclaimer.
11
+ 2. Redistributions in binary form must reproduce the above copyright
12
+ notice, this list of conditions and the following disclaimer in the
13
+ documentation and/or other materials provided with the distribution.
14
+ 3. The name of the author may not be used to endorse or promote products
15
+ derived from this software without specific prior written permission.
16
+
17
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20
+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+ */
28
+
29
+ /** ANTLR v3 grammar written in ANTLR v3 with AST construction */
30
+ grammar ANTLRv3;
31
+
32
+ options {
33
+ output=AST;
34
+ ASTLabelType=CommonTree;
35
+ }
36
+
37
+ tokens {
38
+ DOC_COMMENT;
39
+ PARSER;
40
+ LEXER;
41
+ RULE;
42
+ BLOCK;
43
+ OPTIONAL;
44
+ CLOSURE;
45
+ POSITIVE_CLOSURE;
46
+ SYNPRED;
47
+ RANGE;
48
+ CHAR_RANGE;
49
+ EPSILON;
50
+ ALT;
51
+ EOR;
52
+ EOB;
53
+ EOA; // end of alt
54
+ ID;
55
+ ARG;
56
+ ARGLIST;
57
+ RET;
58
+ LEXER_GRAMMAR;
59
+ PARSER_GRAMMAR;
60
+ TREE_GRAMMAR;
61
+ COMBINED_GRAMMAR;
62
+ INITACTION;
63
+ LABEL; // $x used in rewrite rules
64
+ TEMPLATE;
65
+ SCOPE='scope';
66
+ SEMPRED;
67
+ GATED_SEMPRED; // {p}? =>
68
+ SYN_SEMPRED; // (...) => it's a manually-specified synpred converted to sempred
69
+ BACKTRACK_SEMPRED; // auto backtracking mode syn pred converted to sempred
70
+ FRAGMENT='fragment';
71
+ TREE_BEGIN='^(';
72
+ ROOT='^';
73
+ BANG='!';
74
+ RANGE='..';
75
+ REWRITE='->';
76
+ }
77
+
78
+ @members {
79
+ int gtype;
80
+ }
81
+
82
+ grammarDef
83
+ : DOC_COMMENT?
84
+ ( 'lexer' {gtype=LEXER_GRAMMAR;} // pure lexer
85
+ | 'parser' {gtype=PARSER_GRAMMAR;} // pure parser
86
+ | 'tree' {gtype=TREE_GRAMMAR;} // a tree parser
87
+ | {gtype=COMBINED_GRAMMAR;} // merged parser/lexer
88
+ )
89
+ g='grammar' id ';' optionsSpec? tokensSpec? attrScope* action*
90
+ rule+
91
+ EOF
92
+ -> ^( {adaptor.create(gtype,$g)}
93
+ id DOC_COMMENT? optionsSpec? tokensSpec? attrScope* action* rule+
94
+ )
95
+ ;
96
+
97
+ tokensSpec
98
+ : TOKENS tokenSpec+ '}' -> ^(TOKENS tokenSpec+)
99
+ ;
100
+
101
+ tokenSpec
102
+ : TOKEN_REF
103
+ ( '=' (lit=STRING_LITERAL|lit=CHAR_LITERAL) -> ^('=' TOKEN_REF $lit)
104
+ | -> TOKEN_REF
105
+ )
106
+ ';'
107
+ ;
108
+
109
+ attrScope
110
+ : 'scope' id ACTION -> ^('scope' id ACTION)
111
+ ;
112
+
113
+ /** Match stuff like @parser::members {int i;} */
114
+ action
115
+ : '@' (actionScopeName '::')? id ACTION -> ^('@' actionScopeName? id ACTION)
116
+ ;
117
+
118
+ /** Sometimes the scope names will collide with keywords; allow them as
119
+ * ids for action scopes.
120
+ */
121
+ actionScopeName
122
+ : id
123
+ | l='lexer' -> ID[$l]
124
+ | p='parser' -> ID[$p]
125
+ ;
126
+
127
+ optionsSpec
128
+ : OPTIONS (option ';')+ '}' -> ^(OPTIONS option+)
129
+ ;
130
+
131
+ option
132
+ : id '=' optionValue -> ^('=' id optionValue)
133
+ ;
134
+
135
+ optionValue
136
+ : id
137
+ | STRING_LITERAL
138
+ | CHAR_LITERAL
139
+ | INT
140
+ | s='*' -> STRING_LITERAL[$s] // used for k=*
141
+ ;
142
+
143
+ rule
144
+ scope {
145
+ String name;
146
+ }
147
+ : DOC_COMMENT?
148
+ ( modifier=('protected'|'public'|'private'|'fragment') )?
149
+ id {$rule::name = $id.text;}
150
+ '!'?
151
+ ( arg=ARG_ACTION )?
152
+ ( 'returns' rt=ARG_ACTION )?
153
+ throwsSpec? optionsSpec? ruleScopeSpec? ruleAction*
154
+ ':' altList ';'
155
+ exceptionGroup?
156
+ -> ^( RULE id {modifier!=null?adaptor.create(modifier):null} ^(ARG $arg)? ^(RET $rt)?
157
+ optionsSpec? ruleScopeSpec? ruleAction*
158
+ altList
159
+ exceptionGroup?
160
+ EOR["EOR"]
161
+ )
162
+ ;
163
+
164
+ /** Match stuff like @init {int i;} */
165
+ ruleAction
166
+ : '@' id ACTION -> ^('@' id ACTION)
167
+ ;
168
+
169
+ throwsSpec
170
+ : 'throws' id ( ',' id )* -> ^('throws' id+)
171
+ ;
172
+
173
+ ruleScopeSpec
174
+ : 'scope' ACTION -> ^('scope' ACTION)
175
+ | 'scope' id (',' id)* ';' -> ^('scope' id+)
176
+ | 'scope' ACTION
177
+ 'scope' id (',' id)* ';'
178
+ -> ^('scope' ACTION id+ )
179
+ ;
180
+
181
+ block
182
+ : lp='('
183
+ ( (opts=optionsSpec)? ':' )?
184
+ a1=alternative rewrite ( '|' a2=alternative rewrite )*
185
+ rp=')'
186
+ -> ^( BLOCK[$lp,"BLOCK"] optionsSpec? alternative+ EOB[$rp,"EOB"] )
187
+ ;
188
+
189
+ altList
190
+ @init {
191
+ // must create root manually as it's used by invoked rules in real antlr tool.
192
+ // leave here to demonstrate use of {...} in rewrite rule
193
+ // it's really BLOCK[firstToken,"BLOCK"]; set line/col to previous ( or : token.
194
+ CommonTree blkRoot = (CommonTree)adaptor.create(BLOCK,input.LT(-1),"BLOCK");
195
+ }
196
+ : a1=alternative rewrite ( '|' a2=alternative rewrite )*
197
+ -> ^( {blkRoot} (alternative rewrite?)+ EOB["EOB"] )
198
+ ;
199
+
200
+ alternative
201
+ @init {
202
+ Token firstToken = input.LT(1);
203
+ Token prevToken = input.LT(-1); // either : or | I think
204
+ }
205
+ : element+ -> ^(ALT[firstToken,"ALT"] element+ EOA["EOA"])
206
+ | -> ^(ALT[prevToken,"ALT"] EPSILON[prevToken,"EPSILON"] EOA["EOA"])
207
+ ;
208
+
209
+ exceptionGroup
210
+ : ( exceptionHandler )+ ( finallyClause )?
211
+ | finallyClause
212
+ ;
213
+
214
+ exceptionHandler
215
+ : 'catch' ARG_ACTION ACTION -> ^('catch' ARG_ACTION ACTION)
216
+ ;
217
+
218
+ finallyClause
219
+ : 'finally' ACTION -> ^('finally' ACTION)
220
+ ;
221
+
222
+ element
223
+ : elementNoOptionSpec
224
+ ;
225
+
226
+ elementNoOptionSpec
227
+ : id (labelOp='='|labelOp='+=') atom
228
+ ( ebnfSuffix -> ^( ebnfSuffix ^(BLOCK["BLOCK"] ^(ALT["ALT"] ^($labelOp id atom) EOA["EOA"]) EOB["EOB"]))
229
+ | -> ^($labelOp id atom)
230
+ )
231
+ | id (labelOp='='|labelOp='+=') block
232
+ ( ebnfSuffix -> ^( ebnfSuffix ^(BLOCK["BLOCK"] ^(ALT["ALT"] ^($labelOp id block) EOA["EOA"]) EOB["EOB"]))
233
+ | -> ^($labelOp id block)
234
+ )
235
+ | atom
236
+ ( ebnfSuffix -> ^(BLOCK["BLOCK"] ^(ALT["ALT"] atom EOA["EOA"]) EOB["EOB"])
237
+ | -> atom
238
+ )
239
+ | ebnf
240
+ | ACTION
241
+ | SEMPRED ( '=>' -> GATED_SEMPRED | -> SEMPRED )
242
+ | treeSpec
243
+ ;
244
+
245
+ atom: range ( (op='^'|op='!') -> ^($op range) | -> range )
246
+ | terminal
247
+ | notSet ( (op='^'|op='!') -> ^($op notSet) | -> notSet )
248
+ | RULE_REF ( arg=ARG_ACTION )? ( (op='^'|op='!') )?
249
+ -> {$arg!=null&&op!=null}? ^($op RULE_REF $arg)
250
+ -> {$arg!=null}? ^(RULE_REF $arg)
251
+ -> {$op!=null}? ^($op RULE_REF)
252
+ -> RULE_REF
253
+ ;
254
+
255
+ notSet
256
+ : '~'
257
+ ( notTerminal -> ^('~' notTerminal)
258
+ | block -> ^('~' block)
259
+ )
260
+ ;
261
+
262
+ treeSpec
263
+ : '^(' element ( element )+ ')' -> ^(TREE_BEGIN element+)
264
+ ;
265
+
266
+ /** Matches ENBF blocks (and token sets via block rule) */
267
+ ebnf
268
+ @init {
269
+ Token firstToken = input.LT(1);
270
+ }
271
+ @after {
272
+ $ebnf.tree.getToken().setLine(firstToken.getLine());
273
+ $ebnf.tree.getToken().setCharPositionInLine(firstToken.getCharPositionInLine());
274
+ }
275
+ : block {Token op=input.LT(1);}
276
+ ( '?' -> ^(OPTIONAL[op] block)
277
+ | '*' -> ^(CLOSURE[op] block)
278
+ | '+' -> ^(POSITIVE_CLOSURE[op] block)
279
+ | '^' -> ^('^' block)
280
+ | '!' -> ^('!' block)
281
+ | '=>' // syntactic predicate
282
+ -> {gtype==COMBINED_GRAMMAR &&
283
+ Character.isUpperCase($rule::name.charAt(0))}?
284
+ // if lexer rule in combined, leave as pred for lexer
285
+ ^(SYNPRED["=>"] block)
286
+ // in real antlr tool, text for SYN_SEMPRED is predname
287
+ -> SYN_SEMPRED
288
+ | -> block
289
+ )
290
+ ;
291
+
292
+ range!
293
+ : c1=CHAR_LITERAL RANGE c2=CHAR_LITERAL -> ^(CHAR_RANGE[$c1,".."] $c1 $c2)
294
+ ;
295
+
296
+ terminal
297
+ : ( CHAR_LITERAL -> CHAR_LITERAL
298
+ // Args are only valid for lexer rules
299
+ | TOKEN_REF
300
+ ( ARG_ACTION -> ^(TOKEN_REF ARG_ACTION)
301
+ | -> TOKEN_REF
302
+ )
303
+ | STRING_LITERAL -> STRING_LITERAL
304
+ | '.' -> '.'
305
+ )
306
+ ( '^' -> ^('^' $terminal)
307
+ | '!' -> ^('!' $terminal)
308
+ )?
309
+ ;
310
+
311
+ notTerminal
312
+ : CHAR_LITERAL
313
+ | TOKEN_REF
314
+ | STRING_LITERAL
315
+ ;
316
+
317
+ ebnfSuffix
318
+ @init {
319
+ Token op = input.LT(1);
320
+ }
321
+ : '?' -> OPTIONAL[op]
322
+ | '*' -> CLOSURE[op]
323
+ | '+' -> POSITIVE_CLOSURE[op]
324
+ ;
325
+
326
+
327
+
328
+ // R E W R I T E S Y N T A X
329
+
330
+ rewrite
331
+ @init {
332
+ Token firstToken = input.LT(1);
333
+ }
334
+ : (rew+='->' preds+=SEMPRED predicated+=rewrite_alternative)*
335
+ rew2='->' last=rewrite_alternative
336
+ -> ^($rew $preds $predicated)* ^($rew2 $last)
337
+ |
338
+ ;
339
+
340
+ rewrite_alternative
341
+ : rewrite_template
342
+ | rewrite_tree_alternative
343
+ | /* empty rewrite */ -> ^(ALT["ALT"] EPSILON["EPSILON"] EOA["EOA"])
344
+ ;
345
+
346
+ rewrite_template_block
347
+ : lp='(' rewrite_template ')' -> ^(BLOCK[$lp,"BLOCK"] rewrite_template EOB[$lp,"EOB"])
348
+ ;
349
+
350
+ rewrite_tree_block
351
+ : lp='(' rewrite_tree_alternative ')'
352
+ -> ^(BLOCK[$lp,"BLOCK"] rewrite_tree_alternative EOB[$lp,"EOB"])
353
+ ;
354
+
355
+ rewrite_tree_alternative
356
+ : rewrite_tree_element+ -> ^(ALT["ALT"] rewrite_tree_element+ EOA["EOA"])
357
+ ;
358
+
359
+ rewrite_tree_element
360
+ : rewrite_tree_atom
361
+ | rewrite_tree_atom ebnfSuffix
362
+ -> ^( ebnfSuffix ^(BLOCK["BLOCK"] ^(ALT["ALT"] rewrite_tree_atom EOA["EOA"]) EOB["EOB"]))
363
+ | rewrite_tree
364
+ ( ebnfSuffix
365
+ -> ^(BLOCK["BLOCK"] ^(ALT["ALT"] rewrite_tree EOA["EOA"]) EOB["EOB"])
366
+ | -> rewrite_tree
367
+ )
368
+ | rewrite_tree_ebnf
369
+ ;
370
+
371
+ rewrite_tree_atom
372
+ : CHAR_LITERAL
373
+ | TOKEN_REF ARG_ACTION? -> ^(TOKEN_REF ARG_ACTION?) // for imaginary nodes
374
+ | RULE_REF
375
+ | STRING_LITERAL
376
+ | d='$' id -> LABEL[$d,$id.text] // reference to a label in a rewrite rule
377
+ | ACTION
378
+ ;
379
+
380
+ rewrite_tree_ebnf
381
+ @init {
382
+ Token firstToken = input.LT(1);
383
+ }
384
+ @after {
385
+ $rewrite_tree_ebnf.tree.getToken().setLine(firstToken.getLine());
386
+ $rewrite_tree_ebnf.tree.getToken().setCharPositionInLine(firstToken.getCharPositionInLine());
387
+ }
388
+ : rewrite_tree_block ebnfSuffix -> ^(ebnfSuffix rewrite_tree_block)
389
+ ;
390
+
391
+ rewrite_tree
392
+ : '^(' rewrite_tree_atom rewrite_tree_element* ')'
393
+ -> ^(TREE_BEGIN rewrite_tree_atom rewrite_tree_element* )
394
+ ;
395
+
396
+ /** Build a tree for a template rewrite:
397
+ ^(TEMPLATE (ID|ACTION) ^(ARGLIST ^(ARG ID ACTION) ...) )
398
+ where ARGLIST is always there even if no args exist.
399
+ ID can be "template" keyword. If first child is ACTION then it's
400
+ an indirect template ref
401
+
402
+ -> foo(a={...}, b={...})
403
+ -> ({string-e})(a={...}, b={...}) // e evaluates to template name
404
+ -> {%{$ID.text}} // create literal template from string (done in ActionTranslator)
405
+ -> {st-expr} // st-expr evaluates to ST
406
+ */
407
+ rewrite_template
408
+ : // -> template(a={...},...) "..." inline template
409
+ {input.LT(1).getText().equals("template")}?
410
+ id lp='(' rewrite_template_args ')'
411
+ st=( DOUBLE_QUOTE_STRING_LITERAL | DOUBLE_ANGLE_STRING_LITERAL )
412
+ -> ^(TEMPLATE[$lp,"TEMPLATE"] id rewrite_template_args $st)
413
+
414
+ | // -> foo(a={...}, ...)
415
+ rewrite_template_ref
416
+
417
+ | // -> ({expr})(a={...}, ...)
418
+ rewrite_indirect_template_head
419
+
420
+ | // -> {...}
421
+ ACTION
422
+ ;
423
+
424
+ /** -> foo(a={...}, ...) */
425
+ rewrite_template_ref
426
+ : id lp='(' rewrite_template_args ')'
427
+ -> ^(TEMPLATE[$lp,"TEMPLATE"] id rewrite_template_args)
428
+ ;
429
+
430
+ /** -> ({expr})(a={...}, ...) */
431
+ rewrite_indirect_template_head
432
+ : lp='(' ACTION ')' '(' rewrite_template_args ')'
433
+ -> ^(TEMPLATE[$lp,"TEMPLATE"] ACTION rewrite_template_args)
434
+ ;
435
+
436
+ rewrite_template_args
437
+ : rewrite_template_arg (',' rewrite_template_arg)*
438
+ -> ^(ARGLIST rewrite_template_arg+)
439
+ | -> ARGLIST
440
+ ;
441
+
442
+ rewrite_template_arg
443
+ : id '=' ACTION -> ^(ARG[$id.start] id ACTION)
444
+ ;
445
+
446
+ id : TOKEN_REF -> ID[$TOKEN_REF]
447
+ | RULE_REF -> ID[$RULE_REF]
448
+ ;
449
+
450
+ // L E X I C A L R U L E S
451
+
452
+ SL_COMMENT
453
+ : '//'
454
+ ( ' $ANTLR ' SRC // src directive
455
+ | ~('\r'|'\n')*
456
+ )
457
+ '\r'? '\n'
458
+ {$channel=HIDDEN;}
459
+ ;
460
+
461
+ ML_COMMENT
462
+ : '/*' {if (input.LA(1)=='*') $type=DOC_COMMENT; else $channel=HIDDEN;} .* '*/'
463
+ ;
464
+
465
+ CHAR_LITERAL
466
+ : '\'' LITERAL_CHAR '\''
467
+ ;
468
+
469
+ STRING_LITERAL
470
+ : '\'' LITERAL_CHAR LITERAL_CHAR* '\''
471
+ ;
472
+
473
+ fragment
474
+ LITERAL_CHAR
475
+ : ESC
476
+ | ~('\''|'\\')
477
+ ;
478
+
479
+ DOUBLE_QUOTE_STRING_LITERAL
480
+ : '"' LITERAL_CHAR* '"'
481
+ ;
482
+
483
+ DOUBLE_ANGLE_STRING_LITERAL
484
+ : '<<' .* '>>'
485
+ ;
486
+
487
+ fragment
488
+ ESC : '\\'
489
+ ( 'n'
490
+ | 'r'
491
+ | 't'
492
+ | 'b'
493
+ | 'f'
494
+ | '"'
495
+ | '\''
496
+ | '\\'
497
+ | '>'
498
+ | 'u' XDIGIT XDIGIT XDIGIT XDIGIT
499
+ | . // unknown, leave as it is
500
+ )
501
+ ;
502
+
503
+ fragment
504
+ XDIGIT :
505
+ '0' .. '9'
506
+ | 'a' .. 'f'
507
+ | 'A' .. 'F'
508
+ ;
509
+
510
+ INT : '0'..'9'+
511
+ ;
512
+
513
+ ARG_ACTION
514
+ : NESTED_ARG_ACTION
515
+ ;
516
+
517
+ fragment
518
+ NESTED_ARG_ACTION :
519
+ '['
520
+ ( options {greedy=false; k=1;}
521
+ : NESTED_ARG_ACTION
522
+ | ACTION_STRING_LITERAL
523
+ | ACTION_CHAR_LITERAL
524
+ | .
525
+ )*
526
+ ']'
527
+ {setText(getText().substring(1, getText().length()-1));}
528
+ ;
529
+
530
+ ACTION
531
+ : NESTED_ACTION ( '?' {$type = SEMPRED;} )?
532
+ ;
533
+
534
+ fragment
535
+ NESTED_ACTION :
536
+ '{'
537
+ ( options {greedy=false; k=3;}
538
+ : NESTED_ACTION
539
+ | SL_COMMENT
540
+ | ML_COMMENT
541
+ | ACTION_STRING_LITERAL
542
+ | ACTION_CHAR_LITERAL
543
+ | .
544
+ )*
545
+ '}'
546
+ {$channel = DEFAULT_TOKEN_CHANNEL;}
547
+ ;
548
+
549
+ fragment
550
+ ACTION_CHAR_LITERAL
551
+ : '\'' (ACTION_ESC|~('\\'|'\'')) '\''
552
+ ;
553
+
554
+ fragment
555
+ ACTION_STRING_LITERAL
556
+ : '"' (ACTION_ESC|~('\\'|'"'))+ '"'
557
+ ;
558
+
559
+ fragment
560
+ ACTION_ESC
561
+ : '\\\''
562
+ | '\\"'
563
+ | '\\' ~('\''|'"')
564
+ ;
565
+
566
+ TOKEN_REF
567
+ : 'A'..'Z' ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*
568
+ ;
569
+
570
+ RULE_REF
571
+ : 'a'..'z' ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*
572
+ ;
573
+
574
+ /** Match the start of an options section. Don't allow normal
575
+ * action processing on the {...} as it's not a action.
576
+ */
577
+ OPTIONS
578
+ : 'options' WS_LOOP '{' {$channel=DEFAULT_TOKEN_CHANNEL;} // WS_LOOP sets channel
579
+ ;
580
+
581
+ TOKENS
582
+ : 'tokens' WS_LOOP '{' {$channel=DEFAULT_TOKEN_CHANNEL;}
583
+ ;
584
+
585
+ /** Reset the file and line information; useful when the grammar
586
+ * has been generated so that errors are shown relative to the
587
+ * original file like the old C preprocessor used to do.
588
+ */
589
+ fragment
590
+ SRC : 'src' ' ' file=ACTION_STRING_LITERAL ' ' line=INT {$channel=HIDDEN;}
591
+ ;
592
+
593
+ WS : ( ' '
594
+ | '\t'
595
+ | '\r'? '\n'
596
+ )+
597
+ {$channel=HIDDEN;}
598
+ ;
599
+
600
+ fragment
601
+ WS_LOOP
602
+ : ( WS
603
+ | SL_COMMENT
604
+ | ML_COMMENT
605
+ )*
606
+ {$channel=HIDDEN;}
607
+ ;
608
+