pygments.rb 0.3.2 → 0.3.3
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.
- data/README.md +6 -1
- data/lexers +0 -0
- data/lib/pygments/version.rb +1 -1
- data/vendor/pygments-main/AUTHORS +15 -0
- data/vendor/pygments-main/CHANGES +28 -1
- data/vendor/pygments-main/LICENSE +1 -1
- data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +121 -0
- data/vendor/pygments-main/pygments/cmdline.py +1 -1
- data/vendor/pygments-main/pygments/filters/__init__.py +0 -1
- data/vendor/pygments-main/pygments/formatters/_mapping.py +2 -2
- data/vendor/pygments-main/pygments/formatters/img.py +1 -1
- data/vendor/pygments-main/pygments/formatters/latex.py +8 -8
- data/vendor/pygments-main/pygments/formatters/other.py +0 -2
- data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +5413 -0
- data/vendor/pygments-main/pygments/lexers/_mapping.py +36 -11
- data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +551 -0
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +0 -1
- data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +546 -0
- data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +1072 -0
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +174 -0
- data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +13 -3
- data/vendor/pygments-main/pygments/lexers/agile.py +145 -33
- data/vendor/pygments-main/pygments/lexers/asm.py +2 -2
- data/vendor/pygments-main/pygments/lexers/compiled.py +328 -36
- data/vendor/pygments-main/pygments/lexers/dalvik.py +104 -0
- data/vendor/pygments-main/pygments/lexers/dotnet.py +8 -14
- data/vendor/pygments-main/pygments/lexers/functional.py +773 -8
- data/vendor/pygments-main/pygments/lexers/jvm.py +184 -36
- data/vendor/pygments-main/pygments/lexers/math.py +349 -23
- data/vendor/pygments-main/pygments/lexers/other.py +315 -492
- data/vendor/pygments-main/pygments/lexers/parsers.py +83 -1
- data/vendor/pygments-main/pygments/lexers/shell.py +4 -1
- data/vendor/pygments-main/pygments/lexers/templates.py +112 -2
- data/vendor/pygments-main/pygments/lexers/text.py +52 -3
- data/vendor/pygments-main/pygments/lexers/web.py +382 -36
- data/vendor/pygments-main/pygments/unistring.py +35 -25
- data/vendor/pygments-main/pygments/util.py +45 -0
- data/vendor/pygments-main/tests/examplefiles/Config.in.cache +1973 -0
- data/vendor/pygments-main/tests/examplefiles/example.Rd +78 -0
- data/vendor/pygments-main/tests/examplefiles/example.bug +54 -0
- data/vendor/pygments-main/tests/examplefiles/example.ceylon +33 -0
- data/vendor/pygments-main/tests/examplefiles/example.jag +48 -0
- data/vendor/pygments-main/tests/examplefiles/example.monkey +152 -0
- data/vendor/pygments-main/tests/examplefiles/example.msc +43 -0
- data/vendor/pygments-main/tests/examplefiles/example.reg +19 -0
- data/vendor/pygments-main/tests/examplefiles/example.rkt +95 -0
- data/vendor/pygments-main/tests/examplefiles/example.rpf +4 -0
- data/vendor/pygments-main/tests/examplefiles/example.stan +97 -0
- data/vendor/pygments-main/tests/examplefiles/example.xtend +34 -0
- data/vendor/pygments-main/tests/examplefiles/example2.msc +79 -0
- data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +123 -0
- data/vendor/pygments-main/tests/examplefiles/hello.smali +40 -0
- data/vendor/pygments-main/tests/examplefiles/hello.sp +9 -0
- data/vendor/pygments-main/tests/examplefiles/http_request_example +2 -1
- data/vendor/pygments-main/tests/examplefiles/http_response_example +4 -2
- data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +71 -0
- data/vendor/pygments-main/tests/examplefiles/json.lasso +301 -0
- data/vendor/pygments-main/tests/examplefiles/json.lasso9 +213 -0
- data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +41 -0
- data/vendor/pygments-main/tests/examplefiles/matlab_sample +5 -2
- data/vendor/pygments-main/tests/examplefiles/metagrammar.treetop +455 -0
- data/vendor/pygments-main/tests/examplefiles/pytb_test3.pytb +4 -0
- data/vendor/pygments-main/tests/examplefiles/robotframework.txt +39 -0
- data/vendor/pygments-main/tests/examplefiles/rust_example.rs +743 -0
- data/vendor/pygments-main/tests/examplefiles/test.R +149 -115
- data/vendor/pygments-main/tests/examplefiles/test.cu +36 -0
- data/vendor/pygments-main/tests/test_basic_api.py +1 -1
- data/vendor/pygments-main/tests/test_util.py +18 -0
- metadata +34 -3
- data/vendor/pygments-main/REVISION +0 -1
@@ -0,0 +1,41 @@
|
|
1
|
+
a = -> [1 to 50]
|
2
|
+
const b = --> [2 til 5]
|
3
|
+
var c = ~~> 10_000_000km * 500ms - 16~ff / 32~lol
|
4
|
+
e = (a) -> (b) ~> (c) --> (d, e) ~~> <[list of words]>
|
5
|
+
dashes-identifiers = ->
|
6
|
+
a - a b -- c 1-1 1- -1 a- a a -a
|
7
|
+
underscores_i$d = ->
|
8
|
+
/regexp1/
|
9
|
+
//regexp2//g
|
10
|
+
'strings' and "strings" and \strings
|
11
|
+
|
12
|
+
[2 til 10]
|
13
|
+
|> map (* 2)
|
14
|
+
|> filter (> 5)
|
15
|
+
|> fold (+)
|
16
|
+
|
17
|
+
obj =
|
18
|
+
prop1: 1
|
19
|
+
prop2: 2
|
20
|
+
|
21
|
+
class Class extends Anc-est-or
|
22
|
+
(args) ->
|
23
|
+
<- # Comment
|
24
|
+
<~ /* Comment */
|
25
|
+
void undefined yes no on off
|
26
|
+
a.void b.undefined c.off d.if f.no g.not
|
27
|
+
avoid bundefined coff dif fno gnot
|
28
|
+
"inter #{2 + 2} #variable"
|
29
|
+
'''HELLO 'world' '''
|
30
|
+
|
31
|
+
copy = (from, to, callback) -->
|
32
|
+
error, data <- read file
|
33
|
+
return callback error if error?
|
34
|
+
error <~ write file, data
|
35
|
+
return callback error if error?
|
36
|
+
callback()
|
37
|
+
|
38
|
+
take(n, [x, ...xs]:list) =
|
39
|
+
| n <= 0 => []
|
40
|
+
| empty list => []
|
41
|
+
| otherwise => [x] +++ take n - 1, xs
|
@@ -13,7 +13,8 @@ end
|
|
13
13
|
a = rand(30);
|
14
14
|
b = rand(30);
|
15
15
|
|
16
|
-
c = a .* b ./ a \
|
16
|
+
c = a .* b ./ a \ ... comment at end of line and continuation
|
17
|
+
(b .* a + b - a);
|
17
18
|
|
18
19
|
c = a' * b'; % note: these ticks are for transpose, not quotes.
|
19
20
|
|
@@ -24,4 +25,6 @@ disp('a comment symbol, %, in a string');
|
|
24
25
|
function y=myfunc(x)
|
25
26
|
y = exp(x);
|
26
27
|
|
27
|
-
|
28
|
+
{%
|
29
|
+
a block comment
|
30
|
+
%}
|
@@ -0,0 +1,455 @@
|
|
1
|
+
module Treetop
|
2
|
+
module Compiler
|
3
|
+
grammar Metagrammar
|
4
|
+
rule treetop_file
|
5
|
+
requires:(space? require_statement)* prefix:space? module_or_grammar suffix:space? {
|
6
|
+
def compile
|
7
|
+
requires.text_value + prefix.text_value + module_or_grammar.compile + suffix.text_value
|
8
|
+
end
|
9
|
+
}
|
10
|
+
end
|
11
|
+
|
12
|
+
rule require_statement
|
13
|
+
prefix:space? "require" [ \t]+ [^\n\r]+ [\n\r]
|
14
|
+
end
|
15
|
+
|
16
|
+
rule module_or_grammar
|
17
|
+
module_declaration / grammar
|
18
|
+
end
|
19
|
+
|
20
|
+
rule module_declaration
|
21
|
+
prefix:('module' space name:([A-Z] alphanumeric_char* ('::' [A-Z] alphanumeric_char*)*) space) module_contents:(module_declaration / grammar) suffix:(space 'end') {
|
22
|
+
def compile
|
23
|
+
prefix.text_value + module_contents.compile + suffix.text_value
|
24
|
+
end
|
25
|
+
|
26
|
+
def parser_name
|
27
|
+
prefix.name.text_value+'::'+module_contents.parser_name
|
28
|
+
end
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
rule grammar
|
33
|
+
'grammar' space grammar_name space ('do' space)? declaration_sequence space? 'end' <Grammar>
|
34
|
+
end
|
35
|
+
|
36
|
+
rule grammar_name
|
37
|
+
([A-Z] alphanumeric_char*)
|
38
|
+
end
|
39
|
+
|
40
|
+
rule declaration_sequence
|
41
|
+
head:declaration tail:(space declaration)* <DeclarationSequence> {
|
42
|
+
def declarations
|
43
|
+
[head] + tail
|
44
|
+
end
|
45
|
+
|
46
|
+
def tail
|
47
|
+
super.elements.map { |elt| elt.declaration }
|
48
|
+
end
|
49
|
+
}
|
50
|
+
/
|
51
|
+
'' {
|
52
|
+
def compile(builder)
|
53
|
+
end
|
54
|
+
}
|
55
|
+
end
|
56
|
+
|
57
|
+
rule declaration
|
58
|
+
parsing_rule / include_declaration
|
59
|
+
end
|
60
|
+
|
61
|
+
rule include_declaration
|
62
|
+
'include' space [A-Z] (alphanumeric_char / '::')* {
|
63
|
+
def compile(builder)
|
64
|
+
builder << text_value
|
65
|
+
end
|
66
|
+
}
|
67
|
+
end
|
68
|
+
|
69
|
+
rule parsing_rule
|
70
|
+
'rule' space nonterminal space ('do' space)? parsing_expression space 'end' <ParsingRule>
|
71
|
+
end
|
72
|
+
|
73
|
+
rule parsing_expression
|
74
|
+
choice / sequence / primary
|
75
|
+
end
|
76
|
+
|
77
|
+
rule choice
|
78
|
+
head:alternative tail:(space? '/' space? alternative)+ <Choice> {
|
79
|
+
def alternatives
|
80
|
+
[head] + tail
|
81
|
+
end
|
82
|
+
|
83
|
+
def tail
|
84
|
+
super.elements.map {|elt| elt.alternative}
|
85
|
+
end
|
86
|
+
|
87
|
+
def inline_modules
|
88
|
+
(alternatives.map {|alt| alt.inline_modules }).flatten
|
89
|
+
end
|
90
|
+
}
|
91
|
+
end
|
92
|
+
|
93
|
+
rule sequence
|
94
|
+
head:labeled_sequence_primary tail:(space labeled_sequence_primary)+ node_class_declarations <Sequence> {
|
95
|
+
def sequence_elements
|
96
|
+
[head] + tail
|
97
|
+
end
|
98
|
+
|
99
|
+
def tail
|
100
|
+
super.elements.map {|elt| elt.labeled_sequence_primary }
|
101
|
+
end
|
102
|
+
|
103
|
+
def inline_modules
|
104
|
+
(sequence_elements.map {|elt| elt.inline_modules}).flatten +
|
105
|
+
[sequence_element_accessor_module] +
|
106
|
+
node_class_declarations.inline_modules
|
107
|
+
end
|
108
|
+
|
109
|
+
def inline_module_name
|
110
|
+
node_class_declarations.inline_module_name
|
111
|
+
end
|
112
|
+
}
|
113
|
+
end
|
114
|
+
|
115
|
+
rule alternative
|
116
|
+
sequence / primary
|
117
|
+
end
|
118
|
+
|
119
|
+
rule primary
|
120
|
+
prefix atomic {
|
121
|
+
def compile(address, builder, parent_expression=nil)
|
122
|
+
prefix.compile(address, builder, self)
|
123
|
+
end
|
124
|
+
|
125
|
+
def prefixed_expression
|
126
|
+
atomic
|
127
|
+
end
|
128
|
+
|
129
|
+
def inline_modules
|
130
|
+
atomic.inline_modules
|
131
|
+
end
|
132
|
+
|
133
|
+
def inline_module_name
|
134
|
+
nil
|
135
|
+
end
|
136
|
+
}
|
137
|
+
/
|
138
|
+
prefix space? predicate_block {
|
139
|
+
def compile(address, builder, parent_expression=nil)
|
140
|
+
prefix.compile(address, builder, self)
|
141
|
+
end
|
142
|
+
def prefixed_expression
|
143
|
+
predicate_block
|
144
|
+
end
|
145
|
+
def inline_modules
|
146
|
+
[]
|
147
|
+
end
|
148
|
+
}
|
149
|
+
/
|
150
|
+
atomic suffix node_class_declarations {
|
151
|
+
def compile(address, builder, parent_expression=nil)
|
152
|
+
suffix.compile(address, builder, self)
|
153
|
+
end
|
154
|
+
|
155
|
+
def optional_expression
|
156
|
+
atomic
|
157
|
+
end
|
158
|
+
|
159
|
+
def node_class_name
|
160
|
+
node_class_declarations.node_class_name
|
161
|
+
end
|
162
|
+
|
163
|
+
def inline_modules
|
164
|
+
atomic.inline_modules + node_class_declarations.inline_modules
|
165
|
+
end
|
166
|
+
|
167
|
+
def inline_module_name
|
168
|
+
node_class_declarations.inline_module_name
|
169
|
+
end
|
170
|
+
}
|
171
|
+
/
|
172
|
+
atomic node_class_declarations {
|
173
|
+
def compile(address, builder, parent_expression=nil)
|
174
|
+
atomic.compile(address, builder, self)
|
175
|
+
end
|
176
|
+
|
177
|
+
def node_class_name
|
178
|
+
node_class_declarations.node_class_name
|
179
|
+
end
|
180
|
+
|
181
|
+
def inline_modules
|
182
|
+
atomic.inline_modules + node_class_declarations.inline_modules
|
183
|
+
end
|
184
|
+
|
185
|
+
def inline_module_name
|
186
|
+
node_class_declarations.inline_module_name
|
187
|
+
end
|
188
|
+
}
|
189
|
+
end
|
190
|
+
|
191
|
+
rule labeled_sequence_primary
|
192
|
+
label sequence_primary {
|
193
|
+
def compile(lexical_address, builder)
|
194
|
+
sequence_primary.compile(lexical_address, builder)
|
195
|
+
end
|
196
|
+
|
197
|
+
def inline_modules
|
198
|
+
sequence_primary.inline_modules
|
199
|
+
end
|
200
|
+
|
201
|
+
def label_name
|
202
|
+
if label.name
|
203
|
+
label.name
|
204
|
+
elsif sequence_primary.instance_of?(Nonterminal)
|
205
|
+
sequence_primary.text_value
|
206
|
+
else
|
207
|
+
nil
|
208
|
+
end
|
209
|
+
end
|
210
|
+
}
|
211
|
+
end
|
212
|
+
|
213
|
+
rule label
|
214
|
+
(alpha_char alphanumeric_char*) ':' {
|
215
|
+
def name
|
216
|
+
elements[0].text_value
|
217
|
+
end
|
218
|
+
}
|
219
|
+
/
|
220
|
+
'' {
|
221
|
+
def name
|
222
|
+
nil
|
223
|
+
end
|
224
|
+
}
|
225
|
+
end
|
226
|
+
|
227
|
+
rule sequence_primary
|
228
|
+
prefix atomic {
|
229
|
+
def compile(lexical_address, builder)
|
230
|
+
prefix.compile(lexical_address, builder, self)
|
231
|
+
end
|
232
|
+
|
233
|
+
def prefixed_expression
|
234
|
+
elements[1]
|
235
|
+
end
|
236
|
+
|
237
|
+
def inline_modules
|
238
|
+
atomic.inline_modules
|
239
|
+
end
|
240
|
+
|
241
|
+
def inline_module_name
|
242
|
+
nil
|
243
|
+
end
|
244
|
+
}
|
245
|
+
/
|
246
|
+
prefix space? predicate_block {
|
247
|
+
def compile(address, builder, parent_expression=nil)
|
248
|
+
prefix.compile(address, builder, self)
|
249
|
+
end
|
250
|
+
def prefixed_expression
|
251
|
+
predicate_block
|
252
|
+
end
|
253
|
+
def inline_modules
|
254
|
+
[]
|
255
|
+
end
|
256
|
+
}
|
257
|
+
/
|
258
|
+
atomic suffix {
|
259
|
+
def compile(lexical_address, builder)
|
260
|
+
suffix.compile(lexical_address, builder, self)
|
261
|
+
end
|
262
|
+
|
263
|
+
def node_class_name
|
264
|
+
nil
|
265
|
+
end
|
266
|
+
|
267
|
+
def inline_modules
|
268
|
+
atomic.inline_modules
|
269
|
+
end
|
270
|
+
|
271
|
+
def inline_module_name
|
272
|
+
nil
|
273
|
+
end
|
274
|
+
}
|
275
|
+
/
|
276
|
+
atomic
|
277
|
+
end
|
278
|
+
|
279
|
+
rule suffix
|
280
|
+
repetition_suffix / optional_suffix
|
281
|
+
end
|
282
|
+
|
283
|
+
rule optional_suffix
|
284
|
+
'?' <Optional>
|
285
|
+
end
|
286
|
+
|
287
|
+
rule node_class_declarations
|
288
|
+
node_class_expression trailing_inline_module {
|
289
|
+
def node_class_name
|
290
|
+
node_class_expression.node_class_name
|
291
|
+
end
|
292
|
+
|
293
|
+
def inline_modules
|
294
|
+
trailing_inline_module.inline_modules
|
295
|
+
end
|
296
|
+
|
297
|
+
def inline_module
|
298
|
+
trailing_inline_module.inline_module
|
299
|
+
end
|
300
|
+
|
301
|
+
def inline_module_name
|
302
|
+
inline_module.module_name if inline_module
|
303
|
+
end
|
304
|
+
}
|
305
|
+
end
|
306
|
+
|
307
|
+
rule repetition_suffix
|
308
|
+
'+' <OneOrMore> / '*' <ZeroOrMore> / occurrence_range
|
309
|
+
end
|
310
|
+
|
311
|
+
rule occurrence_range
|
312
|
+
space? min:([0-9])* '..' max:([0-9])* <OccurrenceRange>
|
313
|
+
end
|
314
|
+
|
315
|
+
rule prefix
|
316
|
+
'&' <AndPredicate> / '!' <NotPredicate> / '~' <TransientPrefix>
|
317
|
+
end
|
318
|
+
|
319
|
+
rule atomic
|
320
|
+
terminal
|
321
|
+
/
|
322
|
+
nonterminal
|
323
|
+
/
|
324
|
+
parenthesized_expression
|
325
|
+
end
|
326
|
+
|
327
|
+
rule parenthesized_expression
|
328
|
+
'(' space? parsing_expression space? ')' <ParenthesizedExpression> {
|
329
|
+
def inline_modules
|
330
|
+
parsing_expression.inline_modules
|
331
|
+
end
|
332
|
+
}
|
333
|
+
end
|
334
|
+
|
335
|
+
rule nonterminal
|
336
|
+
!keyword_inside_grammar (alpha_char alphanumeric_char*) <Nonterminal>
|
337
|
+
end
|
338
|
+
|
339
|
+
rule terminal
|
340
|
+
quoted_string / character_class / anything_symbol
|
341
|
+
end
|
342
|
+
|
343
|
+
rule quoted_string
|
344
|
+
(single_quoted_string / double_quoted_string) {
|
345
|
+
def string
|
346
|
+
super.text_value
|
347
|
+
end
|
348
|
+
}
|
349
|
+
end
|
350
|
+
|
351
|
+
rule double_quoted_string
|
352
|
+
'"' string:(!'"' ("\\\\" / '\"' / .))* '"' <Terminal>
|
353
|
+
end
|
354
|
+
|
355
|
+
rule single_quoted_string
|
356
|
+
"'" string:(!"'" ("\\\\" / "\\'" / .))* "'" <Terminal>
|
357
|
+
end
|
358
|
+
|
359
|
+
rule character_class
|
360
|
+
'[' characters:(!']' ('\\' . / bracket_expression / !'\\' .))+ ']' <CharacterClass> {
|
361
|
+
def characters
|
362
|
+
super.text_value
|
363
|
+
end
|
364
|
+
}
|
365
|
+
end
|
366
|
+
|
367
|
+
rule bracket_expression
|
368
|
+
'[:' '^'? (
|
369
|
+
'alnum' / 'alpha' / 'blank' / 'cntrl' / 'digit' / 'graph' / 'lower' /
|
370
|
+
'print' / 'punct' / 'space' / 'upper' / 'xdigit' / 'word'
|
371
|
+
) ':]'
|
372
|
+
end
|
373
|
+
|
374
|
+
rule anything_symbol
|
375
|
+
'.' <AnythingSymbol>
|
376
|
+
end
|
377
|
+
|
378
|
+
rule node_class_expression
|
379
|
+
space '<' (!'>' .)+ '>' {
|
380
|
+
def node_class_name
|
381
|
+
elements[2].text_value
|
382
|
+
end
|
383
|
+
}
|
384
|
+
/
|
385
|
+
'' {
|
386
|
+
def node_class_name
|
387
|
+
nil
|
388
|
+
end
|
389
|
+
}
|
390
|
+
end
|
391
|
+
|
392
|
+
rule trailing_inline_module
|
393
|
+
space inline_module {
|
394
|
+
def inline_modules
|
395
|
+
[inline_module]
|
396
|
+
end
|
397
|
+
|
398
|
+
def inline_module_name
|
399
|
+
inline_module.module_name
|
400
|
+
end
|
401
|
+
}
|
402
|
+
/
|
403
|
+
'' {
|
404
|
+
def inline_modules
|
405
|
+
[]
|
406
|
+
end
|
407
|
+
|
408
|
+
def inline_module
|
409
|
+
nil
|
410
|
+
end
|
411
|
+
|
412
|
+
def inline_module_name
|
413
|
+
nil
|
414
|
+
end
|
415
|
+
}
|
416
|
+
end
|
417
|
+
|
418
|
+
rule predicate_block
|
419
|
+
'' inline_module <PredicateBlock>
|
420
|
+
end
|
421
|
+
|
422
|
+
rule inline_module
|
423
|
+
'{' (inline_module / ![{}] .)* '}' <InlineModule>
|
424
|
+
end
|
425
|
+
|
426
|
+
rule keyword_inside_grammar
|
427
|
+
('rule' / 'end') !non_space_char
|
428
|
+
end
|
429
|
+
|
430
|
+
rule non_space_char
|
431
|
+
!space .
|
432
|
+
end
|
433
|
+
|
434
|
+
rule alpha_char
|
435
|
+
[A-Za-z_]
|
436
|
+
end
|
437
|
+
|
438
|
+
rule alphanumeric_char
|
439
|
+
alpha_char / [0-9]
|
440
|
+
end
|
441
|
+
|
442
|
+
rule space
|
443
|
+
(white / comment_to_eol)+
|
444
|
+
end
|
445
|
+
|
446
|
+
rule comment_to_eol
|
447
|
+
'#' (!"\n" .)*
|
448
|
+
end
|
449
|
+
|
450
|
+
rule white
|
451
|
+
[ \t\n\r]
|
452
|
+
end
|
453
|
+
end
|
454
|
+
end
|
455
|
+
end
|