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.
- checksums.yaml +7 -0
- data/Gemfile +28 -0
- data/LICENSE +186 -0
- data/bin/rougify +18 -0
- data/lib/rouge/cli.rb +432 -0
- data/lib/rouge/demos/abap +6 -0
- data/lib/rouge/demos/actionscript +4 -0
- data/lib/rouge/demos/alda +10 -0
- data/lib/rouge/demos/apache +21 -0
- data/lib/rouge/demos/apiblueprint +33 -0
- data/lib/rouge/demos/applescript +2 -0
- data/lib/rouge/demos/awk +4 -0
- data/lib/rouge/demos/biml +38 -0
- data/lib/rouge/demos/bsl +7 -0
- data/lib/rouge/demos/c +8 -0
- data/lib/rouge/demos/ceylon +7 -0
- data/lib/rouge/demos/cfscript +18 -0
- data/lib/rouge/demos/clojure +5 -0
- data/lib/rouge/demos/cmake +7 -0
- data/lib/rouge/demos/coffeescript +5 -0
- data/lib/rouge/demos/common_lisp +1 -0
- data/lib/rouge/demos/conf +4 -0
- data/lib/rouge/demos/console +6 -0
- data/lib/rouge/demos/coq +13 -0
- data/lib/rouge/demos/cpp +8 -0
- data/lib/rouge/demos/crystal +45 -0
- data/lib/rouge/demos/csharp +5 -0
- data/lib/rouge/demos/css +4 -0
- data/lib/rouge/demos/d +16 -0
- data/lib/rouge/demos/dart +6 -0
- data/lib/rouge/demos/diff +7 -0
- data/lib/rouge/demos/digdag +19 -0
- data/lib/rouge/demos/docker +9 -0
- data/lib/rouge/demos/dot +5 -0
- data/lib/rouge/demos/eiffel +30 -0
- data/lib/rouge/demos/elixir +1 -0
- data/lib/rouge/demos/elm +4 -0
- data/lib/rouge/demos/erb +1 -0
- data/lib/rouge/demos/erlang +7 -0
- data/lib/rouge/demos/factor +5 -0
- data/lib/rouge/demos/fortran +22 -0
- data/lib/rouge/demos/fsharp +12 -0
- data/lib/rouge/demos/gherkin +17 -0
- data/lib/rouge/demos/glsl +14 -0
- data/lib/rouge/demos/go +7 -0
- data/lib/rouge/demos/gradle +10 -0
- data/lib/rouge/demos/graphql +17 -0
- data/lib/rouge/demos/groovy +9 -0
- data/lib/rouge/demos/hack +5 -0
- data/lib/rouge/demos/haml +5 -0
- data/lib/rouge/demos/handlebars +7 -0
- data/lib/rouge/demos/haskell +6 -0
- data/lib/rouge/demos/hcl +7 -0
- data/lib/rouge/demos/html +8 -0
- data/lib/rouge/demos/http +14 -0
- data/lib/rouge/demos/hylang +10 -0
- data/lib/rouge/demos/idlang +8 -0
- data/lib/rouge/demos/igorpro +9 -0
- data/lib/rouge/demos/ini +4 -0
- data/lib/rouge/demos/io +11 -0
- data/lib/rouge/demos/irb +4 -0
- data/lib/rouge/demos/irb_output +2 -0
- data/lib/rouge/demos/java +5 -0
- data/lib/rouge/demos/javascript +1 -0
- data/lib/rouge/demos/jinja +9 -0
- data/lib/rouge/demos/json +1 -0
- data/lib/rouge/demos/json-doc +1 -0
- data/lib/rouge/demos/jsonnet +28 -0
- data/lib/rouge/demos/jsp +29 -0
- data/lib/rouge/demos/jsx +17 -0
- data/lib/rouge/demos/julia +11 -0
- data/lib/rouge/demos/kotlin +3 -0
- data/lib/rouge/demos/lasso +12 -0
- data/lib/rouge/demos/liquid +11 -0
- data/lib/rouge/demos/literate_coffeescript +3 -0
- data/lib/rouge/demos/literate_haskell +7 -0
- data/lib/rouge/demos/llvm +20 -0
- data/lib/rouge/demos/lua +12 -0
- data/lib/rouge/demos/m68k +16 -0
- data/lib/rouge/demos/make +6 -0
- data/lib/rouge/demos/markdown +4 -0
- data/lib/rouge/demos/mathematica +8 -0
- data/lib/rouge/demos/matlab +6 -0
- data/lib/rouge/demos/moonscript +16 -0
- data/lib/rouge/demos/mosel +10 -0
- data/lib/rouge/demos/mxml +22 -0
- data/lib/rouge/demos/nasm +26 -0
- data/lib/rouge/demos/nginx +5 -0
- data/lib/rouge/demos/nim +27 -0
- data/lib/rouge/demos/nix +19 -0
- data/lib/rouge/demos/objective_c +18 -0
- data/lib/rouge/demos/ocaml +12 -0
- data/lib/rouge/demos/pascal +14 -0
- data/lib/rouge/demos/perl +5 -0
- data/lib/rouge/demos/php +3 -0
- data/lib/rouge/demos/plaintext +1 -0
- data/lib/rouge/demos/plist +142 -0
- data/lib/rouge/demos/pony +17 -0
- data/lib/rouge/demos/powershell +49 -0
- data/lib/rouge/demos/praat +26 -0
- data/lib/rouge/demos/prolog +9 -0
- data/lib/rouge/demos/prometheus +9 -0
- data/lib/rouge/demos/properties +7 -0
- data/lib/rouge/demos/protobuf +5 -0
- data/lib/rouge/demos/puppet +6 -0
- data/lib/rouge/demos/python +6 -0
- data/lib/rouge/demos/q +2 -0
- data/lib/rouge/demos/qml +9 -0
- data/lib/rouge/demos/r +8 -0
- data/lib/rouge/demos/racket +24 -0
- data/lib/rouge/demos/ruby +9 -0
- data/lib/rouge/demos/rust +12 -0
- data/lib/rouge/demos/sass +3 -0
- data/lib/rouge/demos/scala +3 -0
- data/lib/rouge/demos/scheme +4 -0
- data/lib/rouge/demos/scss +5 -0
- data/lib/rouge/demos/sed +4 -0
- data/lib/rouge/demos/shell +2 -0
- data/lib/rouge/demos/sieve +10 -0
- data/lib/rouge/demos/slim +17 -0
- data/lib/rouge/demos/smalltalk +6 -0
- data/lib/rouge/demos/smarty +12 -0
- data/lib/rouge/demos/sml +4 -0
- data/lib/rouge/demos/sqf +14 -0
- data/lib/rouge/demos/sql +1 -0
- data/lib/rouge/demos/swift +5 -0
- data/lib/rouge/demos/tap +5 -0
- data/lib/rouge/demos/tcl +1 -0
- data/lib/rouge/demos/terraform +31 -0
- data/lib/rouge/demos/tex +1 -0
- data/lib/rouge/demos/toml +9 -0
- data/lib/rouge/demos/tsx +17 -0
- data/lib/rouge/demos/tulip +13 -0
- data/lib/rouge/demos/turtle +26 -0
- data/lib/rouge/demos/twig +9 -0
- data/lib/rouge/demos/typescript +1 -0
- data/lib/rouge/demos/vala +8 -0
- data/lib/rouge/demos/vb +4 -0
- data/lib/rouge/demos/verilog +27 -0
- data/lib/rouge/demos/vhdl +23 -0
- data/lib/rouge/demos/viml +14 -0
- data/lib/rouge/demos/vue +11 -0
- data/lib/rouge/demos/wollok +11 -0
- data/lib/rouge/demos/xml +2 -0
- data/lib/rouge/demos/yaml +4 -0
- data/lib/rouge/formatter.rb +76 -0
- data/lib/rouge/formatters/html.rb +38 -0
- data/lib/rouge/formatters/html_inline.rb +31 -0
- data/lib/rouge/formatters/html_legacy.rb +45 -0
- data/lib/rouge/formatters/html_linewise.rb +28 -0
- data/lib/rouge/formatters/html_pygments.rb +18 -0
- data/lib/rouge/formatters/html_table.rb +62 -0
- data/lib/rouge/formatters/null.rb +20 -0
- data/lib/rouge/formatters/terminal256.rb +181 -0
- data/lib/rouge/guesser.rb +57 -0
- data/lib/rouge/guessers/disambiguation.rb +106 -0
- data/lib/rouge/guessers/filename.rb +27 -0
- data/lib/rouge/guessers/glob_mapping.rb +45 -0
- data/lib/rouge/guessers/mimetype.rb +16 -0
- data/lib/rouge/guessers/modeline.rb +46 -0
- data/lib/rouge/guessers/source.rb +31 -0
- data/lib/rouge/guessers/util.rb +34 -0
- data/lib/rouge/lexer.rb +462 -0
- data/lib/rouge/lexers/abap.rb +240 -0
- data/lib/rouge/lexers/actionscript.rb +196 -0
- data/lib/rouge/lexers/alda.rb +43 -0
- data/lib/rouge/lexers/apache/keywords.yml +764 -0
- data/lib/rouge/lexers/apache.rb +73 -0
- data/lib/rouge/lexers/apiblueprint.rb +49 -0
- data/lib/rouge/lexers/apple_script.rb +369 -0
- data/lib/rouge/lexers/awk.rb +162 -0
- data/lib/rouge/lexers/biml.rb +43 -0
- data/lib/rouge/lexers/bsl.rb +82 -0
- data/lib/rouge/lexers/c.rb +213 -0
- data/lib/rouge/lexers/ceylon.rb +124 -0
- data/lib/rouge/lexers/cfscript.rb +154 -0
- data/lib/rouge/lexers/clojure.rb +113 -0
- data/lib/rouge/lexers/cmake.rb +207 -0
- data/lib/rouge/lexers/coffeescript.rb +175 -0
- data/lib/rouge/lexers/common_lisp.rb +346 -0
- data/lib/rouge/lexers/conf.rb +25 -0
- data/lib/rouge/lexers/console.rb +137 -0
- data/lib/rouge/lexers/coq.rb +188 -0
- data/lib/rouge/lexers/cpp.rb +79 -0
- data/lib/rouge/lexers/crystal.rb +430 -0
- data/lib/rouge/lexers/csharp.rb +115 -0
- data/lib/rouge/lexers/css.rb +274 -0
- data/lib/rouge/lexers/d.rb +177 -0
- data/lib/rouge/lexers/dart.rb +105 -0
- data/lib/rouge/lexers/diff.rb +33 -0
- data/lib/rouge/lexers/digdag.rb +70 -0
- data/lib/rouge/lexers/docker.rb +51 -0
- data/lib/rouge/lexers/dot.rb +69 -0
- data/lib/rouge/lexers/eiffel.rb +66 -0
- data/lib/rouge/lexers/elixir.rb +134 -0
- data/lib/rouge/lexers/elm.rb +90 -0
- data/lib/rouge/lexers/erb.rb +53 -0
- data/lib/rouge/lexers/erlang.rb +115 -0
- data/lib/rouge/lexers/factor.rb +303 -0
- data/lib/rouge/lexers/fortran.rb +178 -0
- data/lib/rouge/lexers/fsharp.rb +119 -0
- data/lib/rouge/lexers/gherkin/keywords.rb +16 -0
- data/lib/rouge/lexers/gherkin.rb +138 -0
- data/lib/rouge/lexers/glsl.rb +136 -0
- data/lib/rouge/lexers/go.rb +175 -0
- data/lib/rouge/lexers/gradle.rb +38 -0
- data/lib/rouge/lexers/graphql.rb +254 -0
- data/lib/rouge/lexers/groovy.rb +113 -0
- data/lib/rouge/lexers/hack.rb +49 -0
- data/lib/rouge/lexers/haml.rb +230 -0
- data/lib/rouge/lexers/handlebars.rb +80 -0
- data/lib/rouge/lexers/haskell.rb +198 -0
- data/lib/rouge/lexers/hcl.rb +163 -0
- data/lib/rouge/lexers/html.rb +140 -0
- data/lib/rouge/lexers/http.rb +81 -0
- data/lib/rouge/lexers/hylang.rb +94 -0
- data/lib/rouge/lexers/idlang.rb +312 -0
- data/lib/rouge/lexers/igorpro.rb +664 -0
- data/lib/rouge/lexers/ini.rb +54 -0
- data/lib/rouge/lexers/io.rb +69 -0
- data/lib/rouge/lexers/irb.rb +67 -0
- data/lib/rouge/lexers/java.rb +88 -0
- data/lib/rouge/lexers/javascript.rb +283 -0
- data/lib/rouge/lexers/jinja.rb +138 -0
- data/lib/rouge/lexers/json.rb +30 -0
- data/lib/rouge/lexers/json_doc.rb +24 -0
- data/lib/rouge/lexers/jsonnet.rb +152 -0
- data/lib/rouge/lexers/jsp.rb +120 -0
- data/lib/rouge/lexers/jsx.rb +104 -0
- data/lib/rouge/lexers/julia.rb +167 -0
- data/lib/rouge/lexers/kotlin.rb +127 -0
- data/lib/rouge/lexers/lasso/keywords.yml +446 -0
- data/lib/rouge/lexers/lasso.rb +215 -0
- data/lib/rouge/lexers/liquid.rb +288 -0
- data/lib/rouge/lexers/literate_coffeescript.rb +34 -0
- data/lib/rouge/lexers/literate_haskell.rb +37 -0
- data/lib/rouge/lexers/llvm.rb +81 -0
- data/lib/rouge/lexers/lua/builtins.rb +24 -0
- data/lib/rouge/lexers/lua.rb +126 -0
- data/lib/rouge/lexers/m68k.rb +144 -0
- data/lib/rouge/lexers/make.rb +113 -0
- data/lib/rouge/lexers/markdown.rb +155 -0
- data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
- data/lib/rouge/lexers/mathematica.rb +96 -0
- data/lib/rouge/lexers/matlab/builtins.rb +13 -0
- data/lib/rouge/lexers/matlab.rb +72 -0
- data/lib/rouge/lexers/moonscript.rb +115 -0
- data/lib/rouge/lexers/mosel.rb +232 -0
- data/lib/rouge/lexers/mxml.rb +69 -0
- data/lib/rouge/lexers/nasm.rb +199 -0
- data/lib/rouge/lexers/nginx.rb +72 -0
- data/lib/rouge/lexers/nim.rb +153 -0
- data/lib/rouge/lexers/nix.rb +211 -0
- data/lib/rouge/lexers/objective_c.rb +195 -0
- data/lib/rouge/lexers/ocaml.rb +101 -0
- data/lib/rouge/lexers/pascal.rb +67 -0
- data/lib/rouge/lexers/perl.rb +201 -0
- data/lib/rouge/lexers/php/builtins.rb +196 -0
- data/lib/rouge/lexers/php.rb +194 -0
- data/lib/rouge/lexers/plain_text.rb +27 -0
- data/lib/rouge/lexers/plist.rb +47 -0
- data/lib/rouge/lexers/pony.rb +94 -0
- data/lib/rouge/lexers/powershell.rb +679 -0
- data/lib/rouge/lexers/praat.rb +351 -0
- data/lib/rouge/lexers/prolog.rb +61 -0
- data/lib/rouge/lexers/prometheus.rb +123 -0
- data/lib/rouge/lexers/properties.rb +52 -0
- data/lib/rouge/lexers/protobuf.rb +71 -0
- data/lib/rouge/lexers/puppet.rb +129 -0
- data/lib/rouge/lexers/python.rb +247 -0
- data/lib/rouge/lexers/q.rb +125 -0
- data/lib/rouge/lexers/qml.rb +74 -0
- data/lib/rouge/lexers/r.rb +90 -0
- data/lib/rouge/lexers/racket.rb +545 -0
- data/lib/rouge/lexers/ruby.rb +439 -0
- data/lib/rouge/lexers/rust.rb +198 -0
- data/lib/rouge/lexers/sass/common.rb +181 -0
- data/lib/rouge/lexers/sass.rb +75 -0
- data/lib/rouge/lexers/scala.rb +143 -0
- data/lib/rouge/lexers/scheme.rb +113 -0
- data/lib/rouge/lexers/scss.rb +35 -0
- data/lib/rouge/lexers/sed.rb +173 -0
- data/lib/rouge/lexers/shell.rb +190 -0
- data/lib/rouge/lexers/sieve.rb +97 -0
- data/lib/rouge/lexers/slim.rb +229 -0
- data/lib/rouge/lexers/smalltalk.rb +117 -0
- data/lib/rouge/lexers/smarty.rb +81 -0
- data/lib/rouge/lexers/sml.rb +345 -0
- data/lib/rouge/lexers/sqf/commands.rb +15 -0
- data/lib/rouge/lexers/sqf.rb +109 -0
- data/lib/rouge/lexers/sql.rb +141 -0
- data/lib/rouge/lexers/swift.rb +182 -0
- data/lib/rouge/lexers/tap.rb +89 -0
- data/lib/rouge/lexers/tcl.rb +193 -0
- data/lib/rouge/lexers/terraform.rb +105 -0
- data/lib/rouge/lexers/tex.rb +70 -0
- data/lib/rouge/lexers/toml.rb +68 -0
- data/lib/rouge/lexers/tsx.rb +20 -0
- data/lib/rouge/lexers/tulip.rb +108 -0
- data/lib/rouge/lexers/turtle.rb +64 -0
- data/lib/rouge/lexers/twig.rb +40 -0
- data/lib/rouge/lexers/typescript/common.rb +34 -0
- data/lib/rouge/lexers/typescript.rb +23 -0
- data/lib/rouge/lexers/vala.rb +78 -0
- data/lib/rouge/lexers/vb.rb +165 -0
- data/lib/rouge/lexers/verilog.rb +165 -0
- data/lib/rouge/lexers/vhdl.rb +98 -0
- data/lib/rouge/lexers/viml/keywords.rb +14 -0
- data/lib/rouge/lexers/viml.rb +102 -0
- data/lib/rouge/lexers/vue.rb +124 -0
- data/lib/rouge/lexers/wollok.rb +104 -0
- data/lib/rouge/lexers/xml.rb +58 -0
- data/lib/rouge/lexers/yaml.rb +374 -0
- data/lib/rouge/plugins/redcarpet.rb +31 -0
- data/lib/rouge/regex_lexer.rb +442 -0
- data/lib/rouge/template_lexer.rb +21 -0
- data/lib/rouge/text_analyzer.rb +50 -0
- data/lib/rouge/theme.rb +214 -0
- data/lib/rouge/themes/base16.rb +131 -0
- data/lib/rouge/themes/colorful.rb +68 -0
- data/lib/rouge/themes/github.rb +72 -0
- data/lib/rouge/themes/gruvbox.rb +168 -0
- data/lib/rouge/themes/igor_pro.rb +21 -0
- data/lib/rouge/themes/molokai.rb +83 -0
- data/lib/rouge/themes/monokai.rb +93 -0
- data/lib/rouge/themes/monokai_sublime.rb +92 -0
- data/lib/rouge/themes/pastie.rb +70 -0
- data/lib/rouge/themes/thankful_eyes.rb +75 -0
- data/lib/rouge/themes/tulip.rb +70 -0
- data/lib/rouge/token.rb +183 -0
- data/lib/rouge/util.rb +102 -0
- data/lib/rouge/version.rb +8 -0
- data/lib/rouge.rb +84 -0
- data/rouge.gemspec +25 -0
- metadata +384 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require 'yaml'
|
|
5
|
+
|
|
6
|
+
module Rouge
|
|
7
|
+
module Lexers
|
|
8
|
+
class Lasso < TemplateLexer
|
|
9
|
+
title "Lasso"
|
|
10
|
+
desc "The Lasso programming language (lassosoft.com)"
|
|
11
|
+
tag 'lasso'
|
|
12
|
+
aliases 'lassoscript'
|
|
13
|
+
filenames '*.lasso', '*.lasso[89]'
|
|
14
|
+
mimetypes 'text/x-lasso', 'text/html+lasso', 'application/x-httpd-lasso'
|
|
15
|
+
|
|
16
|
+
option :start_inline, 'Whether to start inline instead of requiring <?lasso or ['
|
|
17
|
+
|
|
18
|
+
def self.detect?(text)
|
|
19
|
+
return true if text.shebang?('lasso9')
|
|
20
|
+
return true if text =~ /\A.*?<\?(lasso(script)?|=)/
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def initialize(*)
|
|
24
|
+
super
|
|
25
|
+
|
|
26
|
+
@start_inline = bool_option(:start_inline)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def start_inline?
|
|
30
|
+
@start_inline
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
start do
|
|
34
|
+
push :lasso if start_inline?
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
class << self
|
|
38
|
+
attr_reader :keywords
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Load Lasso keywords from separate YML file
|
|
42
|
+
@keywords = ::YAML.load_file(Pathname.new(__FILE__).dirname.join('lasso/keywords.yml')).tap do |h|
|
|
43
|
+
h.each do |k,v|
|
|
44
|
+
h[k] = Set.new v
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
id = /[a-z_][\w.]*/i
|
|
49
|
+
|
|
50
|
+
state :root do
|
|
51
|
+
rule /^#![ \S]+lasso9\b/, Comment::Preproc, :lasso
|
|
52
|
+
rule(/(?=\[|<)/) { push :delimiters }
|
|
53
|
+
rule /\s+/, Text::Whitespace
|
|
54
|
+
rule(//) { push :delimiters; push :lassofile }
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
state :delimiters do
|
|
58
|
+
rule /\[no_square_brackets\]/, Comment::Preproc, :nosquarebrackets
|
|
59
|
+
rule /\[noprocess\]/, Comment::Preproc, :noprocess
|
|
60
|
+
rule /\[/, Comment::Preproc, :squarebrackets
|
|
61
|
+
rule /<\?(lasso(script)?|=)/i, Comment::Preproc, :anglebrackets
|
|
62
|
+
rule(/([^\[<]|<!--.*?-->|<(script|style).*?\2>|<(?!\?(lasso(script)?|=)))+/im) { delegate parent }
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
state :nosquarebrackets do
|
|
66
|
+
rule /\[noprocess\]/, Comment::Preproc, :noprocess
|
|
67
|
+
rule /<\?(lasso(script)?|=)/i, Comment::Preproc, :anglebrackets
|
|
68
|
+
rule(/([^\[<]|<!--.*?-->|<(script|style).*?\2>|<(?!\?(lasso(script)?|=))|\[(?!noprocess))+/im) { delegate parent }
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
state :noprocess do
|
|
72
|
+
rule %r(\[/noprocess\]), Comment::Preproc, :pop!
|
|
73
|
+
rule(%r(([^\[]|\[(?!/noprocess))+)i) { delegate parent }
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
state :squarebrackets do
|
|
77
|
+
rule /\]/, Comment::Preproc, :pop!
|
|
78
|
+
mixin :lasso
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
state :anglebrackets do
|
|
82
|
+
rule /\?>/, Comment::Preproc, :pop!
|
|
83
|
+
mixin :lasso
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
state :lassofile do
|
|
87
|
+
rule /\]|\?>/, Comment::Preproc, :pop!
|
|
88
|
+
mixin :lasso
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
state :whitespacecomments do
|
|
92
|
+
rule /\s+/, Text
|
|
93
|
+
rule %r(//.*?\n), Comment::Single
|
|
94
|
+
rule %r(/\*\*!.*?\*/)m, Comment::Doc
|
|
95
|
+
rule %r(/\*.*?\*/)m, Comment::Multiline
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
state :lasso do
|
|
99
|
+
mixin :whitespacecomments
|
|
100
|
+
|
|
101
|
+
# literals
|
|
102
|
+
rule /\d*\.\d+(e[+-]?\d+)?/i, Num::Float
|
|
103
|
+
rule /0x[\da-f]+/i, Num::Hex
|
|
104
|
+
rule /\d+/, Num::Integer
|
|
105
|
+
rule /(infinity|NaN)\b/i, Num
|
|
106
|
+
rule /'[^'\\]*(\\.[^'\\]*)*'/m, Str::Single
|
|
107
|
+
rule /"[^"\\]*(\\.[^"\\]*)*"/m, Str::Double
|
|
108
|
+
rule /`[^`]*`/m, Str::Backtick
|
|
109
|
+
|
|
110
|
+
# names
|
|
111
|
+
rule /\$#{id}/, Name::Variable
|
|
112
|
+
rule /#(#{id}|\d+\b)/, Name::Variable::Instance
|
|
113
|
+
rule /(\.\s*)('#{id}')/ do
|
|
114
|
+
groups Name::Builtin::Pseudo, Name::Variable::Class
|
|
115
|
+
end
|
|
116
|
+
rule /(self)(\s*->\s*)('#{id}')/i do
|
|
117
|
+
groups Name::Builtin::Pseudo, Operator, Name::Variable::Class
|
|
118
|
+
end
|
|
119
|
+
rule /(\.\.?\s*)(#{id}(=(?!=))?)/ do
|
|
120
|
+
groups Name::Builtin::Pseudo, Name::Other
|
|
121
|
+
end
|
|
122
|
+
rule /(->\\?\s*|&\s*)(#{id}(=(?!=))?)/ do
|
|
123
|
+
groups Operator, Name::Other
|
|
124
|
+
end
|
|
125
|
+
rule /(?<!->)(self|inherited|currentcapture|givenblock)\b/i, Name::Builtin::Pseudo
|
|
126
|
+
rule /-(?!infinity)#{id}/i, Name::Attribute
|
|
127
|
+
rule /::\s*#{id}/, Name::Label
|
|
128
|
+
rule /error_((code|msg)_\w+|adderror|columnrestriction|databaseconnectionunavailable|databasetimeout|deleteerror|fieldrestriction|filenotfound|invaliddatabase|invalidpassword|invalidusername|modulenotfound|noerror|nopermission|outofmemory|reqcolumnmissing|reqfieldmissing|requiredcolumnmissing|requiredfieldmissing|updateerror)/i, Name::Exception
|
|
129
|
+
|
|
130
|
+
# definitions
|
|
131
|
+
rule /(define)(\s+)(#{id})(\s*=>\s*)(type|trait|thread)\b/i do
|
|
132
|
+
groups Keyword::Declaration, Text, Name::Class, Operator, Keyword
|
|
133
|
+
end
|
|
134
|
+
rule %r((define)(\s+)(#{id})(\s*->\s*)(#{id}=?|[-+*/%]))i do
|
|
135
|
+
groups Keyword::Declaration, Text, Name::Class, Operator, Name::Function
|
|
136
|
+
push :signature
|
|
137
|
+
end
|
|
138
|
+
rule /(define)(\s+)(#{id})/i do
|
|
139
|
+
groups Keyword::Declaration, Text, Name::Function
|
|
140
|
+
push :signature
|
|
141
|
+
end
|
|
142
|
+
rule %r((public|protected|private|provide)(\s+)((#{id}=?|[-+*/%])(?=\s*\()))i do
|
|
143
|
+
groups Keyword, Text, Name::Function
|
|
144
|
+
push :signature
|
|
145
|
+
end
|
|
146
|
+
rule /(public|protected|private|provide)(\s+)(#{id})/i do
|
|
147
|
+
groups Keyword, Text, Name::Function
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
# keywords
|
|
151
|
+
rule /(true|false|none|minimal|full|all|void)\b/i, Keyword::Constant
|
|
152
|
+
rule /(local|var|variable|global|data(?=\s))\b/i, Keyword::Declaration
|
|
153
|
+
rule /(array|date|decimal|duration|integer|map|pair|string|tag|xml|null|boolean|bytes|keyword|list|locale|queue|set|stack|staticarray)\b/i, Keyword::Type
|
|
154
|
+
rule /(#{id})(\s+)(in)\b/i do
|
|
155
|
+
groups Name, Text, Keyword
|
|
156
|
+
end
|
|
157
|
+
rule /(let|into)(\s+)(#{id})/i do
|
|
158
|
+
groups Keyword, Text, Name
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
# other
|
|
162
|
+
rule /,/, Punctuation, :commamember
|
|
163
|
+
rule /(and|or|not)\b/i, Operator::Word
|
|
164
|
+
rule /(#{id})(\s*::\s*#{id})?(\s*=(?!=|>))/ do
|
|
165
|
+
groups Name, Name::Label, Operator
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
rule %r((/?)([\w.]+)) do |m|
|
|
169
|
+
name = m[2].downcase
|
|
170
|
+
|
|
171
|
+
if m[1] != ''
|
|
172
|
+
token Punctuation, m[1]
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
if name == 'namespace_using'
|
|
176
|
+
token Keyword::Namespace, m[2]
|
|
177
|
+
elsif self.class.keywords[:keywords].include? name
|
|
178
|
+
token Keyword, m[2]
|
|
179
|
+
elsif self.class.keywords[:types_traits].include? name
|
|
180
|
+
token Name::Builtin, m[2]
|
|
181
|
+
else
|
|
182
|
+
token Name::Other, m[2]
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
rule /(=)(n?bw|n?ew|n?cn|lte?|gte?|n?eq|n?rx|ft)\b/i do
|
|
187
|
+
groups Operator, Operator::Word
|
|
188
|
+
end
|
|
189
|
+
rule %r(:=|[-+*/%=<>&|!?\\]+), Operator
|
|
190
|
+
rule /[{}():;,@^]/, Punctuation
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
state :signature do
|
|
194
|
+
rule /\=>/, Operator, :pop!
|
|
195
|
+
rule /\)/, Punctuation, :pop!
|
|
196
|
+
rule /[(,]/, Punctuation, :parameter
|
|
197
|
+
mixin :lasso
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
state :parameter do
|
|
201
|
+
rule /\)/, Punctuation, :pop!
|
|
202
|
+
rule /-?#{id}/, Name::Attribute, :pop!
|
|
203
|
+
rule /\.\.\./, Name::Builtin::Pseudo
|
|
204
|
+
mixin :lasso
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
state :commamember do
|
|
208
|
+
rule %r((#{id}=?|[-+*/%])(?=\s*(\(([^()]*\([^()]*\))*[^\)]*\)\s*)?(::[\w.\s]+)?=>)), Name::Function, :signature
|
|
209
|
+
mixin :whitespacecomments
|
|
210
|
+
rule //, Text, :pop!
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
end
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Liquid < RegexLexer
|
|
7
|
+
title "Liquid"
|
|
8
|
+
desc 'Liquid is a templating engine for Ruby (liquidmarkup.org)'
|
|
9
|
+
tag 'liquid'
|
|
10
|
+
filenames '*.liquid'
|
|
11
|
+
|
|
12
|
+
state :root do
|
|
13
|
+
rule /[^\{]+/, Text
|
|
14
|
+
|
|
15
|
+
rule /(\{%)(\s*)/ do
|
|
16
|
+
groups Punctuation, Text::Whitespace
|
|
17
|
+
push :tag_or_block
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
rule /(\{\{)(\s*)/ do
|
|
21
|
+
groups Punctuation, Text::Whitespace
|
|
22
|
+
push :output
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
rule /\{/, Text
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
state :tag_or_block do
|
|
29
|
+
# builtin logic blocks
|
|
30
|
+
rule /(if|unless|elsif|case)(?=\s+)/, Keyword::Reserved, :condition
|
|
31
|
+
|
|
32
|
+
rule /(when)(\s+)/ do
|
|
33
|
+
groups Keyword::Reserved, Text::Whitespace
|
|
34
|
+
push :when
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
rule /(else)(\s*)(%\})/ do
|
|
38
|
+
groups Keyword::Reserved, Text::Whitespace, Punctuation
|
|
39
|
+
pop!
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# other builtin blocks
|
|
43
|
+
rule /(capture)(\s+)([^\s%]+)(\s*)(%\})/ do
|
|
44
|
+
groups Name::Tag, Text::Whitespace, Name::Attribute, Text::Whitespace, Punctuation
|
|
45
|
+
pop!
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
rule /(comment)(\s*)(%\})/ do
|
|
49
|
+
groups Name::Tag, Text::Whitespace, Punctuation
|
|
50
|
+
push :comment
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
rule /(raw)(\s*)(%\})/ do
|
|
54
|
+
groups Name::Tag, Text::Whitespace, Punctuation
|
|
55
|
+
push :raw
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
rule /assign/, Name::Tag, :assign
|
|
59
|
+
rule /include/, Name::Tag, :include
|
|
60
|
+
|
|
61
|
+
# end of block
|
|
62
|
+
rule /(end(case|unless|if))(\s*)(%\})/ do
|
|
63
|
+
groups Keyword::Reserved, nil, Text::Whitespace, Punctuation
|
|
64
|
+
pop!
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
rule /(end([^\s%]+))(\s*)(%\})/ do
|
|
68
|
+
groups Name::Tag, nil, Text::Whitespace, Punctuation
|
|
69
|
+
pop!
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# builtin tags
|
|
73
|
+
rule /(cycle)(\s+)(([^\s:]*)(:))?(\s*)/ do |m|
|
|
74
|
+
token Name::Tag, m[1]
|
|
75
|
+
token Text::Whitespace, m[2]
|
|
76
|
+
|
|
77
|
+
if m[4] =~ /'[^']*'/
|
|
78
|
+
token Str::Single, m[4]
|
|
79
|
+
elsif m[4] =~ /"[^"]*"/
|
|
80
|
+
token Str::Double, m[4]
|
|
81
|
+
else
|
|
82
|
+
token Name::Attribute, m[4]
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
token Punctuation, m[5]
|
|
86
|
+
token Text::Whitespace, m[6]
|
|
87
|
+
|
|
88
|
+
push :variable_tag_markup
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# other tags or blocks
|
|
92
|
+
rule /([^\s%]+)(\s*)/ do
|
|
93
|
+
groups Name::Tag, Text::Whitespace
|
|
94
|
+
push :tag_markup
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
state :output do
|
|
99
|
+
mixin :whitespace
|
|
100
|
+
mixin :generic
|
|
101
|
+
|
|
102
|
+
rule /\}\}/, Punctuation, :pop!
|
|
103
|
+
rule /\|/, Punctuation, :filters
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
state :filters do
|
|
107
|
+
mixin :whitespace
|
|
108
|
+
|
|
109
|
+
rule(/\}\}/) { token Punctuation; reset_stack }
|
|
110
|
+
|
|
111
|
+
rule /([^\s\|:]+)(:?)(\s*)/ do
|
|
112
|
+
groups Name::Function, Punctuation, Text::Whitespace
|
|
113
|
+
push :filter_markup
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
state :filter_markup do
|
|
118
|
+
rule /\|/, Punctuation, :pop!
|
|
119
|
+
|
|
120
|
+
mixin :end_of_tag
|
|
121
|
+
mixin :end_of_block
|
|
122
|
+
mixin :default_param_markup
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
state :condition do
|
|
126
|
+
mixin :end_of_block
|
|
127
|
+
mixin :whitespace
|
|
128
|
+
|
|
129
|
+
rule /([=!><]=?)/, Operator
|
|
130
|
+
|
|
131
|
+
rule /\b((!)|(not\b))/ do
|
|
132
|
+
groups nil, Operator, Operator::Word
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
rule /(contains)/, Operator::Word
|
|
136
|
+
|
|
137
|
+
mixin :generic
|
|
138
|
+
mixin :whitespace
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
state :when do
|
|
142
|
+
mixin :end_of_block
|
|
143
|
+
mixin :whitespace
|
|
144
|
+
mixin :generic
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
state :operator do
|
|
148
|
+
rule /(\s*)((=|!|>|<)=?)(\s*)/ do
|
|
149
|
+
groups Text::Whitespace, Operator, nil, Text::Whitespace
|
|
150
|
+
pop!
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
rule /(\s*)(\bcontains\b)(\s*)/ do
|
|
154
|
+
groups Text::Whitespace, Operator::Word, Text::Whitespace
|
|
155
|
+
pop!
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
state :end_of_tag do
|
|
160
|
+
rule(/\}\}/) { token Punctuation; reset_stack }
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
state :end_of_block do
|
|
164
|
+
rule(/%\}/) { token Punctuation; reset_stack }
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
# states for unknown markup
|
|
168
|
+
state :param_markup do
|
|
169
|
+
mixin :whitespace
|
|
170
|
+
mixin :string
|
|
171
|
+
|
|
172
|
+
rule /([^\s=:]+)(\s*)(=|:)/ do
|
|
173
|
+
groups Name::Attribute, Text::Whitespace, Operator
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
rule /(\{\{)(\s*)([^\s\}])(\s*)(\}\})/ do
|
|
177
|
+
groups Punctuation, Text::Whitespace, nil, Text::Whitespace, Punctuation
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
mixin :number
|
|
181
|
+
mixin :keyword
|
|
182
|
+
|
|
183
|
+
rule /,/, Punctuation
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
state :default_param_markup do
|
|
187
|
+
mixin :param_markup
|
|
188
|
+
rule /./, Text
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
state :variable_param_markup do
|
|
192
|
+
mixin :param_markup
|
|
193
|
+
mixin :variable
|
|
194
|
+
rule /./, Text
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
state :tag_markup do
|
|
198
|
+
mixin :end_of_block
|
|
199
|
+
mixin :default_param_markup
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
state :variable_tag_markup do
|
|
203
|
+
mixin :end_of_block
|
|
204
|
+
mixin :variable_param_markup
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
# states for different values types
|
|
208
|
+
state :keyword do
|
|
209
|
+
rule /\b(false|true)\b/, Keyword::Constant
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
state :variable do
|
|
213
|
+
rule /\.(?=\w)/, Punctuation
|
|
214
|
+
rule /[a-zA-Z_]\w*\??/, Name::Variable
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
state :string do
|
|
218
|
+
rule /'[^']*'/, Str::Single
|
|
219
|
+
rule /"[^"]*"/, Str::Double
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
state :number do
|
|
223
|
+
rule /\d+\.\d+/, Num::Float
|
|
224
|
+
rule /\d+/, Num::Integer
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
state :array_index do
|
|
228
|
+
rule /\[/, Punctuation
|
|
229
|
+
rule /\]/, Punctuation
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
state :generic do
|
|
233
|
+
mixin :array_index
|
|
234
|
+
mixin :keyword
|
|
235
|
+
mixin :string
|
|
236
|
+
mixin :variable
|
|
237
|
+
mixin :number
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
state :whitespace do
|
|
241
|
+
rule /[ \t]+/, Text::Whitespace
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
state :comment do
|
|
245
|
+
rule /(\{%)(\s*)(endcomment)(\s*)(%\})/ do
|
|
246
|
+
groups Punctuation, Text::Whitespace, Name::Tag, Text::Whitespace, Punctuation
|
|
247
|
+
reset_stack
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
rule /./, Comment
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
state :raw do
|
|
254
|
+
rule /[^\{]+/, Text
|
|
255
|
+
|
|
256
|
+
rule /(\{%)(\s*)(endraw)(\s*)(%\})/ do
|
|
257
|
+
groups Punctuation, Text::Whitespace, Name::Tag, Text::Whitespace, Punctuation
|
|
258
|
+
reset_stack
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
rule /\{/, Text
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
state :assign do
|
|
265
|
+
mixin :whitespace
|
|
266
|
+
mixin :end_of_block
|
|
267
|
+
|
|
268
|
+
rule /(\s*)(=)(\s*)/ do
|
|
269
|
+
groups Text::Whitespace, Operator, Text::Whitespace
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
rule /\|/, Punctuation, :filters
|
|
273
|
+
|
|
274
|
+
mixin :generic
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
state :include do
|
|
278
|
+
mixin :whitespace
|
|
279
|
+
|
|
280
|
+
rule /([^\.]+)(\.)(html|liquid)/ do
|
|
281
|
+
groups Name::Attribute, Punctuation, Name::Attribute
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
mixin :variable_tag_markup
|
|
285
|
+
end
|
|
286
|
+
end
|
|
287
|
+
end
|
|
288
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class LiterateCoffeescript < RegexLexer
|
|
7
|
+
tag 'literate_coffeescript'
|
|
8
|
+
title "Literate CoffeeScript"
|
|
9
|
+
desc 'Literate coffeescript'
|
|
10
|
+
aliases 'litcoffee'
|
|
11
|
+
filenames '*.litcoffee'
|
|
12
|
+
|
|
13
|
+
def markdown
|
|
14
|
+
@markdown ||= Markdown.new(options)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def coffee
|
|
18
|
+
@coffee ||= Coffeescript.new(options)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
start { markdown.reset!; coffee.reset! }
|
|
22
|
+
|
|
23
|
+
state :root do
|
|
24
|
+
rule /^( .*?\n)+/m do
|
|
25
|
+
delegate coffee
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
rule /^([ ]{0,3}(\S.*?|)\n)*/m do
|
|
29
|
+
delegate markdown
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class LiterateHaskell < RegexLexer
|
|
7
|
+
title "Literate Haskell"
|
|
8
|
+
desc 'Literate haskell'
|
|
9
|
+
tag 'literate_haskell'
|
|
10
|
+
aliases 'lithaskell', 'lhaskell', 'lhs'
|
|
11
|
+
filenames '*.lhs'
|
|
12
|
+
mimetypes 'text/x-literate-haskell'
|
|
13
|
+
|
|
14
|
+
def haskell
|
|
15
|
+
@haskell ||= Haskell.new(options)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
start { haskell.reset! }
|
|
19
|
+
|
|
20
|
+
# TODO: support TeX versions as well.
|
|
21
|
+
state :root do
|
|
22
|
+
rule /\s*?\n(?=>)/, Text, :code
|
|
23
|
+
rule /.*?\n/, Text
|
|
24
|
+
rule /.+\z/, Text
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
state :code do
|
|
28
|
+
rule /(>)( .*?(\n|\z))/ do |m|
|
|
29
|
+
token Name::Label, m[1]
|
|
30
|
+
delegate haskell, m[2]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
rule /\s*\n(?=\s*[^>])/, Text, :pop!
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class LLVM < RegexLexer
|
|
7
|
+
title "LLVM"
|
|
8
|
+
desc 'The LLVM Compiler Infrastructure (http://llvm.org/)'
|
|
9
|
+
tag 'llvm'
|
|
10
|
+
|
|
11
|
+
filenames '*.ll'
|
|
12
|
+
mimetypes 'text/x-llvm'
|
|
13
|
+
|
|
14
|
+
string = /"[^"]*?"/
|
|
15
|
+
identifier = /([-a-zA-Z$._][-a-zA-Z$._0-9]*|#{string})/
|
|
16
|
+
|
|
17
|
+
state :basic do
|
|
18
|
+
rule /;.*?$/, Comment::Single
|
|
19
|
+
rule /\s+/, Text
|
|
20
|
+
|
|
21
|
+
rule /#{identifier}\s*:/, Name::Label
|
|
22
|
+
|
|
23
|
+
rule /@(#{identifier}|\d+)/, Name::Variable::Global
|
|
24
|
+
rule /(%|!)#{identifier}/, Name::Variable
|
|
25
|
+
rule /(%|!)\d+/, Name::Variable
|
|
26
|
+
|
|
27
|
+
rule /c?#{string}/, Str
|
|
28
|
+
|
|
29
|
+
rule /0[xX][a-fA-F0-9]+/, Num
|
|
30
|
+
rule /-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/, Num
|
|
31
|
+
|
|
32
|
+
rule /[=<>{}\[\]()*.,!]|x/, Punctuation
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
builtin_types = %w(
|
|
36
|
+
void float double half x86_fp80 x86mmx fp128 ppc_fp128 label metadata
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
state :types do
|
|
40
|
+
rule /i[1-9]\d*/, Keyword::Type
|
|
41
|
+
rule /#{builtin_types.join('|')}/, Keyword::Type
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
builtin_keywords = %w(
|
|
45
|
+
begin end true false declare define global constant personality private
|
|
46
|
+
landingpad linker_private internal available_externally linkonce_odr
|
|
47
|
+
linkonce weak weak_odr appending dllimport dllexport common default
|
|
48
|
+
hidden protected extern_weak external thread_local zeroinitializer
|
|
49
|
+
undef null to tail target triple datalayout volatile nuw nsw nnan ninf
|
|
50
|
+
nsz arcp fast exact inbounds align addrspace section alias module asm
|
|
51
|
+
sideeffect gc dbg ccc fastcc coldcc x86_stdcallcc x86_fastcallcc
|
|
52
|
+
arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel cc
|
|
53
|
+
c signext zeroext inreg sret nounwind noreturn noalias nocapture byval
|
|
54
|
+
nest readnone readonly inlinehint noinline alwaysinline optsize ssp
|
|
55
|
+
sspreq noredzone noimplicitfloat naked type opaque eq ne slt sgt sle
|
|
56
|
+
sge ult ugt ule uge oeq one olt ogt ole oge ord uno unnamed_addr ueq
|
|
57
|
+
une uwtable x
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
builtin_instructions = %w(
|
|
61
|
+
add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr
|
|
62
|
+
and or xor icmp fcmp phi call catch trunc zext sext fptrunc fpext
|
|
63
|
+
uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast select va_arg ret
|
|
64
|
+
br switch invoke unwind unreachable malloc alloca free load store
|
|
65
|
+
getelementptr extractelement insertelement shufflevector getresult
|
|
66
|
+
extractvalue insertvalue cleanup resume
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
state :keywords do
|
|
70
|
+
rule /#{builtin_instructions.join('|')}/, Keyword
|
|
71
|
+
rule /#{builtin_keywords.join('|')}/, Keyword
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
state :root do
|
|
75
|
+
mixin :basic
|
|
76
|
+
mixin :keywords
|
|
77
|
+
mixin :types
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# automatically generated by `rake builtins:lua`
|
|
5
|
+
module Rouge
|
|
6
|
+
module Lexers
|
|
7
|
+
class Lua
|
|
8
|
+
def self.builtins
|
|
9
|
+
@builtins ||= {}.tap do |b|
|
|
10
|
+
b["basic"] = Set.new %w(_G _VERSION assert collectgarbage dofile error getmetatable ipairs load loadfile next pairs pcall print rawequal rawget rawlen rawset select setmetatable tonumber tostring type xpcall file:close file:flush file:lines file:read file:seek file:setvbuf file:write LUA_CPATH LUA_CPATH_5_2 LUA_INIT LUA_INIT_5_2 LUA_PATH LUA_PATH_5_2 luaopen_base luaopen_bit32 luaopen_coroutine luaopen_debug luaopen_io luaopen_math luaopen_os luaopen_package luaopen_string luaopen_table LUA_ERRERR LUA_ERRFILE LUA_ERRGCMM LUA_ERRMEM LUA_ERRRUN LUA_ERRSYNTAX LUA_HOOKCALL LUA_HOOKCOUNT LUA_HOOKLINE LUA_HOOKRET LUA_HOOKTAILCALL LUA_MASKCALL LUA_MASKCOUNT LUA_MASKLINE LUA_MASKRET LUA_MINSTACK LUA_MULTRET LUA_NOREF LUA_OK LUA_OPADD LUA_OPDIV LUA_OPEQ LUA_OPLE LUA_OPLT LUA_OPMOD LUA_OPMUL LUA_OPPOW LUA_OPSUB LUA_OPUNM LUA_REFNIL LUA_REGISTRYINDEX LUA_RIDX_GLOBALS LUA_RIDX_MAINTHREAD LUA_TBOOLEAN LUA_TFUNCTION LUA_TLIGHTUSERDATA LUA_TNIL LUA_TNONE LUA_TNUMBER LUA_TSTRING LUA_TTABLE LUA_TTHREAD LUA_TUSERDATA LUA_USE_APICHECK LUA_YIELD LUAL_BUFFERSIZE)
|
|
11
|
+
b["modules"] = Set.new %w(require package.config package.cpath package.loaded package.loadlib package.path package.preload package.searchers package.searchpath)
|
|
12
|
+
b["bit32"] = Set.new %w(bit32.arshift bit32.band bit32.bnot bit32.bor bit32.btest bit32.bxor bit32.extract bit32.lrotate bit32.lshift bit32.replace bit32.rrotate bit32.rshift)
|
|
13
|
+
b["coroutine"] = Set.new %w(coroutine.create coroutine.resume coroutine.running coroutine.status coroutine.wrap coroutine.yield)
|
|
14
|
+
b["debug"] = Set.new %w(debug.debug debug.getuservalue debug.gethook debug.getinfo debug.getlocal debug.getmetatable debug.getregistry debug.getupvalue debug.setuservalue debug.sethook debug.setlocal debug.setmetatable debug.setupvalue debug.traceback debug.upvalueid debug.upvaluejoin)
|
|
15
|
+
b["io"] = Set.new %w(io.close io.flush io.input io.lines io.open io.output io.popen io.read io.stderr io.stdin io.stdout io.tmpfile io.type io.write)
|
|
16
|
+
b["math"] = Set.new %w(math.abs math.acos math.asin math.atan math.atan2 math.ceil math.cos math.cosh math.deg math.exp math.floor math.fmod math.frexp math.huge math.ldexp math.log math.max math.min math.modf math.pi math.pow math.rad math.random math.randomseed math.sin math.sinh math.sqrt math.tan math.tanh)
|
|
17
|
+
b["os"] = Set.new %w(os.clock os.date os.difftime os.execute os.exit os.getenv os.remove os.rename os.setlocale os.time os.tmpname)
|
|
18
|
+
b["string"] = Set.new %w(string.byte string.char string.dump string.find string.format string.gmatch string.gsub string.len string.lower string.match string.rep string.reverse string.sub string.upper)
|
|
19
|
+
b["table"] = Set.new %w(table.concat table.insert table.pack table.remove table.sort table.unpack)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|