rouge 3.2.0 → 3.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +17 -3
  3. data/bin/rougify +1 -0
  4. data/lib/rouge.rb +67 -43
  5. data/lib/rouge/cli.rb +84 -17
  6. data/lib/rouge/demos/ada +26 -0
  7. data/lib/rouge/demos/apex +9 -0
  8. data/lib/rouge/demos/armasm +12 -0
  9. data/lib/rouge/demos/batchfile +3 -0
  10. data/lib/rouge/demos/bbcbasic +6 -0
  11. data/lib/rouge/demos/bpf +7 -0
  12. data/lib/rouge/demos/brainfuck +5 -0
  13. data/lib/rouge/demos/clean +6 -0
  14. data/lib/rouge/demos/cmhg +8 -0
  15. data/lib/rouge/demos/csvs +8 -0
  16. data/lib/rouge/demos/cuda +11 -0
  17. data/lib/rouge/demos/cypher +5 -0
  18. data/lib/rouge/demos/cython +6 -0
  19. data/lib/rouge/demos/datastudio +21 -0
  20. data/lib/rouge/demos/ecl +18 -0
  21. data/lib/rouge/demos/eex +1 -0
  22. data/lib/rouge/demos/epp +4 -0
  23. data/lib/rouge/demos/escape +3 -0
  24. data/lib/rouge/demos/freefem +16 -0
  25. data/lib/rouge/demos/gdscript +18 -0
  26. data/lib/rouge/demos/ghc-cmm +23 -0
  27. data/lib/rouge/demos/ghc-core +26 -0
  28. data/lib/rouge/demos/haxe +5 -0
  29. data/lib/rouge/demos/hocon +8 -0
  30. data/lib/rouge/demos/hql +5 -0
  31. data/lib/rouge/demos/isbl +4 -0
  32. data/lib/rouge/demos/jsl +3 -0
  33. data/lib/rouge/demos/jsp +29 -0
  34. data/lib/rouge/demos/liquid +0 -1
  35. data/lib/rouge/demos/lustre +6 -0
  36. data/lib/rouge/demos/lutin +18 -0
  37. data/lib/rouge/demos/m68k +16 -0
  38. data/lib/rouge/demos/magik +6 -0
  39. data/lib/rouge/demos/mason +22 -0
  40. data/lib/rouge/demos/mathematica +8 -0
  41. data/lib/rouge/demos/minizinc +23 -0
  42. data/lib/rouge/demos/msgtrans +4 -0
  43. data/lib/rouge/demos/nasm +6 -6
  44. data/lib/rouge/demos/nesasm +11 -0
  45. data/lib/rouge/demos/objective_cpp +17 -0
  46. data/lib/rouge/demos/openedge +4 -0
  47. data/lib/rouge/demos/opentype_feature_file +6 -0
  48. data/lib/rouge/demos/plist +1 -132
  49. data/lib/rouge/demos/powershell +12 -48
  50. data/lib/rouge/demos/q +6 -0
  51. data/lib/rouge/demos/reasonml +12 -0
  52. data/lib/rouge/demos/rego +8 -0
  53. data/lib/rouge/demos/robot_framework +27 -0
  54. data/lib/rouge/demos/sas +13 -0
  55. data/lib/rouge/demos/slice +10 -0
  56. data/lib/rouge/demos/solidity +13 -0
  57. data/lib/rouge/demos/sparql +6 -0
  58. data/lib/rouge/demos/sqf +14 -0
  59. data/lib/rouge/demos/supercollider +11 -0
  60. data/lib/rouge/demos/terraform +0 -15
  61. data/lib/rouge/demos/ttcn3 +6 -0
  62. data/lib/rouge/demos/vcl +12 -0
  63. data/lib/rouge/demos/xojo +14 -0
  64. data/lib/rouge/demos/xpath +2 -0
  65. data/lib/rouge/demos/xquery +22 -0
  66. data/lib/rouge/demos/yang +17 -0
  67. data/lib/rouge/formatter.rb +39 -2
  68. data/lib/rouge/formatters/html.rb +21 -2
  69. data/lib/rouge/formatters/html_inline.rb +1 -0
  70. data/lib/rouge/formatters/html_legacy.rb +1 -0
  71. data/lib/rouge/formatters/html_line_table.rb +53 -0
  72. data/lib/rouge/formatters/html_linewise.rb +7 -11
  73. data/lib/rouge/formatters/html_pygments.rb +2 -0
  74. data/lib/rouge/formatters/html_table.rb +21 -31
  75. data/lib/rouge/formatters/null.rb +1 -0
  76. data/lib/rouge/formatters/terminal256.rb +23 -5
  77. data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
  78. data/lib/rouge/formatters/tex.rb +92 -0
  79. data/lib/rouge/guesser.rb +2 -0
  80. data/lib/rouge/guessers/disambiguation.rb +35 -0
  81. data/lib/rouge/guessers/filename.rb +2 -0
  82. data/lib/rouge/guessers/glob_mapping.rb +3 -1
  83. data/lib/rouge/guessers/mimetype.rb +2 -0
  84. data/lib/rouge/guessers/modeline.rb +3 -1
  85. data/lib/rouge/guessers/source.rb +3 -1
  86. data/lib/rouge/guessers/util.rb +2 -0
  87. data/lib/rouge/lexer.rb +71 -15
  88. data/lib/rouge/lexers/abap.rb +13 -11
  89. data/lib/rouge/lexers/actionscript.rb +35 -34
  90. data/lib/rouge/lexers/ada.rb +162 -0
  91. data/lib/rouge/lexers/apache.rb +13 -15
  92. data/lib/rouge/lexers/apache/keywords.rb +15 -0
  93. data/lib/rouge/lexers/apex.rb +126 -0
  94. data/lib/rouge/lexers/apiblueprint.rb +2 -0
  95. data/lib/rouge/lexers/apple_script.rb +17 -14
  96. data/lib/rouge/lexers/armasm.rb +145 -0
  97. data/lib/rouge/lexers/awk.rb +26 -25
  98. data/lib/rouge/lexers/batchfile.rb +164 -0
  99. data/lib/rouge/lexers/bbcbasic.rb +112 -0
  100. data/lib/rouge/lexers/biml.rb +6 -4
  101. data/lib/rouge/lexers/bpf.rb +118 -0
  102. data/lib/rouge/lexers/brainfuck.rb +53 -0
  103. data/lib/rouge/lexers/bsl.rb +13 -12
  104. data/lib/rouge/lexers/c.rb +35 -57
  105. data/lib/rouge/lexers/ceylon.rb +7 -34
  106. data/lib/rouge/lexers/cfscript.rb +27 -26
  107. data/lib/rouge/lexers/clean.rb +156 -0
  108. data/lib/rouge/lexers/clojure.rb +15 -14
  109. data/lib/rouge/lexers/cmake.rb +16 -14
  110. data/lib/rouge/lexers/cmhg.rb +34 -0
  111. data/lib/rouge/lexers/coffeescript.rb +90 -49
  112. data/lib/rouge/lexers/common_lisp.rb +39 -38
  113. data/lib/rouge/lexers/conf.rb +7 -6
  114. data/lib/rouge/lexers/console.rb +92 -38
  115. data/lib/rouge/lexers/coq.rb +27 -23
  116. data/lib/rouge/lexers/cpp.rb +24 -13
  117. data/lib/rouge/lexers/crystal.rb +71 -70
  118. data/lib/rouge/lexers/csharp.rb +29 -29
  119. data/lib/rouge/lexers/css.rb +24 -23
  120. data/lib/rouge/lexers/csvs.rb +44 -0
  121. data/lib/rouge/lexers/cuda.rb +35 -0
  122. data/lib/rouge/lexers/cypher.rb +108 -0
  123. data/lib/rouge/lexers/cython.rb +151 -0
  124. data/lib/rouge/lexers/d.rb +64 -63
  125. data/lib/rouge/lexers/dart.rb +34 -33
  126. data/lib/rouge/lexers/datastudio.rb +138 -0
  127. data/lib/rouge/lexers/diff.rb +10 -4
  128. data/lib/rouge/lexers/digdag.rb +3 -1
  129. data/lib/rouge/lexers/docker.rb +12 -11
  130. data/lib/rouge/lexers/dot.rb +19 -18
  131. data/lib/rouge/lexers/ecl.rb +175 -0
  132. data/lib/rouge/lexers/eex.rb +52 -0
  133. data/lib/rouge/lexers/eiffel.rb +21 -20
  134. data/lib/rouge/lexers/elixir.rb +52 -36
  135. data/lib/rouge/lexers/elm.rb +30 -29
  136. data/lib/rouge/lexers/epp.rb +51 -0
  137. data/lib/rouge/lexers/erb.rb +5 -4
  138. data/lib/rouge/lexers/erlang.rb +1 -0
  139. data/lib/rouge/lexers/escape.rb +58 -0
  140. data/lib/rouge/lexers/factor.rb +41 -40
  141. data/lib/rouge/lexers/fortran.rb +34 -32
  142. data/lib/rouge/lexers/freefem.rb +240 -0
  143. data/lib/rouge/lexers/fsharp.rb +33 -31
  144. data/lib/rouge/lexers/gdscript.rb +171 -0
  145. data/lib/rouge/lexers/ghc_cmm.rb +340 -0
  146. data/lib/rouge/lexers/ghc_core.rb +151 -0
  147. data/lib/rouge/lexers/gherkin.rb +17 -14
  148. data/lib/rouge/lexers/gherkin/keywords.rb +2 -0
  149. data/lib/rouge/lexers/glsl.rb +2 -5
  150. data/lib/rouge/lexers/go.rb +3 -2
  151. data/lib/rouge/lexers/gradle.rb +1 -0
  152. data/lib/rouge/lexers/graphql.rb +78 -60
  153. data/lib/rouge/lexers/groovy.rb +24 -25
  154. data/lib/rouge/lexers/hack.rb +2 -1
  155. data/lib/rouge/lexers/haml.rb +26 -29
  156. data/lib/rouge/lexers/handlebars.rb +32 -20
  157. data/lib/rouge/lexers/haskell.rb +67 -65
  158. data/lib/rouge/lexers/haxe.rb +246 -0
  159. data/lib/rouge/lexers/hcl.rb +26 -25
  160. data/lib/rouge/lexers/hocon.rb +86 -0
  161. data/lib/rouge/lexers/hql.rb +139 -0
  162. data/lib/rouge/lexers/html.rb +33 -31
  163. data/lib/rouge/lexers/http.rb +10 -9
  164. data/lib/rouge/lexers/hylang.rb +15 -14
  165. data/lib/rouge/lexers/idlang.rb +34 -32
  166. data/lib/rouge/lexers/igorpro.rb +32 -31
  167. data/lib/rouge/lexers/ini.rb +13 -12
  168. data/lib/rouge/lexers/io.rb +10 -9
  169. data/lib/rouge/lexers/irb.rb +6 -5
  170. data/lib/rouge/lexers/isbl.rb +97 -0
  171. data/lib/rouge/lexers/isbl/builtins.rb +17 -0
  172. data/lib/rouge/lexers/java.rb +29 -25
  173. data/lib/rouge/lexers/javascript.rb +58 -61
  174. data/lib/rouge/lexers/jinja.rb +39 -22
  175. data/lib/rouge/lexers/jsl.rb +55 -0
  176. data/lib/rouge/lexers/json.rb +54 -11
  177. data/lib/rouge/lexers/json_doc.rb +8 -5
  178. data/lib/rouge/lexers/jsonnet.rb +19 -18
  179. data/lib/rouge/lexers/jsp.rb +120 -0
  180. data/lib/rouge/lexers/jsx.rb +18 -16
  181. data/lib/rouge/lexers/julia.rb +182 -58
  182. data/lib/rouge/lexers/kotlin.rb +78 -26
  183. data/lib/rouge/lexers/lasso.rb +54 -58
  184. data/lib/rouge/lexers/lasso/keywords.rb +14 -0
  185. data/lib/rouge/lexers/liquid.rb +116 -118
  186. data/lib/rouge/lexers/literate_coffeescript.rb +3 -2
  187. data/lib/rouge/lexers/literate_haskell.rb +6 -5
  188. data/lib/rouge/lexers/llvm.rb +66 -49
  189. data/lib/rouge/lexers/lua.rb +43 -4
  190. data/lib/rouge/lexers/lua/builtins.rb +2 -0
  191. data/lib/rouge/lexers/lustre.rb +79 -0
  192. data/lib/rouge/lexers/lutin.rb +33 -0
  193. data/lib/rouge/lexers/m68k.rb +143 -0
  194. data/lib/rouge/lexers/magik.rb +127 -0
  195. data/lib/rouge/lexers/make.rb +57 -34
  196. data/lib/rouge/lexers/markdown.rb +67 -39
  197. data/lib/rouge/lexers/mason.rb +110 -0
  198. data/lib/rouge/lexers/mathematica.rb +96 -0
  199. data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
  200. data/lib/rouge/lexers/matlab.rb +26 -17
  201. data/lib/rouge/lexers/matlab/builtins.rb +4 -4
  202. data/lib/rouge/lexers/minizinc.rb +87 -0
  203. data/lib/rouge/lexers/moonscript.rb +4 -3
  204. data/lib/rouge/lexers/mosel.rb +64 -63
  205. data/lib/rouge/lexers/msgtrans.rb +26 -0
  206. data/lib/rouge/lexers/mxml.rb +19 -18
  207. data/lib/rouge/lexers/nasm.rb +43 -169
  208. data/lib/rouge/lexers/nesasm.rb +78 -0
  209. data/lib/rouge/lexers/nginx.rb +15 -14
  210. data/lib/rouge/lexers/nim.rb +4 -2
  211. data/lib/rouge/lexers/nix.rb +44 -43
  212. data/lib/rouge/lexers/objective_c.rb +5 -178
  213. data/lib/rouge/lexers/objective_c/common.rb +184 -0
  214. data/lib/rouge/lexers/objective_cpp.rb +31 -0
  215. data/lib/rouge/lexers/ocaml.rb +29 -64
  216. data/lib/rouge/lexers/ocaml/common.rb +53 -0
  217. data/lib/rouge/lexers/openedge.rb +429 -0
  218. data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
  219. data/lib/rouge/lexers/pascal.rb +6 -5
  220. data/lib/rouge/lexers/perl.rb +102 -67
  221. data/lib/rouge/lexers/php.rb +91 -53
  222. data/lib/rouge/lexers/php/builtins.rb +183 -174
  223. data/lib/rouge/lexers/plain_text.rb +2 -1
  224. data/lib/rouge/lexers/plist.rb +16 -14
  225. data/lib/rouge/lexers/pony.rb +21 -20
  226. data/lib/rouge/lexers/powershell.rb +190 -638
  227. data/lib/rouge/lexers/praat.rb +76 -75
  228. data/lib/rouge/lexers/prolog.rb +27 -19
  229. data/lib/rouge/lexers/prometheus.rb +32 -30
  230. data/lib/rouge/lexers/properties.rb +13 -12
  231. data/lib/rouge/lexers/protobuf.rb +23 -22
  232. data/lib/rouge/lexers/puppet.rb +33 -32
  233. data/lib/rouge/lexers/python.rb +124 -99
  234. data/lib/rouge/lexers/q.rb +17 -14
  235. data/lib/rouge/lexers/qml.rb +13 -12
  236. data/lib/rouge/lexers/r.rb +13 -13
  237. data/lib/rouge/lexers/racket.rb +47 -22
  238. data/lib/rouge/lexers/reasonml.rb +65 -0
  239. data/lib/rouge/lexers/rego.rb +45 -0
  240. data/lib/rouge/lexers/robot_framework.rb +249 -0
  241. data/lib/rouge/lexers/ruby.rb +88 -71
  242. data/lib/rouge/lexers/rust.rb +45 -44
  243. data/lib/rouge/lexers/sas.rb +563 -0
  244. data/lib/rouge/lexers/sass.rb +9 -8
  245. data/lib/rouge/lexers/sass/common.rb +41 -40
  246. data/lib/rouge/lexers/scala.rb +67 -40
  247. data/lib/rouge/lexers/scheme.rb +19 -18
  248. data/lib/rouge/lexers/scss.rb +4 -3
  249. data/lib/rouge/lexers/sed.rb +31 -30
  250. data/lib/rouge/lexers/shell.rb +67 -55
  251. data/lib/rouge/lexers/sieve.rb +10 -9
  252. data/lib/rouge/lexers/slice.rb +32 -0
  253. data/lib/rouge/lexers/slim.rb +27 -26
  254. data/lib/rouge/lexers/smalltalk.rb +34 -33
  255. data/lib/rouge/lexers/smarty.rb +20 -19
  256. data/lib/rouge/lexers/sml.rb +68 -67
  257. data/lib/rouge/lexers/solidity.rb +185 -0
  258. data/lib/rouge/lexers/sparql.rb +129 -0
  259. data/lib/rouge/lexers/sqf.rb +109 -0
  260. data/lib/rouge/lexers/sqf/commands.rb +15 -0
  261. data/lib/rouge/lexers/sql.rb +47 -26
  262. data/lib/rouge/lexers/supercollider.rb +116 -0
  263. data/lib/rouge/lexers/swift.rb +49 -44
  264. data/lib/rouge/lexers/tap.rb +22 -20
  265. data/lib/rouge/lexers/tcl.rb +28 -27
  266. data/lib/rouge/lexers/terraform.rb +37 -13
  267. data/lib/rouge/lexers/tex.rb +20 -19
  268. data/lib/rouge/lexers/toml.rb +59 -20
  269. data/lib/rouge/lexers/tsx.rb +1 -0
  270. data/lib/rouge/lexers/ttcn3.rb +119 -0
  271. data/lib/rouge/lexers/tulip.rb +38 -36
  272. data/lib/rouge/lexers/turtle.rb +36 -38
  273. data/lib/rouge/lexers/twig.rb +1 -0
  274. data/lib/rouge/lexers/typescript.rb +12 -0
  275. data/lib/rouge/lexers/typescript/common.rb +1 -0
  276. data/lib/rouge/lexers/vala.rb +19 -18
  277. data/lib/rouge/lexers/varnish.rb +168 -0
  278. data/lib/rouge/lexers/vb.rb +28 -27
  279. data/lib/rouge/lexers/verilog.rb +27 -28
  280. data/lib/rouge/lexers/vhdl.rb +12 -11
  281. data/lib/rouge/lexers/viml.rb +15 -14
  282. data/lib/rouge/lexers/viml/keywords.rb +2 -0
  283. data/lib/rouge/lexers/vue.rb +15 -10
  284. data/lib/rouge/lexers/wollok.rb +27 -26
  285. data/lib/rouge/lexers/xml.rb +18 -21
  286. data/lib/rouge/lexers/xojo.rb +61 -0
  287. data/lib/rouge/lexers/xpath.rb +332 -0
  288. data/lib/rouge/lexers/xquery.rb +145 -0
  289. data/lib/rouge/lexers/yaml.rb +64 -61
  290. data/lib/rouge/lexers/yang.rb +147 -0
  291. data/lib/rouge/plugins/redcarpet.rb +9 -2
  292. data/lib/rouge/regex_lexer.rb +27 -25
  293. data/lib/rouge/template_lexer.rb +1 -0
  294. data/lib/rouge/tex_theme_renderer.rb +132 -0
  295. data/lib/rouge/text_analyzer.rb +1 -0
  296. data/lib/rouge/theme.rb +5 -0
  297. data/lib/rouge/themes/base16.rb +1 -0
  298. data/lib/rouge/themes/bw.rb +41 -0
  299. data/lib/rouge/themes/colorful.rb +1 -0
  300. data/lib/rouge/themes/github.rb +1 -0
  301. data/lib/rouge/themes/gruvbox.rb +1 -0
  302. data/lib/rouge/themes/igor_pro.rb +1 -0
  303. data/lib/rouge/themes/magritte.rb +78 -0
  304. data/lib/rouge/themes/molokai.rb +1 -0
  305. data/lib/rouge/themes/monokai.rb +1 -0
  306. data/lib/rouge/themes/monokai_sublime.rb +4 -1
  307. data/lib/rouge/themes/pastie.rb +2 -1
  308. data/lib/rouge/themes/thankful_eyes.rb +2 -1
  309. data/lib/rouge/themes/tulip.rb +2 -1
  310. data/lib/rouge/token.rb +31 -22
  311. data/lib/rouge/util.rb +3 -2
  312. data/lib/rouge/version.rb +2 -1
  313. data/rouge.gemspec +6 -3
  314. metadata +130 -8
  315. data/lib/rouge/lexers/apache/keywords.yml +0 -764
  316. data/lib/rouge/lexers/lasso/keywords.yml +0 -446
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -20,11 +21,11 @@ module Rouge
20
21
  start { markdown.reset!; coffee.reset! }
21
22
 
22
23
  state :root do
23
- rule /^( .*?\n)+/m do
24
+ rule %r/^( .*?\n)+/m do
24
25
  delegate coffee
25
26
  end
26
27
 
27
- rule /^([ ]{0,3}(\S.*?|)\n)*/m do
28
+ rule %r/^([ ]{0,3}(\S.*?|)\n)*/m do
28
29
  delegate markdown
29
30
  end
30
31
  end
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -18,18 +19,18 @@ module Rouge
18
19
 
19
20
  # TODO: support TeX versions as well.
20
21
  state :root do
21
- rule /\s*?\n(?=>)/, Text, :code
22
- rule /.*?\n/, Text
23
- rule /.+\z/, Text
22
+ rule %r/\s*?\n(?=>)/, Text, :code
23
+ rule %r/.*?\n/, Text
24
+ rule %r/.+\z/, Text
24
25
  end
25
26
 
26
27
  state :code do
27
- rule /(>)( .*?(\n|\z))/ do |m|
28
+ rule %r/(>)( .*?(\n|\z))/ do |m|
28
29
  token Name::Label, m[1]
29
30
  delegate haskell, m[2]
30
31
  end
31
32
 
32
- rule /\s*\n(?=\s*[^>])/, Text, :pop!
33
+ rule %r/\s*\n(?=\s*[^>])/, Text, :pop!
33
34
  end
34
35
  end
35
36
  end
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -13,67 +14,83 @@ module Rouge
13
14
  string = /"[^"]*?"/
14
15
  identifier = /([-a-zA-Z$._][-a-zA-Z$._0-9]*|#{string})/
15
16
 
16
- state :basic do
17
- rule /;.*?$/, Comment::Single
18
- rule /\s+/, Text
19
-
20
- rule /#{identifier}\s*:/, Name::Label
21
-
22
- rule /@(#{identifier}|\d+)/, Name::Variable::Global
23
- rule /(%|!)#{identifier}/, Name::Variable
24
- rule /(%|!)\d+/, Name::Variable
25
-
26
- rule /c?#{string}/, Str
17
+ def self.keywords
18
+ @keywords ||= Set.new %w(
19
+ addrspace addrspacecast alias align alignstack allocsize alwaysinline
20
+ appending arcp argmemonly arm_aapcs_vfpcc arm_aapcscc arm_apcscc asm
21
+ attributes available_externally begin builtin byval c cc ccc cold
22
+ coldcc common constant convergent datalayout dbg declare default
23
+ define dllexport dllimport end eq exact extern_weak external false
24
+ fast fastcc gc global hidden inaccessiblemem_or_argmemonly
25
+ inaccessiblememonly inbounds inlinehint inreg internal jumptable
26
+ landingpad linker_private linkonce linkonce_odr minsize module naked
27
+ ne nest ninf nnan no-jump-tables noalias nobuiltin nocapture
28
+ nocf_check noduplicate noimplicitfloat noinline nonlazybind norecurse
29
+ noredzone noredzone noreturn nounwind nsw nsz null nuw oeq oge ogt
30
+ ole olt one opaque optforfuzzing optnone optsize ord personality
31
+ private protected ptx_device ptx_kernel readnone readonly
32
+ returns_twice safestack sanitize_address sanitize_hwaddress
33
+ sanitize_memory sanitize_thread section sge sgt shadowcallstack
34
+ sideeffect signext sle slt speculatable speculative_load_hardening
35
+ sret ssp sspreq sspstrong strictfp tail target thread_local to triple
36
+ true type ueq uge ugt ule ult undef une unnamed_addr uno uwtable
37
+ volatile weak weak_odr writeonly x x86_fastcallcc x86_stdcallcc
38
+ zeroext zeroinitializer
39
+ )
40
+ end
27
41
 
28
- rule /0[xX][a-fA-F0-9]+/, Num
29
- rule /-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/, Num
42
+ def self.instructions
43
+ @instructions ||= Set.new %w(
44
+ add alloca and ashr bitcast br call catch cleanup extractelement
45
+ extractvalue fadd fcmp fdiv fmul fpext fptosi fptoui fptrunc free
46
+ frem fsub getelementptr getresult icmp insertelement insertvalue
47
+ inttoptr invoke load lshr malloc mul or phi ptrtoint resume ret sdiv
48
+ select sext shl shufflevector sitofp srem store sub switch trunc udiv
49
+ uitofp unreachable unwind urem va_arg xor zext
50
+ )
51
+ end
30
52
 
31
- rule /[=<>{}\[\]()*.,!]|x/, Punctuation
53
+ def self.types
54
+ @types ||= Set.new %w(
55
+ double float fp128 half label metadata ppc_fp128 void x86_fp80 x86mmx
56
+ )
32
57
  end
33
58
 
34
- builtin_types = %w(
35
- void float double half x86_fp80 x86mmx fp128 ppc_fp128 label metadata
36
- )
59
+ state :basic do
60
+ rule %r/;.*?$/, Comment::Single
61
+ rule %r/\s+/, Text
37
62
 
38
- state :types do
39
- rule /i[1-9]\d*/, Keyword::Type
40
- rule /#{builtin_types.join('|')}/, Keyword::Type
41
- end
63
+ rule %r/#{identifier}\s*:/, Name::Label
64
+
65
+ rule %r/@(#{identifier}|\d+)/, Name::Variable::Global
66
+ rule %r/#\d+/, Name::Variable::Global
67
+ rule %r/(%|!)#{identifier}/, Name::Variable
68
+ rule %r/(%|!)\d+/, Name::Variable
42
69
 
43
- builtin_keywords = %w(
44
- begin end true false declare define global constant personality private
45
- landingpad linker_private internal available_externally linkonce_odr
46
- linkonce weak weak_odr appending dllimport dllexport common default
47
- hidden protected extern_weak external thread_local zeroinitializer
48
- undef null to tail target triple datalayout volatile nuw nsw nnan ninf
49
- nsz arcp fast exact inbounds align addrspace section alias module asm
50
- sideeffect gc dbg ccc fastcc coldcc x86_stdcallcc x86_fastcallcc
51
- arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel cc
52
- c signext zeroext inreg sret nounwind noreturn noalias nocapture byval
53
- nest readnone readonly inlinehint noinline alwaysinline optsize ssp
54
- sspreq noredzone noimplicitfloat naked type opaque eq ne slt sgt sle
55
- sge ult ugt ule uge oeq one olt ogt ole oge ord uno unnamed_addr ueq
56
- une uwtable x
57
- )
70
+ rule %r/c?#{string}/, Str
58
71
 
59
- builtin_instructions = %w(
60
- add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr
61
- and or xor icmp fcmp phi call catch trunc zext sext fptrunc fpext
62
- uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast select va_arg ret
63
- br switch invoke unwind unreachable malloc alloca free load store
64
- getelementptr extractelement insertelement shufflevector getresult
65
- extractvalue insertvalue cleanup resume
66
- )
72
+ rule %r/0[xX][a-fA-F0-9]+/, Num
73
+ rule %r/-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/, Num
67
74
 
68
- state :keywords do
69
- rule /#{builtin_instructions.join('|')}/, Keyword
70
- rule /#{builtin_keywords.join('|')}/, Keyword
75
+ rule %r/[=<>{}\[\]()*.,!]|x/, Punctuation
71
76
  end
72
77
 
73
78
  state :root do
74
79
  mixin :basic
75
- mixin :keywords
76
- mixin :types
80
+
81
+ rule %r/i[1-9]\d*/, Keyword::Type
82
+
83
+ rule %r/\w+/ do |m|
84
+ if self.class.types.include? m[0]
85
+ token Keyword::Type
86
+ elsif self.class.instructions.include? m[0]
87
+ token Keyword
88
+ elsif self.class.keywords.include? m[0]
89
+ token Keyword
90
+ else
91
+ token Error
92
+ end
93
+ end
77
94
  end
78
95
  end
79
96
  end
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -24,7 +25,7 @@ module Rouge
24
25
  end
25
26
 
26
27
  def self.builtins
27
- load Pathname.new(__FILE__).dirname.join('lua/builtins.rb')
28
+ load File.join(Lexers::BASE_DIR, 'lua/builtins.rb')
28
29
  self.builtins
29
30
  end
30
31
 
@@ -42,7 +43,7 @@ module Rouge
42
43
  state :root do
43
44
  # lua allows a file to start with a shebang
44
45
  rule %r(#!(.*?)$), Comment::Preproc
45
- rule //, Text, :base
46
+ rule %r//, Text, :base
46
47
  end
47
48
 
48
49
  state :base do
@@ -71,7 +72,10 @@ module Rouge
71
72
 
72
73
  rule %r([A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)?) do |m|
73
74
  name = m[0]
74
- if self.builtins.include?(name)
75
+ if name == "gsub"
76
+ token Name::Builtin
77
+ push :gsub
78
+ elsif self.builtins.include?(name)
75
79
  token Name::Builtin
76
80
  elsif name =~ /\./
77
81
  a, b = name.split('.', 2)
@@ -88,7 +92,7 @@ module Rouge
88
92
  end
89
93
 
90
94
  state :function_name do
91
- rule /\s+/, Text
95
+ rule %r/\s+/, Text
92
96
  rule %r((?:([A-Za-z_][A-Za-z0-9_]*)(\.))?([A-Za-z_][A-Za-z0-9_]*)) do
93
97
  groups Name::Class, Punctuation, Name::Function
94
98
  pop!
@@ -97,6 +101,41 @@ module Rouge
97
101
  rule %r(\(), Punctuation, :pop!
98
102
  end
99
103
 
104
+ state :gsub do
105
+ rule %r/\)/, Punctuation, :pop!
106
+ rule %r/[(,]/, Punctuation
107
+ rule %r/\s+/, Text
108
+ rule %r/"/, Str::Regex, :regex
109
+ end
110
+
111
+ state :regex do
112
+ rule %r(") do
113
+ token Str::Regex
114
+ goto :regex_end
115
+ end
116
+
117
+ rule %r/\[\^?/, Str::Escape, :regex_group
118
+ rule %r/\\./, Str::Escape
119
+ rule %r{[(][?][:=<!]}, Str::Escape
120
+ rule %r/[{][\d,]+[}]/, Str::Escape
121
+ rule %r/[()?]/, Str::Escape
122
+ rule %r/./, Str::Regex
123
+ end
124
+
125
+ state :regex_end do
126
+ rule %r/[$]+/, Str::Regex, :pop!
127
+ rule(//) { pop! }
128
+ end
129
+
130
+ state :regex_group do
131
+ rule %r(/), Str::Escape
132
+ rule %r/\]/, Str::Escape, :pop!
133
+ rule %r/(\\)(.)/ do |m|
134
+ groups Str::Escape, Str::Regex
135
+ end
136
+ rule %r/./, Str::Regex
137
+ end
138
+
100
139
  state :escape_sqs do
101
140
  mixin :string_escape
102
141
  mixin :sqs
@@ -1,4 +1,6 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
2
4
  # automatically generated by `rake builtins:lua`
3
5
  module Rouge
4
6
  module Lexers
@@ -0,0 +1,79 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Lustre < RegexLexer
7
+ title "Lustre"
8
+ desc 'The Lustre programming language (Verimag)'
9
+ tag 'lustre'
10
+ filenames '*.lus'
11
+ mimetypes 'text/x-lustre'
12
+
13
+ def self.keywords
14
+ @keywords ||= Set.new %w(
15
+ extern unsafe assert const current enum function let node operator
16
+ returns step struct tel type var model package needs provides uses is
17
+ body end include merge
18
+ )
19
+ end
20
+
21
+ def self.word_operators
22
+ @word_operators ||= Set.new %w(
23
+ div and xor mod or not nor if then else fby pre when with
24
+ )
25
+ end
26
+
27
+ def self.primitives
28
+ @primitives ||= Set.new %w(int real bool)
29
+ end
30
+
31
+ operator = %r([,!$%&*+./:<=>?@^|~#-]+)
32
+ id = /[a-z_][\w']*/i
33
+
34
+ state :root do
35
+ rule %r/\s+/m, Text
36
+ rule %r/false|true/, Keyword::Constant
37
+ rule %r(\-\-.*), Comment::Single
38
+ rule %r(/\*.*?\*/)m, Comment::Multiline
39
+ rule %r(\(\*.*?\*\))m, Comment::Multiline
40
+ rule id do |m|
41
+ match = m[0]
42
+ if self.class.keywords.include? match
43
+ token Keyword
44
+ elsif self.class.word_operators.include? match
45
+ token Operator::Word
46
+ elsif self.class.primitives.include? match
47
+ token Keyword::Type
48
+ else
49
+ token Name
50
+ end
51
+ end
52
+
53
+ rule %r/[(){}\[\];]+/, Punctuation
54
+ rule operator, Operator
55
+
56
+ rule %r/-?\d[\d_]*(.[\d_]*)?(e[+-]?\d[\d_]*)/i, Num::Float
57
+ rule %r/\d[\d_]*/, Num::Integer
58
+
59
+ rule %r/'(?:(\\[\\"'ntbr ])|(\\[0-9]{3})|(\\x\h{2}))'/, Str::Char
60
+ rule %r/'[.]'/, Str::Char
61
+ rule %r/"/, Str::Double, :string
62
+ rule %r/[~?]#{id}/, Name::Variable
63
+ end
64
+
65
+ state :string do
66
+ rule %r/[^\\"]+/, Str::Double
67
+ mixin :escape_sequence
68
+ rule %r/\\\n/, Str::Double
69
+ rule %r/"/, Str::Double, :pop!
70
+ end
71
+
72
+ state :escape_sequence do
73
+ rule %r/\\[\\"'ntbr]/, Str::Escape
74
+ rule %r/\\\d{3}/, Str::Escape
75
+ rule %r/\\x\h{2}/, Str::Escape
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,33 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+ #
4
+ # adapted from lustre.rf (adapted from ocaml.rb), hence some ocaml-ism migth remains
5
+ module Rouge
6
+ module Lexers
7
+ load_lexer 'lustre.rb'
8
+
9
+ class Lutin < Lustre
10
+ title "Lutin"
11
+ desc 'The Lutin programming language (Verimag)'
12
+ tag 'lutin'
13
+ filenames '*.lut'
14
+ mimetypes 'text/x-lutin'
15
+
16
+ def self.keywords
17
+ @keywords ||= Set.new %w(
18
+ let in node extern system returns weak strong assert raise try catch
19
+ trap do exist erun run type ref exception include false true
20
+ )
21
+ end
22
+
23
+ def self.word_operators
24
+ @word_operators ||= Set.new %w(
25
+ div and xor mod or not nor if then else pre)
26
+ end
27
+
28
+ def self.primitives
29
+ @primitives ||= Set.new %w(int real bool trace loop fby)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,143 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class M68k < RegexLexer
7
+ tag 'm68k'
8
+
9
+ title "M68k"
10
+ desc "Motorola 68k Assembler"
11
+
12
+ id = /[a-zA-Z_][a-zA-Z0-9_]*/
13
+
14
+ def self.keywords
15
+ @keywords ||= Set.new %w(
16
+ abcd add adda addi addq addx and andi asl asr
17
+
18
+ bcc bcs beq bge bgt bhi ble bls blt bmi bne bpl bvc bvs bhs blo
19
+ bchg bclr bfchg bfclr bfests bfextu bfffo bfins bfset bftst bkpt bra bse bsr btst
20
+
21
+ callm cas cas2 chk chk2 clr cmp cmpa cmpi cmpm cmp2
22
+
23
+ dbcc dbcs dbeq dbge dbgt dbhi dble dbls dblt dbmi dbne dbpl dbvc dbvs dbhs dblo
24
+ dbra dbf dbt divs divsl divu divul
25
+
26
+ eor eori exg ext extb
27
+
28
+ illegal jmp jsr lea link lsl lsr
29
+
30
+ move movea move16 movem movep moveq muls mulu
31
+
32
+ nbcd neg negx nop not or ori
33
+
34
+ pack pea rol ror roxl roxr rtd rtm rtr rts
35
+
36
+ sbcd
37
+
38
+ seq sne spl smi svc svs st sf sge sgt sle slt scc shi sls scs shs slo
39
+ sub suba subi subq subx swap
40
+
41
+ tas trap trapcc TODO trapv tst
42
+
43
+ unlk unpk eori
44
+ )
45
+ end
46
+
47
+ def self.keywords_type
48
+ @keywords_type ||= Set.new %w(
49
+ dc ds dcb
50
+ )
51
+ end
52
+
53
+ def self.reserved
54
+ @reserved ||= Set.new %w(
55
+ include incdir incbin end endf endfunc endmain endproc fpu func machine main mmu opword proc set opt section
56
+ rept endr
57
+ ifeq ifne ifgt ifge iflt ifle iif ifd ifnd ifc ifnc elseif else endc
58
+ even cnop fail machine
59
+ output radix __G2 __LK
60
+ list nolist plen llen ttl subttl spc page listchar format
61
+ equ equenv equr set reg
62
+ rsreset rsset offset
63
+ cargs
64
+ fequ.s fequ.d fequ.x fequ.p fequ.w fequ.l fopt
65
+ macro endm mexit narg
66
+ )
67
+ end
68
+
69
+ def self.builtins
70
+ @builtins ||=Set.new %w(
71
+ d0 d1 d2 d3 d4 d5 d6 d7
72
+ a0 a1 a2 a3 a4 a5 a6 a7 a7'
73
+ pc usp ssp ccr
74
+ )
75
+ end
76
+
77
+ start { push :expr_bol }
78
+
79
+ state :expr_bol do
80
+ mixin :inline_whitespace
81
+ rule(//) { pop! }
82
+ end
83
+
84
+ state :inline_whitespace do
85
+ rule %r/\s+/, Text
86
+ end
87
+
88
+ state :whitespace do
89
+ rule %r/\n+/m, Text, :expr_bol
90
+ rule %r(^\*(\\.|.)*?$), Comment::Single, :expr_bol
91
+ rule %r(;(\\.|.)*?$), Comment::Single, :expr_bol
92
+ mixin :inline_whitespace
93
+ end
94
+
95
+ state :root do
96
+ rule(//) { push :statements }
97
+ end
98
+
99
+ state :statements do
100
+ mixin :whitespace
101
+ rule %r/"/, Str, :string
102
+ rule %r/#/, Name::Decorator
103
+ rule %r/^\.?[a-zA-Z0-9_]+:?/, Name::Label
104
+ rule %r/\.[bswl]\s/i, Name::Decorator
105
+ rule %r('(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
106
+ rule %r/\$[0-9a-f]+/i, Num::Hex
107
+ rule %r/@[0-8]+/i, Num::Oct
108
+ rule %r/%[01]+/i, Num::Bin
109
+ rule %r/\d+/i, Num::Integer
110
+ rule %r([*~&+=\|?:<>/-]), Operator
111
+ rule %r/\\./, Comment::Preproc
112
+ rule %r/[(),.]/, Punctuation
113
+ rule %r/\[[a-zA-Z0-9]*\]/, Punctuation
114
+
115
+ rule id do |m|
116
+ name = m[0]
117
+
118
+ if self.class.keywords.include? name.downcase
119
+ token Keyword
120
+ elsif self.class.keywords_type.include? name.downcase
121
+ token Keyword::Type
122
+ elsif self.class.reserved.include? name.downcase
123
+ token Keyword::Reserved
124
+ elsif self.class.builtins.include? name.downcase
125
+ token Name::Builtin
126
+ elsif name =~ /[a-zA-Z0-9]+/
127
+ token Name::Variable
128
+ else
129
+ token Name
130
+ end
131
+ end
132
+ end
133
+
134
+ state :string do
135
+ rule %r/"/, Str, :pop!
136
+ rule %r/\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
137
+ rule %r/[^\\"\n]+/, Str
138
+ rule %r/\\\n/, Str
139
+ rule %r/\\/, Str # stray backslash
140
+ end
141
+ end
142
+ end
143
+ end