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,346 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class CommonLisp < RegexLexer
7
+ title "Common Lisp"
8
+ desc "The Common Lisp variant of Lisp (common-lisp.net)"
9
+ tag 'common_lisp'
10
+ aliases 'cl', 'common-lisp', 'elisp', 'emacs-lisp'
11
+
12
+ filenames '*.cl', '*.lisp', '*.asd', '*.el' # used for Elisp too
13
+ mimetypes 'text/x-common-lisp'
14
+
15
+ # 638 functions
16
+ BUILTIN_FUNCTIONS = Set.new %w(
17
+ < <= = > >= - / /= * + 1- 1+ abort abs acons acos acosh add-method
18
+ adjoin adjustable-array-p adjust-array allocate-instance
19
+ alpha-char-p alphanumericp append apply apropos apropos-list
20
+ aref arithmetic-error-operands arithmetic-error-operation
21
+ array-dimension array-dimensions array-displacement
22
+ array-element-type array-has-fill-pointer-p array-in-bounds-p
23
+ arrayp array-rank array-row-major-index array-total-size
24
+ ash asin asinh assoc assoc-if assoc-if-not atan atanh atom
25
+ bit bit-and bit-andc1 bit-andc2 bit-eqv bit-ior bit-nand
26
+ bit-nor bit-not bit-orc1 bit-orc2 bit-vector-p bit-xor boole
27
+ both-case-p boundp break broadcast-stream-streams butlast
28
+ byte byte-position byte-size caaaar caaadr caaar caadar
29
+ caaddr caadr caar cadaar cadadr cadar caddar cadddr caddr
30
+ cadr call-next-method car cdaaar cdaadr cdaar cdadar cdaddr
31
+ cdadr cdar cddaar cddadr cddar cdddar cddddr cdddr cddr cdr
32
+ ceiling cell-error-name cerror change-class char char< char<=
33
+ char= char> char>= char/= character characterp char-code
34
+ char-downcase char-equal char-greaterp char-int char-lessp
35
+ char-name char-not-equal char-not-greaterp char-not-lessp
36
+ char-upcase cis class-name class-of clear-input clear-output
37
+ close clrhash code-char coerce compile compiled-function-p
38
+ compile-file compile-file-pathname compiler-macro-function
39
+ complement complex complexp compute-applicable-methods
40
+ compute-restarts concatenate concatenated-stream-streams conjugate
41
+ cons consp constantly constantp continue copy-alist copy-list
42
+ copy-pprint-dispatch copy-readtable copy-seq copy-structure
43
+ copy-symbol copy-tree cos cosh count count-if count-if-not
44
+ decode-float decode-universal-time delete delete-duplicates
45
+ delete-file delete-if delete-if-not delete-package denominator
46
+ deposit-field describe describe-object digit-char digit-char-p
47
+ directory directory-namestring disassemble documentation dpb
48
+ dribble echo-stream-input-stream echo-stream-output-stream
49
+ ed eighth elt encode-universal-time endp enough-namestring
50
+ ensure-directories-exist ensure-generic-function eq
51
+ eql equal equalp error eval evenp every exp export expt
52
+ fboundp fceiling fdefinition ffloor fifth file-author
53
+ file-error-pathname file-length file-namestring file-position
54
+ file-string-length file-write-date fill fill-pointer find
55
+ find-all-symbols find-class find-if find-if-not find-method
56
+ find-package find-restart find-symbol finish-output first
57
+ float float-digits floatp float-precision float-radix
58
+ float-sign floor fmakunbound force-output format fourth
59
+ fresh-line fround ftruncate funcall function-keywords
60
+ function-lambda-expression functionp gcd gensym gentemp get
61
+ get-decoded-time get-dispatch-macro-character getf gethash
62
+ get-internal-real-time get-internal-run-time get-macro-character
63
+ get-output-stream-string get-properties get-setf-expansion
64
+ get-universal-time graphic-char-p hash-table-count hash-table-p
65
+ hash-table-rehash-size hash-table-rehash-threshold
66
+ hash-table-size hash-table-test host-namestring identity
67
+ imagpart import initialize-instance input-stream-p inspect
68
+ integer-decode-float integer-length integerp interactive-stream-p
69
+ intern intersection invalid-method-error invoke-debugger
70
+ invoke-restart invoke-restart-interactively isqrt keywordp
71
+ last lcm ldb ldb-test ldiff length lisp-implementation-type
72
+ lisp-implementation-version list list* list-all-packages listen
73
+ list-length listp load load-logical-pathname-translations
74
+ log logand logandc1 logandc2 logbitp logcount logeqv
75
+ logical-pathname logical-pathname-translations logior
76
+ lognand lognor lognot logorc1 logorc2 logtest logxor
77
+ long-site-name lower-case-p machine-instance machine-type
78
+ machine-version macroexpand macroexpand-1 macro-function
79
+ make-array make-broadcast-stream make-concatenated-stream
80
+ make-condition make-dispatch-macro-character make-echo-stream
81
+ make-hash-table make-instance make-instances-obsolete make-list
82
+ make-load-form make-load-form-saving-slots make-package
83
+ make-pathname make-random-state make-sequence make-string
84
+ make-string-input-stream make-string-output-stream make-symbol
85
+ make-synonym-stream make-two-way-stream makunbound map mapc
86
+ mapcan mapcar mapcon maphash map-into mapl maplist mask-field
87
+ max member member-if member-if-not merge merge-pathnames
88
+ method-combination-error method-qualifiers min minusp mismatch mod
89
+ muffle-warning name-char namestring nbutlast nconc next-method-p
90
+ nintersection ninth no-applicable-method no-next-method not notany
91
+ notevery nreconc nreverse nset-difference nset-exclusive-or
92
+ nstring-capitalize nstring-downcase nstring-upcase nsublis
93
+ nsubst nsubst-if nsubst-if-not nsubstitute nsubstitute-if
94
+ nsubstitute-if-not nth nthcdr null numberp numerator nunion
95
+ oddp open open-stream-p output-stream-p package-error-package
96
+ package-name package-nicknames packagep package-shadowing-symbols
97
+ package-used-by-list package-use-list pairlis parse-integer
98
+ parse-namestring pathname pathname-device pathname-directory
99
+ pathname-host pathname-match-p pathname-name pathnamep
100
+ pathname-type pathname-version peek-char phase plusp
101
+ position position-if position-if-not pprint pprint-dispatch
102
+ pprint-fill pprint-indent pprint-linear pprint-newline pprint-tab
103
+ pprint-tabular prin1 prin1-to-string princ princ-to-string print
104
+ print-object probe-file proclaim provide random random-state-p
105
+ rassoc rassoc-if rassoc-if-not rational rationalize rationalp
106
+ read read-byte read-char read-char-no-hang read-delimited-list
107
+ read-from-string read-line read-preserving-whitespace
108
+ read-sequence readtable-case readtablep realp realpart
109
+ reduce reinitialize-instance rem remhash remove
110
+ remove-duplicates remove-if remove-if-not remove-method
111
+ remprop rename-file rename-package replace require rest
112
+ restart-name revappend reverse room round row-major-aref
113
+ rplaca rplacd sbit scale-float schar search second set
114
+ set-difference set-dispatch-macro-character set-exclusive-or
115
+ set-macro-character set-pprint-dispatch set-syntax-from-char
116
+ seventh shadow shadowing-import shared-initialize
117
+ short-site-name signal signum simple-bit-vector-p
118
+ simple-condition-format-arguments simple-condition-format-control
119
+ simple-string-p simple-vector-p sin sinh sixth sleep slot-boundp
120
+ slot-exists-p slot-makunbound slot-missing slot-unbound slot-value
121
+ software-type software-version some sort special-operator-p
122
+ sqrt stable-sort standard-char-p store-value stream-element-type
123
+ stream-error-stream stream-external-format streamp string string<
124
+ string<= string= string> string>= string/= string-capitalize
125
+ string-downcase string-equal string-greaterp string-left-trim
126
+ string-lessp string-not-equal string-not-greaterp string-not-lessp
127
+ stringp string-right-trim string-trim string-upcase sublis subseq
128
+ subsetp subst subst-if subst-if-not substitute substitute-if
129
+ substitute-if-not subtypepsvref sxhash symbol-function
130
+ symbol-name symbolp symbol-package symbol-plist symbol-value
131
+ synonym-stream-symbol syntax: tailp tan tanh tenth terpri third
132
+ translate-logical-pathname translate-pathname tree-equal truename
133
+ truncate two-way-stream-input-stream two-way-stream-output-stream
134
+ type-error-datum type-error-expected-type type-of
135
+ typep unbound-slot-instance unexport unintern union
136
+ unread-char unuse-package update-instance-for-different-class
137
+ update-instance-for-redefined-class upgraded-array-element-type
138
+ upgraded-complex-part-type upper-case-p use-package
139
+ user-homedir-pathname use-value values values-list vector vectorp
140
+ vector-pop vector-push vector-push-extend warn wild-pathname-p
141
+ write write-byte write-char write-line write-sequence write-string
142
+ write-to-string yes-or-no-p y-or-n-p zerop
143
+ ).freeze
144
+
145
+ SPECIAL_FORMS = Set.new %w(
146
+ block catch declare eval-when flet function go if labels lambda
147
+ let let* load-time-value locally macrolet multiple-value-call
148
+ multiple-value-prog1 progn progv quote return-from setq
149
+ symbol-macrolet tagbody the throw unwind-protect
150
+ )
151
+
152
+ MACROS = Set.new %w(
153
+ and assert call-method case ccase check-type cond ctypecase decf
154
+ declaim defclass defconstant defgeneric define-compiler-macro
155
+ define-condition define-method-combination define-modify-macro
156
+ define-setf-expander define-symbol-macro defmacro defmethod
157
+ defpackage defparameter defsetf defstruct defsystem deftype defun defvar
158
+ destructuring-bind do do* do-all-symbols do-external-symbols
159
+ dolist do-symbols dotimes ecase etypecase formatter
160
+ handler-bind handler-case ignore-errors incf in-package
161
+ lambda loop loop-finish make-method multiple-value-bind
162
+ multiple-value-list multiple-value-setq nth-value or pop
163
+ pprint-exit-if-list-exhausted pprint-logical-block pprint-pop
164
+ print-unreadable-object prog prog* prog1 prog2 psetf psetq
165
+ push pushnew remf restart-bind restart-case return rotatef
166
+ setf shiftf step time trace typecase unless untrace when
167
+ with-accessors with-compilation-unit with-condition-restarts
168
+ with-hash-table-iterator with-input-from-string with-open-file
169
+ with-open-stream with-output-to-string with-package-iterator
170
+ with-simple-restart with-slots with-standard-io-syntax
171
+ )
172
+
173
+ LAMBDA_LIST_KEYWORDS = Set.new %w(
174
+ &allow-other-keys &aux &body &environment &key &optional &rest
175
+ &whole
176
+ )
177
+
178
+ DECLARATIONS = Set.new %w(
179
+ dynamic-extent ignore optimize ftype inline special ignorable
180
+ notinline type
181
+ )
182
+
183
+ BUILTIN_TYPES = Set.new %w(
184
+ atom boolean base-char base-string bignum bit compiled-function
185
+ extended-char fixnum keyword nil signed-byte short-float
186
+ single-float double-float long-float simple-array
187
+ simple-base-string simple-bit-vector simple-string simple-vector
188
+ standard-char unsigned-byte
189
+
190
+ arithmetic-error cell-error condition control-error
191
+ division-by-zero end-of-file error file-error
192
+ floating-point-inexact floating-point-overflow
193
+ floating-point-underflow floating-point-invalid-operation
194
+ parse-error package-error print-not-readable program-error
195
+ reader-error serious-condition simple-condition simple-error
196
+ simple-type-error simple-warning stream-error storage-condition
197
+ style-warning type-error unbound-variable unbound-slot
198
+ undefined-function warning
199
+ )
200
+
201
+ BUILTIN_CLASSES = Set.new %w(
202
+ array broadcast-stream bit-vector built-in-class character
203
+ class complex concatenated-stream cons echo-stream file-stream
204
+ float function generic-function hash-table integer list
205
+ logical-pathname method-combination method null number package
206
+ pathname ratio rational readtable real random-state restart
207
+ sequence standard-class standard-generic-function standard-method
208
+ standard-object string-stream stream string structure-class
209
+ structure-object symbol synonym-stream t two-way-stream vector
210
+ )
211
+
212
+ nonmacro = /\\.|[a-zA-Z0-9!$%&*+-\/<=>?@\[\]^_{}~]/
213
+ constituent = /#{nonmacro}|[#.:]/
214
+ terminated = /(?=[ "'()\n,;`])/ # whitespace or terminating macro chars
215
+ symbol = /(\|[^\|]+\||#{nonmacro}#{constituent}*)/
216
+
217
+ state :root do
218
+ rule /\s+/m, Text
219
+ rule /;.*$/, Comment::Single
220
+ rule /#\|/, Comment::Multiline, :multiline_comment
221
+
222
+ # encoding comment
223
+ rule /#\d*Y.*$/, Comment::Special
224
+ rule /"(\\.|[^"\\])*"/, Str
225
+
226
+ rule /[:']#{symbol}/, Str::Symbol
227
+ rule /['`]/, Operator
228
+
229
+ # numbers
230
+ rule /[-+]?\d+\.?#{terminated}/, Num::Integer
231
+ rule %r([-+]?\d+/\d+#{terminated}), Num::Integer
232
+ rule %r(
233
+ [-+]?
234
+ (\d*\.\d+([defls][-+]?\d+)?
235
+ |\d+(\.\d*)?[defls][-+]?\d+)
236
+ #{terminated}
237
+ )x, Num::Float
238
+
239
+ # sharpsign strings and characters
240
+ rule /#\\.#{terminated}/, Str::Char
241
+ rule /#\\#{symbol}/, Str::Char
242
+
243
+ rule /#\(/, Operator, :root
244
+
245
+ # bitstring
246
+ rule /#\d*\*[01]*/, Other
247
+
248
+ # uninterned symbol
249
+ rule /#:#{symbol}/, Str::Symbol
250
+
251
+ # read-time and load-time evaluation
252
+ rule /#[.,]/, Operator
253
+
254
+ # function shorthand
255
+ rule /#'/, Name::Function
256
+
257
+ # binary rational
258
+ rule /#b[+-]?[01]+(\/[01]+)?/i, Num
259
+
260
+ # octal rational
261
+ rule /#o[+-]?[0-7]+(\/[0-7]+)?/i, Num::Oct
262
+
263
+ # hex rational
264
+ rule /#x[+-]?[0-9a-f]+(\/[0-9a-f]+)?/i, Num
265
+
266
+ # complex
267
+ rule /(#c)(\()/i do
268
+ groups Num, Punctuation
269
+ push :root
270
+ end
271
+
272
+ # arrays and structures
273
+ rule /(#(?:\d+a|s))(\()/i do
274
+ groups Str::Other, Punctuation
275
+ push :root
276
+ end
277
+
278
+ # path
279
+ rule /#p?"(\\.|[^"])*"/i, Str::Symbol
280
+
281
+ # reference
282
+ rule /#\d+[=#]/, Operator
283
+
284
+ # read-time comment
285
+ rule /#+nil#{terminated}\s*\(/, Comment, :commented_form
286
+
287
+ # read-time conditional
288
+ rule /#[+-]/, Operator
289
+
290
+ # special operators that should have been parsed already
291
+ rule /(,@|,|\.)/, Operator
292
+
293
+ # special constants
294
+ rule /(t|nil)#{terminated}/, Name::Constant
295
+
296
+ # functions and variables
297
+ # note that these get filtered through in stream_tokens
298
+ rule /\*#{symbol}\*/, Name::Variable::Global
299
+ rule symbol do |m|
300
+ sym = m[0]
301
+
302
+ if BUILTIN_FUNCTIONS.include? sym
303
+ token Name::Builtin
304
+ elsif SPECIAL_FORMS.include? sym
305
+ token Keyword
306
+ elsif MACROS.include? sym
307
+ token Name::Builtin
308
+ elsif LAMBDA_LIST_KEYWORDS.include? sym
309
+ token Keyword
310
+ elsif DECLARATIONS.include? sym
311
+ token Keyword
312
+ elsif BUILTIN_TYPES.include? sym
313
+ token Keyword::Type
314
+ elsif BUILTIN_CLASSES.include? sym
315
+ token Name::Class
316
+ else
317
+ token Name::Variable
318
+ end
319
+ end
320
+
321
+ rule /\(/, Punctuation, :root
322
+ rule /\)/, Punctuation do
323
+ if stack.empty?
324
+ token Error
325
+ else
326
+ token Punctuation
327
+ pop!
328
+ end
329
+ end
330
+ end
331
+
332
+ state :multiline_comment do
333
+ rule /#\|/, Comment::Multiline, :multiline_comment
334
+ rule /\|#/, Comment::Multiline, :pop!
335
+ rule /[^\|#]+/, Comment::Multiline
336
+ rule /[\|#]/, Comment::Multiline
337
+ end
338
+
339
+ state :commented_form do
340
+ rule /\(/, Comment, :commented_form
341
+ rule /\)/, Comment, :pop!
342
+ rule /[^()]+/, Comment
343
+ end
344
+ end
345
+ end
346
+ end
@@ -0,0 +1,25 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Conf < RegexLexer
7
+ tag 'conf'
8
+ aliases 'config', 'configuration'
9
+
10
+ title "Config File"
11
+ desc 'A generic lexer for configuration files'
12
+ filenames '*.conf', '*.config'
13
+
14
+ # short and sweet
15
+ state :root do
16
+ rule /#.*?\n/, Comment
17
+ rule /".*?"/, Str::Double
18
+ rule /'.*?'/, Str::Single
19
+ rule /[a-z]\w*/i, Name
20
+ rule /\d+/, Num
21
+ rule /[^\d\w#"']+/, Text
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,137 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class ConsoleLexer < Lexer
7
+ tag 'console'
8
+ aliases 'terminal', 'shell_session', 'shell-session'
9
+ filenames '*.cap'
10
+ desc 'A generic lexer for shell sessions. Accepts ?lang and ?output lexer options, a ?prompt option, and ?comments to enable # comments.'
11
+
12
+ option :lang, 'the shell language to lex (default: shell)'
13
+ option :output, 'the output language (default: plaintext?token=Generic.Output)'
14
+ option :prompt, 'comma-separated list of strings that indicate the end of a prompt. (default: $,#,>,;)'
15
+ option :comments, 'enable hash-comments at the start of a line - otherwise interpreted as a prompt. (default: false, implied by ?prompt not containing `#`)'
16
+
17
+ def initialize(*)
18
+ super
19
+ @prompt = list_option(:prompt) { nil }
20
+ @lang = lexer_option(:lang) { 'shell' }
21
+ @output = lexer_option(:output) { PlainText.new(token: Generic::Output) }
22
+ @comments = bool_option(:comments) { :guess }
23
+ end
24
+
25
+ def prompt_regex
26
+ @prompt_regex ||= begin
27
+ /^#{prompt_prefix_regex}(?:#{end_chars.map(&Regexp.method(:escape)).join('|')})/
28
+ end
29
+ end
30
+
31
+ def end_chars
32
+ @end_chars ||= if @prompt.any?
33
+ @prompt.reject { |c| c.empty? }
34
+ else
35
+ %w($ # > ;)
36
+ end
37
+ end
38
+
39
+ # whether to allow comments. if manually specifying a prompt that isn't
40
+ # simply "#", we flag this to on
41
+ def allow_comments?
42
+ case @comments
43
+ when :guess
44
+ @prompt && !@prompt.empty? && !end_chars.include?('#')
45
+ else
46
+ @comments
47
+ end
48
+ end
49
+
50
+ def prompt_prefix_regex
51
+ if allow_comments?
52
+ /[^<#]*?/m
53
+ else
54
+ /.*?/m
55
+ end
56
+ end
57
+
58
+ def lang_lexer
59
+ @lang_lexer ||= case @lang
60
+ when Lexer
61
+ @lang
62
+ when nil
63
+ Shell.new(options)
64
+ when Class
65
+ @lang.new(options)
66
+ when String
67
+ Lexer.find(@lang).new(options)
68
+ end
69
+ end
70
+
71
+ def output_lexer
72
+ @output_lexer ||= case @output
73
+ when nil
74
+ PlainText.new(token: Generic::Output)
75
+ when Lexer
76
+ @output
77
+ when Class
78
+ @output.new(options)
79
+ when String
80
+ Lexer.find(@output).new(options)
81
+ end
82
+ end
83
+
84
+ def line_regex
85
+ /(\\.|[^\\])*?(\n|$)/m
86
+ end
87
+
88
+ def comment_regex
89
+ /\A\s*?#/
90
+ end
91
+
92
+ def stream_tokens(input, &output)
93
+ input = StringScanner.new(input)
94
+ lang_lexer.reset!
95
+ output_lexer.reset!
96
+
97
+ process_line(input, &output) while !input.eos?
98
+ end
99
+
100
+ def process_line(input, &output)
101
+ input.scan(line_regex)
102
+
103
+ if input[0] =~ /\A\s*(?:<[.]+>|[.]+)\s*\z/
104
+ puts "console: matched snip #{input[0].inspect}" if @debug
105
+ output_lexer.reset!
106
+ lang_lexer.reset!
107
+
108
+ yield Comment, input[0]
109
+ elsif prompt_regex =~ input[0]
110
+ puts "console: matched prompt #{input[0].inspect}" if @debug
111
+ output_lexer.reset!
112
+
113
+ yield Generic::Prompt, $&
114
+
115
+ # make sure to take care of initial whitespace
116
+ # before we pass to the lang lexer so it can determine where
117
+ # the "real" beginning of the line is
118
+ $' =~ /\A\s*/
119
+ yield Text, $& unless $&.empty?
120
+
121
+ lang_lexer.lex($', continue: true, &output)
122
+ elsif comment_regex =~ input[0].strip
123
+ puts "console: matched comment #{input[0].inspect}" if @debug
124
+ output_lexer.reset!
125
+ lang_lexer.reset!
126
+
127
+ yield Comment, input[0]
128
+ else
129
+ puts "console: matched output #{input[0].inspect}" if @debug
130
+ lang_lexer.reset!
131
+
132
+ output_lexer.lex(input[0], continue: true, &output)
133
+ end
134
+ end
135
+ end
136
+ end
137
+ end
@@ -0,0 +1,188 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Coq < RegexLexer
7
+ title "Coq"
8
+ desc 'Coq (coq.inria.fr)'
9
+ tag 'coq'
10
+ mimetypes 'text/x-coq'
11
+
12
+ def self.gallina
13
+ @gallina ||= Set.new %w(
14
+ as fun if in let match then else return end Type Set Prop
15
+ forall
16
+ )
17
+ end
18
+
19
+ def self.coq
20
+ @coq ||= Set.new %w(
21
+ Definition Theorem Lemma Remark Example Fixpoint CoFixpoint
22
+ Record Inductive CoInductive Corollary Goal Proof
23
+ Ltac Require Import Export Module Section End Variable
24
+ Context Polymorphic Monomorphic Universe Universes
25
+ Variables Class Instance Global Local Include
26
+ Printing Notation Infix Arguments Hint Rewrite Immediate
27
+ Qed Defined Opaque Transparent Existing
28
+ Compute Eval Print SearchAbout Search About Check
29
+ )
30
+ end
31
+
32
+ def self.ltac
33
+ @ltac ||= Set.new %w(
34
+ apply eapply auto eauto rewrite setoid_rewrite
35
+ with in as at destruct split inversion injection
36
+ intro intros unfold fold cbv cbn lazy subst
37
+ clear symmetry transitivity etransitivity erewrite
38
+ edestruct constructor econstructor eexists exists
39
+ f_equal refine instantiate revert simpl
40
+ specialize generalize dependent red induction
41
+ beta iota zeta delta exfalso autorewrite setoid_rewrite
42
+ compute vm_compute native_compute
43
+ )
44
+ end
45
+
46
+ def self.tacticals
47
+ @tacticals ||= Set.new %w(
48
+ repeat first try
49
+ )
50
+ end
51
+
52
+ def self.terminators
53
+ @terminators ||= Set.new %w(
54
+ omega solve congruence reflexivity exact
55
+ assumption eassumption
56
+ )
57
+ end
58
+
59
+ def self.keyopts
60
+ @keyopts ||= Set.new %w(
61
+ := => -> /\\ \\/ _ ; :> :
62
+ )
63
+ end
64
+
65
+ def self.end_sentence
66
+ @end_sentence ||= Punctuation::Indicator
67
+ end
68
+
69
+ def self.classify(x)
70
+ if self.coq.include? x
71
+ return Keyword
72
+ elsif self.gallina.include? x
73
+ return Keyword::Reserved
74
+ elsif self.ltac.include? x
75
+ return Keyword::Pseudo
76
+ elsif self.terminators.include? x
77
+ return Name::Exception
78
+ elsif self.tacticals.include? x
79
+ return Keyword::Pseudo
80
+ else
81
+ return Name::Constant
82
+ end
83
+ end
84
+
85
+ operator = %r([\[\];,{}_()!$%&*+./:<=>?@^|~#-]+)
86
+ id = /(?:[a-z][\w']*)|(?:[_a-z][\w']+)/i
87
+ dot_id = /\.((?:[a-z][\w']*)|(?:[_a-z][\w']+))/i
88
+ dot_space = /\.(\s+)/
89
+ module_type = /Module(\s+)Type(\s+)/
90
+ set_options = /(Set|Unset)(\s+)(Universe|Printing|Implicit|Strict)(\s+)(Polymorphism|All|Notations|Arguments|Universes|Implicit)(\s*)\./m
91
+
92
+ state :root do
93
+ rule /[(][*](?![)])/, Comment, :comment
94
+ rule /\s+/m, Text::Whitespace
95
+ rule module_type do |m|
96
+ token Keyword , 'Module'
97
+ token Text::Whitespace , m[1]
98
+ token Keyword , 'Type'
99
+ token Text::Whitespace , m[2]
100
+ end
101
+ rule set_options do |m|
102
+ token Keyword , m[1]
103
+ i = 2
104
+ while m[i] != ''
105
+ token Text::Whitespace , m[i]
106
+ token Keyword , m[i+1]
107
+ i += 2
108
+ end
109
+ token self.class.end_sentence , '.'
110
+ end
111
+ rule id do |m|
112
+ @name = m[0]
113
+ @continue = false
114
+ push :continue_id
115
+ end
116
+ rule /\/\\/, Operator
117
+ rule /\\\//, Operator
118
+ rule operator do |m|
119
+ match = m[0]
120
+ if self.class.keyopts.include? match
121
+ token Punctuation
122
+ else
123
+ token Operator
124
+ end
125
+ end
126
+
127
+ rule /-?\d[\d_]*(.[\d_]*)?(e[+-]?\d[\d_]*)/i, Num::Float
128
+ rule /\d[\d_]*/, Num::Integer
129
+
130
+ rule /'(?:(\\[\\"'ntbr ])|(\\[0-9]{3})|(\\x\h{2}))'/, Str::Char
131
+ rule /'/, Keyword
132
+ rule /"/, Str::Double, :string
133
+ rule /[~?]#{id}/, Name::Variable
134
+ end
135
+
136
+ state :comment do
137
+ rule /[^(*)]+/, Comment
138
+ rule(/[(][*]/) { token Comment; push }
139
+ rule /[*][)]/, Comment, :pop!
140
+ rule /[(*)]/, Comment
141
+ end
142
+
143
+ state :string do
144
+ rule /[^\\"]+/, Str::Double
145
+ mixin :escape_sequence
146
+ rule /\\\n/, Str::Double
147
+ rule /"/, Str::Double, :pop!
148
+ end
149
+
150
+ state :escape_sequence do
151
+ rule /\\[\\"'ntbr]/, Str::Escape
152
+ end
153
+
154
+ state :continue_id do
155
+ # the stream starts with an id (stored in @name) and continues here
156
+ rule dot_id do |m|
157
+ token Name::Namespace , @name
158
+ token Punctuation , '.'
159
+ @continue = true
160
+ @name = m[1]
161
+ end
162
+ rule dot_space do |m|
163
+ if @continue
164
+ token Name::Constant , @name
165
+ else
166
+ token self.class.classify(@name) , @name
167
+ end
168
+ token self.class.end_sentence , '.'
169
+ token Text::Whitespace , m[1]
170
+ @name = false
171
+ @continue = false
172
+ pop!
173
+ end
174
+ rule // do
175
+ if @continue
176
+ token Name::Constant , @name
177
+ else
178
+ token self.class.classify(@name) , @name
179
+ end
180
+ @name = false
181
+ @continue = false
182
+ pop!
183
+ end
184
+ end
185
+
186
+ end
187
+ end
188
+ end