rouge-alda 3.3.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 (335) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +28 -0
  3. data/LICENSE +186 -0
  4. data/bin/rougify +18 -0
  5. data/lib/rouge/cli.rb +432 -0
  6. data/lib/rouge/demos/abap +6 -0
  7. data/lib/rouge/demos/actionscript +4 -0
  8. data/lib/rouge/demos/alda +10 -0
  9. data/lib/rouge/demos/apache +21 -0
  10. data/lib/rouge/demos/apiblueprint +33 -0
  11. data/lib/rouge/demos/applescript +2 -0
  12. data/lib/rouge/demos/awk +4 -0
  13. data/lib/rouge/demos/biml +38 -0
  14. data/lib/rouge/demos/bsl +7 -0
  15. data/lib/rouge/demos/c +8 -0
  16. data/lib/rouge/demos/ceylon +7 -0
  17. data/lib/rouge/demos/cfscript +18 -0
  18. data/lib/rouge/demos/clojure +5 -0
  19. data/lib/rouge/demos/cmake +7 -0
  20. data/lib/rouge/demos/coffeescript +5 -0
  21. data/lib/rouge/demos/common_lisp +1 -0
  22. data/lib/rouge/demos/conf +4 -0
  23. data/lib/rouge/demos/console +6 -0
  24. data/lib/rouge/demos/coq +13 -0
  25. data/lib/rouge/demos/cpp +8 -0
  26. data/lib/rouge/demos/crystal +45 -0
  27. data/lib/rouge/demos/csharp +5 -0
  28. data/lib/rouge/demos/css +4 -0
  29. data/lib/rouge/demos/d +16 -0
  30. data/lib/rouge/demos/dart +6 -0
  31. data/lib/rouge/demos/diff +7 -0
  32. data/lib/rouge/demos/digdag +19 -0
  33. data/lib/rouge/demos/docker +9 -0
  34. data/lib/rouge/demos/dot +5 -0
  35. data/lib/rouge/demos/eiffel +30 -0
  36. data/lib/rouge/demos/elixir +1 -0
  37. data/lib/rouge/demos/elm +4 -0
  38. data/lib/rouge/demos/erb +1 -0
  39. data/lib/rouge/demos/erlang +7 -0
  40. data/lib/rouge/demos/factor +5 -0
  41. data/lib/rouge/demos/fortran +22 -0
  42. data/lib/rouge/demos/fsharp +12 -0
  43. data/lib/rouge/demos/gherkin +17 -0
  44. data/lib/rouge/demos/glsl +14 -0
  45. data/lib/rouge/demos/go +7 -0
  46. data/lib/rouge/demos/gradle +10 -0
  47. data/lib/rouge/demos/graphql +17 -0
  48. data/lib/rouge/demos/groovy +9 -0
  49. data/lib/rouge/demos/hack +5 -0
  50. data/lib/rouge/demos/haml +5 -0
  51. data/lib/rouge/demos/handlebars +7 -0
  52. data/lib/rouge/demos/haskell +6 -0
  53. data/lib/rouge/demos/hcl +7 -0
  54. data/lib/rouge/demos/html +8 -0
  55. data/lib/rouge/demos/http +14 -0
  56. data/lib/rouge/demos/hylang +10 -0
  57. data/lib/rouge/demos/idlang +8 -0
  58. data/lib/rouge/demos/igorpro +9 -0
  59. data/lib/rouge/demos/ini +4 -0
  60. data/lib/rouge/demos/io +11 -0
  61. data/lib/rouge/demos/irb +4 -0
  62. data/lib/rouge/demos/irb_output +2 -0
  63. data/lib/rouge/demos/java +5 -0
  64. data/lib/rouge/demos/javascript +1 -0
  65. data/lib/rouge/demos/jinja +9 -0
  66. data/lib/rouge/demos/json +1 -0
  67. data/lib/rouge/demos/json-doc +1 -0
  68. data/lib/rouge/demos/jsonnet +28 -0
  69. data/lib/rouge/demos/jsp +29 -0
  70. data/lib/rouge/demos/jsx +17 -0
  71. data/lib/rouge/demos/julia +11 -0
  72. data/lib/rouge/demos/kotlin +3 -0
  73. data/lib/rouge/demos/lasso +12 -0
  74. data/lib/rouge/demos/liquid +11 -0
  75. data/lib/rouge/demos/literate_coffeescript +3 -0
  76. data/lib/rouge/demos/literate_haskell +7 -0
  77. data/lib/rouge/demos/llvm +20 -0
  78. data/lib/rouge/demos/lua +12 -0
  79. data/lib/rouge/demos/m68k +16 -0
  80. data/lib/rouge/demos/make +6 -0
  81. data/lib/rouge/demos/markdown +4 -0
  82. data/lib/rouge/demos/mathematica +8 -0
  83. data/lib/rouge/demos/matlab +6 -0
  84. data/lib/rouge/demos/moonscript +16 -0
  85. data/lib/rouge/demos/mosel +10 -0
  86. data/lib/rouge/demos/mxml +22 -0
  87. data/lib/rouge/demos/nasm +26 -0
  88. data/lib/rouge/demos/nginx +5 -0
  89. data/lib/rouge/demos/nim +27 -0
  90. data/lib/rouge/demos/nix +19 -0
  91. data/lib/rouge/demos/objective_c +18 -0
  92. data/lib/rouge/demos/ocaml +12 -0
  93. data/lib/rouge/demos/pascal +14 -0
  94. data/lib/rouge/demos/perl +5 -0
  95. data/lib/rouge/demos/php +3 -0
  96. data/lib/rouge/demos/plaintext +1 -0
  97. data/lib/rouge/demos/plist +142 -0
  98. data/lib/rouge/demos/pony +17 -0
  99. data/lib/rouge/demos/powershell +49 -0
  100. data/lib/rouge/demos/praat +26 -0
  101. data/lib/rouge/demos/prolog +9 -0
  102. data/lib/rouge/demos/prometheus +9 -0
  103. data/lib/rouge/demos/properties +7 -0
  104. data/lib/rouge/demos/protobuf +5 -0
  105. data/lib/rouge/demos/puppet +6 -0
  106. data/lib/rouge/demos/python +6 -0
  107. data/lib/rouge/demos/q +2 -0
  108. data/lib/rouge/demos/qml +9 -0
  109. data/lib/rouge/demos/r +8 -0
  110. data/lib/rouge/demos/racket +24 -0
  111. data/lib/rouge/demos/ruby +9 -0
  112. data/lib/rouge/demos/rust +12 -0
  113. data/lib/rouge/demos/sass +3 -0
  114. data/lib/rouge/demos/scala +3 -0
  115. data/lib/rouge/demos/scheme +4 -0
  116. data/lib/rouge/demos/scss +5 -0
  117. data/lib/rouge/demos/sed +4 -0
  118. data/lib/rouge/demos/shell +2 -0
  119. data/lib/rouge/demos/sieve +10 -0
  120. data/lib/rouge/demos/slim +17 -0
  121. data/lib/rouge/demos/smalltalk +6 -0
  122. data/lib/rouge/demos/smarty +12 -0
  123. data/lib/rouge/demos/sml +4 -0
  124. data/lib/rouge/demos/sqf +14 -0
  125. data/lib/rouge/demos/sql +1 -0
  126. data/lib/rouge/demos/swift +5 -0
  127. data/lib/rouge/demos/tap +5 -0
  128. data/lib/rouge/demos/tcl +1 -0
  129. data/lib/rouge/demos/terraform +31 -0
  130. data/lib/rouge/demos/tex +1 -0
  131. data/lib/rouge/demos/toml +9 -0
  132. data/lib/rouge/demos/tsx +17 -0
  133. data/lib/rouge/demos/tulip +13 -0
  134. data/lib/rouge/demos/turtle +26 -0
  135. data/lib/rouge/demos/twig +9 -0
  136. data/lib/rouge/demos/typescript +1 -0
  137. data/lib/rouge/demos/vala +8 -0
  138. data/lib/rouge/demos/vb +4 -0
  139. data/lib/rouge/demos/verilog +27 -0
  140. data/lib/rouge/demos/vhdl +23 -0
  141. data/lib/rouge/demos/viml +14 -0
  142. data/lib/rouge/demos/vue +11 -0
  143. data/lib/rouge/demos/wollok +11 -0
  144. data/lib/rouge/demos/xml +2 -0
  145. data/lib/rouge/demos/yaml +4 -0
  146. data/lib/rouge/formatter.rb +76 -0
  147. data/lib/rouge/formatters/html.rb +38 -0
  148. data/lib/rouge/formatters/html_inline.rb +31 -0
  149. data/lib/rouge/formatters/html_legacy.rb +45 -0
  150. data/lib/rouge/formatters/html_linewise.rb +28 -0
  151. data/lib/rouge/formatters/html_pygments.rb +18 -0
  152. data/lib/rouge/formatters/html_table.rb +62 -0
  153. data/lib/rouge/formatters/null.rb +20 -0
  154. data/lib/rouge/formatters/terminal256.rb +181 -0
  155. data/lib/rouge/guesser.rb +57 -0
  156. data/lib/rouge/guessers/disambiguation.rb +106 -0
  157. data/lib/rouge/guessers/filename.rb +27 -0
  158. data/lib/rouge/guessers/glob_mapping.rb +45 -0
  159. data/lib/rouge/guessers/mimetype.rb +16 -0
  160. data/lib/rouge/guessers/modeline.rb +46 -0
  161. data/lib/rouge/guessers/source.rb +31 -0
  162. data/lib/rouge/guessers/util.rb +34 -0
  163. data/lib/rouge/lexer.rb +462 -0
  164. data/lib/rouge/lexers/abap.rb +240 -0
  165. data/lib/rouge/lexers/actionscript.rb +196 -0
  166. data/lib/rouge/lexers/alda.rb +43 -0
  167. data/lib/rouge/lexers/apache/keywords.yml +764 -0
  168. data/lib/rouge/lexers/apache.rb +73 -0
  169. data/lib/rouge/lexers/apiblueprint.rb +49 -0
  170. data/lib/rouge/lexers/apple_script.rb +369 -0
  171. data/lib/rouge/lexers/awk.rb +162 -0
  172. data/lib/rouge/lexers/biml.rb +43 -0
  173. data/lib/rouge/lexers/bsl.rb +82 -0
  174. data/lib/rouge/lexers/c.rb +213 -0
  175. data/lib/rouge/lexers/ceylon.rb +124 -0
  176. data/lib/rouge/lexers/cfscript.rb +154 -0
  177. data/lib/rouge/lexers/clojure.rb +113 -0
  178. data/lib/rouge/lexers/cmake.rb +207 -0
  179. data/lib/rouge/lexers/coffeescript.rb +175 -0
  180. data/lib/rouge/lexers/common_lisp.rb +346 -0
  181. data/lib/rouge/lexers/conf.rb +25 -0
  182. data/lib/rouge/lexers/console.rb +137 -0
  183. data/lib/rouge/lexers/coq.rb +188 -0
  184. data/lib/rouge/lexers/cpp.rb +79 -0
  185. data/lib/rouge/lexers/crystal.rb +430 -0
  186. data/lib/rouge/lexers/csharp.rb +115 -0
  187. data/lib/rouge/lexers/css.rb +274 -0
  188. data/lib/rouge/lexers/d.rb +177 -0
  189. data/lib/rouge/lexers/dart.rb +105 -0
  190. data/lib/rouge/lexers/diff.rb +33 -0
  191. data/lib/rouge/lexers/digdag.rb +70 -0
  192. data/lib/rouge/lexers/docker.rb +51 -0
  193. data/lib/rouge/lexers/dot.rb +69 -0
  194. data/lib/rouge/lexers/eiffel.rb +66 -0
  195. data/lib/rouge/lexers/elixir.rb +134 -0
  196. data/lib/rouge/lexers/elm.rb +90 -0
  197. data/lib/rouge/lexers/erb.rb +53 -0
  198. data/lib/rouge/lexers/erlang.rb +115 -0
  199. data/lib/rouge/lexers/factor.rb +303 -0
  200. data/lib/rouge/lexers/fortran.rb +178 -0
  201. data/lib/rouge/lexers/fsharp.rb +119 -0
  202. data/lib/rouge/lexers/gherkin/keywords.rb +16 -0
  203. data/lib/rouge/lexers/gherkin.rb +138 -0
  204. data/lib/rouge/lexers/glsl.rb +136 -0
  205. data/lib/rouge/lexers/go.rb +175 -0
  206. data/lib/rouge/lexers/gradle.rb +38 -0
  207. data/lib/rouge/lexers/graphql.rb +254 -0
  208. data/lib/rouge/lexers/groovy.rb +113 -0
  209. data/lib/rouge/lexers/hack.rb +49 -0
  210. data/lib/rouge/lexers/haml.rb +230 -0
  211. data/lib/rouge/lexers/handlebars.rb +80 -0
  212. data/lib/rouge/lexers/haskell.rb +198 -0
  213. data/lib/rouge/lexers/hcl.rb +163 -0
  214. data/lib/rouge/lexers/html.rb +140 -0
  215. data/lib/rouge/lexers/http.rb +81 -0
  216. data/lib/rouge/lexers/hylang.rb +94 -0
  217. data/lib/rouge/lexers/idlang.rb +312 -0
  218. data/lib/rouge/lexers/igorpro.rb +664 -0
  219. data/lib/rouge/lexers/ini.rb +54 -0
  220. data/lib/rouge/lexers/io.rb +69 -0
  221. data/lib/rouge/lexers/irb.rb +67 -0
  222. data/lib/rouge/lexers/java.rb +88 -0
  223. data/lib/rouge/lexers/javascript.rb +283 -0
  224. data/lib/rouge/lexers/jinja.rb +138 -0
  225. data/lib/rouge/lexers/json.rb +30 -0
  226. data/lib/rouge/lexers/json_doc.rb +24 -0
  227. data/lib/rouge/lexers/jsonnet.rb +152 -0
  228. data/lib/rouge/lexers/jsp.rb +120 -0
  229. data/lib/rouge/lexers/jsx.rb +104 -0
  230. data/lib/rouge/lexers/julia.rb +167 -0
  231. data/lib/rouge/lexers/kotlin.rb +127 -0
  232. data/lib/rouge/lexers/lasso/keywords.yml +446 -0
  233. data/lib/rouge/lexers/lasso.rb +215 -0
  234. data/lib/rouge/lexers/liquid.rb +288 -0
  235. data/lib/rouge/lexers/literate_coffeescript.rb +34 -0
  236. data/lib/rouge/lexers/literate_haskell.rb +37 -0
  237. data/lib/rouge/lexers/llvm.rb +81 -0
  238. data/lib/rouge/lexers/lua/builtins.rb +24 -0
  239. data/lib/rouge/lexers/lua.rb +126 -0
  240. data/lib/rouge/lexers/m68k.rb +144 -0
  241. data/lib/rouge/lexers/make.rb +113 -0
  242. data/lib/rouge/lexers/markdown.rb +155 -0
  243. data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
  244. data/lib/rouge/lexers/mathematica.rb +96 -0
  245. data/lib/rouge/lexers/matlab/builtins.rb +13 -0
  246. data/lib/rouge/lexers/matlab.rb +72 -0
  247. data/lib/rouge/lexers/moonscript.rb +115 -0
  248. data/lib/rouge/lexers/mosel.rb +232 -0
  249. data/lib/rouge/lexers/mxml.rb +69 -0
  250. data/lib/rouge/lexers/nasm.rb +199 -0
  251. data/lib/rouge/lexers/nginx.rb +72 -0
  252. data/lib/rouge/lexers/nim.rb +153 -0
  253. data/lib/rouge/lexers/nix.rb +211 -0
  254. data/lib/rouge/lexers/objective_c.rb +195 -0
  255. data/lib/rouge/lexers/ocaml.rb +101 -0
  256. data/lib/rouge/lexers/pascal.rb +67 -0
  257. data/lib/rouge/lexers/perl.rb +201 -0
  258. data/lib/rouge/lexers/php/builtins.rb +196 -0
  259. data/lib/rouge/lexers/php.rb +194 -0
  260. data/lib/rouge/lexers/plain_text.rb +27 -0
  261. data/lib/rouge/lexers/plist.rb +47 -0
  262. data/lib/rouge/lexers/pony.rb +94 -0
  263. data/lib/rouge/lexers/powershell.rb +679 -0
  264. data/lib/rouge/lexers/praat.rb +351 -0
  265. data/lib/rouge/lexers/prolog.rb +61 -0
  266. data/lib/rouge/lexers/prometheus.rb +123 -0
  267. data/lib/rouge/lexers/properties.rb +52 -0
  268. data/lib/rouge/lexers/protobuf.rb +71 -0
  269. data/lib/rouge/lexers/puppet.rb +129 -0
  270. data/lib/rouge/lexers/python.rb +247 -0
  271. data/lib/rouge/lexers/q.rb +125 -0
  272. data/lib/rouge/lexers/qml.rb +74 -0
  273. data/lib/rouge/lexers/r.rb +90 -0
  274. data/lib/rouge/lexers/racket.rb +545 -0
  275. data/lib/rouge/lexers/ruby.rb +439 -0
  276. data/lib/rouge/lexers/rust.rb +198 -0
  277. data/lib/rouge/lexers/sass/common.rb +181 -0
  278. data/lib/rouge/lexers/sass.rb +75 -0
  279. data/lib/rouge/lexers/scala.rb +143 -0
  280. data/lib/rouge/lexers/scheme.rb +113 -0
  281. data/lib/rouge/lexers/scss.rb +35 -0
  282. data/lib/rouge/lexers/sed.rb +173 -0
  283. data/lib/rouge/lexers/shell.rb +190 -0
  284. data/lib/rouge/lexers/sieve.rb +97 -0
  285. data/lib/rouge/lexers/slim.rb +229 -0
  286. data/lib/rouge/lexers/smalltalk.rb +117 -0
  287. data/lib/rouge/lexers/smarty.rb +81 -0
  288. data/lib/rouge/lexers/sml.rb +345 -0
  289. data/lib/rouge/lexers/sqf/commands.rb +15 -0
  290. data/lib/rouge/lexers/sqf.rb +109 -0
  291. data/lib/rouge/lexers/sql.rb +141 -0
  292. data/lib/rouge/lexers/swift.rb +182 -0
  293. data/lib/rouge/lexers/tap.rb +89 -0
  294. data/lib/rouge/lexers/tcl.rb +193 -0
  295. data/lib/rouge/lexers/terraform.rb +105 -0
  296. data/lib/rouge/lexers/tex.rb +70 -0
  297. data/lib/rouge/lexers/toml.rb +68 -0
  298. data/lib/rouge/lexers/tsx.rb +20 -0
  299. data/lib/rouge/lexers/tulip.rb +108 -0
  300. data/lib/rouge/lexers/turtle.rb +64 -0
  301. data/lib/rouge/lexers/twig.rb +40 -0
  302. data/lib/rouge/lexers/typescript/common.rb +34 -0
  303. data/lib/rouge/lexers/typescript.rb +23 -0
  304. data/lib/rouge/lexers/vala.rb +78 -0
  305. data/lib/rouge/lexers/vb.rb +165 -0
  306. data/lib/rouge/lexers/verilog.rb +165 -0
  307. data/lib/rouge/lexers/vhdl.rb +98 -0
  308. data/lib/rouge/lexers/viml/keywords.rb +14 -0
  309. data/lib/rouge/lexers/viml.rb +102 -0
  310. data/lib/rouge/lexers/vue.rb +124 -0
  311. data/lib/rouge/lexers/wollok.rb +104 -0
  312. data/lib/rouge/lexers/xml.rb +58 -0
  313. data/lib/rouge/lexers/yaml.rb +374 -0
  314. data/lib/rouge/plugins/redcarpet.rb +31 -0
  315. data/lib/rouge/regex_lexer.rb +442 -0
  316. data/lib/rouge/template_lexer.rb +21 -0
  317. data/lib/rouge/text_analyzer.rb +50 -0
  318. data/lib/rouge/theme.rb +214 -0
  319. data/lib/rouge/themes/base16.rb +131 -0
  320. data/lib/rouge/themes/colorful.rb +68 -0
  321. data/lib/rouge/themes/github.rb +72 -0
  322. data/lib/rouge/themes/gruvbox.rb +168 -0
  323. data/lib/rouge/themes/igor_pro.rb +21 -0
  324. data/lib/rouge/themes/molokai.rb +83 -0
  325. data/lib/rouge/themes/monokai.rb +93 -0
  326. data/lib/rouge/themes/monokai_sublime.rb +92 -0
  327. data/lib/rouge/themes/pastie.rb +70 -0
  328. data/lib/rouge/themes/thankful_eyes.rb +75 -0
  329. data/lib/rouge/themes/tulip.rb +70 -0
  330. data/lib/rouge/token.rb +183 -0
  331. data/lib/rouge/util.rb +102 -0
  332. data/lib/rouge/version.rb +8 -0
  333. data/lib/rouge.rb +84 -0
  334. data/rouge.gemspec +25 -0
  335. metadata +384 -0
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rouge
4
+ module Lexers
5
+ load_lexer 'xml.rb'
6
+
7
+ class BIML < XML
8
+ title "BIML"
9
+ desc "BIML, Business Intelligence Markup Language"
10
+ tag 'biml'
11
+ filenames '*.biml'
12
+
13
+ def self.detect?(text)
14
+ return true if text =~ /<\s*Biml\b/
15
+ end
16
+
17
+ prepend :root do
18
+ rule %r(<#\@\s*)m, Name::Tag, :directive_tag
19
+
20
+ rule %r(<#[=]?\s*)m, Name::Tag, :directive_as_csharp
21
+ end
22
+
23
+ prepend :attr do
24
+ #TODO: how to deal with embedded <# tags inside a attribute string
25
+ #rule %r("<#[=]?\s*)m, Name::Tag, :directive_as_csharp
26
+ end
27
+
28
+ state :directive_as_csharp do
29
+ rule /\s*#>\s*/m, Name::Tag, :pop!
30
+ rule %r(.*?(?=\s*#>\s*))m do
31
+ delegate CSharp
32
+ end
33
+ end
34
+
35
+ state :directive_tag do
36
+ rule /\s+/m, Text
37
+ rule /[\w.:-]+\s*=/m, Name::Attribute, :attr
38
+ rule /[\w]+\s*/m, Name::Attribute
39
+ rule %r(/?\s*#>), Name::Tag, :pop!
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,82 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Bsl < RegexLexer
7
+ title "1C (BSL)"
8
+ desc "The 1C:Enterprise programming language"
9
+ tag 'bsl'
10
+ filenames '*.bsl', '*.os'
11
+
12
+ KEYWORDS = /(?<=[^\wа-яё]|^)(?:
13
+ КонецПроцедуры | EndProcedure | КонецФункции | EndFunction
14
+ | Прервать | Break | Продолжить | Continue
15
+ | Возврат | Return | Если | If
16
+ | Иначе | Else | ИначеЕсли | ElsIf
17
+ | Тогда | Then | КонецЕсли | EndIf
18
+ | Попытка | Try | Исключение | Except
19
+ | КонецПопытки | EndTry | Raise | ВызватьИсключение
20
+ | Пока | While | Для | For
21
+ | Каждого | Each | Из | In
22
+ | По | To | Цикл | Do
23
+ | КонецЦикла | EndDo | НЕ | NOT
24
+ | И | AND | ИЛИ | OR
25
+ | Новый | New | Процедура | Procedure
26
+ | Функция | Function | Перем | Var
27
+ | Экспорт | Export | Знач | Val
28
+ )(?=[^\wа-яё]|$)/ix
29
+
30
+ BUILTINS = /(?<=[^\wа-яё]|^)(?:
31
+ СтрДлина|StrLen|СокрЛ|TrimL|СокрП|TrimR|СокрЛП|TrimAll|Лев|Left|Прав|Right|Сред|Mid|СтрНайти|StrFind|ВРег|Upper|НРег|Lower|ТРег|Title|Символ|Char|КодСимвола|CharCode|ПустаяСтрока|IsBlankString|СтрЗаменить|StrReplace|СтрЧислоСтрок|StrLineCount|СтрПолучитьСтроку|StrGetLine|СтрЧислоВхождений|StrOccurrenceCount|СтрСравнить|StrCompare|СтрНачинаетсяС|StrStartWith|СтрЗаканчиваетсяНа|StrEndsWith|СтрРазделить|StrSplit|СтрСоединить|StrConcat
32
+ | Цел|Int|Окр|Round|ACos|ACos|ASin|ASin|ATan|ATan|Cos|Cos|Exp|Exp|Log|Log|Log10|Log10|Pow|Pow|Sin|Sin|Sqrt|Sqrt|Tan|Tan
33
+ | Год|Year|Месяц|Month|День|Day|Час|Hour|Минута|Minute|Секунда|Second|НачалоГода|BegOfYear|НачалоДня|BegOfDay|НачалоКвартала|BegOfQuarter|НачалоМесяца|BegOfMonth|НачалоМинуты|BegOfMinute|НачалоНедели|BegOfWeek|НачалоЧаса|BegOfHour|КонецГода|EndOfYear|КонецДня|EndOfDay|КонецКвартала|EndOfQuarter|КонецМесяца|EndOfMonth|КонецМинуты|EndOfMinute|КонецНедели|EndOfWeek|КонецЧаса|EndOfHour|НеделяГода|WeekOfYear|ДеньГода|DayOfYear|ДеньНедели|WeekDay|ТекущаяДата|CurrentDate|ДобавитьМесяц|AddMonth
34
+ | Тип|Type|ТипЗнч|TypeOf
35
+ | Булево|Boolean|Число|Number|Строка|String|Дата|Date
36
+ | ПоказатьВопрос|ShowQueryBox|Вопрос|DoQueryBox|ПоказатьПредупреждение|ShowMessageBox|Предупреждение|DoMessageBox|Сообщить|Message|ОчиститьСообщения|ClearMessages|ОповеститьОбИзменении|NotifyChanged|Состояние|Status|Сигнал|Beep|ПоказатьЗначение|ShowValue|ОткрытьЗначение|OpenValue|Оповестить|Notify|ОбработкаПрерыванияПользователя|UserInterruptProcessing|ОткрытьСодержаниеСправки|OpenHelpContent|ОткрытьИндексСправки|OpenHelpIndex|ОткрытьСправку|OpenHelp|ПоказатьИнформациюОбОшибке|ShowErrorInfo|КраткоеПредставлениеОшибки|BriefErrorDescription|ПодробноеПредставлениеОшибки|DetailErrorDescription|ПолучитьФорму|GetForm|ЗакрытьСправку|CloseHelp|ПоказатьОповещениеПользователя|ShowUserNotification|ОткрытьФорму|OpenForm|ОткрытьФормуМодально|OpenFormModal|АктивноеОкно|ActiveWindow|ВыполнитьОбработкуОповещения|ExecuteNotifyProcessing
37
+ | ПоказатьВводЗначения|ShowInputValue|ВвестиЗначение|InputValue|ПоказатьВводЧисла|ShowInputNumber|ВвестиЧисло|InputNumber|ПоказатьВводСтроки|ShowInputString|ВвестиСтроку|InputString|ПоказатьВводДаты|ShowInputDate|ВвестиДату|InputDate
38
+ | Формат|Format|ЧислоПрописью|NumberInWords|НСтр|NStr|ПредставлениеПериода|PeriodPresentation|СтрШаблон|StrTemplate
39
+ | ПолучитьОбщийМакет|GetCommonTemplate|ПолучитьОбщуюФорму|GetCommonForm|ПредопределенноеЗначение|PredefinedValue|ПолучитьПолноеИмяПредопределенногоЗначения|GetPredefinedValueFullName
40
+ | ПолучитьЗаголовокСистемы|GetCaption|ПолучитьСкоростьКлиентскогоСоединения|GetClientConnectionSpeed|ПодключитьОбработчикОжидания|AttachIdleHandler|УстановитьЗаголовокСистемы|SetCaption|ОтключитьОбработчикОжидания|DetachIdleHandler|ИмяКомпьютера|ComputerName|ЗавершитьРаботуСистемы|Exit|ИмяПользователя|UserName|ПрекратитьРаботуСистемы|Terminate|ПолноеИмяПользователя|UserFullName|ЗаблокироватьРаботуПользователя|LockApplication|КаталогПрограммы|BinDir|КаталогВременныхФайлов|TempFilesDir|ПравоДоступа|AccessRight|РольДоступна|IsInRole|ТекущийЯзык|CurrentLanguage|ТекущийКодЛокализации|CurrentLocaleCode|СтрокаСоединенияИнформационнойБазы|InfoBaseConnectionString|ПодключитьОбработчикОповещения|AttachNotificationHandler|ОтключитьОбработчикОповещения|DetachNotificationHandler|ПолучитьСообщенияПользователю|GetUserMessages|ПараметрыДоступа|AccessParameters|ПредставлениеПриложения|ApplicationPresentation|ТекущийЯзыкСистемы|CurrentSystemLanguage|ЗапуститьСистему|RunSystem|ТекущийРежимЗапуска|CurrentRunMode|УстановитьЧасовойПоясСеанса|SetSessionTimeZone|ЧасовойПоясСеанса|SessionTimeZone|ТекущаяДатаСеанса|CurrentSessionDate|УстановитьКраткийЗаголовокПриложения|SetShortApplicationCaption|ПолучитьКраткийЗаголовокПриложения|GetShortApplicationCaption|ПредставлениеПрава|RightPresentation|ВыполнитьПроверкуПравДоступа|VerifyAccessRights|РабочийКаталогДанныхПользователя|UserDataWorkDir|КаталогДокументов|DocumentsDir|ПолучитьИнформациюЭкрановКлиента|GetClientDisplaysInformation|ТекущийВариантОсновногоШрифтаКлиентскогоПриложения|ClientApplicationBaseFontCurrentVariant|ТекущийВариантИнтерфейсаКлиентскогоПриложения|ClientApplicationInterfaceCurrentVariant|УстановитьЗаголовокКлиентскогоПриложения|SetClientApplicationCaption|ПолучитьЗаголовокКлиентскогоПриложения|GetClientApplicationCaption|НачатьПолучениеКаталогаВременныхФайлов|BeginGettingTempFilesDir|НачатьПолучениеКаталогаДокументов|BeginGettingDocumentsDir|НачатьПолучениеРабочегоКаталогаДанныхПользователя|BeginGettingUserDataWorkDir|ПодключитьОбработчикЗапросаНастроекКлиентаЛицензирования|AttachLicensingClientParametersRequestHandler|ОтключитьОбработчикЗапросаНастроекКлиентаЛицензирования|DetachLicensingClientParametersRequestHandler
41
+ | ЗначениеВСтрокуВнутр|ValueToStringInternal|ЗначениеИзСтрокиВнутр|ValueFromStringInternal|ЗначениеВФайл|ValueToFile|ЗначениеИзФайла|ValueFromFile
42
+ | КомандаСистемы|System|ЗапуститьПриложение|RunApp|ПолучитьCOMОбъект|GetCOMObject|ПользователиОС|OSUsers|НачатьЗапускПриложения|BeginRunningApplication
43
+ | ПодключитьВнешнююКомпоненту|AttachAddIn|НачатьУстановкуВнешнейКомпоненты|BeginInstallAddIn|УстановитьВнешнююКомпоненту|InstallAddIn|НачатьПодключениеВнешнейКомпоненты|BeginAttachingAddIn
44
+ | КопироватьФайл|FileCopy|ПереместитьФайл|MoveFile|УдалитьФайлы|DeleteFiles|НайтиФайлы|FindFiles|СоздатьКаталог|CreateDirectory|ПолучитьИмяВременногоФайла|GetTempFileName|РазделитьФайл|SplitFile|ОбъединитьФайлы|MergeFiles|ПолучитьФайл|GetFile|НачатьПомещениеФайла|BeginPutFile|ПоместитьФайл|PutFile|ЭтоАдресВременногоХранилища|IsTempStorageURL|УдалитьИзВременногоХранилища|DeleteFromTempStorage|ПолучитьИзВременногоХранилища|GetFromTempStorage|ПоместитьВоВременноеХранилище|PutToTempStorage|ПодключитьРасширениеРаботыСФайлами|AttachFileSystemExtension|НачатьУстановкуРасширенияРаботыСФайлами|BeginInstallFileSystemExtension|УстановитьРасширениеРаботыСФайлами|InstallFileSystemExtension|ПолучитьФайлы|GetFiles|ПоместитьФайлы|PutFiles|ЗапроситьРазрешениеПользователя|RequestUserPermission|ПолучитьМаскуВсеФайлы|GetAllFilesMask|ПолучитьМаскуВсеФайлыКлиента|GetClientAllFilesMask|ПолучитьМаскуВсеФайлыСервера|GetServerAllFilesMask|ПолучитьРазделительПути|GetPathSeparator|ПолучитьРазделительПутиКлиента|GetClientPathSeparator|ПолучитьРазделительПутиСервера|GetServerPathSeparator|НачатьПодключениеРасширенияРаботыСФайлами|BeginAttachingFileSystemExtension|НачатьЗапросРазрешенияПользователя|BeginRequestingUserPermission|НачатьПоискФайлов|BeginFindingFiles|НачатьСозданиеКаталога|BeginCreatingDirectory|НачатьКопированиеФайла|BeginCopyingFile|НачатьПеремещениеФайла|BeginMovingFile|НачатьУдалениеФайлов|BeginDeletingFiles|НачатьПолучениеФайлов|BeginGettingFiles|НачатьПомещениеФайлов|BeginPuttingFiles
45
+ | НачатьТранзакцию|BeginTransaction|ЗафиксироватьТранзакцию|CommitTransaction|ОтменитьТранзакцию|RollbackTransaction|УстановитьМонопольныйРежим|SetExclusiveMode|МонопольныйРежим|ExclusiveMode|ПолучитьОперативнуюОтметкуВремени|GetRealTimeTimestamp|ПолучитьСоединенияИнформационнойБазы|GetInfoBaseConnections|НомерСоединенияИнформационнойБазы|InfoBaseConnectionNumber|КонфигурацияИзменена|ConfigurationChanged|КонфигурацияБазыДанныхИзмененаДинамически|DataBaseConfigurationChangedDynamically|УстановитьВремяОжиданияБлокировкиДанных|SetLockWaitTime|ОбновитьНумерациюОбъектов|RefreshObjectsNumbering|ПолучитьВремяОжиданияБлокировкиДанных|GetLockWaitTime|КодЛокализацииИнформационнойБазы|InfoBaseLocaleCode|УстановитьМинимальнуюДлинуПаролейПользователей|SetUserPasswordMinLength|ПолучитьМинимальнуюДлинуПаролейПользователей|GetUserPasswordMinLength|ИнициализироватьПредопределенныеДанные|InitializePredefinedData|УдалитьДанныеИнформационнойБазы|EraseInfoBaseData|УстановитьПроверкуСложностиПаролейПользователей|SetUserPasswordStrengthCheck|ПолучитьПроверкуСложностиПаролейПользователей|GetUserPasswordStrengthCheck|ПолучитьСтруктуруХраненияБазыДанных|GetDBStorageStructureInfo|УстановитьПривилегированныйРежим|SetPrivilegedMode|ПривилегированныйРежим|PrivilegedMode|ТранзакцияАктивна|TransactionActive|НеобходимостьЗавершенияСоединения|ConnectionStopRequest|НомерСеансаИнформационнойБазы|InfoBaseSessionNumber|ПолучитьСеансыИнформационнойБазы|GetInfoBaseSessions|ЗаблокироватьДанныеДляРедактирования|LockDataForEdit|УстановитьСоединениеСВнешнимИсточникомДанных|ConnectExternalDataSource|РазблокироватьДанныеДляРедактирования|UnlockDataForEdit|РазорватьСоединениеСВнешнимИсточникомДанных|DisconnectExternalDataSource|ПолучитьБлокировкуСеансов|GetSessionsLock|УстановитьБлокировкуСеансов|SetSessionsLock|ОбновитьПовторноИспользуемыеЗначения|RefreshReusableValues|УстановитьБезопасныйРежим|SetSafeMode|БезопасныйРежим|SafeMode|ПолучитьДанныеВыбора|GetChoiceData|УстановитьЧасовойПоясИнформационнойБазы|SetInfoBaseTimeZone|ПолучитьЧасовойПоясИнформационнойБазы|GetInfoBaseTimeZone|ПолучитьОбновлениеКонфигурацииБазыДанных|GetDataBaseConfigurationUpdate|УстановитьБезопасныйРежимРазделенияДанных|SetDataSeparationSafeMode|БезопасныйРежимРазделенияДанных|DataSeparationSafeMode|УстановитьВремяЗасыпанияПассивногоСеанса|SetPassiveSessionHibernateTime|ПолучитьВремяЗасыпанияПассивногоСеанса|GetPassiveSessionHibernateTime|УстановитьВремяЗавершенияСпящегоСеанса|SetHibernateSessionTerminateTime|ПолучитьВремяЗавершенияСпящегоСеанса|GetHibernateSessionTerminateTime|ПолучитьТекущийСеансИнформационнойБазы|GetCurrentInfoBaseSession|ПолучитьИдентификаторКонфигурации|GetConfigurationID|УстановитьНастройкиКлиентаЛицензирования|SetLicensingClientParameters|ПолучитьИмяКлиентаЛицензирования|GetLicensingClientName|ПолучитьДополнительныйПараметрКлиентаЛицензирования|GetLicensingClientAdditionalParameter
46
+ | НайтиПомеченныеНаУдаление|FindMarkedForDeletion|НайтиПоСсылкам|FindByRef|УдалитьОбъекты|DeleteObjects|УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы|SetInfoBasePredefinedDataUpdate|ПолучитьОбновлениеПредопределенныхДанныхИнформационнойБазы|GetInfoBasePredefinedData
47
+ | XMLСтрока|XMLString|XMLЗначение|XMLValue|XMLТип|XMLType|XMLТипЗнч|XMLTypeOf|ИзXMLТипа|FromXMLType|ВозможностьЧтенияXML|CanReadXML|ПолучитьXMLТип|GetXMLType|ПрочитатьXML|ReadXML|ЗаписатьXML|WriteXML|НайтиНедопустимыеСимволыXML|FindDisallowedXMLCharacters|ИмпортМоделиXDTO|ImportXDTOModel|СоздатьФабрикуXDTO|CreateXDTOFactory
48
+ | ЗаписатьJSON|WriteJSON|ПрочитатьJSON|ReadJSON|ПрочитатьДатуJSON|ReadJSONDate|ЗаписатьДатуJSON|WriteJSONDate
49
+ | ЗаписьЖурналаРегистрации|WriteLogEvent|ПолучитьИспользованиеЖурналаРегистрации|GetEventLogUsing|УстановитьИспользованиеЖурналаРегистрации|SetEventLogUsing|ПредставлениеСобытияЖурналаРегистрации|EventLogEventPresentation|ВыгрузитьЖурналРегистрации|UnloadEventLog|ПолучитьЗначенияОтбораЖурналаРегистрации|GetEventLogFilterValues|УстановитьИспользованиеСобытияЖурналаРегистрации|SetEventLogEventUse|ПолучитьИспользованиеСобытияЖурналаРегистрации|GetEventLogEventUse|СкопироватьЖурналРегистрации|CopyEventLog|ОчиститьЖурналРегистрации|ClearEventLog
50
+ | ЗначениеВДанныеФормы|ValueToFormData|ДанныеФормыВЗначение|FormDataToValue|КопироватьДанныеФормы|CopyFormData|УстановитьСоответствиеОбъектаИФормы|SetObjectAndFormConformity|ПолучитьСоответствиеОбъектаИФормы|GetObjectAndFormConformity
51
+ | ПолучитьФункциональнуюОпцию|GetFunctionalOption|ПолучитьФункциональнуюОпциюИнтерфейса|GetInterfaceFunctionalOption|УстановитьПараметрыФункциональныхОпцийИнтерфейса|SetInterfaceFunctionalOptionParameters|ПолучитьПараметрыФункциональныхОпцийИнтерфейса|GetInterfaceFunctionalOptionParameters|ОбновитьИнтерфейс|RefreshInterface
52
+ | УстановитьРасширениеРаботыСКриптографией|InstallCryptoExtension|НачатьУстановкуРасширенияРаботыСКриптографией|BeginInstallCryptoExtension|ПодключитьРасширениеРаботыСКриптографией|AttachCryptoExtension|НачатьПодключениеРасширенияРаботыСКриптографией|BeginAttachingCryptoExtension
53
+ | УстановитьСоставСтандартногоИнтерфейсаOData|SetStandardODataInterfaceContent|ПолучитьСоставСтандартногоИнтерфейсаOData|GetStandardODataInterfaceContent
54
+ | Мин|Min|Макс|Max|ОписаниеОшибки|ErrorDescription|Вычислить|Eval|ИнформацияОбОшибке|ErrorInfo|Base64Значение|Base64Value|Base64Строка|Base64String|ЗаполнитьЗначенияСвойств|FillPropertyValues|ЗначениеЗаполнено|ValueIsFilled|ПолучитьПредставленияНавигационныхСсылок|GetURLsPresentations|НайтиОкноПоНавигационнойСсылке|FindWindowByURL|ПолучитьОкна|GetWindows|ПерейтиПоНавигационнойСсылке|GotoURL|ПолучитьНавигационнуюСсылку|GetURL|ПолучитьДопустимыеКодыЛокализации|GetAvailableLocaleCodes|ПолучитьНавигационнуюСсылкуИнформационнойБазы|GetInfoBaseURL|ПредставлениеКодаЛокализации|LocaleCodePresentation|ПолучитьДопустимыеЧасовыеПояса|GetAvailableTimeZones|ПредставлениеЧасовогоПояса|TimeZonePresentation|ТекущаяУниверсальнаяДата|CurrentUniversalDate|ТекущаяУниверсальнаяДатаВМиллисекундах|CurrentUniversalDateInMilliseconds|МестноеВремя|ToLocalTime|УниверсальноеВремя|ToUniversalTime|ЧасовойПояс|TimeZone|СмещениеЛетнегоВремени|DaylightTimeOffset|СмещениеСтандартногоВремени|StandardTimeOffset|КодироватьСтроку|EncodeString|РаскодироватьСтроку|DecodeString|Найти|Find
55
+ | ПередНачаломРаботыСистемы|BeforeStart|ПриНачалеРаботыСистемы|OnStart|ПередЗавершениемРаботыСистемы|BeforeExit|ПриЗавершенииРаботыСистемы|OnExit|ОбработкаВнешнегоСобытия|ExternEventProcessing|УстановкаПараметровСеанса|SessionParametersSetting|ПриИзмененииПараметровЭкрана|OnChangeDisplaySettings
56
+ | WSСсылки|WSReferences|БиблиотекаКартинок|PictureLib|БиблиотекаМакетовОформленияКомпоновкиДанных|DataCompositionAppearanceTemplateLib|БиблиотекаСтилей|StyleLib|БизнесПроцессы|BusinessProcesses|ВнешниеИсточникиДанных|ExternalDataSources|ВнешниеОбработки|ExternalDataProcessors|ВнешниеОтчеты|ExternalReports|Документы|Documents|ДоставляемыеУведомления|DeliverableNotifications|ЖурналыДокументов|DocumentJournals|Задачи|Tasks|ИспользованиеРабочейДаты|WorkingDateUse|ИсторияРаботыПользователя|UserWorkHistory|Константы|Constants|КритерииОтбора|FilterCriteria|Метаданные|Metadata|Обработки|DataProcessors|ОтправкаДоставляемыхУведомлений|DeliverableNotificationSend|Отчеты|Reports|ПараметрыСеанса|SessionParameters|Перечисления|Enums|ПланыВидовРасчета|ChartsOfCalculationTypes|ПланыВидовХарактеристик|ChartsOfCharacteristicTypes|ПланыОбмена|ExchangePlans|ПланыСчетов|ChartsOfAccounts|ПолнотекстовыйПоиск|FullTextSearch|ПользователиИнформационнойБазы|InfoBaseUsers|Последовательности|Sequences|РасширенияКонфигурации|ConfigurationExtensions|РегистрыБухгалтерии|AccountingRegisters|РегистрыНакопления|AccumulationRegisters|РегистрыРасчета|CalculationRegisters|РегистрыСведений|InformationRegisters|РегламентныеЗадания|ScheduledJobs|СериализаторXDTO|XDTOSerializer|Справочники|Catalogs|СредстваГеопозиционирования|LocationTools|СредстваКриптографии|CryptoToolsManager|СредстваМультимедиа|MultimediaTools|СредстваПочты|MailTools|СредстваТелефонии|TelephonyTools|ФабрикаXDTO|XDTOFactory|ФоновыеЗадания|BackgroundJobs|ХранилищаНастроек
57
+ | ГлавныйИнтерфейс|MainInterface|ГлавныйСтиль|MainStyle|ПараметрЗапуска|LaunchParameter|РабочаяДата|WorkingDate|SettingsStorages|ХранилищеВариантовОтчетов|ReportsVariantsStorage|ХранилищеНастроекДанныхФорм|FormDataSettingsStorage|ХранилищеОбщихНастроек|CommonSettingsStorage|ХранилищеПользовательскихНастроекДинамическихСписков|DynamicListsUserSettingsStorage|ХранилищеПользовательскихНастроекОтчетов|ReportsUserSettingsStorage|ХранилищеСистемныхНастроек|SystemSettingsStorage
58
+ | Если|If|ИначеЕсли|ElsIf|Иначе|Else|КонецЕсли|EndIf|Тогда|Then
59
+ | Неопределено|Undefined|Истина|True|Ложь|False|NULL
60
+ )\s*(?=\()/ix
61
+
62
+ state :root do
63
+ rule /\n/, Text
64
+ rule /[^\S\n]+/, Text
65
+ rule /\/\/.*$/, Comment::Single
66
+ rule /[\[\]:(),;]/, Punctuation
67
+ rule /(?<=[^\wа-яё]|^)\&.*$/, Keyword::Declaration
68
+ rule /[-+\/=<>*%=<>.?&]/, Operator
69
+ rule /(?<=[^\wа-яё]|^)\#.*$/, Keyword::Declaration
70
+ rule KEYWORDS, Keyword
71
+ rule BUILTINS, Name::Builtin
72
+ rule /[\wа-яё_][\wа-яё0-9_]*/i, Name::Variable
73
+
74
+ #literals
75
+ rule /\b((\h{8}-(\h{4}-){3}\h{12})|\d+\.?\d*)\b/, Literal::Number
76
+ rule /\'.*\'/, Literal::Date
77
+ rule /".*?("|$)/, Literal::String::Single
78
+ rule /(?<=[^\wа-яё]|^)\|((?!\"\").)*?(\"|$)/, Literal::String
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,213 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class C < RegexLexer
7
+ tag 'c'
8
+ filenames '*.c', '*.h', '*.idc'
9
+ mimetypes 'text/x-chdr', 'text/x-csrc'
10
+
11
+ title "C"
12
+ desc "The C programming language"
13
+
14
+ # optional comment or whitespace
15
+ ws = %r((?:\s|//.*?\n|/[*].*?[*]/)+)
16
+ id = /[a-zA-Z_][a-zA-Z0-9_]*/
17
+
18
+ def self.keywords
19
+ @keywords ||= Set.new %w(
20
+ auto break case const continue default do else enum extern
21
+ for goto if register restricted return sizeof static struct
22
+ switch typedef union volatile virtual while
23
+
24
+ _Alignas _Alignof _Atomic _Generic _Imaginary
25
+ _Noreturn _Static_assert _Thread_local
26
+ )
27
+ end
28
+
29
+ def self.keywords_type
30
+ @keywords_type ||= Set.new %w(
31
+ int long float short double char unsigned signed void
32
+
33
+ jmp_buf FILE DIR div_t ldiv_t mbstate_t sig_atomic_t fpos_t
34
+ clock_t time_t va_list size_t ssize_t off_t wchar_t ptrdiff_t
35
+ wctrans_t wint_t wctype_t
36
+
37
+ _Bool _Complex int8_t int16_t int32_t int64_t
38
+ uint8_t uint16_t uint32_t uint64_t int_least8_t
39
+ int_least16_t int_least32_t int_least64_t
40
+ uint_least8_t uint_least16_t uint_least32_t
41
+ uint_least64_t int_fast8_t int_fast16_t int_fast32_t
42
+ int_fast64_t uint_fast8_t uint_fast16_t uint_fast32_t
43
+ uint_fast64_t intptr_t uintptr_t intmax_t
44
+ uintmax_t
45
+
46
+ char16_t char32_t
47
+ )
48
+ end
49
+
50
+ def self.reserved
51
+ @reserved ||= Set.new %w(
52
+ __asm __int8 __based __except __int16 __stdcall __cdecl
53
+ __fastcall __int32 __declspec __finally __int61 __try __leave
54
+ inline _inline __inline naked _naked __naked restrict _restrict
55
+ __restrict thread _thread __thread typename _typename __typename
56
+ )
57
+ end
58
+
59
+ def self.builtins
60
+ @builtins ||= []
61
+ end
62
+
63
+ start { push :bol }
64
+
65
+ state :expr_bol do
66
+ mixin :inline_whitespace
67
+
68
+ rule /#if\s0/, Comment, :if_0
69
+ rule /#/, Comment::Preproc, :macro
70
+
71
+ rule(//) { pop! }
72
+ end
73
+
74
+ # :expr_bol is the same as :bol but without labels, since
75
+ # labels can only appear at the beginning of a statement.
76
+ state :bol do
77
+ rule /#{id}:(?!:)/, Name::Label
78
+ mixin :expr_bol
79
+ end
80
+
81
+ state :inline_whitespace do
82
+ rule /[ \t\r]+/, Text
83
+ rule /\\\n/, Text # line continuation
84
+ rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
85
+ end
86
+
87
+ state :whitespace do
88
+ rule /\n+/m, Text, :bol
89
+ rule %r(//(\\.|.)*?$), Comment::Single, :bol
90
+ mixin :inline_whitespace
91
+ end
92
+
93
+ state :expr_whitespace do
94
+ rule /\n+/m, Text, :expr_bol
95
+ mixin :whitespace
96
+ end
97
+
98
+ state :statements do
99
+ mixin :whitespace
100
+ rule /(u8|u|U|L)?"/, Str, :string
101
+ rule %r((u8|u|U|L)?'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
102
+ rule %r((\d+[.]\d*|[.]?\d+)e[+-]?\d+[lu]*)i, Num::Float
103
+ rule %r(\d+e[+-]?\d+[lu]*)i, Num::Float
104
+ rule /0x[0-9a-f]+[lu]*/i, Num::Hex
105
+ rule /0[0-7]+[lu]*/i, Num::Oct
106
+ rule /\d+[lu]*/i, Num::Integer
107
+ rule %r(\*/), Error
108
+ rule %r([~!%^&*+=\|?:<>/-]), Operator
109
+ rule /[()\[\],.]/, Punctuation
110
+ rule /\bcase\b/, Keyword, :case
111
+ rule /(?:true|false|NULL)\b/, Name::Builtin
112
+ rule id do |m|
113
+ name = m[0]
114
+
115
+ if self.class.keywords.include? name
116
+ token Keyword
117
+ elsif self.class.keywords_type.include? name
118
+ token Keyword::Type
119
+ elsif self.class.reserved.include? name
120
+ token Keyword::Reserved
121
+ elsif self.class.builtins.include? name
122
+ token Name::Builtin
123
+ else
124
+ token Name
125
+ end
126
+ end
127
+ end
128
+
129
+ state :case do
130
+ rule /:/, Punctuation, :pop!
131
+ mixin :statements
132
+ end
133
+
134
+ state :root do
135
+ mixin :expr_whitespace
136
+
137
+ # functions
138
+ rule %r(
139
+ ([\w*\s]+?[\s*]) # return arguments
140
+ (#{id}) # function name
141
+ (\s*\([^;]*?\)) # signature
142
+ (#{ws})({) # open brace
143
+ )mx do |m|
144
+ # TODO: do this better.
145
+ recurse m[1]
146
+ token Name::Function, m[2]
147
+ recurse m[3]
148
+ recurse m[4]
149
+ token Punctuation, m[5]
150
+ push :function
151
+ end
152
+
153
+ # function declarations
154
+ rule %r(
155
+ ([\w*\s]+?[\s*]) # return arguments
156
+ (#{id}) # function name
157
+ (\s*\([^;]*?\)) # signature
158
+ (#{ws})(;) # semicolon
159
+ )mx do |m|
160
+ # TODO: do this better.
161
+ recurse m[1]
162
+ token Name::Function, m[2]
163
+ recurse m[3]
164
+ recurse m[4]
165
+ token Punctuation, m[5]
166
+ push :statement
167
+ end
168
+
169
+ rule(//) { push :statement }
170
+ end
171
+
172
+ state :statement do
173
+ rule /;/, Punctuation, :pop!
174
+ mixin :expr_whitespace
175
+ mixin :statements
176
+ rule /[{}]/, Punctuation
177
+ end
178
+
179
+ state :function do
180
+ mixin :whitespace
181
+ mixin :statements
182
+ rule /;/, Punctuation
183
+ rule /{/, Punctuation, :function
184
+ rule /}/, Punctuation, :pop!
185
+ end
186
+
187
+ state :string do
188
+ rule /"/, Str, :pop!
189
+ rule /\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
190
+ rule /[^\\"\n]+/, Str
191
+ rule /\\\n/, Str
192
+ rule /\\/, Str # stray backslash
193
+ end
194
+
195
+ state :macro do
196
+ # NB: pop! goes back to :bol
197
+ rule /\n/, Comment::Preproc, :pop!
198
+ rule %r([^/\n\\]+), Comment::Preproc
199
+ rule /\\./m, Comment::Preproc
200
+ mixin :inline_whitespace
201
+ rule %r(/), Comment::Preproc
202
+ end
203
+
204
+ state :if_0 do
205
+ # NB: no \b here, to cover #ifdef and #ifndef
206
+ rule /^\s*#if/, Comment, :if_0
207
+ rule /^\s*#\s*el(?:se|if)/, Comment, :pop!
208
+ rule /^\s*#\s*endif\b.*?(?<!\\)\n/m, Comment, :pop!
209
+ rule /.*?\n/, Comment
210
+ end
211
+ end
212
+ end
213
+ end
@@ -0,0 +1,124 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Ceylon < RegexLexer
7
+ tag 'ceylon'
8
+ filenames '*.ceylon'
9
+ mimetypes 'text/x-ceylon'
10
+
11
+ title "Ceylon"
12
+ desc 'Say more, more clearly.'
13
+
14
+ keywords = %w(
15
+ break case catch continue else finally for in
16
+ if return switch this throw try while is exists dynamic
17
+ nonempty then outer assert let
18
+ )
19
+
20
+ keywords_declaration = %w(
21
+ abstracts extends satisfies super given of out assign
22
+ )
23
+
24
+ keywords_type = %w(
25
+ function value void new
26
+ )
27
+
28
+ keywords_namespace = %w(
29
+ assembly module package
30
+ )
31
+
32
+ keywords_constant = %w(
33
+ true false null
34
+ )
35
+
36
+ annotations = %w(
37
+ shared abstract formal default actual variable deprecated small
38
+ late literal doc by see throws optional license tagged final native
39
+ annotation sealed
40
+ )
41
+
42
+ state :whitespace do
43
+ rule %r([^\S\n]+), Text
44
+ rule %r(//.*?\n), Comment::Single
45
+ rule %r(/\*), Comment::Multiline
46
+ end
47
+
48
+ state :root do
49
+ mixin :whitespace
50
+
51
+ rule %r((shared|abstract|formal|default|actual|variable|deprecated|small|
52
+ late|literal|doc|by|see|throws|optional|license|tagged|final|native|
53
+ annotation|sealed)\b), Name::Decorator
54
+
55
+ rule %r((break|case|catch|continue|else|finally|for|in|
56
+ if|return|switch|this|throw|try|while|is|exists|dynamic|
57
+ nonempty|then|outer|assert|let)\b), Keyword
58
+
59
+ rule %r((abstracts|extends|satisfies|super|given|of|out|assign)\b), Keyword::Declaration
60
+
61
+ rule %r((function|value|void|new)\b), Keyword::Type
62
+
63
+ rule %r((assembly|module|package)(\s+)) do
64
+ groups Keyword::Namespace, Text
65
+ push :import
66
+ end
67
+
68
+ rule %r((true|false|null)\b), Keyword::Constant
69
+
70
+ rule %r((class|interface|object|alias)(\s+)) do
71
+ groups Keyword::Declaration, Text
72
+ push :class
73
+ end
74
+
75
+ rule %r((import)(\s+)) do
76
+ groups Keyword::Namespace, Text
77
+ push :import
78
+ end
79
+
80
+ rule %r("(\\\\|\\"|[^"])*"), Literal::String
81
+ rule %r('\\.'|'[^\\]'|'\\\{#[0-9a-fA-F]{4}\}'), Literal::String::Char
82
+ rule %r(".*``.*``.*"', String::Interpol
83
+ rule %r(\.)([a-z_]\w*)) do
84
+ groups Operator, Name::Attribute
85
+ end
86
+ rule %r([a-zA-Z_]\w*:), Name::Label
87
+ rule %r((\\I[a-z]|[A-Z])\w*), Name::Decorator
88
+ rule %r([a-zA-Z_]\w*), Name
89
+ rule %r([~^*!%&\[\](){}<>|+=:;,./?-`]), Operator
90
+ rule %r(\d{1,3}(_\d{3})+\.\d{1,3}(_\d{3})+[kMGTPmunpf]?), Literal::Number::Float
91
+ rule %r(\d{1,3}(_\d{3})+\.[0-9]+([eE][+-]?[0-9]+)?[kMGTPmunpf]?),
92
+ Literal::Number::Float
93
+ rule %r([0-9][0-9]*\.\d{1,3}(_\d{3})+[kMGTPmunpf]?), Literal::Number::Float
94
+ rule %r([0-9][0-9]*\.[0-9]+([eE][+-]?[0-9]+)?[kMGTPmunpf]?),
95
+ Literal::Number::Float
96
+ rule %r(#([0-9a-fA-F]{4})(_[0-9a-fA-F]{4})+), Literal::Number::Hex
97
+ rule %r(#[0-9a-fA-F]+), Literal::Number::Hex
98
+ rule %r(\$([01]{4})(_[01]{4})+), Literal::Number::Bin
99
+ rule %r(\$[01]+), Literal::Number::Bin
100
+ rule %r(\d{1,3}(_\d{3})+[kMGTP]?), Literal::Number::Integer
101
+ rule %r([0-9]+[kMGTP]?), Literal::Number::Integer
102
+ rule %r(\n), Text
103
+
104
+ end
105
+
106
+ state :class do
107
+ mixin :whitespace
108
+ rule %r([A-Za-z_]\w*), Name::Class, :pop!
109
+ end
110
+
111
+ state :import do
112
+ rule %r([a-z][\w.]*), Name::Namespace, :pop!
113
+ rule %r("(\\\\|\\"|[^"])*"), Literal::String, :pop!
114
+ end
115
+
116
+ state :comment do
117
+ rule %r([^*/]), Comment.Multiline
118
+ rule %r(/\*), Comment::Multiline, :push!
119
+ rule %r(\*/), Comment::Multiline, :pop!
120
+ rule %r([*/]), Comment::Multiline
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,154 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+
7
+ class Cfscript < RegexLexer
8
+ title "CFScript"
9
+ desc 'CFScript, the CFML scripting language'
10
+ tag 'cfscript'
11
+ aliases 'cfc'
12
+ filenames '*.cfc'
13
+
14
+ def self.keywords
15
+ @keywords ||= %w(
16
+ if else var xml default break switch do try catch throw in continue for return while required
17
+ )
18
+ end
19
+
20
+ def self.declarations
21
+ @declarations ||= %w(
22
+ component property function remote public package private
23
+ )
24
+ end
25
+
26
+ def self.types
27
+ @types ||= %w(
28
+ any array binary boolean component date guid numeric query string struct uuid void xml
29
+ )
30
+ end
31
+
32
+ constants = %w(application session client cookie super this variables arguments cgi)
33
+
34
+
35
+ operators = %w(\+\+ -- && \|\| <= >= < > == != mod eq lt gt lte gte not is and or xor eqv imp equal contains \? )
36
+ dotted_id = /[$a-zA-Z_][a-zA-Z0-9_.]*/
37
+
38
+ state :root do
39
+ mixin :comments_and_whitespace
40
+ rule /(?:#{operators.join('|')}|does not contain|greater than(?: or equal to)?|less than(?: or equal to)?)\b/i, Operator, :expr_start
41
+ rule %r([-<>+*%&|\^/!=]=?), Operator, :expr_start
42
+
43
+ rule /[(\[,]/, Punctuation, :expr_start
44
+ rule /;/, Punctuation, :statement
45
+ rule /[)\].]/, Punctuation
46
+
47
+ rule /[?]/ do
48
+ token Punctuation
49
+ push :ternary
50
+ push :expr_start
51
+ end
52
+
53
+ rule /[{}]/, Punctuation, :statement
54
+
55
+ rule /(?:#{constants.join('|')})\b/, Name::Constant
56
+ rule /(?:true|false|null)\b/, Keyword::Constant
57
+ rule /import\b/, Keyword::Namespace, :import
58
+ rule /(#{dotted_id})(\s*)(:)(\s*)/ do
59
+ groups Name, Text, Punctuation, Text
60
+ push :expr_start
61
+ end
62
+
63
+ rule /([A-Za-z_$][\w.]*)(\s*)(\()/ do |m|
64
+ if self.class.keywords.include? m[1]
65
+ token Keyword, m[1]
66
+ token Text, m[2]
67
+ token Punctuation, m[3]
68
+ else
69
+ token Name::Function, m[1]
70
+ token Text, m[2]
71
+ token Punctuation, m[3]
72
+ end
73
+ end
74
+
75
+ rule dotted_id do |m|
76
+ if self.class.declarations.include? m[0]
77
+ token Keyword::Declaration
78
+ push :expr_start
79
+ elsif self.class.keywords.include? m[0]
80
+ token Keyword
81
+ push :expr_start
82
+ elsif self.class.types.include? m[0]
83
+ token Keyword::Type
84
+ push :expr_start
85
+ else
86
+ token Name::Other
87
+ end
88
+ end
89
+
90
+ rule /[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?/, Num::Float
91
+ rule /0x[0-9a-fA-F]+/, Num::Hex
92
+ rule /[0-9]+/, Num::Integer
93
+ rule /"(\\\\|\\"|[^"])*"/, Str::Double
94
+ rule /'(\\\\|\\'|[^'])*'/, Str::Single
95
+
96
+ end
97
+
98
+ # same as java, broken out
99
+ state :comments_and_whitespace do
100
+ rule /\s+/, Text
101
+ rule %r(//.*?$), Comment::Single
102
+ rule %r(/\*.*?\*/)m, Comment::Multiline
103
+ end
104
+
105
+ state :expr_start do
106
+ mixin :comments_and_whitespace
107
+
108
+ rule /[{]/, Punctuation, :object
109
+
110
+ rule //, Text, :pop!
111
+ end
112
+
113
+ state :statement do
114
+
115
+ rule /[{}]/, Punctuation
116
+
117
+ mixin :expr_start
118
+ end
119
+
120
+ # object literals
121
+ state :object do
122
+ mixin :comments_and_whitespace
123
+ rule /[}]/ do
124
+ token Punctuation
125
+ push :expr_start
126
+ end
127
+
128
+ rule /(#{dotted_id})(\s*)(:)/ do
129
+ groups Name::Other, Text, Punctuation
130
+ push :expr_start
131
+ end
132
+
133
+ rule /:/, Punctuation
134
+ mixin :root
135
+ end
136
+
137
+ # ternary expressions, where <dotted_id>: is not a label!
138
+ state :ternary do
139
+ rule /:/ do
140
+ token Punctuation
141
+ goto :expr_start
142
+ end
143
+
144
+ mixin :root
145
+ end
146
+
147
+ state :import do
148
+ rule /\s+/m, Text
149
+ rule /[a-z0-9_.]+\*?/i, Name::Namespace, :pop!
150
+ end
151
+
152
+ end
153
+ end
154
+ end