pygments.rb 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -208,7 +208,7 @@ class LlvmLexer(RegexLexer):
|
|
208
208
|
include('whitespace'),
|
209
209
|
|
210
210
|
# Before keywords, because keywords are valid label names :(...
|
211
|
-
(
|
211
|
+
(identifier + '\s*:', Name.Label),
|
212
212
|
|
213
213
|
include('keyword'),
|
214
214
|
|
@@ -240,7 +240,7 @@ class LlvmLexer(RegexLexer):
|
|
240
240
|
r'|linkonce_odr|weak|weak_odr|appending|dllimport|dllexport'
|
241
241
|
r'|common|default|hidden|protected|extern_weak|external'
|
242
242
|
r'|thread_local|zeroinitializer|undef|null|to|tail|target|triple'
|
243
|
-
r'|
|
243
|
+
r'|datalayout|volatile|nuw|nsw|exact|inbounds|align'
|
244
244
|
r'|addrspace|section|alias|module|asm|sideeffect|gc|dbg'
|
245
245
|
|
246
246
|
r'|ccc|fastcc|coldcc|x86_stdcallcc|x86_fastcallcc|arm_apcscc'
|
@@ -27,7 +27,7 @@ __all__ = ['CLexer', 'CppLexer', 'DLexer', 'DelphiLexer', 'ECLexer',
|
|
27
27
|
'DylanLexer', 'ObjectiveCLexer', 'FortranLexer', 'GLShaderLexer',
|
28
28
|
'PrologLexer', 'CythonLexer', 'ValaLexer', 'OocLexer', 'GoLexer',
|
29
29
|
'FelixLexer', 'AdaLexer', 'Modula2Lexer', 'BlitzMaxLexer',
|
30
|
-
'NimrodLexer', 'FantomLexer']
|
30
|
+
'NimrodLexer', 'FantomLexer', 'RustLexer', 'CudaLexer', 'MonkeyLexer']
|
31
31
|
|
32
32
|
|
33
33
|
class CLexer(RegexLexer):
|
@@ -41,6 +41,8 @@ class CLexer(RegexLexer):
|
|
41
41
|
|
42
42
|
#: optional Comment or Whitespace
|
43
43
|
_ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+'
|
44
|
+
#: only one /* */ style comment
|
45
|
+
_ws1 = r':\s*/[*].*?[*]/\s*'
|
44
46
|
|
45
47
|
tokens = {
|
46
48
|
'whitespace': [
|
@@ -48,9 +50,9 @@ class CLexer(RegexLexer):
|
|
48
50
|
('^#if\s+0', Comment.Preproc, 'if0'),
|
49
51
|
('^#', Comment.Preproc, 'macro'),
|
50
52
|
# or with whitespace
|
51
|
-
('^(' +
|
53
|
+
('^(' + _ws1 + r')(#if\s+0)',
|
52
54
|
bygroups(using(this), Comment.Preproc), 'if0'),
|
53
|
-
('^(' +
|
55
|
+
('^(' + _ws1 + ')(#)',
|
54
56
|
bygroups(using(this), Comment.Preproc), 'macro'),
|
55
57
|
(r'^(\s*)([a-zA-Z_][a-zA-Z0-9_]*:(?!:))',
|
56
58
|
bygroups(Text, Name.Label)),
|
@@ -89,7 +91,7 @@ class CLexer(RegexLexer):
|
|
89
91
|
(r'((?:[a-zA-Z0-9_*\s])+?(?:\s|[*]))' # return arguments
|
90
92
|
r'([a-zA-Z_][a-zA-Z0-9_]*)' # method name
|
91
93
|
r'(\s*\([^;]*?\))' # signature
|
92
|
-
r'(' + _ws + r')({)',
|
94
|
+
r'(' + _ws + r')?({)',
|
93
95
|
bygroups(using(this), Name.Function, using(this), using(this),
|
94
96
|
Punctuation),
|
95
97
|
'function'),
|
@@ -97,7 +99,7 @@ class CLexer(RegexLexer):
|
|
97
99
|
(r'((?:[a-zA-Z0-9_*\s])+?(?:\s|[*]))' # return arguments
|
98
100
|
r'([a-zA-Z_][a-zA-Z0-9_]*)' # method name
|
99
101
|
r'(\s*\([^;]*?\))' # signature
|
100
|
-
r'(' + _ws + r')(;)',
|
102
|
+
r'(' + _ws + r')?(;)',
|
101
103
|
bygroups(using(this), Name.Function, using(this), using(this),
|
102
104
|
Punctuation)),
|
103
105
|
('', Text, 'statement'),
|
@@ -174,11 +176,14 @@ class CppLexer(RegexLexer):
|
|
174
176
|
name = 'C++'
|
175
177
|
aliases = ['cpp', 'c++']
|
176
178
|
filenames = ['*.cpp', '*.hpp', '*.c++', '*.h++',
|
177
|
-
'*.cc', '*.hh', '*.cxx', '*.hxx'
|
179
|
+
'*.cc', '*.hh', '*.cxx', '*.hxx',
|
180
|
+
'*.C', '*.H', '*.cp', '*.CPP']
|
178
181
|
mimetypes = ['text/x-c++hdr', 'text/x-c++src']
|
179
182
|
|
180
183
|
#: optional Comment or Whitespace
|
181
184
|
_ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+'
|
185
|
+
#: only one /* */ style comment
|
186
|
+
_ws1 = r':\s*/[*].*?[*]/\s*'
|
182
187
|
|
183
188
|
tokens = {
|
184
189
|
'root': [
|
@@ -186,9 +191,9 @@ class CppLexer(RegexLexer):
|
|
186
191
|
('^#if\s+0', Comment.Preproc, 'if0'),
|
187
192
|
('^#', Comment.Preproc, 'macro'),
|
188
193
|
# or with whitespace
|
189
|
-
('^(' +
|
194
|
+
('^(' + _ws1 + r')(#if\s+0)',
|
190
195
|
bygroups(using(this), Comment.Preproc), 'if0'),
|
191
|
-
('^(' +
|
196
|
+
('^(' + _ws1 + ')(#)',
|
192
197
|
bygroups(using(this), Comment.Preproc), 'macro'),
|
193
198
|
(r'\n', Text),
|
194
199
|
(r'\s+', Text),
|
@@ -270,6 +275,8 @@ class ECLexer(RegexLexer):
|
|
270
275
|
|
271
276
|
#: optional Comment or Whitespace
|
272
277
|
_ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+'
|
278
|
+
#: only one /* */ style comment
|
279
|
+
_ws1 = r':\s*/[*].*?[*]/\s*'
|
273
280
|
|
274
281
|
tokens = {
|
275
282
|
'whitespace': [
|
@@ -277,8 +284,8 @@ class ECLexer(RegexLexer):
|
|
277
284
|
('^#if\s+0', Comment.Preproc, 'if0'),
|
278
285
|
('^#', Comment.Preproc, 'macro'),
|
279
286
|
# or with whitespace
|
280
|
-
('^' +
|
281
|
-
('^' +
|
287
|
+
('^' + _ws1 + r'#if\s+0', Comment.Preproc, 'if0'),
|
288
|
+
('^' + _ws1 + '#', Comment.Preproc, 'macro'),
|
282
289
|
(r'^(\s*)([a-zA-Z_][a-zA-Z0-9_]*:(?!:))', bygroups(Text, Name.Label)),
|
283
290
|
(r'\n', Text),
|
284
291
|
(r'\s+', Text),
|
@@ -323,7 +330,7 @@ class ECLexer(RegexLexer):
|
|
323
330
|
(r'((?:[a-zA-Z0-9_*\s])+?(?:\s|[*]))' # return arguments
|
324
331
|
r'([a-zA-Z_][a-zA-Z0-9_]*)' # method name
|
325
332
|
r'(\s*\([^;]*?\))' # signature
|
326
|
-
r'(' + _ws + r')({)',
|
333
|
+
r'(' + _ws + r')?({)',
|
327
334
|
bygroups(using(this), Name.Function, using(this), using(this),
|
328
335
|
Punctuation),
|
329
336
|
'function'),
|
@@ -331,7 +338,7 @@ class ECLexer(RegexLexer):
|
|
331
338
|
(r'((?:[a-zA-Z0-9_*\s])+?(?:\s|[*]))' # return arguments
|
332
339
|
r'([a-zA-Z_][a-zA-Z0-9_]*)' # method name
|
333
340
|
r'(\s*\([^;]*?\))' # signature
|
334
|
-
r'(' + _ws + r')(;)',
|
341
|
+
r'(' + _ws + r')?(;)',
|
335
342
|
bygroups(using(this), Name.Function, using(this), using(this),
|
336
343
|
Punctuation)),
|
337
344
|
('', Text, 'statement'),
|
@@ -1102,12 +1109,14 @@ class ObjectiveCLexer(RegexLexer):
|
|
1102
1109
|
|
1103
1110
|
name = 'Objective-C'
|
1104
1111
|
aliases = ['objective-c', 'objectivec', 'obj-c', 'objc']
|
1105
|
-
#XXX: objc has .h files too :-/
|
1112
|
+
# XXX: objc has .h files too :-/
|
1106
1113
|
filenames = ['*.m']
|
1107
1114
|
mimetypes = ['text/x-objective-c']
|
1108
1115
|
|
1109
1116
|
#: optional Comment or Whitespace
|
1110
1117
|
_ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+'
|
1118
|
+
#: only one /* */ style comment
|
1119
|
+
_ws1 = r':\s*/[*].*?[*]/\s*'
|
1111
1120
|
|
1112
1121
|
tokens = {
|
1113
1122
|
'whitespace': [
|
@@ -1115,8 +1124,10 @@ class ObjectiveCLexer(RegexLexer):
|
|
1115
1124
|
('^#if\s+0', Comment.Preproc, 'if0'),
|
1116
1125
|
('^#', Comment.Preproc, 'macro'),
|
1117
1126
|
# or with whitespace
|
1118
|
-
('^' +
|
1119
|
-
|
1127
|
+
('^(' + _ws1 + r')(#if\s+0)',
|
1128
|
+
bygroups(using(this), Comment.Preproc), 'if0'),
|
1129
|
+
('^(' + _ws1 + ')(#)',
|
1130
|
+
bygroups(using(this), Comment.Preproc), 'macro'),
|
1120
1131
|
(r'\n', Text),
|
1121
1132
|
(r'\s+', Text),
|
1122
1133
|
(r'\\\n', Text), # line continuation
|
@@ -1139,7 +1150,7 @@ class ObjectiveCLexer(RegexLexer):
|
|
1139
1150
|
r'switch|typedef|union|volatile|virtual|while|in|@selector|'
|
1140
1151
|
r'@private|@protected|@public|@encode|'
|
1141
1152
|
r'@synchronized|@try|@throw|@catch|@finally|@end|@property|'
|
1142
|
-
r'@synthesize|@dynamic)\b', Keyword),
|
1153
|
+
r'@synthesize|@dynamic|@optional)\b', Keyword),
|
1143
1154
|
(r'(int|long|float|short|double|char|unsigned|signed|void|'
|
1144
1155
|
r'id|BOOL|IBOutlet|IBAction|SEL)\b', Keyword.Type),
|
1145
1156
|
(r'(_{0,2}inline|naked|restrict|thread|typename)\b',
|
@@ -1149,6 +1160,10 @@ class ObjectiveCLexer(RegexLexer):
|
|
1149
1160
|
(r'(TRUE|FALSE|nil|NULL)\b', Name.Builtin),
|
1150
1161
|
('[a-zA-Z$_][a-zA-Z0-9$_]*:(?!:)', Name.Label),
|
1151
1162
|
('[a-zA-Z$_][a-zA-Z0-9$_]*', Name),
|
1163
|
+
(r'(@interface|@implementation)(\s+)', bygroups(Keyword, Text),
|
1164
|
+
('#pop', 'classname')),
|
1165
|
+
(r'(@class|@protocol)(\s+)', bygroups(Keyword, Text),
|
1166
|
+
('#pop', 'forward_classname')),
|
1152
1167
|
],
|
1153
1168
|
'root': [
|
1154
1169
|
include('whitespace'),
|
@@ -1156,7 +1171,7 @@ class ObjectiveCLexer(RegexLexer):
|
|
1156
1171
|
(r'((?:[a-zA-Z0-9_*\s])+?(?:\s|[*]))' # return arguments
|
1157
1172
|
r'([a-zA-Z$_][a-zA-Z0-9$_]*)' # method name
|
1158
1173
|
r'(\s*\([^;]*?\))' # signature
|
1159
|
-
r'(' + _ws + r')({)',
|
1174
|
+
r'(' + _ws + r')?({)',
|
1160
1175
|
bygroups(using(this), Name.Function,
|
1161
1176
|
using(this), Text, Punctuation),
|
1162
1177
|
'function'),
|
@@ -1171,7 +1186,7 @@ class ObjectiveCLexer(RegexLexer):
|
|
1171
1186
|
(r'((?:[a-zA-Z0-9_*\s])+?(?:\s|[*]))' # return arguments
|
1172
1187
|
r'([a-zA-Z$_][a-zA-Z0-9$_]*)' # method name
|
1173
1188
|
r'(\s*\([^;]*?\))' # signature
|
1174
|
-
r'(' + _ws + r')(;)',
|
1189
|
+
r'(' + _ws + r')?(;)',
|
1175
1190
|
bygroups(using(this), Name.Function,
|
1176
1191
|
using(this), Text, Punctuation)),
|
1177
1192
|
(r'(@interface|@implementation)(\s+)', bygroups(Keyword, Text),
|
@@ -1212,6 +1227,10 @@ class ObjectiveCLexer(RegexLexer):
|
|
1212
1227
|
],
|
1213
1228
|
'method': [
|
1214
1229
|
include('whitespace'),
|
1230
|
+
# TODO unsure if ellipses are allowed elsewhere, see discussion in
|
1231
|
+
# Issue 789
|
1232
|
+
(r',', Punctuation),
|
1233
|
+
(r'\.\.\.', Punctuation),
|
1215
1234
|
(r'(\(.*?\))([a-zA-Z$_][a-zA-Z0-9$_]*)', bygroups(using(this),
|
1216
1235
|
Name.Variable)),
|
1217
1236
|
(r'[a-zA-Z$_][a-zA-Z0-9$_]*:', Name.Function),
|
@@ -1436,7 +1455,8 @@ class PrologLexer(RegexLexer):
|
|
1436
1455
|
(r"'(?:''|[^'])*'", String.Atom), # quoted atom
|
1437
1456
|
# Needs to not be followed by an atom.
|
1438
1457
|
#(r'=(?=\s|[a-zA-Z\[])', Operator),
|
1439
|
-
(r'
|
1458
|
+
(r'is\b', Operator),
|
1459
|
+
(r'(<|>|=<|>=|==|=:=|=|/|//|\*|\+|-)(?=\s|[a-zA-Z0-9\[])',
|
1440
1460
|
Operator),
|
1441
1461
|
(r'(mod|div|not)\b', Operator),
|
1442
1462
|
(r'_', Keyword), # The don't-care variable
|
@@ -1807,19 +1827,34 @@ class GoLexer(RegexLexer):
|
|
1807
1827
|
(r'\\\n', Text), # line continuations
|
1808
1828
|
(r'//(.*?)\n', Comment.Single),
|
1809
1829
|
(r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),
|
1810
|
-
(r'(
|
1811
|
-
|
1812
|
-
|
1813
|
-
r'|
|
1814
|
-
r'|continue|for|
|
1830
|
+
(r'(import|package)\b', Keyword.Namespace),
|
1831
|
+
(r'(var|func|struct|map|chan|type|interface|const)\b', Keyword.Declaration),
|
1832
|
+
(r'(break|default|select|case|defer|go'
|
1833
|
+
r'|else|goto|switch|fallthrough|if|range'
|
1834
|
+
r'|continue|for|return)\b', Keyword
|
1835
|
+
),
|
1836
|
+
(r'(true|false|iota|nil)\b', Keyword.Constant),
|
1837
|
+
# It seems the builtin types aren't actually keywords, but
|
1838
|
+
# can be used as functions. So we need two declarations.
|
1839
|
+
(r'(uint|uint8|uint16|uint32|uint64'
|
1840
|
+
r'|int|int8|int16|int32|int64'
|
1841
|
+
r'|float|float32|float64'
|
1842
|
+
r'|complex64|complex128|byte|rune'
|
1843
|
+
r'|string|bool|error|uintptr'
|
1844
|
+
r'|print|println|panic|recover|close|complex|real|imag'
|
1845
|
+
r'|len|cap|append|copy|delete|new|make)\b(\()', bygroups(Name.Builtin, Punctuation)
|
1815
1846
|
),
|
1816
|
-
|
1817
|
-
|
1818
|
-
r'|
|
1819
|
-
r'|
|
1820
|
-
r'|
|
1821
|
-
r'|string|close|closed|len|cap|new|make)\b', Name.Builtin
|
1847
|
+
(r'(uint|uint8|uint16|uint32|uint64'
|
1848
|
+
r'|int|int8|int16|int32|int64'
|
1849
|
+
r'|float|float32|float64'
|
1850
|
+
r'|complex64|complex128|byte|rune'
|
1851
|
+
r'|string|bool|error|uintptr)\b', Keyword.Type
|
1822
1852
|
),
|
1853
|
+
# imaginary_lit
|
1854
|
+
(r'\d+i', Number),
|
1855
|
+
(r'\d+\.\d*([Ee][-+]\d+)?i', Number),
|
1856
|
+
(r'\.\d+([Ee][-+]\d+)?i', Number),
|
1857
|
+
(r'\d+[Ee][-+]\d+i', Number),
|
1823
1858
|
# float_lit
|
1824
1859
|
(r'\d+(\.\d+[eE][+\-]?\d+|'
|
1825
1860
|
r'\.\d*|[eE][+\-]?\d+)', Number.Float),
|
@@ -1843,11 +1878,10 @@ class GoLexer(RegexLexer):
|
|
1843
1878
|
(r'"(\\\\|\\"|[^"])*"', String),
|
1844
1879
|
# Tokens
|
1845
1880
|
(r'(<<=|>>=|<<|>>|<=|>=|&\^=|&\^|\+=|-=|\*=|/=|%=|&=|\|=|&&|\|\|'
|
1846
|
-
r'
|
1847
|
-
|
1848
|
-
),
|
1881
|
+
r'|<-|\+\+|--|==|!=|:=|\.\.\.|[+\-*/%&])', Operator),
|
1882
|
+
(r'[|^<>=!()\[\]{}.,;:]', Punctuation),
|
1849
1883
|
# identifier
|
1850
|
-
(r'[a-zA-Z_]\w*', Name),
|
1884
|
+
(r'[a-zA-Z_]\w*', Name.Other),
|
1851
1885
|
]
|
1852
1886
|
}
|
1853
1887
|
|
@@ -2120,8 +2154,6 @@ class AdaLexer(RegexLexer):
|
|
2120
2154
|
|
2121
2155
|
flags = re.MULTILINE | re.I # Ignore case
|
2122
2156
|
|
2123
|
-
_ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+'
|
2124
|
-
|
2125
2157
|
tokens = {
|
2126
2158
|
'root': [
|
2127
2159
|
(r'[^\S\n]+', Text),
|
@@ -2889,3 +2921,263 @@ class FantomLexer(RegexLexer):
|
|
2889
2921
|
(r'.', Text)
|
2890
2922
|
],
|
2891
2923
|
}
|
2924
|
+
|
2925
|
+
|
2926
|
+
class RustLexer(RegexLexer):
|
2927
|
+
"""
|
2928
|
+
Lexer for Mozilla's Rust programming language.
|
2929
|
+
|
2930
|
+
*New in Pygments 1.6.*
|
2931
|
+
"""
|
2932
|
+
name = 'Rust'
|
2933
|
+
filenames = ['*.rs', '*.rc']
|
2934
|
+
aliases = ['rust']
|
2935
|
+
mimetypes = ['text/x-rustsrc']
|
2936
|
+
|
2937
|
+
tokens = {
|
2938
|
+
'root': [
|
2939
|
+
# Whitespace and Comments
|
2940
|
+
(r'\n', Text),
|
2941
|
+
(r'\s+', Text),
|
2942
|
+
(r'//(.*?)\n', Comment.Single),
|
2943
|
+
(r'/[*](.|\n)*?[*]/', Comment.Multiline),
|
2944
|
+
|
2945
|
+
# Keywords
|
2946
|
+
(r'(alt|as|assert|be|break|check|claim|class|const'
|
2947
|
+
r'|cont|copy|crust|do|else|enum|export|fail'
|
2948
|
+
r'|false|fn|for|if|iface|impl|import|let|log'
|
2949
|
+
r'|loop|mod|mut|native|pure|resource|ret|true'
|
2950
|
+
r'|type|unsafe|use|white|note|bind|prove|unchecked'
|
2951
|
+
r'|with|syntax|u8|u16|u32|u64|i8|i16|i32|i64|uint'
|
2952
|
+
r'|int|f32|f64)\b', Keyword),
|
2953
|
+
|
2954
|
+
# Character Literal
|
2955
|
+
(r"""'(\\['"\\nrt]|\\x[0-9a-fA-F]{2}|\\[0-7]{1,3}"""
|
2956
|
+
r"""|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|.)'""",
|
2957
|
+
String.Char),
|
2958
|
+
# Binary Literal
|
2959
|
+
(r'0[Bb][01_]+', Number, 'number_lit'),
|
2960
|
+
# Octal Literal
|
2961
|
+
(r'0[0-7_]+', Number.Oct, 'number_lit'),
|
2962
|
+
# Hexadecimal Literal
|
2963
|
+
(r'0[xX][0-9a-fA-F_]+', Number.Hex, 'number_lit'),
|
2964
|
+
# Decimal Literal
|
2965
|
+
(r'[0-9][0-9_]*(\.[0-9_]+[eE][+\-]?'
|
2966
|
+
r'[0-9_]+|\.[0-9_]*|[eE][+\-]?[0-9_]+)?', Number, 'number_lit'),
|
2967
|
+
# String Literal
|
2968
|
+
(r'"', String, 'string'),
|
2969
|
+
|
2970
|
+
# Operators and Punctuation
|
2971
|
+
(r'[{}()\[\],.;]', Punctuation),
|
2972
|
+
(r'[+\-*/%&|<>^!~@=:?]', Operator),
|
2973
|
+
|
2974
|
+
# Identifier
|
2975
|
+
(r'[a-zA-Z_$][a-zA-Z0-9_]*', Name),
|
2976
|
+
|
2977
|
+
# Attributes
|
2978
|
+
(r'#\[', Comment.Preproc, 'attribute['),
|
2979
|
+
(r'#\(', Comment.Preproc, 'attribute('),
|
2980
|
+
# Macros
|
2981
|
+
(r'#[A-Za-z_][A-Za-z0-9_]*\[', Comment.Preproc, 'attribute['),
|
2982
|
+
(r'#[A-Za-z_][A-Za-z0-9_]*\(', Comment.Preproc, 'attribute('),
|
2983
|
+
],
|
2984
|
+
'number_lit': [
|
2985
|
+
(r'(([ui](8|16|32|64)?)|(f(32|64)?))?', Keyword, '#pop'),
|
2986
|
+
],
|
2987
|
+
'string': [
|
2988
|
+
(r'"', String, '#pop'),
|
2989
|
+
(r"""\\['"\\nrt]|\\x[0-9a-fA-F]{2}|\\[0-7]{1,3}"""
|
2990
|
+
r"""|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}""", String.Escape),
|
2991
|
+
(r'[^\\"]+', String),
|
2992
|
+
(r'\\', String),
|
2993
|
+
],
|
2994
|
+
'attribute_common': [
|
2995
|
+
(r'"', String, 'string'),
|
2996
|
+
(r'\[', Comment.Preproc, 'attribute['),
|
2997
|
+
(r'\(', Comment.Preproc, 'attribute('),
|
2998
|
+
],
|
2999
|
+
'attribute[': [
|
3000
|
+
include('attribute_common'),
|
3001
|
+
(r'\];?', Comment.Preproc, '#pop'),
|
3002
|
+
(r'[^"\]]+', Comment.Preproc),
|
3003
|
+
],
|
3004
|
+
'attribute(': [
|
3005
|
+
include('attribute_common'),
|
3006
|
+
(r'\);?', Comment.Preproc, '#pop'),
|
3007
|
+
(r'[^"\)]+', Comment.Preproc),
|
3008
|
+
],
|
3009
|
+
}
|
3010
|
+
|
3011
|
+
|
3012
|
+
class CudaLexer(CLexer):
|
3013
|
+
"""
|
3014
|
+
For NVIDIA `CUDA™ <http://developer.nvidia.com/category/zone/cuda-zone>`_
|
3015
|
+
source.
|
3016
|
+
|
3017
|
+
*New in Pygments 1.6.*
|
3018
|
+
"""
|
3019
|
+
name = 'CUDA'
|
3020
|
+
filenames = ['*.cu', '*.cuh']
|
3021
|
+
aliases = ['cuda', 'cu']
|
3022
|
+
mimetypes = ['text/x-cuda']
|
3023
|
+
|
3024
|
+
function_qualifiers = ['__device__', '__global__', '__host__',
|
3025
|
+
'__noinline__', '__forceinline__']
|
3026
|
+
variable_qualifiers = ['__device__', '__constant__', '__shared__',
|
3027
|
+
'__restrict__']
|
3028
|
+
vector_types = ['char1', 'uchar1', 'char2', 'uchar2', 'char3', 'uchar3',
|
3029
|
+
'char4', 'uchar4', 'short1', 'ushort1', 'short2', 'ushort2',
|
3030
|
+
'short3', 'ushort3', 'short4', 'ushort4', 'int1', 'uint1',
|
3031
|
+
'int2', 'uint2', 'int3', 'uint3', 'int4', 'uint4', 'long1',
|
3032
|
+
'ulong1', 'long2', 'ulong2', 'long3', 'ulong3', 'long4',
|
3033
|
+
'ulong4', 'longlong1', 'ulonglong1', 'longlong2',
|
3034
|
+
'ulonglong2', 'float1', 'float2', 'float3', 'float4',
|
3035
|
+
'double1', 'double2', 'dim3']
|
3036
|
+
variables = ['gridDim', 'blockIdx', 'blockDim', 'threadIdx', 'warpSize']
|
3037
|
+
functions = ['__threadfence_block', '__threadfence', '__threadfence_system',
|
3038
|
+
'__syncthreads', '__syncthreads_count', '__syncthreads_and',
|
3039
|
+
'__syncthreads_or']
|
3040
|
+
execution_confs = ['<<<', '>>>']
|
3041
|
+
|
3042
|
+
def get_tokens_unprocessed(self, text):
|
3043
|
+
for index, token, value in \
|
3044
|
+
CLexer.get_tokens_unprocessed(self, text):
|
3045
|
+
if token is Name:
|
3046
|
+
if value in self.variable_qualifiers:
|
3047
|
+
token = Keyword.Type
|
3048
|
+
elif value in self.vector_types:
|
3049
|
+
token = Keyword.Type
|
3050
|
+
elif value in self.variables:
|
3051
|
+
token = Name.Builtin
|
3052
|
+
elif value in self.execution_confs:
|
3053
|
+
token = Keyword.Pseudo
|
3054
|
+
elif value in self.function_qualifiers:
|
3055
|
+
token = Keyword.Reserved
|
3056
|
+
elif value in self.functions:
|
3057
|
+
token = Name.Function
|
3058
|
+
yield index, token, value
|
3059
|
+
|
3060
|
+
|
3061
|
+
class MonkeyLexer(RegexLexer):
|
3062
|
+
"""
|
3063
|
+
For
|
3064
|
+
`Monkey <https://en.wikipedia.org/wiki/Monkey_(programming_language)>`_
|
3065
|
+
source code.
|
3066
|
+
|
3067
|
+
*New in Pygments 1.6.*
|
3068
|
+
"""
|
3069
|
+
|
3070
|
+
name = 'Monkey'
|
3071
|
+
aliases = ['monkey']
|
3072
|
+
filenames = ['*.monkey']
|
3073
|
+
mimetypes = ['text/x-monkey']
|
3074
|
+
|
3075
|
+
name_variable = r'[a-z_][a-zA-Z0-9_]*'
|
3076
|
+
name_function = r'[A-Z][a-zA-Z0-9_]*'
|
3077
|
+
name_constant = r'[A-Z_][A-Z0-9_]*'
|
3078
|
+
name_class = r'[A-Z][a-zA-Z0-9_]*'
|
3079
|
+
name_module = r'[a-z0-9_]*'
|
3080
|
+
|
3081
|
+
keyword_type = r'(?:Int|Float|String|Bool|Object|Array|Void)'
|
3082
|
+
# ? == Bool // % == Int // # == Float // $ == String
|
3083
|
+
keyword_type_special = r'[?%#$]'
|
3084
|
+
|
3085
|
+
flags = re.MULTILINE
|
3086
|
+
|
3087
|
+
tokens = {
|
3088
|
+
'root': [
|
3089
|
+
#Text
|
3090
|
+
(r'\s+', Text),
|
3091
|
+
# Comments
|
3092
|
+
(r"'.*", Comment),
|
3093
|
+
(r'(?i)^#rem\b', Comment.Multiline, 'comment'),
|
3094
|
+
# preprocessor directives
|
3095
|
+
(r'(?i)^(?:#If|#ElseIf|#Else|#EndIf|#End|#Print|#Error)\b', Comment.Preproc),
|
3096
|
+
# preprocessor variable (any line starting with '#' that is not a directive)
|
3097
|
+
(r'^#', Comment.Preproc, 'variables'),
|
3098
|
+
# String
|
3099
|
+
('"', String.Double, 'string'),
|
3100
|
+
# Numbers
|
3101
|
+
(r'[0-9]+\.[0-9]*(?!\.)', Number.Float),
|
3102
|
+
(r'\.[0-9]+(?!\.)', Number.Float),
|
3103
|
+
(r'[0-9]+', Number.Integer),
|
3104
|
+
(r'\$[0-9a-fA-Z]+', Number.Hex),
|
3105
|
+
(r'\%[10]+', Number), # Binary
|
3106
|
+
# Native data types
|
3107
|
+
(r'\b%s\b' % keyword_type, Keyword.Type),
|
3108
|
+
# Exception handling
|
3109
|
+
(r'(?i)\b(?:Try|Catch|Throw)\b', Keyword.Reserved),
|
3110
|
+
(r'Throwable', Name.Exception),
|
3111
|
+
# Builtins
|
3112
|
+
(r'(?i)\b(?:Null|True|False)\b', Name.Builtin),
|
3113
|
+
(r'(?i)\b(?:Self|Super)\b', Name.Builtin.Pseudo),
|
3114
|
+
(r'\b(?:HOST|LANG|TARGET|CONFIG)\b', Name.Constant),
|
3115
|
+
# Keywords
|
3116
|
+
(r'(?i)^(Import)(\s+)(.*)(\n)', bygroups(Keyword.Namespace, Text, Name.Namespace, Text)),
|
3117
|
+
(r'(?i)^Strict\b.*\n', Keyword.Reserved),
|
3118
|
+
(r'(?i)(Const|Local|Global|Field)(\s+)', bygroups(Keyword.Declaration, Text), 'variables'),
|
3119
|
+
(r'(?i)(New|Class|Interface|Extends|Implements)(\s+)', bygroups(Keyword.Reserved, Text), 'classname'),
|
3120
|
+
(r'(?i)(Function|Method)(\s+)', bygroups(Keyword.Reserved, Text), 'funcname'),
|
3121
|
+
(r'(?i)(?:End|Return|Public|Private|Extern|Property|Final|Abstract)\b', Keyword.Reserved),
|
3122
|
+
# Flow Control stuff
|
3123
|
+
(r'(?i)(?:If|Then|Else|ElseIf|EndIf|'
|
3124
|
+
r'Select|Case|Default|'
|
3125
|
+
r'While|Wend|'
|
3126
|
+
r'Repeat|Until|Forever|'
|
3127
|
+
r'For|To|Until|Step|EachIn|Next|'
|
3128
|
+
r'Exit|Continue)\s+', Keyword.Reserved),
|
3129
|
+
# not used yet
|
3130
|
+
(r'(?i)\b(?:Module|Inline)\b', Keyword.Reserved),
|
3131
|
+
# Array
|
3132
|
+
(r'[\[\]]', Punctuation),
|
3133
|
+
# Other
|
3134
|
+
(r'<=|>=|<>|\*=|/=|\+=|-=|&=|~=|\|=|[-&*/^+=<>|~]', Operator),
|
3135
|
+
(r'(?i)(?:Not|Mod|Shl|Shr|And|Or)', Operator.Word),
|
3136
|
+
(r'[\(\){}!#,.:]', Punctuation),
|
3137
|
+
# catch the rest
|
3138
|
+
(r'%s\b' % name_constant, Name.Constant),
|
3139
|
+
(r'%s\b' % name_function, Name.Function),
|
3140
|
+
(r'%s\b' % name_variable, Name.Variable),
|
3141
|
+
],
|
3142
|
+
'funcname': [
|
3143
|
+
(r'(?i)%s\b' % name_function, Name.Function),
|
3144
|
+
(r':', Punctuation, 'classname'),
|
3145
|
+
(r'\s+', Text),
|
3146
|
+
(r'\(', Punctuation, 'variables'),
|
3147
|
+
(r'\)', Punctuation, '#pop')
|
3148
|
+
],
|
3149
|
+
'classname': [
|
3150
|
+
(r'%s\.' % name_module, Name.Namespace),
|
3151
|
+
(r'%s\b' % keyword_type, Keyword.Type),
|
3152
|
+
(r'%s\b' % name_class, Name.Class),
|
3153
|
+
# array (of given size)
|
3154
|
+
(r'(\[)(\s*)(\d*)(\s*)(\])',
|
3155
|
+
bygroups(Punctuation, Text, Number.Integer, Text, Punctuation)),
|
3156
|
+
# generics
|
3157
|
+
(r'\s+(?!<)', Text, '#pop'),
|
3158
|
+
(r'<', Punctuation, '#push'),
|
3159
|
+
(r'>', Punctuation, '#pop'),
|
3160
|
+
(r'\n', Text, '#pop'),
|
3161
|
+
(r'', Text, '#pop')
|
3162
|
+
],
|
3163
|
+
'variables': [
|
3164
|
+
(r'%s\b' % name_constant, Name.Constant),
|
3165
|
+
(r'%s\b' % name_variable, Name.Variable),
|
3166
|
+
(r'%s' % keyword_type_special, Keyword.Type),
|
3167
|
+
(r'\s+', Text),
|
3168
|
+
(r':', Punctuation, 'classname'),
|
3169
|
+
(r',', Punctuation, '#push'),
|
3170
|
+
(r'', Text, '#pop')
|
3171
|
+
],
|
3172
|
+
'string': [
|
3173
|
+
(r'[^"~]+', String.Double),
|
3174
|
+
(r'~q|~n|~r|~t|~z|~~', String.Escape),
|
3175
|
+
(r'"', String.Double, '#pop'),
|
3176
|
+
],
|
3177
|
+
'comment' : [
|
3178
|
+
(r'(?i)^#rem.*?', Comment.Multiline, "#push"),
|
3179
|
+
(r'(?i)^#end.*?', Comment.Multiline, "#pop"),
|
3180
|
+
(r'\n', Comment.Multiline),
|
3181
|
+
(r'.+', Comment.Multiline),
|
3182
|
+
],
|
3183
|
+
}
|