rouge_ecl 0.0.1

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 (319) 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.rb +82 -0
  6. data/lib/rouge/cli.rb +429 -0
  7. data/lib/rouge/demos/abap +6 -0
  8. data/lib/rouge/demos/actionscript +4 -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/csharp +5 -0
  27. data/lib/rouge/demos/css +4 -0
  28. data/lib/rouge/demos/d +16 -0
  29. data/lib/rouge/demos/dart +6 -0
  30. data/lib/rouge/demos/diff +7 -0
  31. data/lib/rouge/demos/digdag +19 -0
  32. data/lib/rouge/demos/docker +9 -0
  33. data/lib/rouge/demos/dot +5 -0
  34. data/lib/rouge/demos/ecl +1 -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/html +8 -0
  54. data/lib/rouge/demos/http +14 -0
  55. data/lib/rouge/demos/hylang +10 -0
  56. data/lib/rouge/demos/idlang +8 -0
  57. data/lib/rouge/demos/igorpro +9 -0
  58. data/lib/rouge/demos/ini +4 -0
  59. data/lib/rouge/demos/io +11 -0
  60. data/lib/rouge/demos/irb +4 -0
  61. data/lib/rouge/demos/irb_output +2 -0
  62. data/lib/rouge/demos/java +5 -0
  63. data/lib/rouge/demos/javascript +1 -0
  64. data/lib/rouge/demos/jinja +9 -0
  65. data/lib/rouge/demos/json +1 -0
  66. data/lib/rouge/demos/json-doc +1 -0
  67. data/lib/rouge/demos/jsonnet +28 -0
  68. data/lib/rouge/demos/jsx +17 -0
  69. data/lib/rouge/demos/julia +11 -0
  70. data/lib/rouge/demos/kotlin +3 -0
  71. data/lib/rouge/demos/lasso +12 -0
  72. data/lib/rouge/demos/liquid +11 -0
  73. data/lib/rouge/demos/literate_coffeescript +3 -0
  74. data/lib/rouge/demos/literate_haskell +7 -0
  75. data/lib/rouge/demos/llvm +20 -0
  76. data/lib/rouge/demos/lua +12 -0
  77. data/lib/rouge/demos/make +6 -0
  78. data/lib/rouge/demos/markdown +4 -0
  79. data/lib/rouge/demos/matlab +6 -0
  80. data/lib/rouge/demos/moonscript +16 -0
  81. data/lib/rouge/demos/mosel +10 -0
  82. data/lib/rouge/demos/mxml +22 -0
  83. data/lib/rouge/demos/nasm +26 -0
  84. data/lib/rouge/demos/nginx +5 -0
  85. data/lib/rouge/demos/nim +27 -0
  86. data/lib/rouge/demos/nix +19 -0
  87. data/lib/rouge/demos/objective_c +18 -0
  88. data/lib/rouge/demos/ocaml +12 -0
  89. data/lib/rouge/demos/pascal +14 -0
  90. data/lib/rouge/demos/perl +5 -0
  91. data/lib/rouge/demos/php +3 -0
  92. data/lib/rouge/demos/plaintext +1 -0
  93. data/lib/rouge/demos/plist +142 -0
  94. data/lib/rouge/demos/pony +17 -0
  95. data/lib/rouge/demos/powershell +49 -0
  96. data/lib/rouge/demos/praat +26 -0
  97. data/lib/rouge/demos/prolog +9 -0
  98. data/lib/rouge/demos/prometheus +9 -0
  99. data/lib/rouge/demos/properties +7 -0
  100. data/lib/rouge/demos/protobuf +5 -0
  101. data/lib/rouge/demos/puppet +6 -0
  102. data/lib/rouge/demos/python +6 -0
  103. data/lib/rouge/demos/q +2 -0
  104. data/lib/rouge/demos/qml +9 -0
  105. data/lib/rouge/demos/r +8 -0
  106. data/lib/rouge/demos/racket +24 -0
  107. data/lib/rouge/demos/ruby +9 -0
  108. data/lib/rouge/demos/rust +12 -0
  109. data/lib/rouge/demos/sass +3 -0
  110. data/lib/rouge/demos/scala +3 -0
  111. data/lib/rouge/demos/scheme +4 -0
  112. data/lib/rouge/demos/scss +5 -0
  113. data/lib/rouge/demos/sed +4 -0
  114. data/lib/rouge/demos/shell +2 -0
  115. data/lib/rouge/demos/sieve +10 -0
  116. data/lib/rouge/demos/slim +17 -0
  117. data/lib/rouge/demos/smalltalk +6 -0
  118. data/lib/rouge/demos/smarty +12 -0
  119. data/lib/rouge/demos/sml +4 -0
  120. data/lib/rouge/demos/sql +1 -0
  121. data/lib/rouge/demos/swift +5 -0
  122. data/lib/rouge/demos/tap +5 -0
  123. data/lib/rouge/demos/tcl +1 -0
  124. data/lib/rouge/demos/tex +1 -0
  125. data/lib/rouge/demos/toml +9 -0
  126. data/lib/rouge/demos/tsx +17 -0
  127. data/lib/rouge/demos/tulip +13 -0
  128. data/lib/rouge/demos/turtle +26 -0
  129. data/lib/rouge/demos/twig +9 -0
  130. data/lib/rouge/demos/typescript +1 -0
  131. data/lib/rouge/demos/vala +8 -0
  132. data/lib/rouge/demos/vb +4 -0
  133. data/lib/rouge/demos/verilog +27 -0
  134. data/lib/rouge/demos/vhdl +23 -0
  135. data/lib/rouge/demos/viml +14 -0
  136. data/lib/rouge/demos/vue +11 -0
  137. data/lib/rouge/demos/wollok +11 -0
  138. data/lib/rouge/demos/xml +2 -0
  139. data/lib/rouge/demos/yaml +4 -0
  140. data/lib/rouge/formatter.rb +75 -0
  141. data/lib/rouge/formatters/html.rb +37 -0
  142. data/lib/rouge/formatters/html_inline.rb +30 -0
  143. data/lib/rouge/formatters/html_legacy.rb +44 -0
  144. data/lib/rouge/formatters/html_linewise.rb +27 -0
  145. data/lib/rouge/formatters/html_pygments.rb +16 -0
  146. data/lib/rouge/formatters/html_table.rb +61 -0
  147. data/lib/rouge/formatters/null.rb +19 -0
  148. data/lib/rouge/formatters/terminal256.rb +180 -0
  149. data/lib/rouge/guesser.rb +55 -0
  150. data/lib/rouge/guessers/disambiguation.rb +101 -0
  151. data/lib/rouge/guessers/filename.rb +25 -0
  152. data/lib/rouge/guessers/glob_mapping.rb +43 -0
  153. data/lib/rouge/guessers/mimetype.rb +14 -0
  154. data/lib/rouge/guessers/modeline.rb +44 -0
  155. data/lib/rouge/guessers/source.rb +29 -0
  156. data/lib/rouge/guessers/util.rb +32 -0
  157. data/lib/rouge/lexer.rb +461 -0
  158. data/lib/rouge/lexers/abap.rb +238 -0
  159. data/lib/rouge/lexers/actionscript.rb +195 -0
  160. data/lib/rouge/lexers/apache.rb +71 -0
  161. data/lib/rouge/lexers/apache/keywords.yml +764 -0
  162. data/lib/rouge/lexers/apiblueprint.rb +47 -0
  163. data/lib/rouge/lexers/apple_script.rb +367 -0
  164. data/lib/rouge/lexers/awk.rb +161 -0
  165. data/lib/rouge/lexers/biml.rb +41 -0
  166. data/lib/rouge/lexers/bsl.rb +81 -0
  167. data/lib/rouge/lexers/c.rb +212 -0
  168. data/lib/rouge/lexers/ceylon.rb +123 -0
  169. data/lib/rouge/lexers/cfscript.rb +153 -0
  170. data/lib/rouge/lexers/clojure.rb +112 -0
  171. data/lib/rouge/lexers/cmake.rb +206 -0
  172. data/lib/rouge/lexers/coffeescript.rb +174 -0
  173. data/lib/rouge/lexers/common_lisp.rb +345 -0
  174. data/lib/rouge/lexers/conf.rb +24 -0
  175. data/lib/rouge/lexers/console.rb +136 -0
  176. data/lib/rouge/lexers/coq.rb +187 -0
  177. data/lib/rouge/lexers/cpp.rb +78 -0
  178. data/lib/rouge/lexers/csharp.rb +114 -0
  179. data/lib/rouge/lexers/css.rb +273 -0
  180. data/lib/rouge/lexers/d.rb +176 -0
  181. data/lib/rouge/lexers/dart.rb +104 -0
  182. data/lib/rouge/lexers/diff.rb +31 -0
  183. data/lib/rouge/lexers/digdag.rb +68 -0
  184. data/lib/rouge/lexers/docker.rb +50 -0
  185. data/lib/rouge/lexers/dot.rb +68 -0
  186. data/lib/rouge/lexers/ecl.rb +138 -0
  187. data/lib/rouge/lexers/eiffel.rb +65 -0
  188. data/lib/rouge/lexers/elixir.rb +133 -0
  189. data/lib/rouge/lexers/elm.rb +89 -0
  190. data/lib/rouge/lexers/erb.rb +52 -0
  191. data/lib/rouge/lexers/erlang.rb +114 -0
  192. data/lib/rouge/lexers/factor.rb +302 -0
  193. data/lib/rouge/lexers/fortran.rb +176 -0
  194. data/lib/rouge/lexers/fsharp.rb +118 -0
  195. data/lib/rouge/lexers/gherkin.rb +137 -0
  196. data/lib/rouge/lexers/gherkin/keywords.rb +14 -0
  197. data/lib/rouge/lexers/glsl.rb +135 -0
  198. data/lib/rouge/lexers/go.rb +174 -0
  199. data/lib/rouge/lexers/gradle.rb +37 -0
  200. data/lib/rouge/lexers/graphql.rb +243 -0
  201. data/lib/rouge/lexers/groovy.rb +112 -0
  202. data/lib/rouge/lexers/hack.rb +48 -0
  203. data/lib/rouge/lexers/haml.rb +229 -0
  204. data/lib/rouge/lexers/handlebars.rb +79 -0
  205. data/lib/rouge/lexers/haskell.rb +182 -0
  206. data/lib/rouge/lexers/html.rb +139 -0
  207. data/lib/rouge/lexers/http.rb +80 -0
  208. data/lib/rouge/lexers/hylang.rb +93 -0
  209. data/lib/rouge/lexers/idlang.rb +310 -0
  210. data/lib/rouge/lexers/igorpro.rb +408 -0
  211. data/lib/rouge/lexers/ini.rb +53 -0
  212. data/lib/rouge/lexers/io.rb +68 -0
  213. data/lib/rouge/lexers/irb.rb +66 -0
  214. data/lib/rouge/lexers/java.rb +87 -0
  215. data/lib/rouge/lexers/javascript.rb +281 -0
  216. data/lib/rouge/lexers/jinja.rb +137 -0
  217. data/lib/rouge/lexers/json.rb +29 -0
  218. data/lib/rouge/lexers/json_doc.rb +23 -0
  219. data/lib/rouge/lexers/jsonnet.rb +151 -0
  220. data/lib/rouge/lexers/jsx.rb +102 -0
  221. data/lib/rouge/lexers/julia.rb +172 -0
  222. data/lib/rouge/lexers/kotlin.rb +79 -0
  223. data/lib/rouge/lexers/lasso.rb +214 -0
  224. data/lib/rouge/lexers/lasso/keywords.yml +446 -0
  225. data/lib/rouge/lexers/liquid.rb +287 -0
  226. data/lib/rouge/lexers/literate_coffeescript.rb +33 -0
  227. data/lib/rouge/lexers/literate_haskell.rb +36 -0
  228. data/lib/rouge/lexers/llvm.rb +80 -0
  229. data/lib/rouge/lexers/lua.rb +125 -0
  230. data/lib/rouge/lexers/lua/builtins.rb +22 -0
  231. data/lib/rouge/lexers/make.rb +112 -0
  232. data/lib/rouge/lexers/markdown.rb +154 -0
  233. data/lib/rouge/lexers/matlab.rb +71 -0
  234. data/lib/rouge/lexers/matlab/builtins.rb +11 -0
  235. data/lib/rouge/lexers/moonscript.rb +114 -0
  236. data/lib/rouge/lexers/mosel.rb +231 -0
  237. data/lib/rouge/lexers/mxml.rb +68 -0
  238. data/lib/rouge/lexers/nasm.rb +198 -0
  239. data/lib/rouge/lexers/nginx.rb +71 -0
  240. data/lib/rouge/lexers/nim.rb +152 -0
  241. data/lib/rouge/lexers/nix.rb +205 -0
  242. data/lib/rouge/lexers/objective_c.rb +194 -0
  243. data/lib/rouge/lexers/ocaml.rb +100 -0
  244. data/lib/rouge/lexers/pascal.rb +66 -0
  245. data/lib/rouge/lexers/perl.rb +196 -0
  246. data/lib/rouge/lexers/php.rb +193 -0
  247. data/lib/rouge/lexers/php/builtins.rb +194 -0
  248. data/lib/rouge/lexers/plain_text.rb +26 -0
  249. data/lib/rouge/lexers/plist.rb +45 -0
  250. data/lib/rouge/lexers/pony.rb +93 -0
  251. data/lib/rouge/lexers/powershell.rb +678 -0
  252. data/lib/rouge/lexers/praat.rb +350 -0
  253. data/lib/rouge/lexers/prolog.rb +59 -0
  254. data/lib/rouge/lexers/prometheus.rb +121 -0
  255. data/lib/rouge/lexers/properties.rb +51 -0
  256. data/lib/rouge/lexers/protobuf.rb +70 -0
  257. data/lib/rouge/lexers/puppet.rb +128 -0
  258. data/lib/rouge/lexers/python.rb +232 -0
  259. data/lib/rouge/lexers/q.rb +123 -0
  260. data/lib/rouge/lexers/qml.rb +73 -0
  261. data/lib/rouge/lexers/r.rb +89 -0
  262. data/lib/rouge/lexers/racket.rb +543 -0
  263. data/lib/rouge/lexers/ruby.rb +437 -0
  264. data/lib/rouge/lexers/rust.rb +192 -0
  265. data/lib/rouge/lexers/sass.rb +74 -0
  266. data/lib/rouge/lexers/sass/common.rb +180 -0
  267. data/lib/rouge/lexers/scala.rb +142 -0
  268. data/lib/rouge/lexers/scheme.rb +112 -0
  269. data/lib/rouge/lexers/scss.rb +34 -0
  270. data/lib/rouge/lexers/sed.rb +172 -0
  271. data/lib/rouge/lexers/shell.rb +189 -0
  272. data/lib/rouge/lexers/sieve.rb +96 -0
  273. data/lib/rouge/lexers/slim.rb +228 -0
  274. data/lib/rouge/lexers/smalltalk.rb +116 -0
  275. data/lib/rouge/lexers/smarty.rb +80 -0
  276. data/lib/rouge/lexers/sml.rb +344 -0
  277. data/lib/rouge/lexers/sql.rb +140 -0
  278. data/lib/rouge/lexers/swift.rb +181 -0
  279. data/lib/rouge/lexers/tap.rb +87 -0
  280. data/lib/rouge/lexers/tcl.rb +192 -0
  281. data/lib/rouge/lexers/tex.rb +69 -0
  282. data/lib/rouge/lexers/toml.rb +67 -0
  283. data/lib/rouge/lexers/tsx.rb +19 -0
  284. data/lib/rouge/lexers/tulip.rb +106 -0
  285. data/lib/rouge/lexers/turtle.rb +63 -0
  286. data/lib/rouge/lexers/twig.rb +39 -0
  287. data/lib/rouge/lexers/typescript.rb +22 -0
  288. data/lib/rouge/lexers/typescript/common.rb +33 -0
  289. data/lib/rouge/lexers/vala.rb +77 -0
  290. data/lib/rouge/lexers/vb.rb +164 -0
  291. data/lib/rouge/lexers/verilog.rb +164 -0
  292. data/lib/rouge/lexers/vhdl.rb +97 -0
  293. data/lib/rouge/lexers/viml.rb +101 -0
  294. data/lib/rouge/lexers/viml/keywords.rb +12 -0
  295. data/lib/rouge/lexers/vue.rb +122 -0
  296. data/lib/rouge/lexers/wollok.rb +103 -0
  297. data/lib/rouge/lexers/xml.rb +57 -0
  298. data/lib/rouge/lexers/yaml.rb +373 -0
  299. data/lib/rouge/plugins/redcarpet.rb +30 -0
  300. data/lib/rouge/regex_lexer.rb +441 -0
  301. data/lib/rouge/template_lexer.rb +20 -0
  302. data/lib/rouge/text_analyzer.rb +49 -0
  303. data/lib/rouge/theme.rb +213 -0
  304. data/lib/rouge/themes/base16.rb +130 -0
  305. data/lib/rouge/themes/colorful.rb +67 -0
  306. data/lib/rouge/themes/github.rb +71 -0
  307. data/lib/rouge/themes/gruvbox.rb +167 -0
  308. data/lib/rouge/themes/igor_pro.rb +20 -0
  309. data/lib/rouge/themes/molokai.rb +82 -0
  310. data/lib/rouge/themes/monokai.rb +92 -0
  311. data/lib/rouge/themes/monokai_sublime.rb +90 -0
  312. data/lib/rouge/themes/pastie.rb +69 -0
  313. data/lib/rouge/themes/thankful_eyes.rb +74 -0
  314. data/lib/rouge/themes/tulip.rb +69 -0
  315. data/lib/rouge/token.rb +182 -0
  316. data/lib/rouge/util.rb +101 -0
  317. data/lib/rouge/version.rb +7 -0
  318. data/rouge.gemspec +23 -0
  319. metadata +365 -0
@@ -0,0 +1,41 @@
1
+ module Rouge
2
+ module Lexers
3
+ load_lexer 'xml.rb'
4
+
5
+ class BIML < XML
6
+ title "BIML"
7
+ desc "BIML, Business Intelligence Markup Language"
8
+ tag 'biml'
9
+ filenames '*.biml'
10
+
11
+ def self.detect?(text)
12
+ return true if text =~ /<\s*Biml\b/
13
+ end
14
+
15
+ prepend :root do
16
+ rule %r(<#\@\s*)m, Name::Tag, :directive_tag
17
+
18
+ rule %r(<#[=]?\s*)m, Name::Tag, :directive_as_csharp
19
+ end
20
+
21
+ prepend :attr do
22
+ #TODO: how to deal with embedded <# tags inside a attribute string
23
+ #rule %r("<#[=]?\s*)m, Name::Tag, :directive_as_csharp
24
+ end
25
+
26
+ state :directive_as_csharp do
27
+ rule /\s*#>\s*/m, Name::Tag, :pop!
28
+ rule %r(.*?(?=\s*#>\s*))m do
29
+ delegate CSharp
30
+ end
31
+ end
32
+
33
+ state :directive_tag do
34
+ rule /\s+/m, Text
35
+ rule /[\w.:-]+\s*=/m, Name::Attribute, :attr
36
+ rule /[\w]+\s*/m, Name::Attribute
37
+ rule %r(/?\s*#>), Name::Tag, :pop!
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,81 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Bsl < RegexLexer
6
+ title "1C (BSL)"
7
+ desc "The 1C:Enterprise programming language"
8
+ tag 'bsl'
9
+ filenames '*.bsl', '*.os'
10
+
11
+ KEYWORDS = /(?<=[^\wа-яё]|^)(?:
12
+ КонецПроцедуры | EndProcedure | КонецФункции | EndFunction
13
+ | Прервать | Break | Продолжить | Continue
14
+ | Возврат | Return | Если | If
15
+ | Иначе | Else | ИначеЕсли | ElsIf
16
+ | Тогда | Then | КонецЕсли | EndIf
17
+ | Попытка | Try | Исключение | Except
18
+ | КонецПопытки | EndTry | Raise | ВызватьИсключение
19
+ | Пока | While | Для | For
20
+ | Каждого | Each | Из | In
21
+ | По | To | Цикл | Do
22
+ | КонецЦикла | EndDo | НЕ | NOT
23
+ | И | AND | ИЛИ | OR
24
+ | Новый | New | Процедура | Procedure
25
+ | Функция | Function | Перем | Var
26
+ | Экспорт | Export | Знач | Val
27
+ )(?=[^\wа-яё]|$)/ix
28
+
29
+ BUILTINS = /(?<=[^\wа-яё]|^)(?:
30
+ СтрДлина|StrLen|СокрЛ|TrimL|СокрП|TrimR|СокрЛП|TrimAll|Лев|Left|Прав|Right|Сред|Mid|СтрНайти|StrFind|ВРег|Upper|НРег|Lower|ТРег|Title|Символ|Char|КодСимвола|CharCode|ПустаяСтрока|IsBlankString|СтрЗаменить|StrReplace|СтрЧислоСтрок|StrLineCount|СтрПолучитьСтроку|StrGetLine|СтрЧислоВхождений|StrOccurrenceCount|СтрСравнить|StrCompare|СтрНачинаетсяС|StrStartWith|СтрЗаканчиваетсяНа|StrEndsWith|СтрРазделить|StrSplit|СтрСоединить|StrConcat
31
+ | Цел|Int|Окр|Round|ACos|ACos|ASin|ASin|ATan|ATan|Cos|Cos|Exp|Exp|Log|Log|Log10|Log10|Pow|Pow|Sin|Sin|Sqrt|Sqrt|Tan|Tan
32
+ | Год|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
33
+ | Тип|Type|ТипЗнч|TypeOf
34
+ | Булево|Boolean|Число|Number|Строка|String|Дата|Date
35
+ | ПоказатьВопрос|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
36
+ | ПоказатьВводЗначения|ShowInputValue|ВвестиЗначение|InputValue|ПоказатьВводЧисла|ShowInputNumber|ВвестиЧисло|InputNumber|ПоказатьВводСтроки|ShowInputString|ВвестиСтроку|InputString|ПоказатьВводДаты|ShowInputDate|ВвестиДату|InputDate
37
+ | Формат|Format|ЧислоПрописью|NumberInWords|НСтр|NStr|ПредставлениеПериода|PeriodPresentation|СтрШаблон|StrTemplate
38
+ | ПолучитьОбщийМакет|GetCommonTemplate|ПолучитьОбщуюФорму|GetCommonForm|ПредопределенноеЗначение|PredefinedValue|ПолучитьПолноеИмяПредопределенногоЗначения|GetPredefinedValueFullName
39
+ | ПолучитьЗаголовокСистемы|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
40
+ | ЗначениеВСтрокуВнутр|ValueToStringInternal|ЗначениеИзСтрокиВнутр|ValueFromStringInternal|ЗначениеВФайл|ValueToFile|ЗначениеИзФайла|ValueFromFile
41
+ | КомандаСистемы|System|ЗапуститьПриложение|RunApp|ПолучитьCOMОбъект|GetCOMObject|ПользователиОС|OSUsers|НачатьЗапускПриложения|BeginRunningApplication
42
+ | ПодключитьВнешнююКомпоненту|AttachAddIn|НачатьУстановкуВнешнейКомпоненты|BeginInstallAddIn|УстановитьВнешнююКомпоненту|InstallAddIn|НачатьПодключениеВнешнейКомпоненты|BeginAttachingAddIn
43
+ | КопироватьФайл|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
44
+ | НачатьТранзакцию|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
45
+ | НайтиПомеченныеНаУдаление|FindMarkedForDeletion|НайтиПоСсылкам|FindByRef|УдалитьОбъекты|DeleteObjects|УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы|SetInfoBasePredefinedDataUpdate|ПолучитьОбновлениеПредопределенныхДанныхИнформационнойБазы|GetInfoBasePredefinedData
46
+ | XMLСтрока|XMLString|XMLЗначение|XMLValue|XMLТип|XMLType|XMLТипЗнч|XMLTypeOf|ИзXMLТипа|FromXMLType|ВозможностьЧтенияXML|CanReadXML|ПолучитьXMLТип|GetXMLType|ПрочитатьXML|ReadXML|ЗаписатьXML|WriteXML|НайтиНедопустимыеСимволыXML|FindDisallowedXMLCharacters|ИмпортМоделиXDTO|ImportXDTOModel|СоздатьФабрикуXDTO|CreateXDTOFactory
47
+ | ЗаписатьJSON|WriteJSON|ПрочитатьJSON|ReadJSON|ПрочитатьДатуJSON|ReadJSONDate|ЗаписатьДатуJSON|WriteJSONDate
48
+ | ЗаписьЖурналаРегистрации|WriteLogEvent|ПолучитьИспользованиеЖурналаРегистрации|GetEventLogUsing|УстановитьИспользованиеЖурналаРегистрации|SetEventLogUsing|ПредставлениеСобытияЖурналаРегистрации|EventLogEventPresentation|ВыгрузитьЖурналРегистрации|UnloadEventLog|ПолучитьЗначенияОтбораЖурналаРегистрации|GetEventLogFilterValues|УстановитьИспользованиеСобытияЖурналаРегистрации|SetEventLogEventUse|ПолучитьИспользованиеСобытияЖурналаРегистрации|GetEventLogEventUse|СкопироватьЖурналРегистрации|CopyEventLog|ОчиститьЖурналРегистрации|ClearEventLog
49
+ | ЗначениеВДанныеФормы|ValueToFormData|ДанныеФормыВЗначение|FormDataToValue|КопироватьДанныеФормы|CopyFormData|УстановитьСоответствиеОбъектаИФормы|SetObjectAndFormConformity|ПолучитьСоответствиеОбъектаИФормы|GetObjectAndFormConformity
50
+ | ПолучитьФункциональнуюОпцию|GetFunctionalOption|ПолучитьФункциональнуюОпциюИнтерфейса|GetInterfaceFunctionalOption|УстановитьПараметрыФункциональныхОпцийИнтерфейса|SetInterfaceFunctionalOptionParameters|ПолучитьПараметрыФункциональныхОпцийИнтерфейса|GetInterfaceFunctionalOptionParameters|ОбновитьИнтерфейс|RefreshInterface
51
+ | УстановитьРасширениеРаботыСКриптографией|InstallCryptoExtension|НачатьУстановкуРасширенияРаботыСКриптографией|BeginInstallCryptoExtension|ПодключитьРасширениеРаботыСКриптографией|AttachCryptoExtension|НачатьПодключениеРасширенияРаботыСКриптографией|BeginAttachingCryptoExtension
52
+ | УстановитьСоставСтандартногоИнтерфейсаOData|SetStandardODataInterfaceContent|ПолучитьСоставСтандартногоИнтерфейсаOData|GetStandardODataInterfaceContent
53
+ | Мин|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
54
+ | ПередНачаломРаботыСистемы|BeforeStart|ПриНачалеРаботыСистемы|OnStart|ПередЗавершениемРаботыСистемы|BeforeExit|ПриЗавершенииРаботыСистемы|OnExit|ОбработкаВнешнегоСобытия|ExternEventProcessing|УстановкаПараметровСеанса|SessionParametersSetting|ПриИзмененииПараметровЭкрана|OnChangeDisplaySettings
55
+ | 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|ХранилищаНастроек
56
+ | ГлавныйИнтерфейс|MainInterface|ГлавныйСтиль|MainStyle|ПараметрЗапуска|LaunchParameter|РабочаяДата|WorkingDate|SettingsStorages|ХранилищеВариантовОтчетов|ReportsVariantsStorage|ХранилищеНастроекДанныхФорм|FormDataSettingsStorage|ХранилищеОбщихНастроек|CommonSettingsStorage|ХранилищеПользовательскихНастроекДинамическихСписков|DynamicListsUserSettingsStorage|ХранилищеПользовательскихНастроекОтчетов|ReportsUserSettingsStorage|ХранилищеСистемныхНастроек|SystemSettingsStorage
57
+ | Если|If|ИначеЕсли|ElsIf|Иначе|Else|КонецЕсли|EndIf|Тогда|Then
58
+ | Неопределено|Undefined|Истина|True|Ложь|False|NULL
59
+ )\s*(?=\()/ix
60
+
61
+ state :root do
62
+ rule /\n/, Text
63
+ rule /[^\S\n]+/, Text
64
+ rule /\/\/.*$/, Comment::Single
65
+ rule /[\[\]:(),;]/, Punctuation
66
+ rule /(?<=[^\wа-яё]|^)\&.*$/, Keyword::Declaration
67
+ rule /[-+\/=<>*%=<>.?&]/, Operator
68
+ rule /(?<=[^\wа-яё]|^)\#.*$/, Keyword::Declaration
69
+ rule KEYWORDS, Keyword
70
+ rule BUILTINS, Name::Builtin
71
+ rule /[\wа-яё_][\wа-яё0-9_]*/i, Name::Variable
72
+
73
+ #literals
74
+ rule /\b((\h{8}-(\h{4}-){3}\h{12})|\d+\.?\d*)\b/, Literal::Number
75
+ rule /\'.*\'/, Literal::Date
76
+ rule /".*?("|$)/, Literal::String::Single
77
+ rule /(?<=[^\wа-яё]|^)\|((?!\"\").)*?(\"|$)/, Literal::String
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,212 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class C < RegexLexer
6
+ tag 'c'
7
+ filenames '*.c', '*.h', '*.idc'
8
+ mimetypes 'text/x-chdr', 'text/x-csrc'
9
+
10
+ title "C"
11
+ desc "The C programming language"
12
+
13
+ # optional comment or whitespace
14
+ ws = %r((?:\s|//.*?\n|/[*].*?[*]/)+)
15
+ id = /[a-zA-Z_][a-zA-Z0-9_]*/
16
+
17
+ def self.keywords
18
+ @keywords ||= Set.new %w(
19
+ auto break case const continue default do else enum extern
20
+ for goto if register restricted return sizeof static struct
21
+ switch typedef union volatile virtual while
22
+
23
+ _Alignas _Alignof _Atomic _Generic _Imaginary
24
+ _Noreturn _Static_assert _Thread_local
25
+ )
26
+ end
27
+
28
+ def self.keywords_type
29
+ @keywords_type ||= Set.new %w(
30
+ int long float short double char unsigned signed void
31
+
32
+ jmp_buf FILE DIR div_t ldiv_t mbstate_t sig_atomic_t fpos_t
33
+ clock_t time_t va_list size_t ssize_t off_t wchar_t ptrdiff_t
34
+ wctrans_t wint_t wctype_t
35
+
36
+ _Bool _Complex int8_t int16_t int32_t int64_t
37
+ uint8_t uint16_t uint32_t uint64_t int_least8_t
38
+ int_least16_t int_least32_t int_least64_t
39
+ uint_least8_t uint_least16_t uint_least32_t
40
+ uint_least64_t int_fast8_t int_fast16_t int_fast32_t
41
+ int_fast64_t uint_fast8_t uint_fast16_t uint_fast32_t
42
+ uint_fast64_t intptr_t uintptr_t intmax_t
43
+ uintmax_t
44
+
45
+ char16_t char32_t
46
+ )
47
+ end
48
+
49
+ def self.reserved
50
+ @reserved ||= Set.new %w(
51
+ __asm __int8 __based __except __int16 __stdcall __cdecl
52
+ __fastcall __int32 __declspec __finally __int61 __try __leave
53
+ inline _inline __inline naked _naked __naked restrict _restrict
54
+ __restrict thread _thread __thread typename _typename __typename
55
+ )
56
+ end
57
+
58
+ def self.builtins
59
+ @builtins ||= []
60
+ end
61
+
62
+ start { push :bol }
63
+
64
+ state :expr_bol do
65
+ mixin :inline_whitespace
66
+
67
+ rule /#if\s0/, Comment, :if_0
68
+ rule /#/, Comment::Preproc, :macro
69
+
70
+ rule(//) { pop! }
71
+ end
72
+
73
+ # :expr_bol is the same as :bol but without labels, since
74
+ # labels can only appear at the beginning of a statement.
75
+ state :bol do
76
+ rule /#{id}:(?!:)/, Name::Label
77
+ mixin :expr_bol
78
+ end
79
+
80
+ state :inline_whitespace do
81
+ rule /[ \t\r]+/, Text
82
+ rule /\\\n/, Text # line continuation
83
+ rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
84
+ end
85
+
86
+ state :whitespace do
87
+ rule /\n+/m, Text, :bol
88
+ rule %r(//(\\.|.)*?$), Comment::Single, :bol
89
+ mixin :inline_whitespace
90
+ end
91
+
92
+ state :expr_whitespace do
93
+ rule /\n+/m, Text, :expr_bol
94
+ mixin :whitespace
95
+ end
96
+
97
+ state :statements do
98
+ mixin :whitespace
99
+ rule /(u8|u|U|L)?"/, Str, :string
100
+ rule %r((u8|u|U|L)?'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
101
+ rule %r((\d+[.]\d*|[.]?\d+)e[+-]?\d+[lu]*)i, Num::Float
102
+ rule %r(\d+e[+-]?\d+[lu]*)i, Num::Float
103
+ rule /0x[0-9a-f]+[lu]*/i, Num::Hex
104
+ rule /0[0-7]+[lu]*/i, Num::Oct
105
+ rule /\d+[lu]*/i, Num::Integer
106
+ rule %r(\*/), Error
107
+ rule %r([~!%^&*+=\|?:<>/-]), Operator
108
+ rule /[()\[\],.]/, Punctuation
109
+ rule /\bcase\b/, Keyword, :case
110
+ rule /(?:true|false|NULL)\b/, Name::Builtin
111
+ rule id do |m|
112
+ name = m[0]
113
+
114
+ if self.class.keywords.include? name
115
+ token Keyword
116
+ elsif self.class.keywords_type.include? name
117
+ token Keyword::Type
118
+ elsif self.class.reserved.include? name
119
+ token Keyword::Reserved
120
+ elsif self.class.builtins.include? name
121
+ token Name::Builtin
122
+ else
123
+ token Name
124
+ end
125
+ end
126
+ end
127
+
128
+ state :case do
129
+ rule /:/, Punctuation, :pop!
130
+ mixin :statements
131
+ end
132
+
133
+ state :root do
134
+ mixin :expr_whitespace
135
+
136
+ # functions
137
+ rule %r(
138
+ ([\w*\s]+?[\s*]) # return arguments
139
+ (#{id}) # function name
140
+ (\s*\([^;]*?\)) # signature
141
+ (#{ws})({) # open brace
142
+ )mx do |m|
143
+ # TODO: do this better.
144
+ recurse m[1]
145
+ token Name::Function, m[2]
146
+ recurse m[3]
147
+ recurse m[4]
148
+ token Punctuation, m[5]
149
+ push :function
150
+ end
151
+
152
+ # function declarations
153
+ rule %r(
154
+ ([\w*\s]+?[\s*]) # return arguments
155
+ (#{id}) # function name
156
+ (\s*\([^;]*?\)) # signature
157
+ (#{ws})(;) # semicolon
158
+ )mx do |m|
159
+ # TODO: do this better.
160
+ recurse m[1]
161
+ token Name::Function, m[2]
162
+ recurse m[3]
163
+ recurse m[4]
164
+ token Punctuation, m[5]
165
+ push :statement
166
+ end
167
+
168
+ rule(//) { push :statement }
169
+ end
170
+
171
+ state :statement do
172
+ rule /;/, Punctuation, :pop!
173
+ mixin :expr_whitespace
174
+ mixin :statements
175
+ rule /[{}]/, Punctuation
176
+ end
177
+
178
+ state :function do
179
+ mixin :whitespace
180
+ mixin :statements
181
+ rule /;/, Punctuation
182
+ rule /{/, Punctuation, :function
183
+ rule /}/, Punctuation, :pop!
184
+ end
185
+
186
+ state :string do
187
+ rule /"/, Str, :pop!
188
+ rule /\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
189
+ rule /[^\\"\n]+/, Str
190
+ rule /\\\n/, Str
191
+ rule /\\/, Str # stray backslash
192
+ end
193
+
194
+ state :macro do
195
+ # NB: pop! goes back to :bol
196
+ rule /\n/, Comment::Preproc, :pop!
197
+ rule %r([^/\n\\]+), Comment::Preproc
198
+ rule /\\./m, Comment::Preproc
199
+ mixin :inline_whitespace
200
+ rule %r(/), Comment::Preproc
201
+ end
202
+
203
+ state :if_0 do
204
+ # NB: no \b here, to cover #ifdef and #ifndef
205
+ rule /^\s*#if/, Comment, :if_0
206
+ rule /^\s*#\s*el(?:se|if)/, Comment, :pop!
207
+ rule /^\s*#\s*endif\b.*?(?<!\\)\n/m, Comment, :pop!
208
+ rule /.*?\n/, Comment
209
+ end
210
+ end
211
+ end
212
+ end
@@ -0,0 +1,123 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Ceylon < RegexLexer
6
+ tag 'ceylon'
7
+ filenames '*.ceylon'
8
+ mimetypes 'text/x-ceylon'
9
+
10
+ title "Ceylon"
11
+ desc 'Say more, more clearly.'
12
+
13
+ keywords = %w(
14
+ break case catch continue else finally for in
15
+ if return switch this throw try while is exists dynamic
16
+ nonempty then outer assert let
17
+ )
18
+
19
+ keywords_declaration = %w(
20
+ abstracts extends satisfies super given of out assign
21
+ )
22
+
23
+ keywords_type = %w(
24
+ function value void new
25
+ )
26
+
27
+ keywords_namespace = %w(
28
+ assembly module package
29
+ )
30
+
31
+ keywords_constant = %w(
32
+ true false null
33
+ )
34
+
35
+ annotations = %w(
36
+ shared abstract formal default actual variable deprecated small
37
+ late literal doc by see throws optional license tagged final native
38
+ annotation sealed
39
+ )
40
+
41
+ state :whitespace do
42
+ rule %r([^\S\n]+), Text
43
+ rule %r(//.*?\n), Comment::Single
44
+ rule %r(/\*), Comment::Multiline
45
+ end
46
+
47
+ state :root do
48
+ mixin :whitespace
49
+
50
+ rule %r((shared|abstract|formal|default|actual|variable|deprecated|small|
51
+ late|literal|doc|by|see|throws|optional|license|tagged|final|native|
52
+ annotation|sealed)\b), Name::Decorator
53
+
54
+ rule %r((break|case|catch|continue|else|finally|for|in|
55
+ if|return|switch|this|throw|try|while|is|exists|dynamic|
56
+ nonempty|then|outer|assert|let)\b), Keyword
57
+
58
+ rule %r((abstracts|extends|satisfies|super|given|of|out|assign)\b), Keyword::Declaration
59
+
60
+ rule %r((function|value|void|new)\b), Keyword::Type
61
+
62
+ rule %r((assembly|module|package)(\s+)) do
63
+ groups Keyword::Namespace, Text
64
+ push :import
65
+ end
66
+
67
+ rule %r((true|false|null)\b), Keyword::Constant
68
+
69
+ rule %r((class|interface|object|alias)(\s+)) do
70
+ groups Keyword::Declaration, Text
71
+ push :class
72
+ end
73
+
74
+ rule %r((import)(\s+)) do
75
+ groups Keyword::Namespace, Text
76
+ push :import
77
+ end
78
+
79
+ rule %r("(\\\\|\\"|[^"])*"), Literal::String
80
+ rule %r('\\.'|'[^\\]'|'\\\{#[0-9a-fA-F]{4}\}'), Literal::String::Char
81
+ rule %r(".*``.*``.*"', String::Interpol
82
+ rule %r(\.)([a-z_]\w*)) do
83
+ groups Operator, Name::Attribute
84
+ end
85
+ rule %r([a-zA-Z_]\w*:), Name::Label
86
+ rule %r((\\I[a-z]|[A-Z])\w*), Name::Decorator
87
+ rule %r([a-zA-Z_]\w*), Name
88
+ rule %r([~^*!%&\[\](){}<>|+=:;,./?-`]), Operator
89
+ rule %r(\d{1,3}(_\d{3})+\.\d{1,3}(_\d{3})+[kMGTPmunpf]?), Literal::Number::Float
90
+ rule %r(\d{1,3}(_\d{3})+\.[0-9]+([eE][+-]?[0-9]+)?[kMGTPmunpf]?),
91
+ Literal::Number::Float
92
+ rule %r([0-9][0-9]*\.\d{1,3}(_\d{3})+[kMGTPmunpf]?), Literal::Number::Float
93
+ rule %r([0-9][0-9]*\.[0-9]+([eE][+-]?[0-9]+)?[kMGTPmunpf]?),
94
+ Literal::Number::Float
95
+ rule %r(#([0-9a-fA-F]{4})(_[0-9a-fA-F]{4})+), Literal::Number::Hex
96
+ rule %r(#[0-9a-fA-F]+), Literal::Number::Hex
97
+ rule %r(\$([01]{4})(_[01]{4})+), Literal::Number::Bin
98
+ rule %r(\$[01]+), Literal::Number::Bin
99
+ rule %r(\d{1,3}(_\d{3})+[kMGTP]?), Literal::Number::Integer
100
+ rule %r([0-9]+[kMGTP]?), Literal::Number::Integer
101
+ rule %r(\n), Text
102
+
103
+ end
104
+
105
+ state :class do
106
+ mixin :whitespace
107
+ rule %r([A-Za-z_]\w*), Name::Class, :pop!
108
+ end
109
+
110
+ state :import do
111
+ rule %r([a-z][\w.]*), Name::Namespace, :pop!
112
+ rule %r("(\\\\|\\"|[^"])*"), Literal::String, :pop!
113
+ end
114
+
115
+ state :comment do
116
+ rule %r([^*/]), Comment.Multiline
117
+ rule %r(/\*), Comment::Multiline, :push!
118
+ rule %r(\*/), Comment::Multiline, :pop!
119
+ rule %r([*/]), Comment::Multiline
120
+ end
121
+ end
122
+ end
123
+ end