rouge 3.2.0 → 3.18.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 +5 -5
- data/Gemfile +17 -3
- data/bin/rougify +1 -0
- data/lib/rouge.rb +67 -43
- data/lib/rouge/cli.rb +84 -17
- data/lib/rouge/demos/ada +26 -0
- data/lib/rouge/demos/apex +9 -0
- data/lib/rouge/demos/armasm +12 -0
- data/lib/rouge/demos/batchfile +3 -0
- data/lib/rouge/demos/bbcbasic +6 -0
- data/lib/rouge/demos/bpf +7 -0
- data/lib/rouge/demos/brainfuck +5 -0
- data/lib/rouge/demos/clean +6 -0
- data/lib/rouge/demos/cmhg +8 -0
- data/lib/rouge/demos/csvs +8 -0
- data/lib/rouge/demos/cuda +11 -0
- data/lib/rouge/demos/cypher +5 -0
- data/lib/rouge/demos/cython +6 -0
- data/lib/rouge/demos/datastudio +21 -0
- data/lib/rouge/demos/ecl +18 -0
- data/lib/rouge/demos/eex +1 -0
- data/lib/rouge/demos/epp +4 -0
- data/lib/rouge/demos/escape +3 -0
- data/lib/rouge/demos/freefem +16 -0
- data/lib/rouge/demos/gdscript +18 -0
- data/lib/rouge/demos/ghc-cmm +23 -0
- data/lib/rouge/demos/ghc-core +26 -0
- data/lib/rouge/demos/haxe +5 -0
- data/lib/rouge/demos/hocon +8 -0
- data/lib/rouge/demos/hql +5 -0
- data/lib/rouge/demos/isbl +4 -0
- data/lib/rouge/demos/jsl +3 -0
- data/lib/rouge/demos/jsp +29 -0
- data/lib/rouge/demos/liquid +0 -1
- data/lib/rouge/demos/lustre +6 -0
- data/lib/rouge/demos/lutin +18 -0
- data/lib/rouge/demos/m68k +16 -0
- data/lib/rouge/demos/magik +6 -0
- data/lib/rouge/demos/mason +22 -0
- data/lib/rouge/demos/mathematica +8 -0
- data/lib/rouge/demos/minizinc +23 -0
- data/lib/rouge/demos/msgtrans +4 -0
- data/lib/rouge/demos/nasm +6 -6
- data/lib/rouge/demos/nesasm +11 -0
- data/lib/rouge/demos/objective_cpp +17 -0
- data/lib/rouge/demos/openedge +4 -0
- data/lib/rouge/demos/opentype_feature_file +6 -0
- data/lib/rouge/demos/plist +1 -132
- data/lib/rouge/demos/powershell +12 -48
- data/lib/rouge/demos/q +6 -0
- data/lib/rouge/demos/reasonml +12 -0
- data/lib/rouge/demos/rego +8 -0
- data/lib/rouge/demos/robot_framework +27 -0
- data/lib/rouge/demos/sas +13 -0
- data/lib/rouge/demos/slice +10 -0
- data/lib/rouge/demos/solidity +13 -0
- data/lib/rouge/demos/sparql +6 -0
- data/lib/rouge/demos/sqf +14 -0
- data/lib/rouge/demos/supercollider +11 -0
- data/lib/rouge/demos/terraform +0 -15
- data/lib/rouge/demos/ttcn3 +6 -0
- data/lib/rouge/demos/vcl +12 -0
- data/lib/rouge/demos/xojo +14 -0
- data/lib/rouge/demos/xpath +2 -0
- data/lib/rouge/demos/xquery +22 -0
- data/lib/rouge/demos/yang +17 -0
- data/lib/rouge/formatter.rb +39 -2
- data/lib/rouge/formatters/html.rb +21 -2
- data/lib/rouge/formatters/html_inline.rb +1 -0
- data/lib/rouge/formatters/html_legacy.rb +1 -0
- data/lib/rouge/formatters/html_line_table.rb +53 -0
- data/lib/rouge/formatters/html_linewise.rb +7 -11
- data/lib/rouge/formatters/html_pygments.rb +2 -0
- data/lib/rouge/formatters/html_table.rb +21 -31
- data/lib/rouge/formatters/null.rb +1 -0
- data/lib/rouge/formatters/terminal256.rb +23 -5
- data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
- data/lib/rouge/formatters/tex.rb +92 -0
- data/lib/rouge/guesser.rb +2 -0
- data/lib/rouge/guessers/disambiguation.rb +35 -0
- data/lib/rouge/guessers/filename.rb +2 -0
- data/lib/rouge/guessers/glob_mapping.rb +3 -1
- data/lib/rouge/guessers/mimetype.rb +2 -0
- data/lib/rouge/guessers/modeline.rb +3 -1
- data/lib/rouge/guessers/source.rb +3 -1
- data/lib/rouge/guessers/util.rb +2 -0
- data/lib/rouge/lexer.rb +71 -15
- data/lib/rouge/lexers/abap.rb +13 -11
- data/lib/rouge/lexers/actionscript.rb +35 -34
- data/lib/rouge/lexers/ada.rb +162 -0
- data/lib/rouge/lexers/apache.rb +13 -15
- data/lib/rouge/lexers/apache/keywords.rb +15 -0
- data/lib/rouge/lexers/apex.rb +126 -0
- data/lib/rouge/lexers/apiblueprint.rb +2 -0
- data/lib/rouge/lexers/apple_script.rb +17 -14
- data/lib/rouge/lexers/armasm.rb +145 -0
- data/lib/rouge/lexers/awk.rb +26 -25
- data/lib/rouge/lexers/batchfile.rb +164 -0
- data/lib/rouge/lexers/bbcbasic.rb +112 -0
- data/lib/rouge/lexers/biml.rb +6 -4
- data/lib/rouge/lexers/bpf.rb +118 -0
- data/lib/rouge/lexers/brainfuck.rb +53 -0
- data/lib/rouge/lexers/bsl.rb +13 -12
- data/lib/rouge/lexers/c.rb +35 -57
- data/lib/rouge/lexers/ceylon.rb +7 -34
- data/lib/rouge/lexers/cfscript.rb +27 -26
- data/lib/rouge/lexers/clean.rb +156 -0
- data/lib/rouge/lexers/clojure.rb +15 -14
- data/lib/rouge/lexers/cmake.rb +16 -14
- data/lib/rouge/lexers/cmhg.rb +34 -0
- data/lib/rouge/lexers/coffeescript.rb +90 -49
- data/lib/rouge/lexers/common_lisp.rb +39 -38
- data/lib/rouge/lexers/conf.rb +7 -6
- data/lib/rouge/lexers/console.rb +92 -38
- data/lib/rouge/lexers/coq.rb +27 -23
- data/lib/rouge/lexers/cpp.rb +24 -13
- data/lib/rouge/lexers/crystal.rb +71 -70
- data/lib/rouge/lexers/csharp.rb +29 -29
- data/lib/rouge/lexers/css.rb +24 -23
- data/lib/rouge/lexers/csvs.rb +44 -0
- data/lib/rouge/lexers/cuda.rb +35 -0
- data/lib/rouge/lexers/cypher.rb +108 -0
- data/lib/rouge/lexers/cython.rb +151 -0
- data/lib/rouge/lexers/d.rb +64 -63
- data/lib/rouge/lexers/dart.rb +34 -33
- data/lib/rouge/lexers/datastudio.rb +138 -0
- data/lib/rouge/lexers/diff.rb +10 -4
- data/lib/rouge/lexers/digdag.rb +3 -1
- data/lib/rouge/lexers/docker.rb +12 -11
- data/lib/rouge/lexers/dot.rb +19 -18
- data/lib/rouge/lexers/ecl.rb +175 -0
- data/lib/rouge/lexers/eex.rb +52 -0
- data/lib/rouge/lexers/eiffel.rb +21 -20
- data/lib/rouge/lexers/elixir.rb +52 -36
- data/lib/rouge/lexers/elm.rb +30 -29
- data/lib/rouge/lexers/epp.rb +51 -0
- data/lib/rouge/lexers/erb.rb +5 -4
- data/lib/rouge/lexers/erlang.rb +1 -0
- data/lib/rouge/lexers/escape.rb +58 -0
- data/lib/rouge/lexers/factor.rb +41 -40
- data/lib/rouge/lexers/fortran.rb +34 -32
- data/lib/rouge/lexers/freefem.rb +240 -0
- data/lib/rouge/lexers/fsharp.rb +33 -31
- data/lib/rouge/lexers/gdscript.rb +171 -0
- data/lib/rouge/lexers/ghc_cmm.rb +340 -0
- data/lib/rouge/lexers/ghc_core.rb +151 -0
- data/lib/rouge/lexers/gherkin.rb +17 -14
- data/lib/rouge/lexers/gherkin/keywords.rb +2 -0
- data/lib/rouge/lexers/glsl.rb +2 -5
- data/lib/rouge/lexers/go.rb +3 -2
- data/lib/rouge/lexers/gradle.rb +1 -0
- data/lib/rouge/lexers/graphql.rb +78 -60
- data/lib/rouge/lexers/groovy.rb +24 -25
- data/lib/rouge/lexers/hack.rb +2 -1
- data/lib/rouge/lexers/haml.rb +26 -29
- data/lib/rouge/lexers/handlebars.rb +32 -20
- data/lib/rouge/lexers/haskell.rb +67 -65
- data/lib/rouge/lexers/haxe.rb +246 -0
- data/lib/rouge/lexers/hcl.rb +26 -25
- data/lib/rouge/lexers/hocon.rb +86 -0
- data/lib/rouge/lexers/hql.rb +139 -0
- data/lib/rouge/lexers/html.rb +33 -31
- data/lib/rouge/lexers/http.rb +10 -9
- data/lib/rouge/lexers/hylang.rb +15 -14
- data/lib/rouge/lexers/idlang.rb +34 -32
- data/lib/rouge/lexers/igorpro.rb +32 -31
- data/lib/rouge/lexers/ini.rb +13 -12
- data/lib/rouge/lexers/io.rb +10 -9
- data/lib/rouge/lexers/irb.rb +6 -5
- data/lib/rouge/lexers/isbl.rb +97 -0
- data/lib/rouge/lexers/isbl/builtins.rb +17 -0
- data/lib/rouge/lexers/java.rb +29 -25
- data/lib/rouge/lexers/javascript.rb +58 -61
- data/lib/rouge/lexers/jinja.rb +39 -22
- data/lib/rouge/lexers/jsl.rb +55 -0
- data/lib/rouge/lexers/json.rb +54 -11
- data/lib/rouge/lexers/json_doc.rb +8 -5
- data/lib/rouge/lexers/jsonnet.rb +19 -18
- data/lib/rouge/lexers/jsp.rb +120 -0
- data/lib/rouge/lexers/jsx.rb +18 -16
- data/lib/rouge/lexers/julia.rb +182 -58
- data/lib/rouge/lexers/kotlin.rb +78 -26
- data/lib/rouge/lexers/lasso.rb +54 -58
- data/lib/rouge/lexers/lasso/keywords.rb +14 -0
- data/lib/rouge/lexers/liquid.rb +116 -118
- data/lib/rouge/lexers/literate_coffeescript.rb +3 -2
- data/lib/rouge/lexers/literate_haskell.rb +6 -5
- data/lib/rouge/lexers/llvm.rb +66 -49
- data/lib/rouge/lexers/lua.rb +43 -4
- data/lib/rouge/lexers/lua/builtins.rb +2 -0
- data/lib/rouge/lexers/lustre.rb +79 -0
- data/lib/rouge/lexers/lutin.rb +33 -0
- data/lib/rouge/lexers/m68k.rb +143 -0
- data/lib/rouge/lexers/magik.rb +127 -0
- data/lib/rouge/lexers/make.rb +57 -34
- data/lib/rouge/lexers/markdown.rb +67 -39
- data/lib/rouge/lexers/mason.rb +110 -0
- data/lib/rouge/lexers/mathematica.rb +96 -0
- data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
- data/lib/rouge/lexers/matlab.rb +26 -17
- data/lib/rouge/lexers/matlab/builtins.rb +4 -4
- data/lib/rouge/lexers/minizinc.rb +87 -0
- data/lib/rouge/lexers/moonscript.rb +4 -3
- data/lib/rouge/lexers/mosel.rb +64 -63
- data/lib/rouge/lexers/msgtrans.rb +26 -0
- data/lib/rouge/lexers/mxml.rb +19 -18
- data/lib/rouge/lexers/nasm.rb +43 -169
- data/lib/rouge/lexers/nesasm.rb +78 -0
- data/lib/rouge/lexers/nginx.rb +15 -14
- data/lib/rouge/lexers/nim.rb +4 -2
- data/lib/rouge/lexers/nix.rb +44 -43
- data/lib/rouge/lexers/objective_c.rb +5 -178
- data/lib/rouge/lexers/objective_c/common.rb +184 -0
- data/lib/rouge/lexers/objective_cpp.rb +31 -0
- data/lib/rouge/lexers/ocaml.rb +29 -64
- data/lib/rouge/lexers/ocaml/common.rb +53 -0
- data/lib/rouge/lexers/openedge.rb +429 -0
- data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
- data/lib/rouge/lexers/pascal.rb +6 -5
- data/lib/rouge/lexers/perl.rb +102 -67
- data/lib/rouge/lexers/php.rb +91 -53
- data/lib/rouge/lexers/php/builtins.rb +183 -174
- data/lib/rouge/lexers/plain_text.rb +2 -1
- data/lib/rouge/lexers/plist.rb +16 -14
- data/lib/rouge/lexers/pony.rb +21 -20
- data/lib/rouge/lexers/powershell.rb +190 -638
- data/lib/rouge/lexers/praat.rb +76 -75
- data/lib/rouge/lexers/prolog.rb +27 -19
- data/lib/rouge/lexers/prometheus.rb +32 -30
- data/lib/rouge/lexers/properties.rb +13 -12
- data/lib/rouge/lexers/protobuf.rb +23 -22
- data/lib/rouge/lexers/puppet.rb +33 -32
- data/lib/rouge/lexers/python.rb +124 -99
- data/lib/rouge/lexers/q.rb +17 -14
- data/lib/rouge/lexers/qml.rb +13 -12
- data/lib/rouge/lexers/r.rb +13 -13
- data/lib/rouge/lexers/racket.rb +47 -22
- data/lib/rouge/lexers/reasonml.rb +65 -0
- data/lib/rouge/lexers/rego.rb +45 -0
- data/lib/rouge/lexers/robot_framework.rb +249 -0
- data/lib/rouge/lexers/ruby.rb +88 -71
- data/lib/rouge/lexers/rust.rb +45 -44
- data/lib/rouge/lexers/sas.rb +563 -0
- data/lib/rouge/lexers/sass.rb +9 -8
- data/lib/rouge/lexers/sass/common.rb +41 -40
- data/lib/rouge/lexers/scala.rb +67 -40
- data/lib/rouge/lexers/scheme.rb +19 -18
- data/lib/rouge/lexers/scss.rb +4 -3
- data/lib/rouge/lexers/sed.rb +31 -30
- data/lib/rouge/lexers/shell.rb +67 -55
- data/lib/rouge/lexers/sieve.rb +10 -9
- data/lib/rouge/lexers/slice.rb +32 -0
- data/lib/rouge/lexers/slim.rb +27 -26
- data/lib/rouge/lexers/smalltalk.rb +34 -33
- data/lib/rouge/lexers/smarty.rb +20 -19
- data/lib/rouge/lexers/sml.rb +68 -67
- data/lib/rouge/lexers/solidity.rb +185 -0
- data/lib/rouge/lexers/sparql.rb +129 -0
- data/lib/rouge/lexers/sqf.rb +109 -0
- data/lib/rouge/lexers/sqf/commands.rb +15 -0
- data/lib/rouge/lexers/sql.rb +47 -26
- data/lib/rouge/lexers/supercollider.rb +116 -0
- data/lib/rouge/lexers/swift.rb +49 -44
- data/lib/rouge/lexers/tap.rb +22 -20
- data/lib/rouge/lexers/tcl.rb +28 -27
- data/lib/rouge/lexers/terraform.rb +37 -13
- data/lib/rouge/lexers/tex.rb +20 -19
- data/lib/rouge/lexers/toml.rb +59 -20
- data/lib/rouge/lexers/tsx.rb +1 -0
- data/lib/rouge/lexers/ttcn3.rb +119 -0
- data/lib/rouge/lexers/tulip.rb +38 -36
- data/lib/rouge/lexers/turtle.rb +36 -38
- data/lib/rouge/lexers/twig.rb +1 -0
- data/lib/rouge/lexers/typescript.rb +12 -0
- data/lib/rouge/lexers/typescript/common.rb +1 -0
- data/lib/rouge/lexers/vala.rb +19 -18
- data/lib/rouge/lexers/varnish.rb +168 -0
- data/lib/rouge/lexers/vb.rb +28 -27
- data/lib/rouge/lexers/verilog.rb +27 -28
- data/lib/rouge/lexers/vhdl.rb +12 -11
- data/lib/rouge/lexers/viml.rb +15 -14
- data/lib/rouge/lexers/viml/keywords.rb +2 -0
- data/lib/rouge/lexers/vue.rb +15 -10
- data/lib/rouge/lexers/wollok.rb +27 -26
- data/lib/rouge/lexers/xml.rb +18 -21
- data/lib/rouge/lexers/xojo.rb +61 -0
- data/lib/rouge/lexers/xpath.rb +332 -0
- data/lib/rouge/lexers/xquery.rb +145 -0
- data/lib/rouge/lexers/yaml.rb +64 -61
- data/lib/rouge/lexers/yang.rb +147 -0
- data/lib/rouge/plugins/redcarpet.rb +9 -2
- data/lib/rouge/regex_lexer.rb +27 -25
- data/lib/rouge/template_lexer.rb +1 -0
- data/lib/rouge/tex_theme_renderer.rb +132 -0
- data/lib/rouge/text_analyzer.rb +1 -0
- data/lib/rouge/theme.rb +5 -0
- data/lib/rouge/themes/base16.rb +1 -0
- data/lib/rouge/themes/bw.rb +41 -0
- data/lib/rouge/themes/colorful.rb +1 -0
- data/lib/rouge/themes/github.rb +1 -0
- data/lib/rouge/themes/gruvbox.rb +1 -0
- data/lib/rouge/themes/igor_pro.rb +1 -0
- data/lib/rouge/themes/magritte.rb +78 -0
- data/lib/rouge/themes/molokai.rb +1 -0
- data/lib/rouge/themes/monokai.rb +1 -0
- data/lib/rouge/themes/monokai_sublime.rb +4 -1
- data/lib/rouge/themes/pastie.rb +2 -1
- data/lib/rouge/themes/thankful_eyes.rb +2 -1
- data/lib/rouge/themes/tulip.rb +2 -1
- data/lib/rouge/token.rb +31 -22
- data/lib/rouge/util.rb +3 -2
- data/lib/rouge/version.rb +2 -1
- data/rouge.gemspec +6 -3
- metadata +130 -8
- data/lib/rouge/lexers/apache/keywords.yml +0 -764
- data/lib/rouge/lexers/lasso/keywords.yml +0 -446
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
module Rouge
|
|
4
5
|
module Lexers
|
|
@@ -20,11 +21,11 @@ module Rouge
|
|
|
20
21
|
start { markdown.reset!; coffee.reset! }
|
|
21
22
|
|
|
22
23
|
state :root do
|
|
23
|
-
rule /^( .*?\n)+/m do
|
|
24
|
+
rule %r/^( .*?\n)+/m do
|
|
24
25
|
delegate coffee
|
|
25
26
|
end
|
|
26
27
|
|
|
27
|
-
rule /^([ ]{0,3}(\S.*?|)\n)*/m do
|
|
28
|
+
rule %r/^([ ]{0,3}(\S.*?|)\n)*/m do
|
|
28
29
|
delegate markdown
|
|
29
30
|
end
|
|
30
31
|
end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
module Rouge
|
|
4
5
|
module Lexers
|
|
@@ -18,18 +19,18 @@ module Rouge
|
|
|
18
19
|
|
|
19
20
|
# TODO: support TeX versions as well.
|
|
20
21
|
state :root do
|
|
21
|
-
rule /\s*?\n(?=>)/, Text, :code
|
|
22
|
-
rule /.*?\n/, Text
|
|
23
|
-
rule /.+\z/, Text
|
|
22
|
+
rule %r/\s*?\n(?=>)/, Text, :code
|
|
23
|
+
rule %r/.*?\n/, Text
|
|
24
|
+
rule %r/.+\z/, Text
|
|
24
25
|
end
|
|
25
26
|
|
|
26
27
|
state :code do
|
|
27
|
-
rule /(>)( .*?(\n|\z))/ do |m|
|
|
28
|
+
rule %r/(>)( .*?(\n|\z))/ do |m|
|
|
28
29
|
token Name::Label, m[1]
|
|
29
30
|
delegate haskell, m[2]
|
|
30
31
|
end
|
|
31
32
|
|
|
32
|
-
rule /\s*\n(?=\s*[^>])/, Text, :pop!
|
|
33
|
+
rule %r/\s*\n(?=\s*[^>])/, Text, :pop!
|
|
33
34
|
end
|
|
34
35
|
end
|
|
35
36
|
end
|
data/lib/rouge/lexers/llvm.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
module Rouge
|
|
4
5
|
module Lexers
|
|
@@ -13,67 +14,83 @@ module Rouge
|
|
|
13
14
|
string = /"[^"]*?"/
|
|
14
15
|
identifier = /([-a-zA-Z$._][-a-zA-Z$._0-9]*|#{string})/
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
17
|
+
def self.keywords
|
|
18
|
+
@keywords ||= Set.new %w(
|
|
19
|
+
addrspace addrspacecast alias align alignstack allocsize alwaysinline
|
|
20
|
+
appending arcp argmemonly arm_aapcs_vfpcc arm_aapcscc arm_apcscc asm
|
|
21
|
+
attributes available_externally begin builtin byval c cc ccc cold
|
|
22
|
+
coldcc common constant convergent datalayout dbg declare default
|
|
23
|
+
define dllexport dllimport end eq exact extern_weak external false
|
|
24
|
+
fast fastcc gc global hidden inaccessiblemem_or_argmemonly
|
|
25
|
+
inaccessiblememonly inbounds inlinehint inreg internal jumptable
|
|
26
|
+
landingpad linker_private linkonce linkonce_odr minsize module naked
|
|
27
|
+
ne nest ninf nnan no-jump-tables noalias nobuiltin nocapture
|
|
28
|
+
nocf_check noduplicate noimplicitfloat noinline nonlazybind norecurse
|
|
29
|
+
noredzone noredzone noreturn nounwind nsw nsz null nuw oeq oge ogt
|
|
30
|
+
ole olt one opaque optforfuzzing optnone optsize ord personality
|
|
31
|
+
private protected ptx_device ptx_kernel readnone readonly
|
|
32
|
+
returns_twice safestack sanitize_address sanitize_hwaddress
|
|
33
|
+
sanitize_memory sanitize_thread section sge sgt shadowcallstack
|
|
34
|
+
sideeffect signext sle slt speculatable speculative_load_hardening
|
|
35
|
+
sret ssp sspreq sspstrong strictfp tail target thread_local to triple
|
|
36
|
+
true type ueq uge ugt ule ult undef une unnamed_addr uno uwtable
|
|
37
|
+
volatile weak weak_odr writeonly x x86_fastcallcc x86_stdcallcc
|
|
38
|
+
zeroext zeroinitializer
|
|
39
|
+
)
|
|
40
|
+
end
|
|
27
41
|
|
|
28
|
-
|
|
29
|
-
|
|
42
|
+
def self.instructions
|
|
43
|
+
@instructions ||= Set.new %w(
|
|
44
|
+
add alloca and ashr bitcast br call catch cleanup extractelement
|
|
45
|
+
extractvalue fadd fcmp fdiv fmul fpext fptosi fptoui fptrunc free
|
|
46
|
+
frem fsub getelementptr getresult icmp insertelement insertvalue
|
|
47
|
+
inttoptr invoke load lshr malloc mul or phi ptrtoint resume ret sdiv
|
|
48
|
+
select sext shl shufflevector sitofp srem store sub switch trunc udiv
|
|
49
|
+
uitofp unreachable unwind urem va_arg xor zext
|
|
50
|
+
)
|
|
51
|
+
end
|
|
30
52
|
|
|
31
|
-
|
|
53
|
+
def self.types
|
|
54
|
+
@types ||= Set.new %w(
|
|
55
|
+
double float fp128 half label metadata ppc_fp128 void x86_fp80 x86mmx
|
|
56
|
+
)
|
|
32
57
|
end
|
|
33
58
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
59
|
+
state :basic do
|
|
60
|
+
rule %r/;.*?$/, Comment::Single
|
|
61
|
+
rule %r/\s+/, Text
|
|
37
62
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
rule
|
|
41
|
-
|
|
63
|
+
rule %r/#{identifier}\s*:/, Name::Label
|
|
64
|
+
|
|
65
|
+
rule %r/@(#{identifier}|\d+)/, Name::Variable::Global
|
|
66
|
+
rule %r/#\d+/, Name::Variable::Global
|
|
67
|
+
rule %r/(%|!)#{identifier}/, Name::Variable
|
|
68
|
+
rule %r/(%|!)\d+/, Name::Variable
|
|
42
69
|
|
|
43
|
-
|
|
44
|
-
begin end true false declare define global constant personality private
|
|
45
|
-
landingpad linker_private internal available_externally linkonce_odr
|
|
46
|
-
linkonce weak weak_odr appending dllimport dllexport common default
|
|
47
|
-
hidden protected extern_weak external thread_local zeroinitializer
|
|
48
|
-
undef null to tail target triple datalayout volatile nuw nsw nnan ninf
|
|
49
|
-
nsz arcp fast exact inbounds align addrspace section alias module asm
|
|
50
|
-
sideeffect gc dbg ccc fastcc coldcc x86_stdcallcc x86_fastcallcc
|
|
51
|
-
arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel cc
|
|
52
|
-
c signext zeroext inreg sret nounwind noreturn noalias nocapture byval
|
|
53
|
-
nest readnone readonly inlinehint noinline alwaysinline optsize ssp
|
|
54
|
-
sspreq noredzone noimplicitfloat naked type opaque eq ne slt sgt sle
|
|
55
|
-
sge ult ugt ule uge oeq one olt ogt ole oge ord uno unnamed_addr ueq
|
|
56
|
-
une uwtable x
|
|
57
|
-
)
|
|
70
|
+
rule %r/c?#{string}/, Str
|
|
58
71
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
and or xor icmp fcmp phi call catch trunc zext sext fptrunc fpext
|
|
62
|
-
uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast select va_arg ret
|
|
63
|
-
br switch invoke unwind unreachable malloc alloca free load store
|
|
64
|
-
getelementptr extractelement insertelement shufflevector getresult
|
|
65
|
-
extractvalue insertvalue cleanup resume
|
|
66
|
-
)
|
|
72
|
+
rule %r/0[xX][a-fA-F0-9]+/, Num
|
|
73
|
+
rule %r/-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/, Num
|
|
67
74
|
|
|
68
|
-
|
|
69
|
-
rule /#{builtin_instructions.join('|')}/, Keyword
|
|
70
|
-
rule /#{builtin_keywords.join('|')}/, Keyword
|
|
75
|
+
rule %r/[=<>{}\[\]()*.,!]|x/, Punctuation
|
|
71
76
|
end
|
|
72
77
|
|
|
73
78
|
state :root do
|
|
74
79
|
mixin :basic
|
|
75
|
-
|
|
76
|
-
|
|
80
|
+
|
|
81
|
+
rule %r/i[1-9]\d*/, Keyword::Type
|
|
82
|
+
|
|
83
|
+
rule %r/\w+/ do |m|
|
|
84
|
+
if self.class.types.include? m[0]
|
|
85
|
+
token Keyword::Type
|
|
86
|
+
elsif self.class.instructions.include? m[0]
|
|
87
|
+
token Keyword
|
|
88
|
+
elsif self.class.keywords.include? m[0]
|
|
89
|
+
token Keyword
|
|
90
|
+
else
|
|
91
|
+
token Error
|
|
92
|
+
end
|
|
93
|
+
end
|
|
77
94
|
end
|
|
78
95
|
end
|
|
79
96
|
end
|
data/lib/rouge/lexers/lua.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
module Rouge
|
|
4
5
|
module Lexers
|
|
@@ -24,7 +25,7 @@ module Rouge
|
|
|
24
25
|
end
|
|
25
26
|
|
|
26
27
|
def self.builtins
|
|
27
|
-
load
|
|
28
|
+
load File.join(Lexers::BASE_DIR, 'lua/builtins.rb')
|
|
28
29
|
self.builtins
|
|
29
30
|
end
|
|
30
31
|
|
|
@@ -42,7 +43,7 @@ module Rouge
|
|
|
42
43
|
state :root do
|
|
43
44
|
# lua allows a file to start with a shebang
|
|
44
45
|
rule %r(#!(.*?)$), Comment::Preproc
|
|
45
|
-
rule //, Text, :base
|
|
46
|
+
rule %r//, Text, :base
|
|
46
47
|
end
|
|
47
48
|
|
|
48
49
|
state :base do
|
|
@@ -71,7 +72,10 @@ module Rouge
|
|
|
71
72
|
|
|
72
73
|
rule %r([A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)?) do |m|
|
|
73
74
|
name = m[0]
|
|
74
|
-
if
|
|
75
|
+
if name == "gsub"
|
|
76
|
+
token Name::Builtin
|
|
77
|
+
push :gsub
|
|
78
|
+
elsif self.builtins.include?(name)
|
|
75
79
|
token Name::Builtin
|
|
76
80
|
elsif name =~ /\./
|
|
77
81
|
a, b = name.split('.', 2)
|
|
@@ -88,7 +92,7 @@ module Rouge
|
|
|
88
92
|
end
|
|
89
93
|
|
|
90
94
|
state :function_name do
|
|
91
|
-
rule /\s+/, Text
|
|
95
|
+
rule %r/\s+/, Text
|
|
92
96
|
rule %r((?:([A-Za-z_][A-Za-z0-9_]*)(\.))?([A-Za-z_][A-Za-z0-9_]*)) do
|
|
93
97
|
groups Name::Class, Punctuation, Name::Function
|
|
94
98
|
pop!
|
|
@@ -97,6 +101,41 @@ module Rouge
|
|
|
97
101
|
rule %r(\(), Punctuation, :pop!
|
|
98
102
|
end
|
|
99
103
|
|
|
104
|
+
state :gsub do
|
|
105
|
+
rule %r/\)/, Punctuation, :pop!
|
|
106
|
+
rule %r/[(,]/, Punctuation
|
|
107
|
+
rule %r/\s+/, Text
|
|
108
|
+
rule %r/"/, Str::Regex, :regex
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
state :regex do
|
|
112
|
+
rule %r(") do
|
|
113
|
+
token Str::Regex
|
|
114
|
+
goto :regex_end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
rule %r/\[\^?/, Str::Escape, :regex_group
|
|
118
|
+
rule %r/\\./, Str::Escape
|
|
119
|
+
rule %r{[(][?][:=<!]}, Str::Escape
|
|
120
|
+
rule %r/[{][\d,]+[}]/, Str::Escape
|
|
121
|
+
rule %r/[()?]/, Str::Escape
|
|
122
|
+
rule %r/./, Str::Regex
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
state :regex_end do
|
|
126
|
+
rule %r/[$]+/, Str::Regex, :pop!
|
|
127
|
+
rule(//) { pop! }
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
state :regex_group do
|
|
131
|
+
rule %r(/), Str::Escape
|
|
132
|
+
rule %r/\]/, Str::Escape, :pop!
|
|
133
|
+
rule %r/(\\)(.)/ do |m|
|
|
134
|
+
groups Str::Escape, Str::Regex
|
|
135
|
+
end
|
|
136
|
+
rule %r/./, Str::Regex
|
|
137
|
+
end
|
|
138
|
+
|
|
100
139
|
state :escape_sqs do
|
|
101
140
|
mixin :string_escape
|
|
102
141
|
mixin :sqs
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Lustre < RegexLexer
|
|
7
|
+
title "Lustre"
|
|
8
|
+
desc 'The Lustre programming language (Verimag)'
|
|
9
|
+
tag 'lustre'
|
|
10
|
+
filenames '*.lus'
|
|
11
|
+
mimetypes 'text/x-lustre'
|
|
12
|
+
|
|
13
|
+
def self.keywords
|
|
14
|
+
@keywords ||= Set.new %w(
|
|
15
|
+
extern unsafe assert const current enum function let node operator
|
|
16
|
+
returns step struct tel type var model package needs provides uses is
|
|
17
|
+
body end include merge
|
|
18
|
+
)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.word_operators
|
|
22
|
+
@word_operators ||= Set.new %w(
|
|
23
|
+
div and xor mod or not nor if then else fby pre when with
|
|
24
|
+
)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.primitives
|
|
28
|
+
@primitives ||= Set.new %w(int real bool)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
operator = %r([,!$%&*+./:<=>?@^|~#-]+)
|
|
32
|
+
id = /[a-z_][\w']*/i
|
|
33
|
+
|
|
34
|
+
state :root do
|
|
35
|
+
rule %r/\s+/m, Text
|
|
36
|
+
rule %r/false|true/, Keyword::Constant
|
|
37
|
+
rule %r(\-\-.*), Comment::Single
|
|
38
|
+
rule %r(/\*.*?\*/)m, Comment::Multiline
|
|
39
|
+
rule %r(\(\*.*?\*\))m, Comment::Multiline
|
|
40
|
+
rule id do |m|
|
|
41
|
+
match = m[0]
|
|
42
|
+
if self.class.keywords.include? match
|
|
43
|
+
token Keyword
|
|
44
|
+
elsif self.class.word_operators.include? match
|
|
45
|
+
token Operator::Word
|
|
46
|
+
elsif self.class.primitives.include? match
|
|
47
|
+
token Keyword::Type
|
|
48
|
+
else
|
|
49
|
+
token Name
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
rule %r/[(){}\[\];]+/, Punctuation
|
|
54
|
+
rule operator, Operator
|
|
55
|
+
|
|
56
|
+
rule %r/-?\d[\d_]*(.[\d_]*)?(e[+-]?\d[\d_]*)/i, Num::Float
|
|
57
|
+
rule %r/\d[\d_]*/, Num::Integer
|
|
58
|
+
|
|
59
|
+
rule %r/'(?:(\\[\\"'ntbr ])|(\\[0-9]{3})|(\\x\h{2}))'/, Str::Char
|
|
60
|
+
rule %r/'[.]'/, Str::Char
|
|
61
|
+
rule %r/"/, Str::Double, :string
|
|
62
|
+
rule %r/[~?]#{id}/, Name::Variable
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
state :string do
|
|
66
|
+
rule %r/[^\\"]+/, Str::Double
|
|
67
|
+
mixin :escape_sequence
|
|
68
|
+
rule %r/\\\n/, Str::Double
|
|
69
|
+
rule %r/"/, Str::Double, :pop!
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
state :escape_sequence do
|
|
73
|
+
rule %r/\\[\\"'ntbr]/, Str::Escape
|
|
74
|
+
rule %r/\\\d{3}/, Str::Escape
|
|
75
|
+
rule %r/\\x\h{2}/, Str::Escape
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
#
|
|
4
|
+
# adapted from lustre.rf (adapted from ocaml.rb), hence some ocaml-ism migth remains
|
|
5
|
+
module Rouge
|
|
6
|
+
module Lexers
|
|
7
|
+
load_lexer 'lustre.rb'
|
|
8
|
+
|
|
9
|
+
class Lutin < Lustre
|
|
10
|
+
title "Lutin"
|
|
11
|
+
desc 'The Lutin programming language (Verimag)'
|
|
12
|
+
tag 'lutin'
|
|
13
|
+
filenames '*.lut'
|
|
14
|
+
mimetypes 'text/x-lutin'
|
|
15
|
+
|
|
16
|
+
def self.keywords
|
|
17
|
+
@keywords ||= Set.new %w(
|
|
18
|
+
let in node extern system returns weak strong assert raise try catch
|
|
19
|
+
trap do exist erun run type ref exception include false true
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.word_operators
|
|
24
|
+
@word_operators ||= Set.new %w(
|
|
25
|
+
div and xor mod or not nor if then else pre)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.primitives
|
|
29
|
+
@primitives ||= Set.new %w(int real bool trace loop fby)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class M68k < RegexLexer
|
|
7
|
+
tag 'm68k'
|
|
8
|
+
|
|
9
|
+
title "M68k"
|
|
10
|
+
desc "Motorola 68k Assembler"
|
|
11
|
+
|
|
12
|
+
id = /[a-zA-Z_][a-zA-Z0-9_]*/
|
|
13
|
+
|
|
14
|
+
def self.keywords
|
|
15
|
+
@keywords ||= Set.new %w(
|
|
16
|
+
abcd add adda addi addq addx and andi asl asr
|
|
17
|
+
|
|
18
|
+
bcc bcs beq bge bgt bhi ble bls blt bmi bne bpl bvc bvs bhs blo
|
|
19
|
+
bchg bclr bfchg bfclr bfests bfextu bfffo bfins bfset bftst bkpt bra bse bsr btst
|
|
20
|
+
|
|
21
|
+
callm cas cas2 chk chk2 clr cmp cmpa cmpi cmpm cmp2
|
|
22
|
+
|
|
23
|
+
dbcc dbcs dbeq dbge dbgt dbhi dble dbls dblt dbmi dbne dbpl dbvc dbvs dbhs dblo
|
|
24
|
+
dbra dbf dbt divs divsl divu divul
|
|
25
|
+
|
|
26
|
+
eor eori exg ext extb
|
|
27
|
+
|
|
28
|
+
illegal jmp jsr lea link lsl lsr
|
|
29
|
+
|
|
30
|
+
move movea move16 movem movep moveq muls mulu
|
|
31
|
+
|
|
32
|
+
nbcd neg negx nop not or ori
|
|
33
|
+
|
|
34
|
+
pack pea rol ror roxl roxr rtd rtm rtr rts
|
|
35
|
+
|
|
36
|
+
sbcd
|
|
37
|
+
|
|
38
|
+
seq sne spl smi svc svs st sf sge sgt sle slt scc shi sls scs shs slo
|
|
39
|
+
sub suba subi subq subx swap
|
|
40
|
+
|
|
41
|
+
tas trap trapcc TODO trapv tst
|
|
42
|
+
|
|
43
|
+
unlk unpk eori
|
|
44
|
+
)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def self.keywords_type
|
|
48
|
+
@keywords_type ||= Set.new %w(
|
|
49
|
+
dc ds dcb
|
|
50
|
+
)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def self.reserved
|
|
54
|
+
@reserved ||= Set.new %w(
|
|
55
|
+
include incdir incbin end endf endfunc endmain endproc fpu func machine main mmu opword proc set opt section
|
|
56
|
+
rept endr
|
|
57
|
+
ifeq ifne ifgt ifge iflt ifle iif ifd ifnd ifc ifnc elseif else endc
|
|
58
|
+
even cnop fail machine
|
|
59
|
+
output radix __G2 __LK
|
|
60
|
+
list nolist plen llen ttl subttl spc page listchar format
|
|
61
|
+
equ equenv equr set reg
|
|
62
|
+
rsreset rsset offset
|
|
63
|
+
cargs
|
|
64
|
+
fequ.s fequ.d fequ.x fequ.p fequ.w fequ.l fopt
|
|
65
|
+
macro endm mexit narg
|
|
66
|
+
)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def self.builtins
|
|
70
|
+
@builtins ||=Set.new %w(
|
|
71
|
+
d0 d1 d2 d3 d4 d5 d6 d7
|
|
72
|
+
a0 a1 a2 a3 a4 a5 a6 a7 a7'
|
|
73
|
+
pc usp ssp ccr
|
|
74
|
+
)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
start { push :expr_bol }
|
|
78
|
+
|
|
79
|
+
state :expr_bol do
|
|
80
|
+
mixin :inline_whitespace
|
|
81
|
+
rule(//) { pop! }
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
state :inline_whitespace do
|
|
85
|
+
rule %r/\s+/, Text
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
state :whitespace do
|
|
89
|
+
rule %r/\n+/m, Text, :expr_bol
|
|
90
|
+
rule %r(^\*(\\.|.)*?$), Comment::Single, :expr_bol
|
|
91
|
+
rule %r(;(\\.|.)*?$), Comment::Single, :expr_bol
|
|
92
|
+
mixin :inline_whitespace
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
state :root do
|
|
96
|
+
rule(//) { push :statements }
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
state :statements do
|
|
100
|
+
mixin :whitespace
|
|
101
|
+
rule %r/"/, Str, :string
|
|
102
|
+
rule %r/#/, Name::Decorator
|
|
103
|
+
rule %r/^\.?[a-zA-Z0-9_]+:?/, Name::Label
|
|
104
|
+
rule %r/\.[bswl]\s/i, Name::Decorator
|
|
105
|
+
rule %r('(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
|
|
106
|
+
rule %r/\$[0-9a-f]+/i, Num::Hex
|
|
107
|
+
rule %r/@[0-8]+/i, Num::Oct
|
|
108
|
+
rule %r/%[01]+/i, Num::Bin
|
|
109
|
+
rule %r/\d+/i, Num::Integer
|
|
110
|
+
rule %r([*~&+=\|?:<>/-]), Operator
|
|
111
|
+
rule %r/\\./, Comment::Preproc
|
|
112
|
+
rule %r/[(),.]/, Punctuation
|
|
113
|
+
rule %r/\[[a-zA-Z0-9]*\]/, Punctuation
|
|
114
|
+
|
|
115
|
+
rule id do |m|
|
|
116
|
+
name = m[0]
|
|
117
|
+
|
|
118
|
+
if self.class.keywords.include? name.downcase
|
|
119
|
+
token Keyword
|
|
120
|
+
elsif self.class.keywords_type.include? name.downcase
|
|
121
|
+
token Keyword::Type
|
|
122
|
+
elsif self.class.reserved.include? name.downcase
|
|
123
|
+
token Keyword::Reserved
|
|
124
|
+
elsif self.class.builtins.include? name.downcase
|
|
125
|
+
token Name::Builtin
|
|
126
|
+
elsif name =~ /[a-zA-Z0-9]+/
|
|
127
|
+
token Name::Variable
|
|
128
|
+
else
|
|
129
|
+
token Name
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
state :string do
|
|
135
|
+
rule %r/"/, Str, :pop!
|
|
136
|
+
rule %r/\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
|
|
137
|
+
rule %r/[^\\"\n]+/, Str
|
|
138
|
+
rule %r/\\\n/, Str
|
|
139
|
+
rule %r/\\/, Str # stray backslash
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|