rouge 3.0.0 → 3.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (320) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +17 -3
  3. data/bin/rougify +1 -0
  4. data/lib/rouge.rb +67 -42
  5. data/lib/rouge/cli.rb +87 -18
  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/crystal +45 -0
  16. data/lib/rouge/demos/csvs +8 -0
  17. data/lib/rouge/demos/cuda +11 -0
  18. data/lib/rouge/demos/cypher +5 -0
  19. data/lib/rouge/demos/cython +6 -0
  20. data/lib/rouge/demos/datastudio +21 -0
  21. data/lib/rouge/demos/ecl +18 -0
  22. data/lib/rouge/demos/eex +1 -0
  23. data/lib/rouge/demos/elm +4 -0
  24. data/lib/rouge/demos/epp +4 -0
  25. data/lib/rouge/demos/escape +3 -0
  26. data/lib/rouge/demos/freefem +16 -0
  27. data/lib/rouge/demos/gdscript +18 -0
  28. data/lib/rouge/demos/ghc-cmm +23 -0
  29. data/lib/rouge/demos/ghc-core +26 -0
  30. data/lib/rouge/demos/hack +5 -0
  31. data/lib/rouge/demos/haxe +5 -0
  32. data/lib/rouge/demos/hcl +7 -0
  33. data/lib/rouge/demos/hocon +8 -0
  34. data/lib/rouge/demos/hql +5 -0
  35. data/lib/rouge/demos/isbl +4 -0
  36. data/lib/rouge/demos/jsl +3 -0
  37. data/lib/rouge/demos/jsp +29 -0
  38. data/lib/rouge/demos/liquid +0 -1
  39. data/lib/rouge/demos/lustre +6 -0
  40. data/lib/rouge/demos/lutin +18 -0
  41. data/lib/rouge/demos/m68k +16 -0
  42. data/lib/rouge/demos/magik +6 -0
  43. data/lib/rouge/demos/mason +22 -0
  44. data/lib/rouge/demos/mathematica +8 -0
  45. data/lib/rouge/demos/minizinc +23 -0
  46. data/lib/rouge/demos/msgtrans +4 -0
  47. data/lib/rouge/demos/nasm +6 -6
  48. data/lib/rouge/demos/nesasm +11 -0
  49. data/lib/rouge/demos/objective_cpp +17 -0
  50. data/lib/rouge/demos/openedge +4 -0
  51. data/lib/rouge/demos/opentype_feature_file +6 -0
  52. data/lib/rouge/demos/plist +1 -132
  53. data/lib/rouge/demos/powershell +12 -48
  54. data/lib/rouge/demos/q +6 -0
  55. data/lib/rouge/demos/reasonml +12 -0
  56. data/lib/rouge/demos/rego +8 -0
  57. data/lib/rouge/demos/robot_framework +27 -0
  58. data/lib/rouge/demos/sas +13 -0
  59. data/lib/rouge/demos/slice +10 -0
  60. data/lib/rouge/demos/solidity +13 -0
  61. data/lib/rouge/demos/sparql +6 -0
  62. data/lib/rouge/demos/sqf +14 -0
  63. data/lib/rouge/demos/supercollider +11 -0
  64. data/lib/rouge/demos/terraform +16 -0
  65. data/lib/rouge/demos/ttcn3 +6 -0
  66. data/lib/rouge/demos/vcl +12 -0
  67. data/lib/rouge/demos/xojo +14 -0
  68. data/lib/rouge/demos/xpath +2 -0
  69. data/lib/rouge/demos/xquery +22 -0
  70. data/lib/rouge/demos/yang +17 -0
  71. data/lib/rouge/formatter.rb +39 -2
  72. data/lib/rouge/formatters/html.rb +21 -2
  73. data/lib/rouge/formatters/html_inline.rb +1 -0
  74. data/lib/rouge/formatters/html_legacy.rb +1 -0
  75. data/lib/rouge/formatters/html_line_table.rb +53 -0
  76. data/lib/rouge/formatters/html_linewise.rb +7 -11
  77. data/lib/rouge/formatters/html_pygments.rb +2 -0
  78. data/lib/rouge/formatters/html_table.rb +21 -31
  79. data/lib/rouge/formatters/null.rb +1 -0
  80. data/lib/rouge/formatters/terminal256.rb +23 -5
  81. data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
  82. data/lib/rouge/formatters/tex.rb +92 -0
  83. data/lib/rouge/guesser.rb +2 -0
  84. data/lib/rouge/guessers/disambiguation.rb +48 -0
  85. data/lib/rouge/guessers/filename.rb +2 -0
  86. data/lib/rouge/guessers/glob_mapping.rb +3 -1
  87. data/lib/rouge/guessers/mimetype.rb +2 -0
  88. data/lib/rouge/guessers/modeline.rb +3 -1
  89. data/lib/rouge/guessers/source.rb +3 -1
  90. data/lib/rouge/guessers/util.rb +2 -0
  91. data/lib/rouge/lexer.rb +71 -15
  92. data/lib/rouge/lexers/abap.rb +13 -11
  93. data/lib/rouge/lexers/actionscript.rb +35 -34
  94. data/lib/rouge/lexers/ada.rb +162 -0
  95. data/lib/rouge/lexers/apache.rb +13 -15
  96. data/lib/rouge/lexers/apache/keywords.rb +15 -0
  97. data/lib/rouge/lexers/apex.rb +126 -0
  98. data/lib/rouge/lexers/apiblueprint.rb +2 -0
  99. data/lib/rouge/lexers/apple_script.rb +17 -14
  100. data/lib/rouge/lexers/armasm.rb +145 -0
  101. data/lib/rouge/lexers/awk.rb +26 -25
  102. data/lib/rouge/lexers/batchfile.rb +164 -0
  103. data/lib/rouge/lexers/bbcbasic.rb +112 -0
  104. data/lib/rouge/lexers/biml.rb +6 -4
  105. data/lib/rouge/lexers/bpf.rb +118 -0
  106. data/lib/rouge/lexers/brainfuck.rb +53 -0
  107. data/lib/rouge/lexers/bsl.rb +13 -12
  108. data/lib/rouge/lexers/c.rb +36 -58
  109. data/lib/rouge/lexers/ceylon.rb +7 -34
  110. data/lib/rouge/lexers/cfscript.rb +27 -26
  111. data/lib/rouge/lexers/clean.rb +156 -0
  112. data/lib/rouge/lexers/clojure.rb +15 -14
  113. data/lib/rouge/lexers/cmake.rb +16 -14
  114. data/lib/rouge/lexers/cmhg.rb +34 -0
  115. data/lib/rouge/lexers/coffeescript.rb +90 -49
  116. data/lib/rouge/lexers/common_lisp.rb +39 -38
  117. data/lib/rouge/lexers/conf.rb +7 -6
  118. data/lib/rouge/lexers/console.rb +92 -38
  119. data/lib/rouge/lexers/coq.rb +27 -23
  120. data/lib/rouge/lexers/cpp.rb +24 -13
  121. data/lib/rouge/lexers/crystal.rb +430 -0
  122. data/lib/rouge/lexers/csharp.rb +29 -29
  123. data/lib/rouge/lexers/css.rb +24 -23
  124. data/lib/rouge/lexers/csvs.rb +44 -0
  125. data/lib/rouge/lexers/cuda.rb +35 -0
  126. data/lib/rouge/lexers/cypher.rb +108 -0
  127. data/lib/rouge/lexers/cython.rb +151 -0
  128. data/lib/rouge/lexers/d.rb +64 -63
  129. data/lib/rouge/lexers/dart.rb +34 -33
  130. data/lib/rouge/lexers/datastudio.rb +138 -0
  131. data/lib/rouge/lexers/diff.rb +10 -4
  132. data/lib/rouge/lexers/digdag.rb +3 -1
  133. data/lib/rouge/lexers/docker.rb +12 -11
  134. data/lib/rouge/lexers/dot.rb +19 -18
  135. data/lib/rouge/lexers/ecl.rb +175 -0
  136. data/lib/rouge/lexers/eex.rb +52 -0
  137. data/lib/rouge/lexers/eiffel.rb +21 -20
  138. data/lib/rouge/lexers/elixir.rb +52 -36
  139. data/lib/rouge/lexers/elm.rb +90 -0
  140. data/lib/rouge/lexers/epp.rb +51 -0
  141. data/lib/rouge/lexers/erb.rb +5 -4
  142. data/lib/rouge/lexers/erlang.rb +1 -0
  143. data/lib/rouge/lexers/escape.rb +58 -0
  144. data/lib/rouge/lexers/factor.rb +41 -40
  145. data/lib/rouge/lexers/fortran.rb +36 -34
  146. data/lib/rouge/lexers/freefem.rb +240 -0
  147. data/lib/rouge/lexers/fsharp.rb +34 -32
  148. data/lib/rouge/lexers/gdscript.rb +171 -0
  149. data/lib/rouge/lexers/ghc_cmm.rb +340 -0
  150. data/lib/rouge/lexers/ghc_core.rb +151 -0
  151. data/lib/rouge/lexers/gherkin.rb +17 -14
  152. data/lib/rouge/lexers/gherkin/keywords.rb +2 -0
  153. data/lib/rouge/lexers/glsl.rb +2 -5
  154. data/lib/rouge/lexers/go.rb +3 -2
  155. data/lib/rouge/lexers/gradle.rb +1 -0
  156. data/lib/rouge/lexers/graphql.rb +78 -60
  157. data/lib/rouge/lexers/groovy.rb +24 -25
  158. data/lib/rouge/lexers/hack.rb +49 -0
  159. data/lib/rouge/lexers/haml.rb +26 -29
  160. data/lib/rouge/lexers/handlebars.rb +32 -20
  161. data/lib/rouge/lexers/haskell.rb +78 -62
  162. data/lib/rouge/lexers/haxe.rb +246 -0
  163. data/lib/rouge/lexers/hcl.rb +163 -0
  164. data/lib/rouge/lexers/hocon.rb +86 -0
  165. data/lib/rouge/lexers/hql.rb +139 -0
  166. data/lib/rouge/lexers/html.rb +36 -33
  167. data/lib/rouge/lexers/http.rb +10 -9
  168. data/lib/rouge/lexers/hylang.rb +15 -14
  169. data/lib/rouge/lexers/idlang.rb +34 -32
  170. data/lib/rouge/lexers/igorpro.rb +481 -225
  171. data/lib/rouge/lexers/ini.rb +13 -12
  172. data/lib/rouge/lexers/io.rb +10 -9
  173. data/lib/rouge/lexers/irb.rb +6 -5
  174. data/lib/rouge/lexers/isbl.rb +97 -0
  175. data/lib/rouge/lexers/isbl/builtins.rb +17 -0
  176. data/lib/rouge/lexers/java.rb +30 -26
  177. data/lib/rouge/lexers/javascript.rb +59 -61
  178. data/lib/rouge/lexers/jinja.rb +39 -22
  179. data/lib/rouge/lexers/jsl.rb +55 -0
  180. data/lib/rouge/lexers/json.rb +54 -11
  181. data/lib/rouge/lexers/json_doc.rb +8 -5
  182. data/lib/rouge/lexers/jsonnet.rb +19 -18
  183. data/lib/rouge/lexers/jsp.rb +120 -0
  184. data/lib/rouge/lexers/jsx.rb +18 -16
  185. data/lib/rouge/lexers/julia.rb +192 -74
  186. data/lib/rouge/lexers/kotlin.rb +79 -27
  187. data/lib/rouge/lexers/lasso.rb +54 -58
  188. data/lib/rouge/lexers/lasso/keywords.rb +14 -0
  189. data/lib/rouge/lexers/liquid.rb +116 -118
  190. data/lib/rouge/lexers/literate_coffeescript.rb +3 -2
  191. data/lib/rouge/lexers/literate_haskell.rb +6 -5
  192. data/lib/rouge/lexers/llvm.rb +66 -49
  193. data/lib/rouge/lexers/lua.rb +43 -4
  194. data/lib/rouge/lexers/lua/builtins.rb +2 -0
  195. data/lib/rouge/lexers/lustre.rb +79 -0
  196. data/lib/rouge/lexers/lutin.rb +33 -0
  197. data/lib/rouge/lexers/m68k.rb +143 -0
  198. data/lib/rouge/lexers/magik.rb +127 -0
  199. data/lib/rouge/lexers/make.rb +57 -34
  200. data/lib/rouge/lexers/markdown.rb +67 -39
  201. data/lib/rouge/lexers/mason.rb +110 -0
  202. data/lib/rouge/lexers/mathematica.rb +96 -0
  203. data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
  204. data/lib/rouge/lexers/matlab.rb +26 -17
  205. data/lib/rouge/lexers/matlab/builtins.rb +4 -4
  206. data/lib/rouge/lexers/minizinc.rb +87 -0
  207. data/lib/rouge/lexers/moonscript.rb +4 -3
  208. data/lib/rouge/lexers/mosel.rb +64 -63
  209. data/lib/rouge/lexers/msgtrans.rb +26 -0
  210. data/lib/rouge/lexers/mxml.rb +19 -18
  211. data/lib/rouge/lexers/nasm.rb +43 -169
  212. data/lib/rouge/lexers/nesasm.rb +78 -0
  213. data/lib/rouge/lexers/nginx.rb +15 -14
  214. data/lib/rouge/lexers/nim.rb +4 -2
  215. data/lib/rouge/lexers/nix.rb +48 -42
  216. data/lib/rouge/lexers/objective_c.rb +5 -178
  217. data/lib/rouge/lexers/objective_c/common.rb +184 -0
  218. data/lib/rouge/lexers/objective_cpp.rb +31 -0
  219. data/lib/rouge/lexers/ocaml.rb +29 -64
  220. data/lib/rouge/lexers/ocaml/common.rb +53 -0
  221. data/lib/rouge/lexers/openedge.rb +429 -0
  222. data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
  223. data/lib/rouge/lexers/pascal.rb +6 -5
  224. data/lib/rouge/lexers/perl.rb +103 -68
  225. data/lib/rouge/lexers/php.rb +94 -54
  226. data/lib/rouge/lexers/php/builtins.rb +183 -174
  227. data/lib/rouge/lexers/plain_text.rb +2 -1
  228. data/lib/rouge/lexers/plist.rb +16 -14
  229. data/lib/rouge/lexers/pony.rb +21 -20
  230. data/lib/rouge/lexers/powershell.rb +191 -639
  231. data/lib/rouge/lexers/praat.rb +76 -75
  232. data/lib/rouge/lexers/prolog.rb +27 -19
  233. data/lib/rouge/lexers/prometheus.rb +32 -30
  234. data/lib/rouge/lexers/properties.rb +13 -12
  235. data/lib/rouge/lexers/protobuf.rb +23 -22
  236. data/lib/rouge/lexers/puppet.rb +33 -32
  237. data/lib/rouge/lexers/python.rb +124 -98
  238. data/lib/rouge/lexers/q.rb +17 -14
  239. data/lib/rouge/lexers/qml.rb +13 -12
  240. data/lib/rouge/lexers/r.rb +13 -13
  241. data/lib/rouge/lexers/racket.rb +47 -22
  242. data/lib/rouge/lexers/reasonml.rb +65 -0
  243. data/lib/rouge/lexers/rego.rb +45 -0
  244. data/lib/rouge/lexers/robot_framework.rb +249 -0
  245. data/lib/rouge/lexers/ruby.rb +88 -71
  246. data/lib/rouge/lexers/rust.rb +47 -46
  247. data/lib/rouge/lexers/sas.rb +563 -0
  248. data/lib/rouge/lexers/sass.rb +11 -10
  249. data/lib/rouge/lexers/sass/common.rb +41 -40
  250. data/lib/rouge/lexers/scala.rb +67 -40
  251. data/lib/rouge/lexers/scheme.rb +19 -18
  252. data/lib/rouge/lexers/scss.rb +6 -5
  253. data/lib/rouge/lexers/sed.rb +31 -30
  254. data/lib/rouge/lexers/shell.rb +83 -62
  255. data/lib/rouge/lexers/sieve.rb +10 -9
  256. data/lib/rouge/lexers/slice.rb +32 -0
  257. data/lib/rouge/lexers/slim.rb +27 -26
  258. data/lib/rouge/lexers/smalltalk.rb +34 -33
  259. data/lib/rouge/lexers/smarty.rb +20 -19
  260. data/lib/rouge/lexers/sml.rb +68 -67
  261. data/lib/rouge/lexers/solidity.rb +185 -0
  262. data/lib/rouge/lexers/sparql.rb +129 -0
  263. data/lib/rouge/lexers/sqf.rb +109 -0
  264. data/lib/rouge/lexers/sqf/commands.rb +15 -0
  265. data/lib/rouge/lexers/sql.rb +47 -26
  266. data/lib/rouge/lexers/supercollider.rb +116 -0
  267. data/lib/rouge/lexers/swift.rb +63 -38
  268. data/lib/rouge/lexers/tap.rb +22 -20
  269. data/lib/rouge/lexers/tcl.rb +28 -27
  270. data/lib/rouge/lexers/terraform.rb +128 -0
  271. data/lib/rouge/lexers/tex.rb +20 -19
  272. data/lib/rouge/lexers/toml.rb +59 -20
  273. data/lib/rouge/lexers/tsx.rb +1 -0
  274. data/lib/rouge/lexers/ttcn3.rb +119 -0
  275. data/lib/rouge/lexers/tulip.rb +38 -36
  276. data/lib/rouge/lexers/turtle.rb +36 -38
  277. data/lib/rouge/lexers/twig.rb +1 -0
  278. data/lib/rouge/lexers/typescript.rb +12 -0
  279. data/lib/rouge/lexers/typescript/common.rb +1 -0
  280. data/lib/rouge/lexers/vala.rb +19 -18
  281. data/lib/rouge/lexers/varnish.rb +168 -0
  282. data/lib/rouge/lexers/vb.rb +28 -27
  283. data/lib/rouge/lexers/verilog.rb +27 -28
  284. data/lib/rouge/lexers/vhdl.rb +13 -12
  285. data/lib/rouge/lexers/viml.rb +15 -14
  286. data/lib/rouge/lexers/viml/keywords.rb +2 -0
  287. data/lib/rouge/lexers/vue.rb +19 -12
  288. data/lib/rouge/lexers/wollok.rb +27 -26
  289. data/lib/rouge/lexers/xml.rb +18 -21
  290. data/lib/rouge/lexers/xojo.rb +61 -0
  291. data/lib/rouge/lexers/xpath.rb +332 -0
  292. data/lib/rouge/lexers/xquery.rb +145 -0
  293. data/lib/rouge/lexers/yaml.rb +64 -61
  294. data/lib/rouge/lexers/yang.rb +147 -0
  295. data/lib/rouge/plugins/redcarpet.rb +9 -2
  296. data/lib/rouge/regex_lexer.rb +27 -25
  297. data/lib/rouge/template_lexer.rb +1 -0
  298. data/lib/rouge/tex_theme_renderer.rb +132 -0
  299. data/lib/rouge/text_analyzer.rb +1 -0
  300. data/lib/rouge/theme.rb +5 -0
  301. data/lib/rouge/themes/base16.rb +1 -0
  302. data/lib/rouge/themes/bw.rb +41 -0
  303. data/lib/rouge/themes/colorful.rb +1 -0
  304. data/lib/rouge/themes/github.rb +1 -0
  305. data/lib/rouge/themes/gruvbox.rb +1 -0
  306. data/lib/rouge/themes/igor_pro.rb +1 -0
  307. data/lib/rouge/themes/magritte.rb +78 -0
  308. data/lib/rouge/themes/molokai.rb +1 -0
  309. data/lib/rouge/themes/monokai.rb +1 -0
  310. data/lib/rouge/themes/monokai_sublime.rb +4 -1
  311. data/lib/rouge/themes/pastie.rb +2 -1
  312. data/lib/rouge/themes/thankful_eyes.rb +2 -1
  313. data/lib/rouge/themes/tulip.rb +2 -1
  314. data/lib/rouge/token.rb +31 -22
  315. data/lib/rouge/util.rb +3 -2
  316. data/lib/rouge/version.rb +2 -1
  317. data/rouge.gemspec +8 -1
  318. metadata +141 -7
  319. data/lib/rouge/lexers/apache/keywords.yml +0 -764
  320. data/lib/rouge/lexers/lasso/keywords.yml +0 -446
@@ -0,0 +1,26 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class MsgTrans < RegexLexer
7
+ title "MessageTrans"
8
+ desc "RISC OS message translator messages file"
9
+ tag 'msgtrans'
10
+ filenames 'Messages', 'Message[0-9]', 'Message[1-9][0-9]', 'Message[1-9][0-9][0-9]'
11
+
12
+ state :root do
13
+ rule %r/^#[^\n]*/, Comment
14
+ rule %r/[^\t\n\r ,):?\/]+/, Name::Variable
15
+ rule %r/[\n\/?]/, Operator
16
+ rule %r/:/, Operator, :value
17
+ end
18
+
19
+ state :value do
20
+ rule %r/\n/, Text, :pop!
21
+ rule %r/%[0-3%]/, Operator
22
+ rule %r/[^\n%]/, Literal::String
23
+ end
24
+ end
25
+ end
26
+ 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
@@ -10,56 +11,56 @@ module Rouge
10
11
  mimetypes 'application/xv+xml'
11
12
 
12
13
  state :root do
13
- rule /[^<&]+/, Text
14
- rule /&\S*?;/, Name::Entity
14
+ rule %r/[^<&]+/, Text
15
+ rule %r/&\S*?;/, Name::Entity
15
16
 
16
- rule /<!\[CDATA\[/m do
17
+ rule %r/<!\[CDATA\[/m do
17
18
  token Comment::Preproc
18
19
  push :actionscript_content
19
20
  end
20
21
 
21
- rule /<!--/, Comment, :comment
22
- rule /<\?.*?\?>/, Comment::Preproc
23
- rule /<![^>]*>/, Comment::Preproc
22
+ rule %r/<!--/, Comment, :comment
23
+ rule %r/<\?.*?\?>/, Comment::Preproc
24
+ rule %r/<![^>]*>/, Comment::Preproc
24
25
 
25
26
  rule %r(<\s*[\w:.-]+)m, Name::Tag, :tag # opening tags
26
27
  rule %r(<\s*/\s*[\w:.-]+\s*>)m, Name::Tag # closing tags
27
28
  end
28
29
 
29
30
  state :comment do
30
- rule /[^-]+/m, Comment
31
- rule /-->/, Comment, :pop!
32
- rule /-/, Comment
31
+ rule %r/[^-]+/m, Comment
32
+ rule %r/-->/, Comment, :pop!
33
+ rule %r/-/, Comment
33
34
  end
34
35
 
35
36
  state :tag do
36
- rule /\s+/m, Text
37
- rule /[\w.:-]+\s*=/m, Name::Attribute, :attribute
37
+ rule %r/\s+/m, Text
38
+ rule %r/[\w.:-]+\s*=/m, Name::Attribute, :attribute
38
39
  rule %r(/?\s*>), Name::Tag, :root
39
40
  end
40
41
 
41
42
  state :attribute do
42
- rule /\s+/m, Text
43
- rule /(")({|@{)/m do
43
+ rule %r/\s+/m, Text
44
+ rule %r/(")({|@{)/m do
44
45
  groups Str, Punctuation
45
46
  push :actionscript_attribute
46
47
  end
47
- rule /".*?"|'.*?'|[^\s>]+/, Str, :tag
48
+ rule %r/".*?"|'.*?'|[^\s>]+/, Str, :tag
48
49
  end
49
50
 
50
51
  state :actionscript_content do
51
- rule /\]\]\>/m, Comment::Preproc, :pop!
52
- rule /.*?(?=\]\]\>)/m do
52
+ rule %r/\]\]\>/m, Comment::Preproc, :pop!
53
+ rule %r/.*?(?=\]\]\>)/m do
53
54
  delegate Actionscript
54
55
  end
55
56
  end
56
57
 
57
58
  state :actionscript_attribute do
58
- rule /(})(")/m do
59
+ rule %r/(})(")/m do
59
60
  groups Punctuation, Str
60
61
  push :tag
61
62
  end
62
- rule /.*?(?=}")/m do
63
+ rule %r/.*?(?=}")/m do
63
64
  delegate Actionscript
64
65
  end
65
66
  end
@@ -1,197 +1,71 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
4
+ # Based on Chroma's NASM lexer implementation
5
+ # https://github.com/alecthomas/chroma/blob/498eaa690f5ac6ab0e3d6f46237e547a8935cdc7/lexers/n/nasm.go
3
6
  module Rouge
4
7
  module Lexers
5
8
  class Nasm < RegexLexer
6
- tag 'nasm'
7
- filenames '*.asm'
8
- #mimetypes 'text/x-chdr', 'text/x-csrc'
9
-
10
9
  title "Nasm"
11
10
  desc "Netwide Assembler"
12
11
 
13
- ws = %r((?:\s|;.*?\n/)+)
14
- id = /[a-zA-Z_][a-zA-Z0-9_]*/
15
-
16
- #todo: pull more instructions from: http://www.nasm.us/doc/nasmdocb.html
17
- #so far, we have sections 1.1 and 1.2
18
-
19
- def self.keywords
20
- @keywords ||= Set.new %w(
21
- aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts
22
- call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg
23
- cmpxchg16b cmpxchg486 cmpxchg8b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div
24
- dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove
25
- fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp
26
- fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr
27
- fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e
28
- fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw
29
- fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos
30
- fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip
31
- fucomp fucompp fwait fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc
32
- incbin insb insd insw int int01 int03 int1 int3 into invd invlpg invlpga invpcid iret
33
- iretd iretq iretw jcxz jecxz jmp jmpe jrcxz lahf lar lds lea leave les lfence lfs
34
- lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne
35
- loopnz loopz lsl lss ltr mfence monitor monitorx mov movd movq movsb movsd movsq movsw
36
- movsx movsxd movzx mul mwait mwaitx neg nop not or out outsb outsd outsw packssdw
37
- packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn
38
- pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc
39
- pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt
40
- pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw
41
- pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch
42
- prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw
43
- psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd
44
- push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdm rdmsr rdpmc rdshr
45
- rdtsc rdtscp ret retf retn rol ror rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd
46
- scasq scasw sfence sgdt shl shld shr shrd sidt skinit sldt smi smint smintold smsw
47
- stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter
48
- sysexit sysret test ud0 ud1 ud2 ud2a ud2b umov verr verw wbinvd wrmsr wrshr xadd xbts
49
- xchg xlat xlatb xor
50
-
51
- cmova cmovae cmovb cmovbe cmovc cmove cmovg cmovge cmovl cmovle cmovna cmovnae cmovnb cmovnbe cmovnc cmovne cmovng cmovnge cmovnl cmovnle cmovno cmovnp cmovns cmovnz cmovo cmovp cmovpe cmovpo cmovs cmovz
52
-
53
- ja jae jb jbe jc jcxz jecxz je jg jge jl jle jna jnae jnb jnbe jnc jne jng jnge jnl jnle jno jnp jns jnz jo jp jpe jpo js jz
54
-
55
- seta setae setb setbe setc sete setg setge setl setle setna setnae setnb setnbe setnc setne setng setnge setnl setnle setno setnp setns setnz seto setp setpe setpo sets setz
56
-
57
- AAA AAD AAM AAS ADC ADD AND ARPL BB0_RESET BB1_RESET BOUND BSF BSR BSWAP BT BTC BTR BTS
58
- CALL CBW CDQ CDQE CLC CLD CLI CLTS CMC CMP CMPSB CMPSD CMPSQ CMPSW CMPXCHG
59
- CMPXCHG16B CMPXCHG486 CMPXCHG8B CPUID CPU_READ CPU_WRITE CQO CWD CWDE DAA DAS DEC DIV
60
- DMINT EMMS ENTER EQU F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX FCMOVB FCMOVBE FCMOVE
61
- FCMOVNB FCMOVNBE FCMOVNE FCMOVNU FCMOVU FCOM FCOMI FCOMIP FCOMP FCOMPP FCOS FDECSTP
62
- FDISI FDIV FDIVP FDIVR FDIVRP FEMMS FENI FFREE FFREEP FIADD FICOM FICOMP FIDIV FIDIVR
63
- FILD FIMUL FINCSTP FINIT FIST FISTP FISTTP FISUB FISUBR FLD FLD1 FLDCW FLDENV FLDL2E
64
- FLDL2T FLDLG2 FLDLN2 FLDPI FLDZ FMUL FMULP FNCLEX FNDISI FNENI FNINIT FNOP FNSAVE FNSTCW
65
- FNSTENV FNSTSW FPATAN FPREM FPREM1 FPTAN FRNDINT FRSTOR FSAVE FSCALE FSETPM FSIN FSINCOS
66
- FSQRT FST FSTCW FSTENV FSTP FSTSW FSUB FSUBP FSUBR FSUBRP FTST FUCOM FUCOMI FUCOMIP
67
- FUCOMP FUCOMPP FWAIT FXAM FXCH FXTRACT FYL2X FYL2XP1 HLT IBTS ICEBP IDIV IMUL IN INC
68
- INCBIN INSB INSD INSW INT INT01 INT03 INT1 INT3 INTO INVD INVLPG INVLPGA INVPCID IRET
69
- IRETD IRETQ IRETW JCXZ JECXZ JMP JMPE JRCXZ LAHF LAR LDS LEA LEAVE LES LFENCE LFS
70
- LGDT LGS LIDT LLDT LMSW LOADALL LOADALL286 LODSB LODSD LODSQ LODSW LOOP LOOPE LOOPNE
71
- LOOPNZ LOOPZ LSL LSS LTR MFENCE MONITOR MONITORX MOV MOVD MOVQ MOVSB MOVSD MOVSQ MOVSW
72
- MOVSX MOVSXD MOVZX MUL MWAIT MWAITX NEG NOP NOT OR OUT OUTSB OUTSD OUTSW PACKSSDW
73
- PACKSSWB PACKUSWB PADDB PADDD PADDSB PADDSIW PADDSW PADDUSB PADDUSW PADDW PAND PANDN
74
- PAUSE PAVEB PAVGUSB PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD PCMPGTW PDISTIB PF2ID PFACC
75
- PFADD PFCMPEQ PFCMPGE PFCMPGT PFMAX PFMIN PFMUL PFRCP PFRCPIT1 PFRCPIT2 PFRSQIT1 PFRSQRT
76
- PFSUB PFSUBR PI2FD PMACHRIW PMADDWD PMAGW PMULHRIW PMULHRWA PMULHRWC PMULHW PMULLW
77
- PMVGEZB PMVLZB PMVNZB PMVZB POP POPA POPAD POPAW POPF POPFD POPFQ POPFW POR PREFETCH
78
- PREFETCHW PSLLD PSLLQ PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW PSUBB PSUBD PSUBSB PSUBSIW
79
- PSUBSW PSUBUSB PSUBUSW PSUBW PUNPCKHBW PUNPCKHDQ PUNPCKHWD PUNPCKLBW PUNPCKLDQ PUNPCKLWD
80
- PUSH PUSHA PUSHAD PUSHAW PUSHF PUSHFD PUSHFQ PUSHFW PXOR RCL RCR RDM RDMSR RDPMC RDSHR
81
- RDTSC RDTSCP RET RETF RETN ROL ROR RSDC RSLDT RSM RSTS SAHF SAL SALC SAR SBB SCASB SCASD
82
- SCASQ SCASW SFENCE SGDT SHL SHLD SHR SHRD SIDT SKINIT SLDT SMI SMINT SMINTOLD SMSW
83
- STC STD STI STOSB STOSD STOSQ STOSW STR SUB SVDC SVLDT SVTS SWAPGS SYSCALL SYSENTER
84
- SYSEXIT SYSRET TEST UD0 UD1 UD2 UD2A UD2B UMOV VERR VERW WBINVD WRMSR WRSHR XADD XBTS
85
- XCHG XLAT XLATB XOR
86
-
87
- CMOVA CMOVAE CMOVB CMOVBE CMOVC CMOVE CMOVG CMOVGE CMOVL CMOVLE CMOVNA CMOVNAE CMOVNB CMOVNBE CMOVNC CMOVNE CMOVNG CMOVNGE CMOVNL CMOVNLE CMOVNO CMOVNP CMOVNS CMOVNZ CMOVO CMOVP CMOVPE CMOVPO CMOVS CMOVZ
12
+ tag 'nasm'
13
+ filenames '*.asm'
14
+ mimetypes 'text/x-nasm'
88
15
 
89
- JA JAE JB JBE JC JCXZ JECXZ JE JG JGE JL JLE JNA JNAE JNB JNBE JNC JNE JNG JNGE JNL JNLE JNO JNP JNS JNZ JO JP JPE JPO JS JZ
16
+ state :root do
17
+ rule %r/^\s*%/, Comment::Preproc, :preproc
90
18
 
91
- SETA SETAE SETB SETBE SETC SETE SETG SETGE SETL SETLE SETNA SETNAE SETNB SETNBE SETNC SETNE SETNG SETNGE SETNL SETNLE SETNO SETNP SETNS SETNZ SETO SETP SETPE SETPO SETS SETZ
92
- )
93
- end
19
+ mixin :whitespace
94
20
 
95
- def self.keywords_type
96
- @keywords_type ||= Set.new %w(
97
- DB DW DD DQ DT DO DY DZ RESB RESW RESD RESQ REST RESO RESY RESZ
98
- db dq dd dq dt do dy dz resb resw resd resq rest reso resy resz
99
- )
100
- end
21
+ rule %r/[a-z$._?][\w$.?#@~]*:/i, Name::Label
101
22
 
102
- def self.reserved
103
- @reserved ||= Set.new %w(
104
- global extern macro endmacro assign rep endrep section
105
- GLOBAL EXTERN MACRO ENDMACRO ASSIGN REP ENDREP SECTION
106
- )
107
- end
23
+ rule %r/([a-z$._?][\w$.?#@~]*)(\s+)(equ)/i do
24
+ groups Name::Constant, Keyword::Declaration, Keyword::Declaration
25
+ push :instruction_args
26
+ end
27
+ rule %r/BITS|USE16|USE32|SECTION|SEGMENT|ABSOLUTE|EXTERN|GLOBAL|ORG|ALIGN|STRUC|ENDSTRUC|COMMON|CPU|GROUP|UPPERCASE|IMPORT|EXPORT|LIBRARY|MODULE/, Keyword, :instruction_args
28
+ rule %r/(?:res|d)[bwdqt]|times/i, Keyword::Declaration, :instruction_args
29
+ rule %r/[a-z$._?][\w$.?#@~]*/i, Name::Function, :instruction_args
108
30
 
109
- def self.builtins
110
- @builtins ||= []
31
+ rule %r/[\r\n]+/, Text
111
32
  end
112
33
 
113
- start { push :expr_bol }
114
-
115
- state :expr_bol do
116
- mixin :inline_whitespace
117
- rule(//) { pop! }
118
- end
34
+ state :instruction_args do
35
+ rule %r/"(\\\\"|[^"\\n])*"|'(\\\\'|[^'\\n])*'|`(\\\\`|[^`\\n])*`/, Str
36
+ rule %r/(?:0x[\da-f]+|$0[\da-f]*|\d+[\da-f]*h)/i, Num::Hex
37
+ rule %r/[0-7]+q/i, Num::Oct
38
+ rule %r/[01]+b/i, Num::Bin
39
+ rule %r/\d+\.e?\d+/i, Num::Float
40
+ rule %r/\d+/, Num::Integer
119
41
 
120
- state :inline_whitespace do
121
- rule /[ \t\r]+/, Text
122
- end
42
+ mixin :punctuation
123
43
 
124
- state :whitespace do
125
- rule /\n+/m, Text, :expr_bol
126
- rule %r(//(\\.|.)*?\n), Comment::Single, :expr_bol
127
- mixin :inline_whitespace
128
- end
44
+ rule %r/r\d[0-5]?[bwd]|[a-d][lh]|[er]?[a-d]x|[er]?[sb]p|[er]?[sd]i|[c-gs]s|st[0-7]|mm[0-7]|cr[0-4]|dr[0-367]|tr[3-7]/i, Name::Builtin
45
+ rule %r/[a-z$._?][\w$.?#@~]*/i, Name::Variable
46
+ rule %r/[\r\n]+/, Text, :pop!
129
47
 
130
- state :expr_whitespace do
131
- rule /\n+/m, Text, :expr_bol
132
48
  mixin :whitespace
133
49
  end
134
50
 
135
- state :root do
136
- mixin :expr_whitespace
137
- rule(//) { push :statement }
138
- rule /^%[a-zA-Z0-9]+/, Comment::Preproc, :statement
139
-
140
- rule(
141
- %r(&=|[*]=|/=|\\=|\^=|\+=|-=|<<=|>>=|<<|>>|:=|<=|>=|<>|[-&*/\\^+=<>.]),
142
- Operator
143
- )
144
- rule /;.*/, Comment, :statement
145
- rule /^[a-zA-Z]+[a-zA-Z0-9]*:/, Name::Function
146
- rule /;.*/, Comment
51
+ state :preproc do
52
+ rule %r/[^;\n]+/, Comment::Preproc
53
+ rule %r/;.*?\n/, Comment::Single, :pop!
54
+ rule %r/\n/, Comment::Preproc, :pop!
147
55
  end
148
56
 
149
- state :statement do
150
- mixin :expr_whitespace
151
- mixin :statements
152
- rule /;.*/, Comment
153
- rule /^%[a-zA-Z0-9]+/, Comment::Preproc
154
- rule /[a-zA-Z]+%[0-9]+:/, Name::Function
155
- end
156
-
157
- state :statements do
158
- mixin :whitespace
159
- rule /L?"/, Str, :string
160
- rule /[a-zA-Z]+%[0-9]+:/, Name::Function #labels/subroutines/functions
161
- rule %r(L?'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
162
- rule /0x[0-9a-f]+[lu]*/i, Num::Hex
163
- rule /\d+[lu]*/i, Num::Integer
164
- rule %r(\*/), Error
165
- rule %r([~&*+=\|?:<>/-]), Operator
166
- rule /[(),.]/, Punctuation
167
- rule /\[[a-zA-Z0-9]*\]/, Punctuation
168
- rule /%[0-9]+/, Keyword::Reserved
169
- rule /[a-zA-Z]+%[0-9]+/, Name::Function #labels/subroutines/functions
170
-
171
- #rule /(?<!\.)#{id}/ do |m|
172
- rule id do |m|
173
- name = m[0]
174
-
175
- if self.class.keywords.include? name
176
- token Keyword
177
- elsif self.class.keywords_type.include? name
178
- token Keyword::Type
179
- elsif self.class.reserved.include? name
180
- token Keyword::Reserved
181
- elsif self.class.builtins.include? name
182
- token Name::Builtin
183
- else
184
- token Name
185
- end
186
- end
57
+ state :whitespace do
58
+ rule %r/\n/, Text
59
+ rule %r/[ \t]+/, Text
60
+ rule %r/;.*/, Comment::Single
187
61
  end
188
62
 
189
- state :string do
190
- rule /"/, Str, :pop!
191
- rule /\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
192
- rule /[^\\"\n]+/, Str
193
- rule /\\\n/, Str
194
- rule /\\/, Str # stray backslash
63
+ state :punctuation do
64
+ rule %r/[,():\[\]]+/, Punctuation
65
+ rule %r/[&|^<>+*\/%~-]+/, Operator
66
+ rule %r/\$+/, Keyword::Constant
67
+ rule %r/seg|wrt|strict/i, Operator::Word
68
+ rule %r/byte|[dq]?word/i, Keyword::Type
195
69
  end
196
70
  end
197
71
  end
@@ -0,0 +1,78 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class NesAsm < RegexLexer
7
+ title "NesAsm"
8
+ desc "Nesasm3 assembly (6502 asm)"
9
+ tag 'nesasm'
10
+ aliases 'nes'
11
+ filenames '*.nesasm'
12
+
13
+ def self.keywords
14
+ @keywords ||= %w(
15
+ ADC AND ASL BIT BRK CMP CPX CPY DEC EOR INC JMP JSR LDA LDX LDY LSR
16
+ NOP ORA ROL ROR RTI RTS SBC STA STX STY TAX TXA DEX INX TAY TYA DEY
17
+ INY BPL BMI BVC BVS BCC BCS BNE BEQ CLC SEC CLI SEI CLV CLD SED TXS
18
+ TSX PHA PLA PHP PLP
19
+ )
20
+ end
21
+
22
+ def self.keywords_type
23
+ @keywords_type ||= %w(
24
+ DB DW BYTE WORD
25
+ )
26
+ end
27
+
28
+ def self.keywords_reserved
29
+ @keywords_reserved ||= %w(
30
+ INCBIN INCLUDE ORG BANK RSSET RS MACRO ENDM DS PROC ENDP PROCGROUP
31
+ ENDPROCGROUP INCCHR DEFCHR ZP BSS CODE DATA IF IFDEF IFNDEF ELSE
32
+ ENDIF FAIL INESPRG INESCHR INESMAP INESMIR FUNC
33
+ )
34
+ end
35
+
36
+ state :root do
37
+ rule %r/\s+/m, Text
38
+ rule %r(;.*), Comment::Single
39
+
40
+ rule %r/[\(\)\,\.\[\]]/, Punctuation
41
+ rule %r/\#?\%[0-1]+/, Num::Bin # #%00110011 %00110011
42
+ rule %r/\#?\$\h+/, Num::Hex # $1f #$1f
43
+ rule %r/\#?\d+/, Num # 10 #10
44
+ rule %r([~&*+=\|?:<>/-]), Operator
45
+
46
+ rule %r/\#?\w+:?/i do |m|
47
+ name = m[0].upcase
48
+
49
+ if self.class.keywords.include? name
50
+ token Keyword
51
+ elsif self.class.keywords_type.include? name
52
+ token Keyword::Type
53
+ elsif self.class.keywords_reserved.include? name
54
+ token Keyword::Reserved
55
+ else
56
+ token Name::Function
57
+ end
58
+ end
59
+
60
+ rule %r/\#?(?:LOW|HIGH)\(.*\)/i, Keyword::Reserved # LOW() #HIGH()
61
+
62
+ rule %r/\#\(/, Punctuation # #()
63
+
64
+ rule %r/"/, Str, :string
65
+
66
+ rule %r/'\w'/, Str::Char # 'A' for example
67
+
68
+ rule %r/\\\??[\d@#]/, Name::Builtin # builtin parameters for use inside macros and functions: \1-\9 , \?1-\?9 , \# , \@
69
+ end
70
+
71
+ state :string do
72
+ rule %r/"/, Str, :pop!
73
+ rule %r/\\"?/, Str::Escape
74
+ rule %r/[^"\\]+/m, Str
75
+ end
76
+ end
77
+ end
78
+ 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
@@ -12,7 +13,7 @@ module Rouge
12
13
  id = /[^\s$;{}()#]+/
13
14
 
14
15
  state :root do
15
- rule /(include)(\s+)([^\s;]+)/ do
16
+ rule %r/(include)(\s+)([^\s;]+)/ do
16
17
  groups Keyword, Text, Name
17
18
  end
18
19
 
@@ -22,49 +23,49 @@ module Rouge
22
23
  end
23
24
 
24
25
  state :block do
25
- rule /}/, Punctuation, :pop!
26
+ rule %r/}/, Punctuation, :pop!
26
27
  rule id, Keyword::Namespace, :statement
27
28
  mixin :base
28
29
  end
29
30
 
30
31
  state :statement do
31
- rule /{/ do
32
+ rule %r/{/ do
32
33
  token Punctuation; pop!; push :block
33
34
  end
34
35
 
35
- rule /;/, Punctuation, :pop!
36
+ rule %r/;/, Punctuation, :pop!
36
37
 
37
38
  mixin :base
38
39
  end
39
40
 
40
41
  state :base do
41
- rule /\s+/, Text
42
+ rule %r/\s+/, Text
42
43
 
43
- rule /#.*?\n/, Comment::Single
44
- rule /(?:on|off)\b/, Name::Constant
45
- rule /[$][\w-]+/, Name::Variable
44
+ rule %r/#.*/, Comment::Single
45
+ rule %r/(?:on|off)\b/, Name::Constant
46
+ rule %r/[$][\w-]+/, Name::Variable
46
47
 
47
48
  # host/port
48
- rule /([a-z0-9.-]+)(:)([0-9]+)/i do
49
+ rule %r/([a-z0-9.-]+)(:)([0-9]+)/i do
49
50
  groups Name::Function, Punctuation, Num::Integer
50
51
  end
51
52
 
52
53
  # mimetype
53
54
  rule %r([a-z-]+/[a-z-]+)i, Name::Class
54
55
 
55
- rule /[0-9]+[kmg]?\b/i, Num::Integer
56
- rule /(~)(\s*)([^\s{]+)/ do
56
+ rule %r/[0-9]+[kmg]?\b/i, Num::Integer
57
+ rule %r/(~)(\s*)([^\s{]+)/ do
57
58
  groups Punctuation, Text, Str::Regex
58
59
  end
59
60
 
60
- rule /[:=~]/, Punctuation
61
+ rule %r/[:=~]/, Punctuation
61
62
 
62
63
  # pathname
63
64
  rule %r(/#{id}?), Name
64
65
 
65
- rule /[^#\s;{}$\\]+/, Str # catchall
66
+ rule %r/[^#\s;{}$\\]+/, Str # catchall
66
67
 
67
- rule /[$;]/, Text
68
+ rule %r/[$;]/, Text
68
69
  end
69
70
  end
70
71
  end