rouge 3.28.0 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +5 -11
- data/lib/rouge/cli.rb +23 -20
- data/lib/rouge/demos/brainfuck +1 -1
- data/lib/rouge/demos/brightscript +1 -1
- data/lib/rouge/demos/bsl +1 -1
- data/lib/rouge/demos/cfscript +1 -1
- data/lib/rouge/demos/coq +1 -1
- data/lib/rouge/demos/csvs +1 -1
- data/lib/rouge/demos/datastudio +0 -1
- data/lib/rouge/demos/ecl +0 -1
- data/lib/rouge/demos/erlang +1 -1
- data/lib/rouge/demos/fsharp +1 -1
- data/lib/rouge/demos/glsl +1 -1
- data/lib/rouge/demos/haxe +0 -1
- data/lib/rouge/demos/idris +13 -0
- data/lib/rouge/demos/isabelle +16 -0
- data/lib/rouge/demos/lean +8 -0
- data/lib/rouge/demos/meson +10 -0
- data/lib/rouge/demos/nesasm +1 -1
- data/lib/rouge/demos/nial +35 -0
- data/lib/rouge/demos/opentype_feature_file +0 -1
- data/lib/rouge/demos/plsql +2 -0
- data/lib/rouge/demos/rml +33 -0
- data/lib/rouge/demos/smarty +0 -1
- data/lib/rouge/demos/syzlang +15 -0
- data/lib/rouge/demos/syzprog +8 -0
- data/lib/rouge/formatters/html_inline.rb +0 -1
- data/lib/rouge/guessers/disambiguation.rb +7 -0
- data/lib/rouge/lexer.rb +2 -2
- data/lib/rouge/lexers/apache/keywords.rb +1 -1
- data/lib/rouge/lexers/apple_script.rb +1 -1
- data/lib/rouge/lexers/cpp.rb +1 -0
- data/lib/rouge/lexers/dart.rb +2 -1
- data/lib/rouge/lexers/diff.rb +14 -4
- data/lib/rouge/lexers/docker.rb +4 -0
- data/lib/rouge/lexers/eiffel.rb +0 -1
- data/lib/rouge/lexers/gherkin/keywords.rb +1 -1
- data/lib/rouge/lexers/groovy.rb +1 -1
- data/lib/rouge/lexers/handlebars.rb +1 -1
- data/lib/rouge/lexers/haxe.rb +30 -11
- data/lib/rouge/lexers/http.rb +1 -1
- data/lib/rouge/lexers/hylang.rb +0 -1
- data/lib/rouge/lexers/idris.rb +210 -0
- data/lib/rouge/lexers/isabelle.rb +251 -0
- data/lib/rouge/lexers/javascript.rb +1 -1
- data/lib/rouge/lexers/jsx.rb +0 -1
- data/lib/rouge/lexers/lasso/keywords.rb +1 -1
- data/lib/rouge/lexers/lean.rb +164 -0
- data/lib/rouge/lexers/llvm/keywords.rb +1 -1
- data/lib/rouge/lexers/lua/keywords.rb +1 -1
- data/lib/rouge/lexers/make.rb +25 -16
- data/lib/rouge/lexers/mathematica/keywords.rb +1 -1
- data/lib/rouge/lexers/matlab/keywords.rb +1 -1
- data/lib/rouge/lexers/matlab.rb +3 -2
- data/lib/rouge/lexers/meson.rb +159 -0
- data/lib/rouge/lexers/nial.rb +166 -0
- data/lib/rouge/lexers/ocl.rb +0 -1
- data/lib/rouge/lexers/pascal.rb +2 -1
- data/lib/rouge/lexers/php/keywords.rb +1 -1
- data/lib/rouge/lexers/php.rb +7 -5
- data/lib/rouge/lexers/plsql.rb +578 -0
- data/lib/rouge/lexers/praat.rb +20 -2
- data/lib/rouge/lexers/prometheus.rb +0 -1
- data/lib/rouge/lexers/python.rb +3 -1
- data/lib/rouge/lexers/q.rb +0 -1
- data/lib/rouge/lexers/rml.rb +142 -0
- data/lib/rouge/lexers/sqf/keywords.rb +1 -1
- data/lib/rouge/lexers/supercollider.rb +0 -1
- data/lib/rouge/lexers/syzlang.rb +317 -0
- data/lib/rouge/lexers/syzprog.rb +122 -0
- data/lib/rouge/lexers/tap.rb +0 -1
- data/lib/rouge/lexers/toml.rb +12 -7
- data/lib/rouge/lexers/tsx.rb +7 -1
- data/lib/rouge/lexers/tulip.rb +0 -1
- data/lib/rouge/lexers/typescript/common.rb +4 -1
- data/lib/rouge/lexers/viml/keywords.rb +1 -1
- data/lib/rouge/version.rb +1 -1
- data/rouge.gemspec +1 -1
- metadata +22 -6
- data/lib/rouge/demos/solidity +0 -13
- data/lib/rouge/lexers/solidity.rb +0 -185
data/lib/rouge/lexers/python.rb
CHANGED
@@ -218,9 +218,11 @@ module Rouge
|
|
218
218
|
end
|
219
219
|
|
220
220
|
state :generic_interpol do
|
221
|
-
rule %r/[^{}]+/ do |m|
|
221
|
+
rule %r/[^{}!:]+/ do |m|
|
222
222
|
recurse m[0]
|
223
223
|
end
|
224
|
+
rule %r/![asr]/, Str::Interpol
|
225
|
+
rule %r/:/, Str::Interpol
|
224
226
|
rule %r/{/, Str::Interpol, :generic_interpol
|
225
227
|
rule %r/}/, Str::Interpol, :pop!
|
226
228
|
end
|
data/lib/rouge/lexers/q.rb
CHANGED
@@ -0,0 +1,142 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Rouge
|
5
|
+
module Lexers
|
6
|
+
class RML < RegexLexer
|
7
|
+
title "RML"
|
8
|
+
desc "A system agnostic domain-specific language for runtime monitoring and verification (https://rmlatdibris.github.io/)"
|
9
|
+
tag 'rml'
|
10
|
+
filenames '*.rml'
|
11
|
+
|
12
|
+
def self.keywords
|
13
|
+
@keywords ||= Set.new %w(
|
14
|
+
matches not with empty
|
15
|
+
all if else true false
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.arithmetic_keywords
|
20
|
+
@arithmetic_keywords ||= Set.new %w(
|
21
|
+
abs sin cos tan min max
|
22
|
+
)
|
23
|
+
end
|
24
|
+
|
25
|
+
id_char = /[a-zA-Z0-9_]/
|
26
|
+
uppercase_id = /[A-Z]#{id_char}*/
|
27
|
+
lowercase_id = /[a-z]#{id_char}*/
|
28
|
+
|
29
|
+
ellipsis = /(\.){3}/
|
30
|
+
int = /[0-9]+/
|
31
|
+
float = /#{int}\.#{int}/
|
32
|
+
string = /'(\\'|[ a-zA-Z0-9_.])*'/
|
33
|
+
|
34
|
+
whitespace = /[ \t\r\n]+/
|
35
|
+
comment = /\/\/[^\r\n]*/
|
36
|
+
|
37
|
+
state :common_rules do
|
38
|
+
rule %r/#{whitespace}/, Text
|
39
|
+
rule %r/#{comment}/, Comment::Single
|
40
|
+
rule %r/#{string}/, Literal::String
|
41
|
+
rule %r/#{float}/, Num::Float
|
42
|
+
rule %r/#{int}/, Num::Integer
|
43
|
+
end
|
44
|
+
|
45
|
+
state :root do
|
46
|
+
mixin :common_rules
|
47
|
+
rule %r/(#{lowercase_id})(\()/ do
|
48
|
+
groups Name::Function, Operator
|
49
|
+
push :event_type_params
|
50
|
+
end
|
51
|
+
rule %r/#{lowercase_id}/ do |m|
|
52
|
+
if m[0] == 'with'
|
53
|
+
token Keyword
|
54
|
+
push :data_expression_with
|
55
|
+
elsif self.class.keywords.include? m[0]
|
56
|
+
token Keyword
|
57
|
+
else
|
58
|
+
token Name::Function
|
59
|
+
end
|
60
|
+
end
|
61
|
+
rule %r/\(|\{|\[/, Operator, :event_type_params
|
62
|
+
rule %r/[_\|]/, Operator
|
63
|
+
rule %r/#{uppercase_id}/, Name::Class, :equation_block_expression
|
64
|
+
rule %r/;/, Operator
|
65
|
+
end
|
66
|
+
|
67
|
+
state :event_type_params do
|
68
|
+
mixin :common_rules
|
69
|
+
rule %r/\(|\{|\[/, Operator, :push
|
70
|
+
rule %r/\)|\}|\]/, Operator, :pop!
|
71
|
+
rule %r/#{lowercase_id}(?=:)/, Name::Entity
|
72
|
+
rule %r/(#{lowercase_id})/ do |m|
|
73
|
+
if self.class.keywords.include? m[0]
|
74
|
+
token Keyword
|
75
|
+
else
|
76
|
+
token Literal::String::Regex
|
77
|
+
end
|
78
|
+
end
|
79
|
+
rule %r/#{ellipsis}/, Literal::String::Symbol
|
80
|
+
rule %r/[_\|;,:]/, Operator
|
81
|
+
end
|
82
|
+
|
83
|
+
state :equation_block_expression do
|
84
|
+
mixin :common_rules
|
85
|
+
rule %r/[<,>]/, Operator
|
86
|
+
rule %r/#{lowercase_id}/, Literal::String::Regex
|
87
|
+
rule %r/=/ do
|
88
|
+
token Operator
|
89
|
+
goto :exp
|
90
|
+
end
|
91
|
+
rule %r/;/, Operator, :pop!
|
92
|
+
end
|
93
|
+
|
94
|
+
state :exp do
|
95
|
+
mixin :common_rules
|
96
|
+
rule %r/(if)(\()/ do
|
97
|
+
groups Keyword, Operator
|
98
|
+
push :data_expression
|
99
|
+
end
|
100
|
+
rule %r/let|var/, Keyword, :equation_block_expression
|
101
|
+
rule %r/(#{lowercase_id})(\()/ do
|
102
|
+
groups Name::Function, Operator
|
103
|
+
push :event_type_params
|
104
|
+
end
|
105
|
+
rule %r/(#{lowercase_id})/ do |m|
|
106
|
+
if self.class.keywords.include? m[0]
|
107
|
+
token Keyword
|
108
|
+
else
|
109
|
+
token Name::Function
|
110
|
+
end
|
111
|
+
end
|
112
|
+
rule %r/#{uppercase_id}(?=<)/, Name::Class, :data_expression
|
113
|
+
rule %r/#{uppercase_id}/, Name::Class
|
114
|
+
rule %r/[=(){}*+\/\\\|!>?]/, Operator
|
115
|
+
rule %r/;/, Operator, :pop!
|
116
|
+
end
|
117
|
+
|
118
|
+
state :data_expression do
|
119
|
+
mixin :common_rules
|
120
|
+
rule %r/#{lowercase_id}/ do |m|
|
121
|
+
if (self.class.arithmetic_keywords | self.class.keywords).include? m[0]
|
122
|
+
token Keyword
|
123
|
+
else
|
124
|
+
token Literal::String::Regex
|
125
|
+
end
|
126
|
+
end
|
127
|
+
rule %r/\(/, Operator, :push
|
128
|
+
rule %r/\)/, Operator, :pop!
|
129
|
+
rule %r/(>)(?=[^A-Z;]+[A-Z;>])/, Operator, :pop!
|
130
|
+
rule %r/[*^?!%&\[\]<>\|+=:,.\/\\_-]/, Operator
|
131
|
+
rule %r/;/, Operator, :pop!
|
132
|
+
end
|
133
|
+
|
134
|
+
state :data_expression_with do
|
135
|
+
mixin :common_rules
|
136
|
+
rule %r/>/, Operator
|
137
|
+
mixin :data_expression
|
138
|
+
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
@@ -0,0 +1,317 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Rouge
|
5
|
+
module Lexers
|
6
|
+
class Syzlang < RegexLexer
|
7
|
+
title "Syzlang"
|
8
|
+
desc "Syscall description language used by syzkaller"
|
9
|
+
tag 'syzlang'
|
10
|
+
|
11
|
+
def self.keywords
|
12
|
+
@keywords ||= Set.new %w(
|
13
|
+
align breaks_returns dec define disabled hex ignore_return in incdir
|
14
|
+
include inet inout oct opt out packed parent prog_timeout pseudo
|
15
|
+
resource size syscall timeout type varlen
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.keywords_type
|
20
|
+
@keywords_type ||= Set.new %w(
|
21
|
+
array bitsize bool16 bool32 bool64 bool8 boolptr buffer bytesize
|
22
|
+
bytesize2 bytesize4 bytesize8 const csum filename fileoff flags fmt
|
23
|
+
int16 int16be int32 int32be int64 int64be int8 int8be intptr len
|
24
|
+
offsetof optional proc ptr ptr64 string stringnoz text vma vma64 void
|
25
|
+
)
|
26
|
+
end
|
27
|
+
|
28
|
+
comment = /#.*$/
|
29
|
+
inline_spaces = /[ \t]+/
|
30
|
+
eol_spaces = /[\n\r]+/
|
31
|
+
spaces = /\s+/
|
32
|
+
|
33
|
+
state :inline_break do
|
34
|
+
rule inline_spaces, Text
|
35
|
+
rule %r//, Text, :pop!
|
36
|
+
end
|
37
|
+
|
38
|
+
state :space_break do
|
39
|
+
rule spaces, Text
|
40
|
+
rule comment, Comment
|
41
|
+
rule %r//, Text, :pop!
|
42
|
+
end
|
43
|
+
|
44
|
+
id = /[a-zA-Z_][a-zA-Z0-9_]*/
|
45
|
+
num_id = /[a-zA-Z0-9_]+/
|
46
|
+
|
47
|
+
state :mixin_name do
|
48
|
+
rule id, Name
|
49
|
+
end
|
50
|
+
|
51
|
+
state :mixin_number do
|
52
|
+
rule %r/-?0x[\da-f]+/i, Num::Hex
|
53
|
+
rule %r/-?\d+/, Num::Integer
|
54
|
+
rule %r/'[^']?'/, Str::Char
|
55
|
+
end
|
56
|
+
|
57
|
+
state :mixin_string do
|
58
|
+
rule %r/"[^"]*"/, Str::Double
|
59
|
+
rule %r/`[^`]*`/, Str::Backtick
|
60
|
+
end
|
61
|
+
|
62
|
+
state :mixin_term do
|
63
|
+
mixin :mixin_number
|
64
|
+
mixin :mixin_string
|
65
|
+
|
66
|
+
# Keywords.
|
67
|
+
rule id do |m|
|
68
|
+
if self.class.keywords.include?(m[0])
|
69
|
+
token Keyword
|
70
|
+
elsif self.class.keywords_type.include?(m[0])
|
71
|
+
token Keyword::Type
|
72
|
+
else
|
73
|
+
token Name
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
# Ranges.
|
78
|
+
rule %r/:/, Punctuation
|
79
|
+
|
80
|
+
# "struct$type" struct name format.
|
81
|
+
rule %r/\$/, Name
|
82
|
+
end
|
83
|
+
|
84
|
+
state :term_list do
|
85
|
+
rule spaces, Text
|
86
|
+
rule comment, Comment
|
87
|
+
mixin :mixin_term
|
88
|
+
rule %r/\[/, Punctuation, :term_list
|
89
|
+
rule %r/,/, Punctuation
|
90
|
+
rule %r/[\]\)]/, Punctuation, :pop!
|
91
|
+
end
|
92
|
+
|
93
|
+
state :arg_type do
|
94
|
+
mixin :mixin_term
|
95
|
+
rule %r/\[/, Punctuation, :term_list
|
96
|
+
rule %r//, Text, :pop!
|
97
|
+
end
|
98
|
+
|
99
|
+
state :include do
|
100
|
+
rule %r/(<)([^>]+)(>)/ do |m|
|
101
|
+
groups Punctuation, Str, Punctuation
|
102
|
+
end
|
103
|
+
rule %r//, Text, :pop!
|
104
|
+
end
|
105
|
+
|
106
|
+
state :define_name do
|
107
|
+
mixin :mixin_name
|
108
|
+
rule %r//, Text, :pop!
|
109
|
+
end
|
110
|
+
|
111
|
+
state :define_exp do
|
112
|
+
mixin :mixin_name
|
113
|
+
mixin :mixin_number
|
114
|
+
mixin :mixin_string
|
115
|
+
rule %r/[~!%\^&\*\-\+\/\|<>\?:]/, Operator
|
116
|
+
rule %r/[\(\){}\[\];,]/, Punctuation
|
117
|
+
rule inline_spaces, Text
|
118
|
+
rule %r//, Text, :pop!
|
119
|
+
end
|
120
|
+
|
121
|
+
state :resource_name do
|
122
|
+
mixin :mixin_name
|
123
|
+
rule %r//, Text, :pop!
|
124
|
+
end
|
125
|
+
|
126
|
+
state :resource_type do
|
127
|
+
rule %r/\[/, Punctuation, :arg_type
|
128
|
+
rule %r/\]/, Punctuation, :pop!
|
129
|
+
end
|
130
|
+
|
131
|
+
state :resource_values do
|
132
|
+
rule %r/:/ do
|
133
|
+
token Punctuation
|
134
|
+
push :resource_values_list
|
135
|
+
push :space_break
|
136
|
+
end
|
137
|
+
rule %r//, Text, :pop!
|
138
|
+
end
|
139
|
+
|
140
|
+
state :resource_values_list do
|
141
|
+
rule inline_spaces, Text
|
142
|
+
mixin :mixin_name
|
143
|
+
mixin :mixin_number
|
144
|
+
mixin :mixin_string
|
145
|
+
rule %r/,/, Punctuation, :space_break
|
146
|
+
rule %r//, Text, :pop!
|
147
|
+
end
|
148
|
+
|
149
|
+
state :flags_list do
|
150
|
+
rule inline_spaces, Text
|
151
|
+
rule %r/\./, Punctuation
|
152
|
+
mixin :mixin_name
|
153
|
+
mixin :mixin_number
|
154
|
+
mixin :mixin_string
|
155
|
+
rule %r/,/, Punctuation, :space_break
|
156
|
+
rule %r//, Punctuation, :pop!
|
157
|
+
end
|
158
|
+
|
159
|
+
state :syscall_args do
|
160
|
+
rule spaces, Text
|
161
|
+
rule comment, Comment
|
162
|
+
rule %r/\./, Punctuation
|
163
|
+
rule id do
|
164
|
+
token Name
|
165
|
+
push :arg_type
|
166
|
+
push :space_break
|
167
|
+
end
|
168
|
+
rule %r/,/, Punctuation
|
169
|
+
rule %r/\)/, Punctuation, :pop!
|
170
|
+
end
|
171
|
+
|
172
|
+
state :syscall_retval do
|
173
|
+
mixin :mixin_name
|
174
|
+
rule %r//, Text, :pop!
|
175
|
+
end
|
176
|
+
|
177
|
+
state :syscall_mods do
|
178
|
+
rule %r/\(/, Punctuation, :term_list
|
179
|
+
rule %r//, Text, :pop!
|
180
|
+
end
|
181
|
+
|
182
|
+
state :struct_fields do
|
183
|
+
rule id do
|
184
|
+
token Name
|
185
|
+
push :space_break
|
186
|
+
push :struct_field_mods
|
187
|
+
push :inline_break
|
188
|
+
push :arg_type
|
189
|
+
push :space_break
|
190
|
+
end
|
191
|
+
rule %r/[}\]]/, Punctuation, :pop!
|
192
|
+
end
|
193
|
+
|
194
|
+
state :struct_field_mods do
|
195
|
+
rule %r/\(/, Punctuation, :term_list
|
196
|
+
rule %r//, Text, :pop!
|
197
|
+
end
|
198
|
+
|
199
|
+
state :struct_mods do
|
200
|
+
rule %r/\[/, Punctuation, :term_list
|
201
|
+
rule %r//, Text, :pop!
|
202
|
+
end
|
203
|
+
|
204
|
+
state :type_name do
|
205
|
+
mixin :mixin_name
|
206
|
+
rule %r//, Text, :pop!
|
207
|
+
end
|
208
|
+
|
209
|
+
state :type_args do
|
210
|
+
rule %r/\[/, Punctuation, :type_args_list
|
211
|
+
rule %r//, Text, :pop!
|
212
|
+
end
|
213
|
+
|
214
|
+
state :type_args_list do
|
215
|
+
rule spaces, Text
|
216
|
+
rule comment, Comment
|
217
|
+
mixin :mixin_name
|
218
|
+
rule %r/,/, Punctuation
|
219
|
+
rule %r/\]/, Punctuation, :pop!
|
220
|
+
end
|
221
|
+
|
222
|
+
state :type_body do
|
223
|
+
rule %r/[{\[]/ do
|
224
|
+
token Punctuation
|
225
|
+
pop!
|
226
|
+
push :space_break
|
227
|
+
push :struct_mods
|
228
|
+
push :inline_break
|
229
|
+
push :struct_fields
|
230
|
+
push :space_break
|
231
|
+
end
|
232
|
+
rule %r// do
|
233
|
+
pop!
|
234
|
+
push :arg_type
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
238
|
+
state :root do
|
239
|
+
# Whitespace.
|
240
|
+
rule spaces, Text
|
241
|
+
|
242
|
+
# Comments.
|
243
|
+
rule comment, Comment
|
244
|
+
|
245
|
+
# Includes.
|
246
|
+
rule %r/(include|incdir)/ do
|
247
|
+
token Keyword
|
248
|
+
push :include
|
249
|
+
push :space_break
|
250
|
+
end
|
251
|
+
|
252
|
+
# Defines.
|
253
|
+
rule %r/define/ do
|
254
|
+
token Keyword
|
255
|
+
push :define_exp
|
256
|
+
push :space_break
|
257
|
+
push :define_name
|
258
|
+
push :space_break
|
259
|
+
end
|
260
|
+
|
261
|
+
# Resources.
|
262
|
+
rule %r/resource/ do
|
263
|
+
token Keyword
|
264
|
+
push :resource_values
|
265
|
+
push :inline_break
|
266
|
+
push :resource_type
|
267
|
+
push :inline_break
|
268
|
+
push :resource_name
|
269
|
+
push :space_break
|
270
|
+
end
|
271
|
+
|
272
|
+
# Flags and strings.
|
273
|
+
rule %r/(#{id}|_)(#{spaces})(=)/ do |m|
|
274
|
+
if m[1] == "_"
|
275
|
+
groups Keyword, Text, Punctuation
|
276
|
+
else
|
277
|
+
groups Name, Text, Punctuation
|
278
|
+
end
|
279
|
+
push :flags_list
|
280
|
+
push :space_break
|
281
|
+
end
|
282
|
+
|
283
|
+
# Syscalls.
|
284
|
+
rule %r/(#{id})(\$)?(#{num_id})?(#{spaces})?(\()/ do |m|
|
285
|
+
groups Name::Function, Punctuation, Name::Function::Magic, Text, Punctuation
|
286
|
+
push :syscall_mods
|
287
|
+
push :inline_break
|
288
|
+
push :syscall_retval
|
289
|
+
push :inline_break
|
290
|
+
push :syscall_args
|
291
|
+
push :space_break
|
292
|
+
end
|
293
|
+
|
294
|
+
# Structs and unions.
|
295
|
+
rule %r/(#{id}|#{id}\$#{num_id})(#{spaces})?([{\[])/ do |m|
|
296
|
+
groups Name, Text, Punctuation
|
297
|
+
push :inline_break
|
298
|
+
push :struct_mods
|
299
|
+
push :inline_break
|
300
|
+
push :struct_fields
|
301
|
+
push :space_break
|
302
|
+
end
|
303
|
+
|
304
|
+
# Types.
|
305
|
+
rule %r/type/ do
|
306
|
+
token Keyword
|
307
|
+
push :type_body
|
308
|
+
push :space_break
|
309
|
+
push :type_args
|
310
|
+
push :type_name
|
311
|
+
push :space_break
|
312
|
+
end
|
313
|
+
end
|
314
|
+
|
315
|
+
end
|
316
|
+
end
|
317
|
+
end
|
@@ -0,0 +1,122 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Rouge
|
5
|
+
module Lexers
|
6
|
+
class Syzprog < RegexLexer
|
7
|
+
title "Syzprog"
|
8
|
+
desc "Program description language used by syzkaller"
|
9
|
+
tag 'syzprog'
|
10
|
+
|
11
|
+
def self.keywords
|
12
|
+
@keywords ||= Set.new %w(
|
13
|
+
ANY ANYBLOB ANYPTR ANYPTR64 ANYPTRS ANYRES16 ANYRES32 ANYRES64
|
14
|
+
ANYRESDEC ANYRESHEX ANYRESOCT ANYUNION AUTO false nil true void
|
15
|
+
async fail_nth rerun
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
comment = /#.*$/
|
20
|
+
inline_spaces = /[ \t]+/
|
21
|
+
eol_spaces = /[\n\r]+/
|
22
|
+
spaces = /\s+/
|
23
|
+
|
24
|
+
id = /[a-zA-Z_][a-zA-Z0-9_]*/
|
25
|
+
num_id = /[a-zA-Z0-9_]+/
|
26
|
+
res_id = /r[0-9]+/
|
27
|
+
|
28
|
+
state :inline_break do
|
29
|
+
rule inline_spaces, Text
|
30
|
+
rule %r//, Text, :pop!
|
31
|
+
end
|
32
|
+
|
33
|
+
state :eol_break do
|
34
|
+
rule eol_spaces, Text
|
35
|
+
rule comment, Comment
|
36
|
+
rule %r//, Text, :pop!
|
37
|
+
end
|
38
|
+
|
39
|
+
state :space_break do
|
40
|
+
rule spaces, Text
|
41
|
+
rule comment, Comment
|
42
|
+
rule %r//, Text, :pop!
|
43
|
+
end
|
44
|
+
|
45
|
+
state :mixin_number do
|
46
|
+
rule %r/-?0x[\da-f]+/i, Num::Hex
|
47
|
+
rule %r/-?\d+/, Num::Integer
|
48
|
+
end
|
49
|
+
|
50
|
+
state :mixin_string do
|
51
|
+
rule %r/"[^"]*"/, Str::Double
|
52
|
+
rule %r/`[^`]*`/, Str::Backtick
|
53
|
+
rule %r/'[^']*'/, Str::Single
|
54
|
+
end
|
55
|
+
|
56
|
+
state :mixin_term do
|
57
|
+
mixin :mixin_number
|
58
|
+
mixin :mixin_string
|
59
|
+
|
60
|
+
rule %r/#{res_id}/, Keyword::Pseudo
|
61
|
+
rule id do |m|
|
62
|
+
if self.class.keywords.include?(m[0])
|
63
|
+
token Keyword
|
64
|
+
else
|
65
|
+
token Name
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
state :mods_list do
|
71
|
+
rule spaces, Text
|
72
|
+
rule comment, Comment
|
73
|
+
mixin :mixin_term
|
74
|
+
rule %r/[,:]/, Punctuation
|
75
|
+
rule %r/\)/, Punctuation, :pop!
|
76
|
+
end
|
77
|
+
|
78
|
+
state :syscall_mods do
|
79
|
+
rule %r/\(/, Punctuation, :mods_list
|
80
|
+
rule %r//, Text, :pop!
|
81
|
+
end
|
82
|
+
|
83
|
+
state :syscall_args do
|
84
|
+
rule spaces, Text
|
85
|
+
rule comment, Comment
|
86
|
+
mixin :mixin_term
|
87
|
+
mixin :mixin_number
|
88
|
+
mixin :mixin_string
|
89
|
+
# This punctuation is a part of the syntax:
|
90
|
+
rule %r/[@&=,<>{}\[\]]/, Punctuation
|
91
|
+
# This punctuation is not, highlight just in case:
|
92
|
+
rule %r/[!#\$%\^\*\-\+\/\|~:;.\?]/, Punctuation
|
93
|
+
rule %r/\(/, Punctuation, :syscall_args
|
94
|
+
rule %r/\)/, Punctuation, :pop!
|
95
|
+
end
|
96
|
+
|
97
|
+
state :root do
|
98
|
+
# Whitespace.
|
99
|
+
rule spaces, Text
|
100
|
+
|
101
|
+
# Comments.
|
102
|
+
rule comment, Comment
|
103
|
+
|
104
|
+
# Return values.
|
105
|
+
rule %r/(#{res_id})(#{spaces})(=)/ do
|
106
|
+
groups Keyword::Pseudo, Text, Punctuation
|
107
|
+
end
|
108
|
+
|
109
|
+
# Syscalls.
|
110
|
+
rule %r/(#{id})(\$)?(#{num_id})?(#{spaces})?(\()/ do |m|
|
111
|
+
groups Name::Function, Punctuation, Name::Function::Magic, Text, Punctuation
|
112
|
+
push :syscall_mods
|
113
|
+
push :inline_break
|
114
|
+
push :syscall_args
|
115
|
+
push :space_break
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
data/lib/rouge/lexers/tap.rb
CHANGED
data/lib/rouge/lexers/toml.rb
CHANGED
@@ -5,10 +5,10 @@ module Rouge
|
|
5
5
|
module Lexers
|
6
6
|
class TOML < RegexLexer
|
7
7
|
title "TOML"
|
8
|
-
desc 'the TOML configuration format (https://github.com/
|
8
|
+
desc 'the TOML configuration format (https://github.com/toml-lang/toml)'
|
9
9
|
tag 'toml'
|
10
10
|
|
11
|
-
filenames '*.toml', 'Pipfile'
|
11
|
+
filenames '*.toml', 'Pipfile', 'poetry.lock'
|
12
12
|
mimetypes 'text/x-toml'
|
13
13
|
|
14
14
|
# bare keys and quoted keys
|
@@ -24,18 +24,23 @@ module Rouge
|
|
24
24
|
push :inline
|
25
25
|
end
|
26
26
|
|
27
|
-
rule %r/(?<!=)\s*\[[\S]+\]/, Name::Namespace
|
28
|
-
|
29
27
|
rule %r/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z/, Literal::Date
|
30
28
|
|
31
|
-
rule %r/(\d
|
32
|
-
rule %r
|
33
|
-
rule %r
|
29
|
+
rule %r/[+-]?\d+(?:_\d+)*\.\d+(?:_\d+)*(?:[eE][+-]?\d+(?:_\d+)*)?/, Num::Float
|
30
|
+
rule %r/[+-]?\d+(?:_\d+)*[eE][+-]?\d+(?:_\d+)*/, Num::Float
|
31
|
+
rule %r/[+-]?(?:nan|inf)/, Num::Float
|
32
|
+
|
33
|
+
rule %r/0x\h+(?:_\h+)*/, Num::Hex
|
34
|
+
rule %r/0o[0-7]+(?:_[0-7]+)*/, Num::Oct
|
35
|
+
rule %r/0b[01]+(?:_[01]+)*/, Num::Bin
|
36
|
+
rule %r/[+-]?\d+(?:_\d+)*/, Num::Integer
|
34
37
|
end
|
35
38
|
|
36
39
|
state :root do
|
37
40
|
mixin :basic
|
38
41
|
|
42
|
+
rule %r/(?<!=)\s*\[.*?\]+/, Name::Namespace
|
43
|
+
|
39
44
|
rule %r/(#{identifier})(\s*)(=)/ do
|
40
45
|
groups Name::Property, Text, Punctuation
|
41
46
|
push :value
|
data/lib/rouge/lexers/tsx.rb
CHANGED
data/lib/rouge/lexers/tulip.rb
CHANGED
@@ -26,7 +26,10 @@ module Rouge
|
|
26
26
|
|
27
27
|
def builtins
|
28
28
|
@builtins ||= super + %w(
|
29
|
-
|
29
|
+
Capitalize ConstructorParameters Exclude Extract InstanceType
|
30
|
+
Lowercase NonNullable Omit OmitThisParameter Parameters
|
31
|
+
Partial Pick Readonly Record Required
|
32
|
+
ReturnType ThisParameterType ThisType Uncapitalize Uppercase
|
30
33
|
)
|
31
34
|
end
|
32
35
|
|