rouge 3.2.0 → 3.18.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
data/lib/rouge/lexers/q.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Rouge
|
2
4
|
module Lexers
|
3
5
|
class Q < RegexLexer
|
@@ -34,23 +36,23 @@ module Rouge
|
|
34
36
|
|
35
37
|
state :root do
|
36
38
|
# q allows a file to start with a shebang
|
37
|
-
rule /#!(.*?)$/, Comment::Preproc, :top
|
38
|
-
rule //, Text, :top
|
39
|
+
rule %r/#!(.*?)$/, Comment::Preproc, :top
|
40
|
+
rule %r//, Text, :top
|
39
41
|
end
|
40
42
|
|
41
43
|
state :top do
|
42
44
|
# indented lines at the top of the file are ignored by q
|
43
|
-
rule /^[ \t\r]+.*$/, Comment::Special
|
44
|
-
rule /\n+/, Text
|
45
|
-
rule //, Text, :base
|
45
|
+
rule %r/^[ \t\r]+.*$/, Comment::Special
|
46
|
+
rule %r/\n+/, Text
|
47
|
+
rule %r//, Text, :base
|
46
48
|
end
|
47
49
|
|
48
50
|
state :base do
|
49
|
-
rule /\n+/m, Text
|
51
|
+
rule %r/\n+/m, Text
|
50
52
|
rule(/^.\)/, Keyword::Declaration)
|
51
53
|
|
52
54
|
# Identifiers, word operators, etc.
|
53
|
-
rule /#{identifier}/ do |m|
|
55
|
+
rule %r/#{identifier}/ do |m|
|
54
56
|
if self.class.keywords.include? m[0]
|
55
57
|
token Keyword
|
56
58
|
elsif self.class.word_operators.include? m[0]
|
@@ -65,7 +67,7 @@ module Rouge
|
|
65
67
|
end
|
66
68
|
|
67
69
|
# White space and comments
|
68
|
-
rule(%r{
|
70
|
+
rule(%r{\s+/.*}, Comment::Single)
|
69
71
|
rule(/[ \t\r]+/, Text::Whitespace)
|
70
72
|
rule(%r{^/$.*?^\\$}m, Comment::Multiline)
|
71
73
|
rule(%r{^\/[^\n]*$(\n[^\S\n]+.*$)*}, Comment::Multiline)
|
@@ -100,7 +102,7 @@ module Rouge
|
|
100
102
|
rule(%r{(`:[:a-z0-9._\/]*|`(?:[a-z0-9.][:a-z0-9._]*)?)}i, Str::Symbol)
|
101
103
|
rule(/(?:<=|>=|<>|::)|[?:$%&|@._#*^\-+~,!><=]:?/, Operator)
|
102
104
|
|
103
|
-
rule /[{}\[\]();]/, Punctuation
|
105
|
+
rule %r/[{}\[\]();]/, Punctuation
|
104
106
|
|
105
107
|
# commands
|
106
108
|
rule(/\\.*\n/, Text)
|
@@ -108,14 +110,15 @@ module Rouge
|
|
108
110
|
end
|
109
111
|
|
110
112
|
state :string do
|
111
|
-
rule
|
112
|
-
rule
|
113
|
-
rule
|
114
|
-
rule
|
113
|
+
rule %r/\\"/, Str
|
114
|
+
rule %r/"/, Str, :pop!
|
115
|
+
rule %r/\\([\\nr]|[01][0-7]{2})/, Str::Escape
|
116
|
+
rule %r/[^\\"\n]+/, Str
|
117
|
+
rule %r/\\/, Str # stray backslash
|
115
118
|
end
|
116
119
|
|
117
120
|
state :bottom do
|
118
|
-
rule /.*\z/m, Comment::Multiline
|
121
|
+
rule %r/.*\z/m, Comment::Multiline
|
119
122
|
end
|
120
123
|
end
|
121
124
|
end
|
data/lib/rouge/lexers/qml.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
|
@@ -16,57 +17,57 @@ module Rouge
|
|
16
17
|
id_with_dots = /[$a-zA-Z_][a-zA-Z0-9_.]*/
|
17
18
|
|
18
19
|
prepend :root do
|
19
|
-
rule /(#{id_with_dots})(\s*)({)/ do
|
20
|
+
rule %r/(#{id_with_dots})(\s*)({)/ do
|
20
21
|
groups Keyword::Type, Text, Punctuation
|
21
22
|
push :type_block
|
22
23
|
end
|
23
|
-
rule /(#{id_with_dots})(\s+)(on)(\s+)(#{id_with_dots})(\s*)({)/ do
|
24
|
+
rule %r/(#{id_with_dots})(\s+)(on)(\s+)(#{id_with_dots})(\s*)({)/ do
|
24
25
|
groups Keyword::Type, Text, Keyword, Text, Name::Label, Text, Punctuation
|
25
26
|
push :type_block
|
26
27
|
end
|
27
28
|
|
28
|
-
rule /[{]/, Punctuation, :push
|
29
|
+
rule %r/[{]/, Punctuation, :push
|
29
30
|
end
|
30
31
|
|
31
32
|
state :type_block do
|
32
|
-
rule /(id)(\s*)(:)(\s*)(#{id_with_dots})/ do
|
33
|
+
rule %r/(id)(\s*)(:)(\s*)(#{id_with_dots})/ do
|
33
34
|
groups Name::Label, Text, Punctuation, Text, Keyword::Declaration
|
34
35
|
end
|
35
36
|
|
36
|
-
rule /(#{id_with_dots})(\s*)(:)/ do
|
37
|
+
rule %r/(#{id_with_dots})(\s*)(:)/ do
|
37
38
|
groups Name::Label, Text, Punctuation
|
38
39
|
push :expr_start
|
39
40
|
end
|
40
41
|
|
41
|
-
rule /(signal)(\s+)(#{id_with_dots})/ do
|
42
|
+
rule %r/(signal)(\s+)(#{id_with_dots})/ do
|
42
43
|
groups Keyword::Declaration, Text, Name::Label
|
43
44
|
push :signal
|
44
45
|
end
|
45
46
|
|
46
|
-
rule /(property)(\s+)(#{id_with_dots})(\s+)(#{id_with_dots})(\s*)(:?)/ do
|
47
|
+
rule %r/(property)(\s+)(#{id_with_dots})(\s+)(#{id_with_dots})(\s*)(:?)/ do
|
47
48
|
groups Keyword::Declaration, Text, Keyword::Type, Text, Name::Label, Text, Punctuation
|
48
49
|
push :expr_start
|
49
50
|
end
|
50
51
|
|
51
|
-
rule /[}]/, Punctuation, :pop!
|
52
|
+
rule %r/[}]/, Punctuation, :pop!
|
52
53
|
mixin :root
|
53
54
|
end
|
54
55
|
|
55
56
|
state :signal do
|
56
57
|
mixin :comments_and_whitespace
|
57
|
-
rule /\(/ do
|
58
|
+
rule %r/\(/ do
|
58
59
|
token Punctuation
|
59
60
|
goto :signal_args
|
60
61
|
end
|
61
|
-
rule //, Text, :pop!
|
62
|
+
rule %r//, Text, :pop!
|
62
63
|
end
|
63
64
|
|
64
65
|
state :signal_args do
|
65
66
|
mixin :comments_and_whitespace
|
66
|
-
rule /(#{id_with_dots})(\s+)(#{id_with_dots})(\s*)(,?)/ do
|
67
|
+
rule %r/(#{id_with_dots})(\s+)(#{id_with_dots})(\s*)(,?)/ do
|
67
68
|
groups Keyword::Type, Text, Name, Text, Punctuation
|
68
69
|
end
|
69
|
-
rule /\)/ , Punctuation, :pop!
|
70
|
+
rule %r/\)/ , Punctuation, :pop!
|
70
71
|
end
|
71
72
|
end
|
72
73
|
end
|
data/lib/rouge/lexers/r.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
|
@@ -48,27 +49,26 @@ module Rouge
|
|
48
49
|
end
|
49
50
|
|
50
51
|
state :root do
|
51
|
-
rule /#'.*?$/, Comment::Doc
|
52
|
-
rule /#.*?$/, Comment::Single
|
53
|
-
rule /\s+/m, Text::Whitespace
|
52
|
+
rule %r/#'.*?$/, Comment::Doc
|
53
|
+
rule %r/#.*?$/, Comment::Single
|
54
|
+
rule %r/\s+/m, Text::Whitespace
|
54
55
|
|
55
|
-
rule /`[^`]+?`/, Name
|
56
|
-
rule /'(\\.|.)*?'/m, Str::Single
|
57
|
-
rule /"(\\.|.)*?"/m, Str::Double
|
56
|
+
rule %r/`[^`]+?`/, Name
|
57
|
+
rule %r/'(\\.|.)*?'/m, Str::Single
|
58
|
+
rule %r/"(\\.|.)*?"/m, Str::Double
|
58
59
|
|
59
|
-
rule /%[^%]*?%/, Operator
|
60
|
+
rule %r/%[^%]*?%/, Operator
|
60
61
|
|
61
|
-
rule /0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?/, Num::Hex
|
62
|
-
rule /[+-]?(\d+([.]\d+)?|[.]\d+)([eE][+-]?\d+)?[Li]?/,
|
63
|
-
Num
|
62
|
+
rule %r/0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?/, Num::Hex
|
63
|
+
rule %r/[+-]?(\d+([.]\d+)?|[.]\d+)([eE][+-]?\d+)?[Li]?/, Num
|
64
64
|
|
65
65
|
# Only recognize built-in functions when they are actually used as a
|
66
66
|
# function call, i.e. followed by an opening parenthesis.
|
67
67
|
# `Name::Builtin` would be more logical, but is usually not
|
68
68
|
# highlighted specifically; thus use `Name::Function`.
|
69
|
-
rule /\b(?<!.)(#{PRIMITIVE_FUNCTIONS.join('|')})(?=\()/, Name::Function
|
69
|
+
rule %r/\b(?<!.)(#{PRIMITIVE_FUNCTIONS.join('|')})(?=\()/, Name::Function
|
70
70
|
|
71
|
-
rule /[
|
71
|
+
rule %r/(?:(?:[[:alpha:]]|[.][._[:alpha:]])[._[:alnum:]]*)|[.]/ do |m|
|
72
72
|
if KEYWORDS.include? m[0]
|
73
73
|
token Keyword
|
74
74
|
elsif KEYWORD_CONSTANTS.include? m[0]
|
@@ -80,7 +80,7 @@ module Rouge
|
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
|
-
rule /[\[\]{}();,]/, Punctuation
|
83
|
+
rule %r/[\[\]{}();,]/, Punctuation
|
84
84
|
|
85
85
|
rule %r([-<>?*+^/!=~$@:%&|]), Operator
|
86
86
|
end
|
data/lib/rouge/lexers/racket.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
2
4
|
module Rouge
|
3
5
|
module Lexers
|
4
6
|
class Racket < RegexLexer
|
@@ -485,43 +487,66 @@ module Rouge
|
|
485
487
|
|
486
488
|
state :root do
|
487
489
|
# comments
|
488
|
-
rule /;.*$/, Comment::Single
|
489
|
-
rule
|
490
|
+
rule %r/;.*$/, Comment::Single
|
491
|
+
rule %r/#!.*/, Comment::Single
|
492
|
+
rule %r/#\|/, Comment::Multiline, :block_comment
|
493
|
+
rule %r/#;/, Comment::Multiline, :sexp_comment
|
494
|
+
rule %r/\s+/m, Text
|
490
495
|
|
491
|
-
rule /[+-]inf[.][f0]/, Num::Float
|
492
|
-
rule /[+-]nan[.]0/, Num::Float
|
493
|
-
rule /[-]min[.]0/, Num::Float
|
494
|
-
rule /[+]max[.]0/, Num::Float
|
496
|
+
rule %r/[+-]inf[.][f0]/, Num::Float
|
497
|
+
rule %r/[+-]nan[.]0/, Num::Float
|
498
|
+
rule %r/[-]min[.]0/, Num::Float
|
499
|
+
rule %r/[+]max[.]0/, Num::Float
|
495
500
|
|
496
|
-
rule /-?\d+\.\d+/, Num::Float
|
497
|
-
rule /-?\d+/, Num::Integer
|
501
|
+
rule %r/-?\d+\.\d+/, Num::Float
|
502
|
+
rule %r/-?\d+/, Num::Integer
|
498
503
|
|
499
|
-
rule /#:#{id}+/, Name::Tag # keyword
|
504
|
+
rule %r/#:#{id}+/, Name::Tag # keyword
|
500
505
|
|
501
|
-
rule /#b[01]+/, Num::Bin
|
502
|
-
rule /#o[0-7]+/, Num::Oct
|
503
|
-
rule /#d[0-9]+/, Num::Integer
|
504
|
-
rule /#x[0-9a-f]+/i, Num::Hex
|
505
|
-
rule /#[ei][\d.]+/, Num::Other
|
506
|
+
rule %r/#b[01]+/, Num::Bin
|
507
|
+
rule %r/#o[0-7]+/, Num::Oct
|
508
|
+
rule %r/#d[0-9]+/, Num::Integer
|
509
|
+
rule %r/#x[0-9a-f]+/i, Num::Hex
|
510
|
+
rule %r/#[ei][\d.]+/, Num::Other
|
506
511
|
|
507
|
-
rule /"(\\\\|\\"|[^"])*"/, Str
|
508
|
-
rule /['`]#{id}/i, Str::Symbol
|
509
|
-
rule /#\\([()\/'"._!\$%& ?=+-]{1}|[a-z0-9]+)/i,
|
512
|
+
rule %r/"(\\\\|\\"|[^"])*"/, Str
|
513
|
+
rule %r/['`]#{id}/i, Str::Symbol
|
514
|
+
rule %r/#\\([()\/'"._!\$%& ?=+-]{1}|[a-z0-9]+)/i,
|
510
515
|
Str::Char
|
511
|
-
rule /#t
|
512
|
-
rule /(?:'|#|`|,@|,|\.)/, Operator
|
516
|
+
rule %r/#t(rue)?|#f(alse)?/i, Name::Constant
|
517
|
+
rule %r/(?:'|#|`|,@|,|\.)/, Operator
|
513
518
|
|
514
|
-
rule /(['#])(\s*)(\()/m do
|
519
|
+
rule %r/(['#])(\s*)(\()/m do
|
515
520
|
groups Str::Symbol, Text, Punctuation
|
516
521
|
end
|
517
522
|
|
518
523
|
# () [] {} are all permitted as like pairs
|
519
|
-
rule /\(|\[|\{/, Punctuation, :command
|
520
|
-
rule /\)|\]|\}/, Punctuation
|
524
|
+
rule %r/\(|\[|\{/, Punctuation, :command
|
525
|
+
rule %r/\)|\]|\}/, Punctuation
|
521
526
|
|
522
527
|
rule id, Name::Variable
|
523
528
|
end
|
524
529
|
|
530
|
+
state :block_comment do
|
531
|
+
rule %r/[^|#]+/, Comment::Multiline
|
532
|
+
rule %r/\|#/, Comment::Multiline, :pop!
|
533
|
+
rule %r/#\|/, Comment::Multiline, :block_comment
|
534
|
+
rule %r/[|#]/, Comment::Multiline
|
535
|
+
end
|
536
|
+
|
537
|
+
state :sexp_comment do
|
538
|
+
rule %r/[({\[]/, Comment::Multiline, :sexp_comment_inner
|
539
|
+
rule %r/"(?:\\"|[^"])*?"/, Comment::Multiline, :pop!
|
540
|
+
rule %r/[^\s]+/, Comment::Multiline, :pop!
|
541
|
+
rule(//) { pop! }
|
542
|
+
end
|
543
|
+
|
544
|
+
state :sexp_comment_inner do
|
545
|
+
rule %r/[^(){}\[\]]+/, Comment::Multiline
|
546
|
+
rule %r/[)}\]]/, Comment::Multiline, :pop!
|
547
|
+
rule %r/[({\[]/, Comment::Multiline, :sexp_comment_inner
|
548
|
+
end
|
549
|
+
|
525
550
|
state :command do
|
526
551
|
rule id, Name::Function do |m|
|
527
552
|
if self.class.keywords.include? m[0]
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Rouge
|
5
|
+
module Lexers
|
6
|
+
load_lexer 'ocaml/common.rb'
|
7
|
+
|
8
|
+
class ReasonML < OCamlCommon
|
9
|
+
title "ReasonML"
|
10
|
+
desc 'New syntax on top of OCaml ecosystem (reasonml.github.io)'
|
11
|
+
tag 'reasonml'
|
12
|
+
filenames '*.re', '*.rei'
|
13
|
+
mimetypes 'text/x-reasonml'
|
14
|
+
|
15
|
+
def self.keywords
|
16
|
+
@keywords ||= super + Set.new(%w(
|
17
|
+
switch
|
18
|
+
))
|
19
|
+
end
|
20
|
+
|
21
|
+
state :root do
|
22
|
+
rule %r/\s+/m, Text
|
23
|
+
rule %r/false|true|[(][)]|\[\]/, Name::Builtin::Pseudo
|
24
|
+
rule %r/#{@@upper_id}(?=\s*[.])/, Name::Namespace, :dotted
|
25
|
+
rule %r/`#{@@id}/, Name::Tag
|
26
|
+
rule @@upper_id, Name::Class
|
27
|
+
rule %r/[\/][*](?![\/])/, Comment, :comment
|
28
|
+
rule @@id do |m|
|
29
|
+
match = m[0]
|
30
|
+
if self.class.keywords.include? match
|
31
|
+
token Keyword
|
32
|
+
elsif self.class.word_operators.include? match
|
33
|
+
token Operator::Word
|
34
|
+
elsif self.class.primitives.include? match
|
35
|
+
token Keyword::Type
|
36
|
+
else
|
37
|
+
token Name
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
rule %r/[(){}\[\];]+/, Punctuation
|
42
|
+
rule @@operator, Operator
|
43
|
+
|
44
|
+
rule %r/-?\d[\d_]*(.[\d_]*)?(e[+-]?\d[\d_]*)/i, Num::Float
|
45
|
+
rule %r/0x\h[\h_]*/i, Num::Hex
|
46
|
+
rule %r/0o[0-7][0-7_]*/i, Num::Oct
|
47
|
+
rule %r/0b[01][01_]*/i, Num::Bin
|
48
|
+
rule %r/\d[\d_]*/, Num::Integer
|
49
|
+
|
50
|
+
rule %r/'(?:(\\[\\"'ntbr ])|(\\[0-9]{3})|(\\x\h{2}))'/, Str::Char
|
51
|
+
rule %r/'[^'\/]'/, Str::Char
|
52
|
+
rule %r/'/, Keyword
|
53
|
+
rule %r/"/, Str::Double, :string
|
54
|
+
rule %r/[~?]#{@@id}/, Name::Variable
|
55
|
+
end
|
56
|
+
|
57
|
+
state :comment do
|
58
|
+
rule %r|[^/*)]+|, Comment
|
59
|
+
rule %r|[/][*]|, Comment, :push
|
60
|
+
rule %r|[*][/]|, Comment, :pop!
|
61
|
+
rule %r|[*/]|, Comment
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Rouge
|
5
|
+
module Lexers
|
6
|
+
class Rego < RegexLexer
|
7
|
+
title "Rego"
|
8
|
+
desc "The Rego open-policy-agent (OPA) policy language (openpolicyagent.org)"
|
9
|
+
tag 'rego'
|
10
|
+
filenames '*.rego'
|
11
|
+
|
12
|
+
state :basic do
|
13
|
+
rule %r/\s+/, Text
|
14
|
+
rule %r/#.*/, Comment::Single
|
15
|
+
|
16
|
+
rule %r/[\[\](){}|.,;!]/, Punctuation
|
17
|
+
|
18
|
+
rule %r/"[^"]*"/, Str::Double
|
19
|
+
|
20
|
+
rule %r/-?\d+\.\d+([eE][+-]?\d+)?/, Num::Float
|
21
|
+
rule %r/-?\d+([eE][+-]?\d+)?/, Num
|
22
|
+
|
23
|
+
rule %r/\\u[0-9a-fA-F]{4}/, Num::Hex
|
24
|
+
rule %r/\\["\/bfnrt]/, Str::Escape
|
25
|
+
end
|
26
|
+
|
27
|
+
state :atoms do
|
28
|
+
rule %r/(true|false|null)/, Keyword::Constant
|
29
|
+
rule %r/[[:word:]]*/, Str::Symbol
|
30
|
+
end
|
31
|
+
|
32
|
+
state :operators do
|
33
|
+
rule %r/(=|!=|>=|<=|>|<|\+|-|\*|%|\/|\||&|:=)/, Operator
|
34
|
+
rule %r/(default|not|package|import|as|with|else|some)/, Operator
|
35
|
+
rule %r/[\/:?@^~]+/, Operator
|
36
|
+
end
|
37
|
+
|
38
|
+
state :root do
|
39
|
+
mixin :basic
|
40
|
+
mixin :operators
|
41
|
+
mixin :atoms
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,249 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Rouge
|
5
|
+
module Lexers
|
6
|
+
class RobotFramework < RegexLexer
|
7
|
+
tag 'robot_framework'
|
8
|
+
aliases 'robot', 'robot-framework'
|
9
|
+
|
10
|
+
title "Robot Framework"
|
11
|
+
desc 'Robot Framework is a generic open source automation testing framework (robotframework.org)'
|
12
|
+
|
13
|
+
filenames '*.robot'
|
14
|
+
mimetypes 'text/x-robot'
|
15
|
+
|
16
|
+
def initialize(opts = {})
|
17
|
+
super(opts)
|
18
|
+
@col = 0
|
19
|
+
@next = nil
|
20
|
+
@is_template = false
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.settings_with_keywords
|
24
|
+
@settings_with_keywords ||= Set.new [
|
25
|
+
"library", "resource", "setup", "teardown", "template", "suite setup",
|
26
|
+
"suite teardown", "task setup", "task teardown", "task template",
|
27
|
+
"test setup", "test teardown", "test template", "variables"
|
28
|
+
]
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.settings_with_args
|
32
|
+
@settings_with_args ||= Set.new [
|
33
|
+
"arguments", "default tags", "documentation", "force tags",
|
34
|
+
"metadata", "return", "tags", "timeout", "task timeout",
|
35
|
+
"test timeout"
|
36
|
+
]
|
37
|
+
end
|
38
|
+
|
39
|
+
id = %r/(?:\\|[^|$@&% \t\n])+(?: (?:\\.|[^|$@&% \t\n])+)*/
|
40
|
+
bdd = %r/(?:Given|When|Then|And|But) /i
|
41
|
+
sep = %r/ +\| +|[ ]{2,}|\t+/
|
42
|
+
|
43
|
+
start do
|
44
|
+
push :prior_text
|
45
|
+
end
|
46
|
+
|
47
|
+
state :prior_text do
|
48
|
+
rule %r/^[^*].*/, Text
|
49
|
+
rule(//) { pop! }
|
50
|
+
end
|
51
|
+
|
52
|
+
# Mixins
|
53
|
+
|
54
|
+
state :whitespace do
|
55
|
+
rule %r/\s+/, Text::Whitespace
|
56
|
+
end
|
57
|
+
|
58
|
+
state :section_include do
|
59
|
+
mixin :end_section
|
60
|
+
mixin :sep
|
61
|
+
mixin :newline
|
62
|
+
end
|
63
|
+
|
64
|
+
state :end_section do
|
65
|
+
rule(/(?=^(?:\| )?\*)/) { pop! }
|
66
|
+
end
|
67
|
+
|
68
|
+
state :return do
|
69
|
+
rule(//) { pop! }
|
70
|
+
end
|
71
|
+
|
72
|
+
state :sep do
|
73
|
+
rule %r/\| /, Text::Whitespace
|
74
|
+
|
75
|
+
rule sep do
|
76
|
+
token Text::Whitespace
|
77
|
+
@col = @col + 1
|
78
|
+
if @next
|
79
|
+
push @next
|
80
|
+
elsif @is_template
|
81
|
+
push :args
|
82
|
+
elsif @col == 1
|
83
|
+
@next = :keyword
|
84
|
+
push :keyword
|
85
|
+
else
|
86
|
+
push :args
|
87
|
+
end
|
88
|
+
push :cell_start
|
89
|
+
end
|
90
|
+
|
91
|
+
rule %r/\.\.\. */ do
|
92
|
+
token Text::Whitespace
|
93
|
+
@col = @col + 1
|
94
|
+
push :args
|
95
|
+
end
|
96
|
+
|
97
|
+
rule %r/ ?\|/, Text::Whitespace
|
98
|
+
end
|
99
|
+
|
100
|
+
state :newline do
|
101
|
+
rule %r/\n/ do
|
102
|
+
token Text::Whitespace
|
103
|
+
@col = 0
|
104
|
+
@next = nil
|
105
|
+
push :cell_start
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
# States
|
110
|
+
|
111
|
+
state :root do
|
112
|
+
mixin :whitespace
|
113
|
+
|
114
|
+
rule %r/^(?:\| )?\*[* ]*([A-Z]+(?: [A-Z]+)?).*/i do |m|
|
115
|
+
token Generic::Heading, m[0]
|
116
|
+
case m[1].chomp("s").downcase
|
117
|
+
when "setting" then push :section_settings
|
118
|
+
when "test case" then push :section_tests
|
119
|
+
when "task" then push :section_tasks
|
120
|
+
when "keyword" then push :section_keywords
|
121
|
+
when "variable" then push :section_variables
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
state :section_settings do
|
127
|
+
mixin :section_include
|
128
|
+
|
129
|
+
rule %r/([A-Z]+(?: [A-Z]+)?)(:?)/i do |m|
|
130
|
+
match = m[1].downcase
|
131
|
+
@next = if self.class.settings_with_keywords.include? match
|
132
|
+
:keyword
|
133
|
+
elsif self.class.settings_with_args.include? match
|
134
|
+
:args
|
135
|
+
end
|
136
|
+
groups Name::Builtin::Pseudo, Punctuation
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
state :section_tests do
|
141
|
+
mixin :section_include
|
142
|
+
|
143
|
+
rule %r/[$@&%{}]+/, Name::Label
|
144
|
+
rule %r/( )(?![ |])/, Name::Label
|
145
|
+
|
146
|
+
rule id do
|
147
|
+
@is_template = false
|
148
|
+
token Name::Label
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
state :section_tasks do
|
153
|
+
mixin :section_tests
|
154
|
+
end
|
155
|
+
|
156
|
+
state :section_keywords do
|
157
|
+
mixin :section_include
|
158
|
+
|
159
|
+
rule %r/[$@&%]\{/ do
|
160
|
+
token Name::Variable
|
161
|
+
push :var
|
162
|
+
end
|
163
|
+
|
164
|
+
rule %r/[$@&%{}]+/, Name::Label
|
165
|
+
rule %r/( )(?![ |])/, Name::Label
|
166
|
+
|
167
|
+
rule id, Name::Label
|
168
|
+
end
|
169
|
+
|
170
|
+
state :section_variables do
|
171
|
+
mixin :section_include
|
172
|
+
|
173
|
+
rule %r/[$@&%]\{/ do
|
174
|
+
token Name::Variable
|
175
|
+
@next = :args
|
176
|
+
push :var
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
state :cell_start do
|
181
|
+
rule %r/#.*/, Comment
|
182
|
+
mixin :return
|
183
|
+
end
|
184
|
+
|
185
|
+
state :keyword do
|
186
|
+
rule %r/(\[)([A-Z]+(?: [A-Z]+)?)(\])/i do |m|
|
187
|
+
groups Punctuation, Name::Builtin::Pseudo, Punctuation
|
188
|
+
|
189
|
+
match = m[2].downcase
|
190
|
+
@is_template = true if match == "template"
|
191
|
+
if self.class.settings_with_keywords.include? match
|
192
|
+
@next = :keyword
|
193
|
+
elsif self.class.settings_with_args.include? match
|
194
|
+
@next = :args
|
195
|
+
end
|
196
|
+
|
197
|
+
pop!
|
198
|
+
end
|
199
|
+
|
200
|
+
rule %r/[$@&%]\{/ do
|
201
|
+
token Name::Variable
|
202
|
+
@next = :keyword unless @next.nil?
|
203
|
+
push :var
|
204
|
+
end
|
205
|
+
|
206
|
+
rule %r/FOR/i do
|
207
|
+
token Name::Function
|
208
|
+
@next = :keyword unless @next.nil?
|
209
|
+
end
|
210
|
+
|
211
|
+
rule %r/( )(?![ |])/, Name::Function
|
212
|
+
|
213
|
+
rule bdd, Name::Builtin
|
214
|
+
rule id do
|
215
|
+
token Name::Function
|
216
|
+
@next = nil
|
217
|
+
end
|
218
|
+
|
219
|
+
mixin :return
|
220
|
+
end
|
221
|
+
|
222
|
+
state :args do
|
223
|
+
rule %r/[$@&%]\{/ do
|
224
|
+
token Name::Variable
|
225
|
+
@next = :keyword unless @next.nil?
|
226
|
+
push :var
|
227
|
+
end
|
228
|
+
|
229
|
+
rule %r/[$@&%]+/, Str
|
230
|
+
rule %r/( )(?![ |])/, Str
|
231
|
+
rule id, Str
|
232
|
+
|
233
|
+
mixin :return
|
234
|
+
end
|
235
|
+
|
236
|
+
state :var do
|
237
|
+
rule %r/(\})( )(=)/ do
|
238
|
+
groups Name::Variable, Text::Whitespace, Punctuation
|
239
|
+
pop!
|
240
|
+
end
|
241
|
+
rule %r/[$@&%]\{/, Name::Variable, :var
|
242
|
+
rule %r/[{\[]/, Name::Variable, :var
|
243
|
+
rule %r/[}\]]/, Name::Variable, :pop!
|
244
|
+
rule %r/[^$@&%{}\[\]]+/, Name::Variable
|
245
|
+
rule %r/\}\[/, Name::Variable
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
249
|
+
end
|