rougegal 2.1.2

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 (311) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +26 -0
  3. data/LICENSE +186 -0
  4. data/bin/rougify +17 -0
  5. data/lib/rouge/cli.rb +394 -0
  6. data/lib/rouge/demos/abap +6 -0
  7. data/lib/rouge/demos/actionscript +4 -0
  8. data/lib/rouge/demos/apache +21 -0
  9. data/lib/rouge/demos/apiblueprint +33 -0
  10. data/lib/rouge/demos/applescript +2 -0
  11. data/lib/rouge/demos/awk +4 -0
  12. data/lib/rouge/demos/biml +38 -0
  13. data/lib/rouge/demos/bsl +7 -0
  14. data/lib/rouge/demos/c +8 -0
  15. data/lib/rouge/demos/ceylon +7 -0
  16. data/lib/rouge/demos/cfscript +18 -0
  17. data/lib/rouge/demos/clojure +5 -0
  18. data/lib/rouge/demos/cmake +7 -0
  19. data/lib/rouge/demos/coffeescript +5 -0
  20. data/lib/rouge/demos/common_lisp +1 -0
  21. data/lib/rouge/demos/conf +4 -0
  22. data/lib/rouge/demos/console +6 -0
  23. data/lib/rouge/demos/coq +13 -0
  24. data/lib/rouge/demos/cpp +8 -0
  25. data/lib/rouge/demos/csharp +5 -0
  26. data/lib/rouge/demos/css +4 -0
  27. data/lib/rouge/demos/d +16 -0
  28. data/lib/rouge/demos/dart +6 -0
  29. data/lib/rouge/demos/diff +7 -0
  30. data/lib/rouge/demos/digdag +19 -0
  31. data/lib/rouge/demos/docker +9 -0
  32. data/lib/rouge/demos/dot +5 -0
  33. data/lib/rouge/demos/eiffel +30 -0
  34. data/lib/rouge/demos/elixir +1 -0
  35. data/lib/rouge/demos/erb +1 -0
  36. data/lib/rouge/demos/erlang +7 -0
  37. data/lib/rouge/demos/factor +5 -0
  38. data/lib/rouge/demos/fortran +22 -0
  39. data/lib/rouge/demos/fsharp +12 -0
  40. data/lib/rouge/demos/gal +22 -0
  41. data/lib/rouge/demos/gherkin +17 -0
  42. data/lib/rouge/demos/glsl +14 -0
  43. data/lib/rouge/demos/go +7 -0
  44. data/lib/rouge/demos/gradle +10 -0
  45. data/lib/rouge/demos/graphql +17 -0
  46. data/lib/rouge/demos/groovy +9 -0
  47. data/lib/rouge/demos/haml +5 -0
  48. data/lib/rouge/demos/handlebars +7 -0
  49. data/lib/rouge/demos/haskell +6 -0
  50. data/lib/rouge/demos/html +8 -0
  51. data/lib/rouge/demos/http +14 -0
  52. data/lib/rouge/demos/hylang +10 -0
  53. data/lib/rouge/demos/idlang +8 -0
  54. data/lib/rouge/demos/igorpro +9 -0
  55. data/lib/rouge/demos/ini +4 -0
  56. data/lib/rouge/demos/io +11 -0
  57. data/lib/rouge/demos/irb +4 -0
  58. data/lib/rouge/demos/irb_output +2 -0
  59. data/lib/rouge/demos/java +5 -0
  60. data/lib/rouge/demos/javascript +1 -0
  61. data/lib/rouge/demos/jinja +9 -0
  62. data/lib/rouge/demos/json +1 -0
  63. data/lib/rouge/demos/json-doc +1 -0
  64. data/lib/rouge/demos/jsonnet +28 -0
  65. data/lib/rouge/demos/jsx +17 -0
  66. data/lib/rouge/demos/julia +11 -0
  67. data/lib/rouge/demos/kotlin +3 -0
  68. data/lib/rouge/demos/lasso +12 -0
  69. data/lib/rouge/demos/liquid +11 -0
  70. data/lib/rouge/demos/literate_coffeescript +3 -0
  71. data/lib/rouge/demos/literate_haskell +7 -0
  72. data/lib/rouge/demos/llvm +20 -0
  73. data/lib/rouge/demos/lua +12 -0
  74. data/lib/rouge/demos/make +6 -0
  75. data/lib/rouge/demos/markdown +4 -0
  76. data/lib/rouge/demos/matlab +6 -0
  77. data/lib/rouge/demos/moonscript +16 -0
  78. data/lib/rouge/demos/mosel +10 -0
  79. data/lib/rouge/demos/mxml +22 -0
  80. data/lib/rouge/demos/nasm +26 -0
  81. data/lib/rouge/demos/nginx +5 -0
  82. data/lib/rouge/demos/nim +27 -0
  83. data/lib/rouge/demos/objective_c +18 -0
  84. data/lib/rouge/demos/ocaml +12 -0
  85. data/lib/rouge/demos/pascal +14 -0
  86. data/lib/rouge/demos/perl +5 -0
  87. data/lib/rouge/demos/php +3 -0
  88. data/lib/rouge/demos/plaintext +1 -0
  89. data/lib/rouge/demos/plist +142 -0
  90. data/lib/rouge/demos/pony +17 -0
  91. data/lib/rouge/demos/powershell +49 -0
  92. data/lib/rouge/demos/praat +26 -0
  93. data/lib/rouge/demos/prolog +9 -0
  94. data/lib/rouge/demos/prometheus +9 -0
  95. data/lib/rouge/demos/properties +7 -0
  96. data/lib/rouge/demos/protobuf +5 -0
  97. data/lib/rouge/demos/puppet +6 -0
  98. data/lib/rouge/demos/python +6 -0
  99. data/lib/rouge/demos/q +2 -0
  100. data/lib/rouge/demos/qml +9 -0
  101. data/lib/rouge/demos/r +8 -0
  102. data/lib/rouge/demos/racket +24 -0
  103. data/lib/rouge/demos/ruby +9 -0
  104. data/lib/rouge/demos/rust +12 -0
  105. data/lib/rouge/demos/sass +3 -0
  106. data/lib/rouge/demos/scala +3 -0
  107. data/lib/rouge/demos/scheme +4 -0
  108. data/lib/rouge/demos/scss +5 -0
  109. data/lib/rouge/demos/sed +4 -0
  110. data/lib/rouge/demos/shell +2 -0
  111. data/lib/rouge/demos/sieve +10 -0
  112. data/lib/rouge/demos/slim +17 -0
  113. data/lib/rouge/demos/smalltalk +6 -0
  114. data/lib/rouge/demos/smarty +12 -0
  115. data/lib/rouge/demos/sml +4 -0
  116. data/lib/rouge/demos/sql +1 -0
  117. data/lib/rouge/demos/swift +5 -0
  118. data/lib/rouge/demos/tap +5 -0
  119. data/lib/rouge/demos/tcl +1 -0
  120. data/lib/rouge/demos/tex +1 -0
  121. data/lib/rouge/demos/toml +9 -0
  122. data/lib/rouge/demos/tsx +17 -0
  123. data/lib/rouge/demos/tulip +13 -0
  124. data/lib/rouge/demos/turtle +26 -0
  125. data/lib/rouge/demos/twig +9 -0
  126. data/lib/rouge/demos/typescript +1 -0
  127. data/lib/rouge/demos/vala +8 -0
  128. data/lib/rouge/demos/vb +4 -0
  129. data/lib/rouge/demos/verilog +27 -0
  130. data/lib/rouge/demos/vhdl +23 -0
  131. data/lib/rouge/demos/viml +14 -0
  132. data/lib/rouge/demos/vue +11 -0
  133. data/lib/rouge/demos/wollok +11 -0
  134. data/lib/rouge/demos/xml +2 -0
  135. data/lib/rouge/demos/yaml +4 -0
  136. data/lib/rouge/formatter.rb +75 -0
  137. data/lib/rouge/formatters/html.rb +37 -0
  138. data/lib/rouge/formatters/html_inline.rb +30 -0
  139. data/lib/rouge/formatters/html_legacy.rb +44 -0
  140. data/lib/rouge/formatters/html_linewise.rb +27 -0
  141. data/lib/rouge/formatters/html_pygments.rb +16 -0
  142. data/lib/rouge/formatters/html_table.rb +61 -0
  143. data/lib/rouge/formatters/null.rb +19 -0
  144. data/lib/rouge/formatters/terminal256.rb +172 -0
  145. data/lib/rouge/guesser.rb +55 -0
  146. data/lib/rouge/guessers/filename.rb +25 -0
  147. data/lib/rouge/guessers/glob_mapping.rb +46 -0
  148. data/lib/rouge/guessers/mimetype.rb +14 -0
  149. data/lib/rouge/guessers/modeline.rb +42 -0
  150. data/lib/rouge/guessers/source.rb +39 -0
  151. data/lib/rouge/lexer.rb +452 -0
  152. data/lib/rouge/lexers/abap.rb +238 -0
  153. data/lib/rouge/lexers/actionscript.rb +195 -0
  154. data/lib/rouge/lexers/apache.rb +71 -0
  155. data/lib/rouge/lexers/apache/keywords.yml +764 -0
  156. data/lib/rouge/lexers/apiblueprint.rb +51 -0
  157. data/lib/rouge/lexers/apple_script.rb +367 -0
  158. data/lib/rouge/lexers/awk.rb +161 -0
  159. data/lib/rouge/lexers/biml.rb +41 -0
  160. data/lib/rouge/lexers/bsl.rb +81 -0
  161. data/lib/rouge/lexers/c.rb +217 -0
  162. data/lib/rouge/lexers/ceylon.rb +123 -0
  163. data/lib/rouge/lexers/cfscript.rb +153 -0
  164. data/lib/rouge/lexers/clojure.rb +112 -0
  165. data/lib/rouge/lexers/cmake.rb +206 -0
  166. data/lib/rouge/lexers/coffeescript.rb +174 -0
  167. data/lib/rouge/lexers/common_lisp.rb +345 -0
  168. data/lib/rouge/lexers/conf.rb +24 -0
  169. data/lib/rouge/lexers/console.rb +136 -0
  170. data/lib/rouge/lexers/coq.rb +191 -0
  171. data/lib/rouge/lexers/cpp.rb +78 -0
  172. data/lib/rouge/lexers/csharp.rb +114 -0
  173. data/lib/rouge/lexers/css.rb +273 -0
  174. data/lib/rouge/lexers/d.rb +176 -0
  175. data/lib/rouge/lexers/dart.rb +104 -0
  176. data/lib/rouge/lexers/diff.rb +31 -0
  177. data/lib/rouge/lexers/digdag.rb +72 -0
  178. data/lib/rouge/lexers/docker.rb +50 -0
  179. data/lib/rouge/lexers/dot.rb +68 -0
  180. data/lib/rouge/lexers/eiffel.rb +65 -0
  181. data/lib/rouge/lexers/elixir.rb +133 -0
  182. data/lib/rouge/lexers/erb.rb +56 -0
  183. data/lib/rouge/lexers/erlang.rb +118 -0
  184. data/lib/rouge/lexers/factor.rb +302 -0
  185. data/lib/rouge/lexers/fortran.rb +170 -0
  186. data/lib/rouge/lexers/fsharp.rb +118 -0
  187. data/lib/rouge/lexers/gal.rb +50 -0
  188. data/lib/rouge/lexers/gherkin.rb +137 -0
  189. data/lib/rouge/lexers/gherkin/keywords.rb +14 -0
  190. data/lib/rouge/lexers/glsl.rb +135 -0
  191. data/lib/rouge/lexers/go.rb +178 -0
  192. data/lib/rouge/lexers/gradle.rb +37 -0
  193. data/lib/rouge/lexers/graphql.rb +243 -0
  194. data/lib/rouge/lexers/groovy.rb +112 -0
  195. data/lib/rouge/lexers/haml.rb +233 -0
  196. data/lib/rouge/lexers/handlebars.rb +79 -0
  197. data/lib/rouge/lexers/haskell.rb +183 -0
  198. data/lib/rouge/lexers/html.rb +138 -0
  199. data/lib/rouge/lexers/http.rb +80 -0
  200. data/lib/rouge/lexers/hylang.rb +93 -0
  201. data/lib/rouge/lexers/idlang.rb +316 -0
  202. data/lib/rouge/lexers/igorpro.rb +407 -0
  203. data/lib/rouge/lexers/ini.rb +57 -0
  204. data/lib/rouge/lexers/io.rb +68 -0
  205. data/lib/rouge/lexers/irb.rb +66 -0
  206. data/lib/rouge/lexers/java.rb +87 -0
  207. data/lib/rouge/lexers/javascript.rb +269 -0
  208. data/lib/rouge/lexers/jinja.rb +137 -0
  209. data/lib/rouge/lexers/json.rb +29 -0
  210. data/lib/rouge/lexers/json_doc.rb +23 -0
  211. data/lib/rouge/lexers/jsonnet.rb +151 -0
  212. data/lib/rouge/lexers/jsx.rb +102 -0
  213. data/lib/rouge/lexers/julia.rb +172 -0
  214. data/lib/rouge/lexers/kotlin.rb +84 -0
  215. data/lib/rouge/lexers/lasso.rb +217 -0
  216. data/lib/rouge/lexers/lasso/keywords.yml +446 -0
  217. data/lib/rouge/lexers/liquid.rb +287 -0
  218. data/lib/rouge/lexers/literate_coffeescript.rb +33 -0
  219. data/lib/rouge/lexers/literate_haskell.rb +36 -0
  220. data/lib/rouge/lexers/llvm.rb +84 -0
  221. data/lib/rouge/lexers/lua.rb +125 -0
  222. data/lib/rouge/lexers/lua/builtins.rb +22 -0
  223. data/lib/rouge/lexers/make.rb +116 -0
  224. data/lib/rouge/lexers/markdown.rb +154 -0
  225. data/lib/rouge/lexers/matlab.rb +75 -0
  226. data/lib/rouge/lexers/matlab/builtins.rb +11 -0
  227. data/lib/rouge/lexers/moonscript.rb +114 -0
  228. data/lib/rouge/lexers/mosel.rb +231 -0
  229. data/lib/rouge/lexers/mxml.rb +68 -0
  230. data/lib/rouge/lexers/nasm.rb +203 -0
  231. data/lib/rouge/lexers/nginx.rb +71 -0
  232. data/lib/rouge/lexers/nim.rb +152 -0
  233. data/lib/rouge/lexers/objective_c.rb +208 -0
  234. data/lib/rouge/lexers/ocaml.rb +100 -0
  235. data/lib/rouge/lexers/pascal.rb +66 -0
  236. data/lib/rouge/lexers/perl.rb +197 -0
  237. data/lib/rouge/lexers/php.rb +193 -0
  238. data/lib/rouge/lexers/php/builtins.rb +194 -0
  239. data/lib/rouge/lexers/plain_text.rb +26 -0
  240. data/lib/rouge/lexers/plist.rb +49 -0
  241. data/lib/rouge/lexers/pony.rb +93 -0
  242. data/lib/rouge/lexers/powershell.rb +132 -0
  243. data/lib/rouge/lexers/praat.rb +350 -0
  244. data/lib/rouge/lexers/prolog.rb +64 -0
  245. data/lib/rouge/lexers/prometheus.rb +121 -0
  246. data/lib/rouge/lexers/properties.rb +55 -0
  247. data/lib/rouge/lexers/protobuf.rb +70 -0
  248. data/lib/rouge/lexers/puppet.rb +128 -0
  249. data/lib/rouge/lexers/python.rb +231 -0
  250. data/lib/rouge/lexers/q.rb +124 -0
  251. data/lib/rouge/lexers/qml.rb +73 -0
  252. data/lib/rouge/lexers/r.rb +89 -0
  253. data/lib/rouge/lexers/racket.rb +542 -0
  254. data/lib/rouge/lexers/ruby.rb +437 -0
  255. data/lib/rouge/lexers/rust.rb +192 -0
  256. data/lib/rouge/lexers/sass.rb +74 -0
  257. data/lib/rouge/lexers/sass/common.rb +180 -0
  258. data/lib/rouge/lexers/scala.rb +142 -0
  259. data/lib/rouge/lexers/scheme.rb +112 -0
  260. data/lib/rouge/lexers/scss.rb +34 -0
  261. data/lib/rouge/lexers/sed.rb +172 -0
  262. data/lib/rouge/lexers/shell.rb +180 -0
  263. data/lib/rouge/lexers/sieve.rb +96 -0
  264. data/lib/rouge/lexers/slim.rb +228 -0
  265. data/lib/rouge/lexers/smalltalk.rb +116 -0
  266. data/lib/rouge/lexers/smarty.rb +91 -0
  267. data/lib/rouge/lexers/sml.rb +348 -0
  268. data/lib/rouge/lexers/sql.rb +140 -0
  269. data/lib/rouge/lexers/swift.rb +161 -0
  270. data/lib/rouge/lexers/tap.rb +91 -0
  271. data/lib/rouge/lexers/tcl.rb +192 -0
  272. data/lib/rouge/lexers/tex.rb +69 -0
  273. data/lib/rouge/lexers/toml.rb +71 -0
  274. data/lib/rouge/lexers/tsx.rb +19 -0
  275. data/lib/rouge/lexers/tulip.rb +107 -0
  276. data/lib/rouge/lexers/turtle.rb +72 -0
  277. data/lib/rouge/lexers/twig.rb +39 -0
  278. data/lib/rouge/lexers/typescript.rb +22 -0
  279. data/lib/rouge/lexers/typescript/common.rb +33 -0
  280. data/lib/rouge/lexers/vala.rb +77 -0
  281. data/lib/rouge/lexers/vb.rb +164 -0
  282. data/lib/rouge/lexers/verilog.rb +164 -0
  283. data/lib/rouge/lexers/vhdl.rb +97 -0
  284. data/lib/rouge/lexers/viml.rb +101 -0
  285. data/lib/rouge/lexers/viml/keywords.rb +12 -0
  286. data/lib/rouge/lexers/vue.rb +124 -0
  287. data/lib/rouge/lexers/wollok.rb +107 -0
  288. data/lib/rouge/lexers/xml.rb +59 -0
  289. data/lib/rouge/lexers/yaml.rb +373 -0
  290. data/lib/rouge/plugins/redcarpet.rb +30 -0
  291. data/lib/rouge/regex_lexer.rb +441 -0
  292. data/lib/rouge/template_lexer.rb +20 -0
  293. data/lib/rouge/text_analyzer.rb +48 -0
  294. data/lib/rouge/theme.rb +213 -0
  295. data/lib/rouge/themes/base16.rb +130 -0
  296. data/lib/rouge/themes/colorful.rb +67 -0
  297. data/lib/rouge/themes/github.rb +71 -0
  298. data/lib/rouge/themes/gruvbox.rb +167 -0
  299. data/lib/rouge/themes/igor_pro.rb +20 -0
  300. data/lib/rouge/themes/molokai.rb +82 -0
  301. data/lib/rouge/themes/monokai.rb +92 -0
  302. data/lib/rouge/themes/monokai_sublime.rb +90 -0
  303. data/lib/rouge/themes/pastie.rb +69 -0
  304. data/lib/rouge/themes/thankful_eyes.rb +74 -0
  305. data/lib/rouge/themes/tulip.rb +69 -0
  306. data/lib/rouge/token.rb +182 -0
  307. data/lib/rouge/util.rb +101 -0
  308. data/lib/rouge/version.rb +7 -0
  309. data/lib/rougegal.rb +80 -0
  310. data/rougegal.gemspec +18 -0
  311. metadata +356 -0
@@ -0,0 +1,124 @@
1
+ module Rouge
2
+ module Lexers
3
+ class Q < RegexLexer
4
+ title 'Q'
5
+ desc 'The Q programming language (kx.com)'
6
+ tag 'q'
7
+ aliases 'kdb+'
8
+ filenames '*.q'
9
+ mimetypes 'text/x-q', 'application/x-q'
10
+
11
+ identifier = /\.?[a-z][a-z0-9_.]*/i
12
+
13
+ def self.keywords
14
+ @keywords ||= %w[do if while select update delete exec from by]
15
+ end
16
+
17
+ def self.word_operators
18
+ @word_operators ||= %w[
19
+ and or except inter like each cross vs sv within where in asof bin binr cor cov cut ej fby
20
+ div ij insert lj ljf mavg mcount mdev mmax mmin mmu mod msum over prior peach pj scan scov setenv ss
21
+ sublist uj union upsert wavg wsum xasc xbar xcol xcols xdesc xexp xgroup xkey xlog xprev xrank
22
+ ]
23
+ end
24
+
25
+ def self.builtins
26
+ @builtins ||= %w[
27
+ first enlist value type get set count string key max min sum prd last flip distinct raze neg
28
+ desc differ dsave dev eval exit exp fills fkeys floor getenv group gtime hclose hcount hdel hopen hsym
29
+ iasc idesc inv keys load log lsq ltime ltrim maxs md5 med meta mins next parse plist prds prev rand rank ratios
30
+ read0 read1 reciprocal reverse rload rotate rsave rtrim save sdev show signum sin sqrt ssr sums svar system
31
+ tables tan til trim txf ungroup var view views wj wj1 ww
32
+ ]
33
+ end
34
+
35
+ def self.analyze_text(text)
36
+ return 0
37
+ end
38
+
39
+ state :root do
40
+ # q allows a file to start with a shebang
41
+ rule /#!(.*?)$/, Comment::Preproc, :top
42
+ rule //, Text, :top
43
+ end
44
+
45
+ state :top do
46
+ # indented lines at the top of the file are ignored by q
47
+ rule /^[ \t\r]+.*$/, Comment::Special
48
+ rule /\n+/, Text
49
+ rule //, Text, :base
50
+ end
51
+
52
+ state :base do
53
+ rule /\n+/m, Text
54
+ rule(/^.\)/, Keyword::Declaration)
55
+
56
+ # Identifiers, word operators, etc.
57
+ rule /#{identifier}/ do |m|
58
+ if self.class.keywords.include? m[0]
59
+ token Keyword
60
+ elsif self.class.word_operators.include? m[0]
61
+ token Operator::Word
62
+ elsif self.class.builtins.include? m[0]
63
+ token Name::Builtin
64
+ elsif /^\.[zQqho]\./ =~ m[0]
65
+ token Name::Constant
66
+ else
67
+ token Name
68
+ end
69
+ end
70
+
71
+ # White space and comments
72
+ rule(%r{[ \t\r]\/.*$}, Comment::Single)
73
+ rule(/[ \t\r]+/, Text::Whitespace)
74
+ rule(%r{^/$.*?^\\$}m, Comment::Multiline)
75
+ rule(%r{^\/[^\n]*$(\n[^\S\n]+.*$)*}, Comment::Multiline)
76
+ # til EOF comment
77
+ rule(/^\\$/, Comment, :bottom)
78
+ rule(/^\\\\\s+/, Keyword, :bottom)
79
+
80
+ # Literals
81
+ ## strings
82
+ rule(/"/, Str, :string)
83
+ ## timespan/stamp constants
84
+ rule(/(?:\d+D|\d{4}\.[01]\d\.[0123]\d[DT])(?:[012]\d:[0-5]\d(?::[0-5]\d(?:\.\d+)?)?|([012]\d)?)[zpn]?\b/,
85
+ Literal::Date)
86
+ ## time/minute/second constants
87
+ rule(/[012]\d:[0-5]\d(?::[0-5]\d(\.\d+)?)?[uvtpn]?\b/, Literal::Date)
88
+ ## date constants
89
+ rule(/\d{4}\.[01]\d\.[0-3]\d[dpnzm]?\b/, Literal::Date)
90
+ ## special values
91
+ rule(/0[nNwW][hijefcpmdznuvt]?/, Keyword::Constant)
92
+
93
+ # operators to match before numbers
94
+ rule(%r{'|\/:|\\:|':|\\|\/|0:|1:|2:}, Operator)
95
+
96
+ ## numbers
97
+ rule(/(?:\d+(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+|\d+\.\d*|\.\d+)?[ef]?/, Num::Float)
98
+ rule(/[01]+b?/, Num)
99
+ rule(/[0-9]+[hij]?/, Num::Integer)
100
+ ## symbols and paths
101
+ rule(%r{(`:[:a-z0-9._\/]*|`(?:[a-z0-9.][:a-z0-9._]*)?)}i, Str::Symbol)
102
+ rule(/(?:<=|>=|<>|::)|[?:$%&|@._#*^\-+~,!><=]:?/, Operator)
103
+
104
+ rule /[{}\[\]();]/, Punctuation
105
+
106
+ # commands
107
+ rule(/\\.*\n/, Text)
108
+
109
+ end
110
+
111
+ state :string do
112
+ rule(/"/, Str, :pop!)
113
+ rule /\\([\\nr]|[01][0-7]{2})/, Str::Escape
114
+ rule /[^\\"\n]+/, Str
115
+ rule /\\/, Str # stray backslash
116
+ end
117
+
118
+ state :bottom do
119
+ rule /.*\z/m, Comment::Multiline
120
+ end
121
+ end
122
+ end
123
+ end
124
+
@@ -0,0 +1,73 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ load_lexer 'javascript.rb'
6
+
7
+ class Qml < Javascript
8
+ title "QML"
9
+ desc 'QML, a UI markup language'
10
+ tag 'qml'
11
+ aliases 'qml'
12
+ filenames '*.qml'
13
+
14
+ mimetypes 'application/x-qml', 'text/x-qml'
15
+
16
+ id_with_dots = /[$a-zA-Z_][a-zA-Z0-9_.]*/
17
+
18
+ prepend :root do
19
+ rule /(#{id_with_dots})(\s*)({)/ do
20
+ groups Keyword::Type, Text, Punctuation
21
+ push :type_block
22
+ end
23
+ rule /(#{id_with_dots})(\s+)(on)(\s+)(#{id_with_dots})(\s*)({)/ do
24
+ groups Keyword::Type, Text, Keyword, Text, Name::Label, Text, Punctuation
25
+ push :type_block
26
+ end
27
+
28
+ rule /[{]/, Punctuation, :push
29
+ end
30
+
31
+ state :type_block do
32
+ rule /(id)(\s*)(:)(\s*)(#{id_with_dots})/ do
33
+ groups Name::Label, Text, Punctuation, Text, Keyword::Declaration
34
+ end
35
+
36
+ rule /(#{id_with_dots})(\s*)(:)/ do
37
+ groups Name::Label, Text, Punctuation
38
+ push :expr_start
39
+ end
40
+
41
+ rule /(signal)(\s+)(#{id_with_dots})/ do
42
+ groups Keyword::Declaration, Text, Name::Label
43
+ push :signal
44
+ end
45
+
46
+ rule /(property)(\s+)(#{id_with_dots})(\s+)(#{id_with_dots})(\s*)(:?)/ do
47
+ groups Keyword::Declaration, Text, Keyword::Type, Text, Name::Label, Text, Punctuation
48
+ push :expr_start
49
+ end
50
+
51
+ rule /[}]/, Punctuation, :pop!
52
+ mixin :root
53
+ end
54
+
55
+ state :signal do
56
+ mixin :comments_and_whitespace
57
+ rule /\(/ do
58
+ token Punctuation
59
+ goto :signal_args
60
+ end
61
+ rule //, Text, :pop!
62
+ end
63
+
64
+ state :signal_args do
65
+ mixin :comments_and_whitespace
66
+ rule /(#{id_with_dots})(\s+)(#{id_with_dots})(\s*)(,?)/ do
67
+ groups Keyword::Type, Text, Name, Text, Punctuation
68
+ end
69
+ rule /\)/ , Punctuation, :pop!
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,89 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class R < RegexLexer
6
+ title "R"
7
+ desc 'The R statistics language (r-project.org)'
8
+ tag 'r'
9
+ aliases 'r', 'R', 's', 'S'
10
+ filenames '*.R', '*.r', '.Rhistory', '.Rprofile'
11
+ mimetypes 'text/x-r-source', 'text/x-r', 'text/x-R'
12
+
13
+ mimetypes 'text/x-r', 'application/x-r'
14
+
15
+ KEYWORDS = %w(if else for while repeat in next break function)
16
+
17
+ KEYWORD_CONSTANTS = %w(
18
+ NULL Inf TRUE FALSE NaN NA
19
+ NA_integer_ NA_real_ NA_complex_ NA_character_
20
+ )
21
+
22
+ BUILTIN_CONSTANTS = %w(LETTERS letters month.abb month.name pi T F)
23
+
24
+ # These are all the functions in `base` that are implemented as a
25
+ # `.Primitive`, minus those functions that are also keywords.
26
+ PRIMITIVE_FUNCTIONS = %w(
27
+ abs acos acosh all any anyNA Arg as.call as.character
28
+ as.complex as.double as.environment as.integer as.logical
29
+ as.null.default as.numeric as.raw asin asinh atan atanh attr
30
+ attributes baseenv browser c call ceiling class Conj cos cosh
31
+ cospi cummax cummin cumprod cumsum digamma dim dimnames
32
+ emptyenv exp expression floor forceAndCall gamma gc.time
33
+ globalenv Im interactive invisible is.array is.atomic is.call
34
+ is.character is.complex is.double is.environment is.expression
35
+ is.finite is.function is.infinite is.integer is.language
36
+ is.list is.logical is.matrix is.na is.name is.nan is.null
37
+ is.numeric is.object is.pairlist is.raw is.recursive is.single
38
+ is.symbol lazyLoadDBfetch length lgamma list log max min
39
+ missing Mod names nargs nzchar oldClass on.exit pos.to.env
40
+ proc.time prod quote range Re rep retracemem return round
41
+ seq_along seq_len seq.int sign signif sin sinh sinpi sqrt
42
+ standardGeneric substitute sum switch tan tanh tanpi tracemem
43
+ trigamma trunc unclass untracemem UseMethod xtfrm
44
+ )
45
+
46
+ def self.analyze_text(text)
47
+ return 1 if text.shebang? 'Rscript'
48
+ end
49
+
50
+ state :root do
51
+ rule /#'.*?$/, Comment::Doc
52
+ rule /#.*?$/, Comment::Single
53
+ rule /\s+/m, Text::Whitespace
54
+
55
+ rule /`[^`]+?`/, Name
56
+ rule /'(\\.|.)*?'/m, Str::Single
57
+ rule /"(\\.|.)*?"/m, Str::Double
58
+
59
+ rule /%[^%]*?%/, Operator
60
+
61
+ rule /0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?/, Num::Hex
62
+ rule /[+-]?(\d+([.]\d+)?|[.]\d+)([eE][+-]?\d+)?[Li]?/,
63
+ Num
64
+
65
+ # Only recognize built-in functions when they are actually used as a
66
+ # function call, i.e. followed by an opening parenthesis.
67
+ # `Name::Builtin` would be more logical, but is usually not
68
+ # highlighted specifically; thus use `Name::Function`.
69
+ rule /\b(?<!.)(#{PRIMITIVE_FUNCTIONS.join('|')})(?=\()/, Name::Function
70
+
71
+ rule /[a-zA-Z.]([a-zA-Z_][\w.]*)?/ do |m|
72
+ if KEYWORDS.include? m[0]
73
+ token Keyword
74
+ elsif KEYWORD_CONSTANTS.include? m[0]
75
+ token Keyword::Constant
76
+ elsif BUILTIN_CONSTANTS.include? m[0]
77
+ token Name::Builtin
78
+ else
79
+ token Name
80
+ end
81
+ end
82
+
83
+ rule /[\[\]{}();,]/, Punctuation
84
+
85
+ rule %r([-<>?*+^/!=~$@:%&|]), Operator
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,542 @@
1
+ # -*- coding: utf-8 -*- #
2
+ module Rouge
3
+ module Lexers
4
+ class Racket < RegexLexer
5
+ title "Racket"
6
+ desc "Racket is a Lisp descended from Scheme (racket-lang.org)"
7
+
8
+ tag 'racket'
9
+ filenames '*.rkt', '*.rktd', '*.rktl'
10
+ mimetypes 'text/x-racket', 'application/x-racket'
11
+
12
+ def self.analyze_text(text)
13
+ text = text.strip
14
+ return 1 if text.start_with? '#lang racket'
15
+ return 0.6 if text =~ %r(\A#lang [a-z/-]+$)i
16
+ end
17
+
18
+ def self.keywords
19
+ @keywords ||= Set.new %w(
20
+ ... and begin begin-for-syntax begin0 case case-lambda cond
21
+ datum->syntax-object define define-for-syntax define-logger
22
+ define-struct define-syntax define-syntax-rule
23
+ define-syntaxes define-values define-values-for-syntax delay
24
+ do expand-path fluid-let force hash-table-copy
25
+ hash-table-count hash-table-for-each hash-table-get
26
+ hash-table-iterate-first hash-table-iterate-key
27
+ hash-table-iterate-next hash-table-iterate-value
28
+ hash-table-map hash-table-put! hash-table-remove!
29
+ hash-table? if lambda let let* let*-values let-struct
30
+ let-syntax let-syntaxes let-values let/cc let/ec letrec
31
+ letrec-syntax letrec-syntaxes letrec-syntaxes+values
32
+ letrec-values list-immutable make-hash-table
33
+ make-immutable-hash-table make-namespace module module*
34
+ module-identifier=? module-label-identifier=?
35
+ module-template-identifier=? module-transformer-identifier=?
36
+ namespace-transformer-require or parameterize parameterize*
37
+ parameterize-break promise? prop:method-arity-error provide
38
+ provide-for-label provide-for-syntax quasiquote quasisyntax
39
+ quasisyntax/loc quote quote-syntax quote-syntax/prune
40
+ require require-for-label require-for-syntax
41
+ require-for-template set! set!-values syntax syntax-case
42
+ syntax-case* syntax-id-rules syntax-object->datum
43
+ syntax-rules syntax/loc tcp-abandon-port tcp-accept
44
+ tcp-accept-evt tcp-accept-ready? tcp-accept/enable-break
45
+ tcp-addresses tcp-close tcp-connect tcp-connect/enable-break
46
+ tcp-listen tcp-listener? tcp-port? time transcript-off
47
+ transcript-on udp-addresses udp-bind! udp-bound? udp-close
48
+ udp-connect! udp-connected? udp-multicast-interface
49
+ udp-multicast-join-group! udp-multicast-leave-group!
50
+ udp-multicast-loopback? udp-multicast-set-interface!
51
+ udp-multicast-set-loopback! udp-multicast-set-ttl!
52
+ udp-multicast-ttl udp-open-socket udp-receive! udp-receive!*
53
+ udp-receive!-evt udp-receive!/enable-break
54
+ udp-receive-ready-evt udp-send udp-send* udp-send-evt
55
+ udp-send-ready-evt udp-send-to udp-send-to* udp-send-to-evt
56
+ udp-send-to/enable-break udp-send/enable-break udp? unless
57
+ unquote unquote-splicing unsyntax unsyntax-splicing when
58
+ with-continuation-mark with-handlers with-handlers*
59
+ with-syntax λ)
60
+ end
61
+
62
+ def self.builtins
63
+ @builtins ||= Set.new %w(
64
+ * + - / < <= = > >=
65
+ abort-current-continuation abs absolute-path? acos add1
66
+ alarm-evt always-evt andmap angle append apply
67
+ arithmetic-shift arity-at-least arity-at-least-value
68
+ arity-at-least? asin assoc assq assv atan banner bitwise-and
69
+ bitwise-bit-field bitwise-bit-set? bitwise-ior bitwise-not
70
+ bitwise-xor boolean? bound-identifier=? box box-cas!
71
+ box-immutable box? break-enabled break-thread build-path
72
+ build-path/convention-type byte-pregexp byte-pregexp?
73
+ byte-ready? byte-regexp byte-regexp? byte? bytes
74
+ bytes->immutable-bytes bytes->list bytes->path
75
+ bytes->path-element bytes->string/latin-1
76
+ bytes->string/locale bytes->string/utf-8 bytes-append
77
+ bytes-close-converter bytes-convert bytes-convert-end
78
+ bytes-converter? bytes-copy bytes-copy!
79
+ bytes-environment-variable-name? bytes-fill! bytes-length
80
+ bytes-open-converter bytes-ref bytes-set! bytes-utf-8-index
81
+ bytes-utf-8-length bytes-utf-8-ref bytes<? bytes=? bytes>?
82
+ bytes? caaaar caaadr caaar caadar caaddr caadr caar cadaar
83
+ cadadr cadar caddar cadddr caddr cadr call-in-nested-thread
84
+ call-with-break-parameterization
85
+ call-with-composable-continuation
86
+ call-with-continuation-barrier call-with-continuation-prompt
87
+ call-with-current-continuation
88
+ call-with-default-reading-parameterization
89
+ call-with-escape-continuation call-with-exception-handler
90
+ call-with-immediate-continuation-mark call-with-input-file
91
+ call-with-output-file call-with-parameterization
92
+ call-with-semaphore call-with-semaphore/enable-break
93
+ call-with-values call/cc call/ec car cdaaar cdaadr cdaar
94
+ cdadar cdaddr cdadr cdar cddaar cddadr cddar cdddar cddddr
95
+ cdddr cddr cdr ceiling channel-get channel-put
96
+ channel-put-evt channel-put-evt? channel-try-get channel?
97
+ chaperone-box chaperone-continuation-mark-key chaperone-evt
98
+ chaperone-hash chaperone-of? chaperone-procedure
99
+ chaperone-prompt-tag chaperone-struct chaperone-struct-type
100
+ chaperone-vector chaperone? char->integer char-alphabetic?
101
+ char-blank? char-ci<=? char-ci<? char-ci=? char-ci>=?
102
+ char-ci>? char-downcase char-foldcase char-general-category
103
+ char-graphic? char-iso-control? char-lower-case?
104
+ char-numeric? char-punctuation? char-ready? char-symbolic?
105
+ char-title-case? char-titlecase char-upcase char-upper-case?
106
+ char-utf-8-length char-whitespace? char<=? char<? char=?
107
+ char>=? char>? char? check-duplicate-identifier
108
+ checked-procedure-check-and-extract choice-evt cleanse-path
109
+ close-input-port close-output-port collect-garbage
110
+ collection-file-path collection-path compile
111
+ compile-allow-set!-undefined
112
+ compile-context-preservation-enabled
113
+ compile-enforce-module-constants compile-syntax
114
+ compiled-expression? compiled-module-expression?
115
+ complete-path? complex? cons continuation-mark-key?
116
+ continuation-mark-set->context continuation-mark-set->list
117
+ continuation-mark-set->list* continuation-mark-set-first
118
+ continuation-mark-set? continuation-marks
119
+ continuation-prompt-available? continuation-prompt-tag?
120
+ continuation? copy-file cos current-break-parameterization
121
+ current-code-inspector current-command-line-arguments
122
+ current-compile current-compiled-file-roots
123
+ current-continuation-marks current-custodian
124
+ current-directory current-directory-for-user current-drive
125
+ current-environment-variables current-error-port
126
+ current-eval current-evt-pseudo-random-generator
127
+ current-gc-milliseconds current-get-interaction-input-port
128
+ current-inexact-milliseconds current-input-port
129
+ current-inspector current-library-collection-paths
130
+ current-load current-load-extension
131
+ current-load-relative-directory current-load/use-compiled
132
+ current-locale current-memory-use current-milliseconds
133
+ current-module-declare-name current-module-declare-source
134
+ current-module-name-resolver current-module-path-for-load
135
+ current-namespace current-output-port
136
+ current-parameterization
137
+ current-preserved-thread-cell-values current-print
138
+ current-process-milliseconds current-prompt-read
139
+ current-pseudo-random-generator current-read-interaction
140
+ current-reader-guard current-readtable current-seconds
141
+ current-security-guard current-subprocess-custodian-mode
142
+ current-thread current-thread-group
143
+ current-thread-initial-stack-size
144
+ current-write-relative-directory custodian-box-value
145
+ custodian-box? custodian-limit-memory custodian-managed-list
146
+ custodian-memory-accounting-available?
147
+ custodian-require-memory custodian-shutdown-all custodian?
148
+ custom-print-quotable-accessor custom-print-quotable?
149
+ custom-write-accessor custom-write? date date*
150
+ date*-nanosecond date*-time-zone-name date*? date-day
151
+ date-dst? date-hour date-minute date-month date-second
152
+ date-time-zone-offset date-week-day date-year date-year-day
153
+ date? datum-intern-literal default-continuation-prompt-tag
154
+ delete-directory delete-file denominator directory-exists?
155
+ directory-list display displayln dump-memory-stats
156
+ dynamic-require dynamic-require-for-syntax dynamic-wind
157
+ environment-variables-copy environment-variables-names
158
+ environment-variables-ref environment-variables-set!
159
+ environment-variables? eof eof-object? ephemeron-value
160
+ ephemeron? eprintf eq-hash-code eq? equal-hash-code
161
+ equal-secondary-hash-code equal? equal?/recur eqv-hash-code
162
+ eqv? error error-display-handler error-escape-handler
163
+ error-print-context-length error-print-source-location
164
+ error-print-width error-value->string-handler eval
165
+ eval-jit-enabled eval-syntax even? evt? exact->inexact
166
+ exact-integer? exact-nonnegative-integer?
167
+ exact-positive-integer? exact? executable-yield-handler exit
168
+ exit-handler exn exn-continuation-marks exn-message
169
+ exn:break exn:break-continuation exn:break:hang-up
170
+ exn:break:hang-up? exn:break:terminate exn:break:terminate?
171
+ exn:break? exn:fail exn:fail:contract
172
+ exn:fail:contract:arity exn:fail:contract:arity?
173
+ exn:fail:contract:continuation
174
+ exn:fail:contract:continuation?
175
+ exn:fail:contract:divide-by-zero
176
+ exn:fail:contract:divide-by-zero?
177
+ exn:fail:contract:non-fixnum-result
178
+ exn:fail:contract:non-fixnum-result?
179
+ exn:fail:contract:variable exn:fail:contract:variable-id
180
+ exn:fail:contract:variable? exn:fail:contract?
181
+ exn:fail:filesystem exn:fail:filesystem:errno
182
+ exn:fail:filesystem:errno-errno exn:fail:filesystem:errno?
183
+ exn:fail:filesystem:exists exn:fail:filesystem:exists?
184
+ exn:fail:filesystem:missing-module
185
+ exn:fail:filesystem:missing-module-path
186
+ exn:fail:filesystem:missing-module?
187
+ exn:fail:filesystem:version exn:fail:filesystem:version?
188
+ exn:fail:filesystem? exn:fail:network exn:fail:network:errno
189
+ exn:fail:network:errno-errno exn:fail:network:errno?
190
+ exn:fail:network? exn:fail:out-of-memory
191
+ exn:fail:out-of-memory? exn:fail:read exn:fail:read-srclocs
192
+ exn:fail:read:eof exn:fail:read:eof? exn:fail:read:non-char
193
+ exn:fail:read:non-char? exn:fail:read? exn:fail:syntax
194
+ exn:fail:syntax-exprs exn:fail:syntax:missing-module
195
+ exn:fail:syntax:missing-module-path
196
+ exn:fail:syntax:missing-module? exn:fail:syntax:unbound
197
+ exn:fail:syntax:unbound? exn:fail:syntax?
198
+ exn:fail:unsupported exn:fail:unsupported? exn:fail:user
199
+ exn:fail:user? exn:fail? exn:missing-module-accessor
200
+ exn:missing-module? exn:srclocs-accessor exn:srclocs? exn?
201
+ exp expand expand-once expand-syntax expand-syntax-once
202
+ expand-syntax-to-top-form expand-to-top-form
203
+ expand-user-path explode-path expt file-exists?
204
+ file-or-directory-identity file-or-directory-modify-seconds
205
+ file-or-directory-permissions file-position file-position*
206
+ file-size file-stream-buffer-mode file-stream-port?
207
+ file-truncate filesystem-change-evt
208
+ filesystem-change-evt-cancel filesystem-change-evt?
209
+ filesystem-root-list find-executable-path
210
+ find-library-collection-paths find-system-path fixnum?
211
+ floating-point-bytes->real flonum? floor flush-output
212
+ for-each format fprintf free-identifier=? gcd
213
+ generate-temporaries gensym get-output-bytes
214
+ get-output-string getenv global-port-print-handler guard-evt
215
+ handle-evt handle-evt? hash hash-equal? hash-eqv?
216
+ hash-has-key? hash-placeholder? hash-ref! hasheq hasheqv
217
+ identifier-binding identifier-binding-symbol
218
+ identifier-label-binding identifier-prune-lexical-context
219
+ identifier-prune-to-source-module
220
+ identifier-remove-from-definition-context
221
+ identifier-template-binding identifier-transformer-binding
222
+ identifier? imag-part immutable? impersonate-box
223
+ impersonate-continuation-mark-key impersonate-hash
224
+ impersonate-procedure impersonate-prompt-tag
225
+ impersonate-struct impersonate-vector impersonator-ephemeron
226
+ impersonator-of? impersonator-prop:application-mark
227
+ impersonator-property-accessor-procedure?
228
+ impersonator-property? impersonator? inexact->exact
229
+ inexact-real? inexact? input-port? inspector? integer->char
230
+ integer->integer-bytes integer-bytes->integer integer-length
231
+ integer-sqrt integer-sqrt/remainder integer?
232
+ internal-definition-context-seal
233
+ internal-definition-context? keyword->string keyword<?
234
+ keyword? kill-thread lcm length liberal-define-context?
235
+ link-exists? list list* list->bytes list->string
236
+ list->vector list-ref list-tail list? load load-extension
237
+ load-on-demand-enabled load-relative load-relative-extension
238
+ load/cd load/use-compiled local-expand
239
+ local-expand/capture-lifts local-transformer-expand
240
+ local-transformer-expand/capture-lifts
241
+ locale-string-encoding log log-max-level magnitude
242
+ make-arity-at-least make-bytes make-channel
243
+ make-continuation-mark-key make-continuation-prompt-tag
244
+ make-custodian make-custodian-box make-date make-date*
245
+ make-derived-parameter make-directory
246
+ make-environment-variables make-ephemeron make-exn
247
+ make-exn:break make-exn:break:hang-up
248
+ make-exn:break:terminate make-exn:fail
249
+ make-exn:fail:contract make-exn:fail:contract:arity
250
+ make-exn:fail:contract:continuation
251
+ make-exn:fail:contract:divide-by-zero
252
+ make-exn:fail:contract:non-fixnum-result
253
+ make-exn:fail:contract:variable make-exn:fail:filesystem
254
+ make-exn:fail:filesystem:errno
255
+ make-exn:fail:filesystem:exists
256
+ make-exn:fail:filesystem:missing-module
257
+ make-exn:fail:filesystem:version make-exn:fail:network
258
+ make-exn:fail:network:errno make-exn:fail:out-of-memory
259
+ make-exn:fail:read make-exn:fail:read:eof
260
+ make-exn:fail:read:non-char make-exn:fail:syntax
261
+ make-exn:fail:syntax:missing-module
262
+ make-exn:fail:syntax:unbound make-exn:fail:unsupported
263
+ make-exn:fail:user make-file-or-directory-link
264
+ make-hash-placeholder make-hasheq-placeholder make-hasheqv
265
+ make-hasheqv-placeholder make-immutable-hasheqv
266
+ make-impersonator-property make-input-port make-inspector
267
+ make-known-char-range-list make-output-port make-parameter
268
+ make-phantom-bytes make-pipe make-placeholder make-polar
269
+ make-prefab-struct make-pseudo-random-generator
270
+ make-reader-graph make-readtable make-rectangular
271
+ make-rename-transformer make-resolved-module-path
272
+ make-security-guard make-semaphore make-set!-transformer
273
+ make-shared-bytes make-sibling-inspector
274
+ make-special-comment make-srcloc make-string
275
+ make-struct-field-accessor make-struct-field-mutator
276
+ make-struct-type make-struct-type-property
277
+ make-syntax-delta-introducer make-syntax-introducer
278
+ make-thread-cell make-thread-group make-vector make-weak-box
279
+ make-weak-hasheqv make-will-executor map max mcar mcdr mcons
280
+ member memq memv min module->exports module->imports
281
+ module->language-info module->namespace
282
+ module-compiled-cross-phase-persistent?
283
+ module-compiled-exports module-compiled-imports
284
+ module-compiled-language-info module-compiled-name
285
+ module-compiled-submodules module-declared?
286
+ module-path-index-join module-path-index-resolve
287
+ module-path-index-split module-path-index-submodule
288
+ module-path-index? module-path? module-predefined?
289
+ module-provide-protected? modulo mpair? nack-guard-evt
290
+ namespace-attach-module namespace-attach-module-declaration
291
+ namespace-base-phase namespace-mapped-symbols
292
+ namespace-module-identifier namespace-module-registry
293
+ namespace-require namespace-require/constant
294
+ namespace-require/copy namespace-require/expansion-time
295
+ namespace-set-variable-value! namespace-symbol->identifier
296
+ namespace-syntax-introduce namespace-undefine-variable!
297
+ namespace-unprotect-module namespace-variable-value
298
+ namespace? negative? never-evt newline normal-case-path not
299
+ null null? number->string number? numerator object-name odd?
300
+ open-input-bytes open-input-file open-input-output-file
301
+ open-input-string open-output-bytes open-output-file
302
+ open-output-string ormap output-port? pair?
303
+ parameter-procedure=? parameter? parameterization?
304
+ path->bytes path->complete-path path->directory-path
305
+ path->string path-add-suffix path-convention-type
306
+ path-element->bytes path-element->string
307
+ path-for-some-system? path-list-string->path-list
308
+ path-replace-suffix path-string? path? peek-byte
309
+ peek-byte-or-special peek-bytes peek-bytes!
310
+ peek-bytes-avail! peek-bytes-avail!*
311
+ peek-bytes-avail!/enable-break peek-char
312
+ peek-char-or-special peek-string peek-string! phantom-bytes?
313
+ pipe-content-length placeholder-get placeholder-set!
314
+ placeholder? poll-guard-evt port-closed-evt port-closed?
315
+ port-commit-peeked port-count-lines!
316
+ port-count-lines-enabled port-counts-lines?
317
+ port-display-handler port-file-identity port-file-unlock
318
+ port-next-location port-print-handler port-progress-evt
319
+ port-provides-progress-evts? port-read-handler
320
+ port-try-file-lock? port-write-handler port-writes-atomic?
321
+ port-writes-special? port? positive? prefab-key->struct-type
322
+ prefab-key? prefab-struct-key pregexp pregexp?
323
+ primitive-closure? primitive-result-arity primitive? print
324
+ print-as-expression print-boolean-long-form print-box
325
+ print-graph print-hash-table print-mpair-curly-braces
326
+ print-pair-curly-braces print-reader-abbreviations
327
+ print-struct print-syntax-width print-unreadable
328
+ print-vector-length printf procedure->method procedure-arity
329
+ procedure-arity-includes? procedure-arity?
330
+ procedure-closure-contents-eq? procedure-extract-target
331
+ procedure-reduce-arity procedure-rename
332
+ procedure-struct-type? procedure? progress-evt?
333
+ prop:arity-string prop:checked-procedure
334
+ prop:custom-print-quotable prop:custom-write prop:equal+hash
335
+ prop:evt prop:exn:missing-module prop:exn:srclocs
336
+ prop:impersonator-of prop:input-port
337
+ prop:liberal-define-context prop:output-port prop:procedure
338
+ prop:rename-transformer prop:set!-transformer
339
+ pseudo-random-generator->vector
340
+ pseudo-random-generator-vector? pseudo-random-generator?
341
+ putenv quotient quotient/remainder raise
342
+ raise-argument-error raise-arguments-error raise-arity-error
343
+ raise-mismatch-error raise-range-error raise-result-error
344
+ raise-syntax-error raise-type-error raise-user-error random
345
+ random-seed rational? rationalize read read-accept-bar-quote
346
+ read-accept-box read-accept-compiled read-accept-dot
347
+ read-accept-graph read-accept-infix-dot read-accept-lang
348
+ read-accept-quasiquote read-accept-reader read-byte
349
+ read-byte-or-special read-bytes read-bytes!
350
+ read-bytes-avail! read-bytes-avail!*
351
+ read-bytes-avail!/enable-break read-bytes-line
352
+ read-case-sensitive read-char read-char-or-special
353
+ read-curly-brace-as-paren read-decimal-as-inexact
354
+ read-eval-print-loop read-language read-line
355
+ read-on-demand-source read-square-bracket-as-paren
356
+ read-string read-string! read-syntax read-syntax/recursive
357
+ read/recursive readtable-mapping readtable?
358
+ real->double-flonum real->floating-point-bytes
359
+ real->single-flonum real-part real? regexp regexp-match
360
+ regexp-match-peek regexp-match-peek-immediate
361
+ regexp-match-peek-positions
362
+ regexp-match-peek-positions-immediate
363
+ regexp-match-peek-positions-immediate/end
364
+ regexp-match-peek-positions/end regexp-match-positions
365
+ regexp-match-positions/end regexp-match/end regexp-match?
366
+ regexp-max-lookbehind regexp-replace regexp-replace* regexp?
367
+ relative-path? remainder rename-file-or-directory
368
+ rename-transformer-target rename-transformer? reroot-path
369
+ resolve-path resolved-module-path-name resolved-module-path?
370
+ reverse round seconds->date security-guard?
371
+ semaphore-peek-evt semaphore-peek-evt? semaphore-post
372
+ semaphore-try-wait? semaphore-wait
373
+ semaphore-wait/enable-break semaphore?
374
+ set!-transformer-procedure set!-transformer? set-box!
375
+ set-mcar! set-mcdr! set-phantom-bytes!
376
+ set-port-next-location! shared-bytes shell-execute
377
+ simplify-path sin single-flonum? sleep special-comment-value
378
+ special-comment? split-path sqrt srcloc srcloc->string
379
+ srcloc-column srcloc-line srcloc-position srcloc-source
380
+ srcloc-span srcloc? string string->bytes/latin-1
381
+ string->bytes/locale string->bytes/utf-8
382
+ string->immutable-string string->keyword string->list
383
+ string->number string->path string->path-element
384
+ string->symbol string->uninterned-symbol
385
+ string->unreadable-symbol string-append string-ci<=?
386
+ string-ci<? string-ci=? string-ci>=? string-ci>? string-copy
387
+ string-copy! string-downcase
388
+ string-environment-variable-name? string-fill!
389
+ string-foldcase string-length string-locale-ci<?
390
+ string-locale-ci=? string-locale-ci>? string-locale-downcase
391
+ string-locale-upcase string-locale<? string-locale=?
392
+ string-locale>? string-normalize-nfc string-normalize-nfd
393
+ string-normalize-nfkc string-normalize-nfkd string-ref
394
+ string-set! string-titlecase string-upcase
395
+ string-utf-8-length string<=? string<? string=? string>=?
396
+ string>? string? struct->vector struct-accessor-procedure?
397
+ struct-constructor-procedure? struct-info
398
+ struct-mutator-procedure? struct-predicate-procedure?
399
+ struct-type-info struct-type-make-constructor
400
+ struct-type-make-predicate
401
+ struct-type-property-accessor-procedure?
402
+ struct-type-property? struct-type? struct:arity-at-least
403
+ struct:date struct:date* struct:exn struct:exn:break
404
+ struct:exn:break:hang-up struct:exn:break:terminate
405
+ struct:exn:fail struct:exn:fail:contract
406
+ struct:exn:fail:contract:arity
407
+ struct:exn:fail:contract:continuation
408
+ struct:exn:fail:contract:divide-by-zero
409
+ struct:exn:fail:contract:non-fixnum-result
410
+ struct:exn:fail:contract:variable struct:exn:fail:filesystem
411
+ struct:exn:fail:filesystem:errno
412
+ struct:exn:fail:filesystem:exists
413
+ struct:exn:fail:filesystem:missing-module
414
+ struct:exn:fail:filesystem:version struct:exn:fail:network
415
+ struct:exn:fail:network:errno struct:exn:fail:out-of-memory
416
+ struct:exn:fail:read struct:exn:fail:read:eof
417
+ struct:exn:fail:read:non-char struct:exn:fail:syntax
418
+ struct:exn:fail:syntax:missing-module
419
+ struct:exn:fail:syntax:unbound struct:exn:fail:unsupported
420
+ struct:exn:fail:user struct:srcloc struct? sub1 subbytes
421
+ subprocess subprocess-group-enabled subprocess-kill
422
+ subprocess-pid subprocess-status subprocess-wait subprocess?
423
+ substring symbol->string symbol-interned? symbol-unreadable?
424
+ symbol? sync sync/enable-break sync/timeout
425
+ sync/timeout/enable-break syntax->list syntax-arm
426
+ syntax-column syntax-disarm syntax-e syntax-line
427
+ syntax-local-bind-syntaxes syntax-local-certifier
428
+ syntax-local-context syntax-local-expand-expression
429
+ syntax-local-get-shadower syntax-local-introduce
430
+ syntax-local-lift-context syntax-local-lift-expression
431
+ syntax-local-lift-module-end-declaration
432
+ syntax-local-lift-provide syntax-local-lift-require
433
+ syntax-local-lift-values-expression
434
+ syntax-local-make-definition-context
435
+ syntax-local-make-delta-introducer
436
+ syntax-local-module-defined-identifiers
437
+ syntax-local-module-exports
438
+ syntax-local-module-required-identifiers syntax-local-name
439
+ syntax-local-phase-level syntax-local-submodules
440
+ syntax-local-transforming-module-provides?
441
+ syntax-local-value syntax-local-value/immediate
442
+ syntax-original? syntax-position syntax-property
443
+ syntax-property-symbol-keys syntax-protect syntax-rearm
444
+ syntax-recertify syntax-shift-phase-level syntax-source
445
+ syntax-source-module syntax-span syntax-taint
446
+ syntax-tainted? syntax-track-origin
447
+ syntax-transforming-module-expression? syntax-transforming?
448
+ syntax? system-big-endian? system-idle-evt
449
+ system-language+country system-library-subpath
450
+ system-path-convention-type system-type tan terminal-port?
451
+ thread thread-cell-ref thread-cell-set! thread-cell-values?
452
+ thread-cell? thread-dead-evt thread-dead? thread-group?
453
+ thread-resume thread-resume-evt thread-rewind-receive
454
+ thread-running? thread-suspend thread-suspend-evt
455
+ thread-wait thread/suspend-to-kill thread? time-apply
456
+ truncate unbox uncaught-exception-handler
457
+ use-collection-link-paths use-compiled-file-paths
458
+ use-user-specific-search-paths values
459
+ variable-reference->empty-namespace
460
+ variable-reference->module-base-phase
461
+ variable-reference->module-declaration-inspector
462
+ variable-reference->module-path-index
463
+ variable-reference->module-source
464
+ variable-reference->namespace variable-reference->phase
465
+ variable-reference->resolved-module-path
466
+ variable-reference-constant? variable-reference? vector
467
+ vector->immutable-vector vector->list
468
+ vector->pseudo-random-generator
469
+ vector->pseudo-random-generator! vector->values vector-fill!
470
+ vector-immutable vector-length vector-ref vector-set!
471
+ vector-set-performance-stats! vector? version void void?
472
+ weak-box-value weak-box? will-execute will-executor?
473
+ will-register will-try-execute with-input-from-file
474
+ with-output-to-file wrap-evt write write-byte write-bytes
475
+ write-bytes-avail write-bytes-avail* write-bytes-avail-evt
476
+ write-bytes-avail/enable-break write-char write-special
477
+ write-special-avail* write-special-evt write-string zero?
478
+ )
479
+ end
480
+
481
+ # Since Racket allows identifiers to consist of nearly anything,
482
+ # it's simpler to describe what an ID is _not_.
483
+ id = /[^\s\(\)\[\]\{\}'`,.]+/i
484
+
485
+ state :root do
486
+ # comments
487
+ rule /;.*$/, Comment::Single
488
+ rule /\s+/m, Text
489
+
490
+ rule /[+-]inf[.][f0]/, Num::Float
491
+ rule /[+-]nan[.]0/, Num::Float
492
+ rule /[-]min[.]0/, Num::Float
493
+ rule /[+]max[.]0/, Num::Float
494
+
495
+ rule /-?\d+\.\d+/, Num::Float
496
+ rule /-?\d+/, Num::Integer
497
+
498
+ rule /#:#{id}+/, Name::Tag # keyword
499
+
500
+ rule /#b[01]+/, Num::Bin
501
+ rule /#o[0-7]+/, Num::Oct
502
+ rule /#d[0-9]+/, Num::Integer
503
+ rule /#x[0-9a-f]+/i, Num::Hex
504
+ rule /#[ei][\d.]+/, Num::Other
505
+
506
+ rule /"(\\\\|\\"|[^"])*"/, Str
507
+ rule /['`]#{id}/i, Str::Symbol
508
+ rule /#\\([()\/'"._!\$%& ?=+-]{1}|[a-z0-9]+)/i,
509
+ Str::Char
510
+ rule /#t|#f/, Name::Constant
511
+ rule /(?:'|#|`|,@|,|\.)/, Operator
512
+
513
+ rule /(['#])(\s*)(\()/m do
514
+ groups Str::Symbol, Text, Punctuation
515
+ end
516
+
517
+ # () [] {} are all permitted as like pairs
518
+ rule /\(|\[|\{/, Punctuation, :command
519
+ rule /\)|\]|\}/, Punctuation
520
+
521
+ rule id, Name::Variable
522
+ end
523
+
524
+ state :command do
525
+ rule id, Name::Function do |m|
526
+ if self.class.keywords.include? m[0]
527
+ token Keyword
528
+ elsif self.class.builtins.include? m[0]
529
+ token Name::Builtin
530
+ else
531
+ token Name::Function
532
+ end
533
+
534
+ pop!
535
+ end
536
+
537
+ rule(//) { pop! }
538
+ end
539
+
540
+ end
541
+ end
542
+ end