3 pygments.lexers.dotnet |
3 pygments.lexers.dotnet |
4 ~~~~~~~~~~~~~~~~~~~~~~ |
4 ~~~~~~~~~~~~~~~~~~~~~~ |
5 |
5 |
6 Lexers for .net languages. |
6 Lexers for .net languages. |
7 |
7 |
8 :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS. |
8 :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS. |
9 :license: BSD, see LICENSE for details. |
9 :license: BSD, see LICENSE for details. |
10 """ |
10 """ |
11 import re |
11 import re |
12 |
12 |
13 from pygments.lexer import RegexLexer, DelegatingLexer, bygroups, include, \ |
13 from pygments.lexer import RegexLexer, DelegatingLexer, bygroups, include, \ |
86 (r'/[*].*?[*]/', Comment.Multiline), |
86 (r'/[*].*?[*]/', Comment.Multiline), |
87 (r'\n', Text), |
87 (r'\n', Text), |
88 (r'[~!%^&*()+=|\[\]:;,.<>/?-]', Punctuation), |
88 (r'[~!%^&*()+=|\[\]:;,.<>/?-]', Punctuation), |
89 (r'[{}]', Punctuation), |
89 (r'[{}]', Punctuation), |
90 (r'@"(""|[^"])*"', String), |
90 (r'@"(""|[^"])*"', String), |
91 (r'"(\\\\|\\"|[^"\n])*["\n]', String), |
91 (r'"(\\\\|\\[^\\]|[^"\\\n])*["\n]', String), |
92 (r"'\\.'|'[^\\]'", String.Char), |
92 (r"'\\.'|'[^\\]'", String.Char), |
93 (r"[0-9](\.[0-9]*)?([eE][+-][0-9]+)?" |
93 (r"[0-9](\.[0-9]*)?([eE][+-][0-9]+)?" |
94 r"[flFLdD]?|0[xX][0-9a-fA-F]+[Ll]?", Number), |
94 r"[flFLdD]?|0[xX][0-9a-fA-F]+[Ll]?", Number), |
95 (r'#[ \t]*(if|endif|else|elif|define|undef|' |
95 (r'#[ \t]*(if|endif|else|elif|define|undef|' |
96 r'line|error|warning|region|endregion|pragma)\b.*?\n', |
96 r'line|error|warning|region|endregion|pragma)\b.*?\n', |
211 'splice-string-content'), |
211 'splice-string-content'), |
212 |
212 |
213 (r'[~!%^&*()+=|\[\]:;,.<>/?-]', Punctuation), |
213 (r'[~!%^&*()+=|\[\]:;,.<>/?-]', Punctuation), |
214 (r'[{}]', Punctuation), |
214 (r'[{}]', Punctuation), |
215 (r'@"(""|[^"])*"', String), |
215 (r'@"(""|[^"])*"', String), |
216 (r'"(\\\\|\\"|[^"\n])*["\n]', String), |
216 (r'"(\\\\|\\[^\\]|[^"\\\n])*["\n]', String), |
217 (r"'\\.'|'[^\\]'", String.Char), |
217 (r"'\\.'|'[^\\]'", String.Char), |
218 (r"0[xX][0-9a-fA-F]+[Ll]?", Number), |
218 (r"0[xX][0-9a-fA-F]+[Ll]?", Number), |
219 (r"[0-9](\.[0-9]*)?([eE][+-][0-9]+)?[flFLdD]?", Number), |
219 (r"[0-9](\.[0-9]*)?([eE][+-][0-9]+)?[flFLdD]?", Number), |
220 (r'#[ \t]*(if|endif|else|elif|define|undef|' |
220 (r'#[ \t]*(if|endif|else|elif|define|undef|' |
221 r'line|error|warning|region|endregion|pragma)\b.*?\n', |
221 r'line|error|warning|region|endregion|pragma)\b.*?\n', |
293 else: |
293 else: |
294 self._tokens = self._all_tokens[level] |
294 self._tokens = self._all_tokens[level] |
295 |
295 |
296 RegexLexer.__init__(self, **options) |
296 RegexLexer.__init__(self, **options) |
297 |
297 |
|
298 def analyse_text(text): |
|
299 """Nemerle is quite similar to Python, but @if is relatively uncommon |
|
300 elsewhere.""" |
|
301 result = 0 |
|
302 |
|
303 if '@if' in text: |
|
304 result += 0.1 |
|
305 |
|
306 return result |
|
307 |
298 |
308 |
299 class BooLexer(RegexLexer): |
309 class BooLexer(RegexLexer): |
300 """ |
310 """ |
301 For `Boo <http://boo.codehaus.org/>`_ source code. |
311 For `Boo <http://boo.codehaus.org/>`_ source code. |
302 """ |
312 """ |
313 (r'/[*]', Comment.Multiline, 'comment'), |
323 (r'/[*]', Comment.Multiline, 'comment'), |
314 (r'[]{}:(),.;[]', Punctuation), |
324 (r'[]{}:(),.;[]', Punctuation), |
315 (r'\\\n', Text), |
325 (r'\\\n', Text), |
316 (r'\\', Text), |
326 (r'\\', Text), |
317 (r'(in|is|and|or|not)\b', Operator.Word), |
327 (r'(in|is|and|or|not)\b', Operator.Word), |
318 (r'/(\\\\|\\/|[^/\s])/', String.Regex), |
328 (r'/(\\\\|\\[^\\]|[^/\\\s])/', String.Regex), |
319 (r'@/(\\\\|\\/|[^/])*/', String.Regex), |
329 (r'@/(\\\\|\\[^\\]|[^/\\])*/', String.Regex), |
320 (r'=~|!=|==|<<|>>|[-+/*%=<>&^|]', Operator), |
330 (r'=~|!=|==|<<|>>|[-+/*%=<>&^|]', Operator), |
321 (r'(as|abstract|callable|constructor|destructor|do|import|' |
331 (r'(as|abstract|callable|constructor|destructor|do|import|' |
322 r'enum|event|final|get|interface|internal|of|override|' |
332 r'enum|event|final|get|interface|internal|of|override|' |
323 r'partial|private|protected|public|return|set|static|' |
333 r'partial|private|protected|public|return|set|static|' |
324 r'struct|transient|virtual|yield|super|and|break|cast|' |
334 r'struct|transient|virtual|yield|super|and|break|cast|' |
333 r'assert|checked|enumerate|filter|getter|len|lock|map|' |
343 r'assert|checked|enumerate|filter|getter|len|lock|map|' |
334 r'matrix|max|min|normalArrayIndexing|print|property|range|' |
344 r'matrix|max|min|normalArrayIndexing|print|property|range|' |
335 r'rawArrayIndexing|required|typeof|unchecked|using|' |
345 r'rawArrayIndexing|required|typeof|unchecked|using|' |
336 r'yieldAll|zip)\b', Name.Builtin), |
346 r'yieldAll|zip)\b', Name.Builtin), |
337 (r'"""(\\\\|\\"|.*?)"""', String.Double), |
347 (r'"""(\\\\|\\"|.*?)"""', String.Double), |
338 (r'"(\\\\|\\"|[^"]*?)"', String.Double), |
348 (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double), |
339 (r"'(\\\\|\\'|[^']*?)'", String.Single), |
349 (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single), |
340 (r'[a-zA-Z_]\w*', Name), |
350 (r'[a-zA-Z_]\w*', Name), |
341 (r'(\d+\.\d*|\d*\.\d+)([fF][+-]?[0-9]+)?', Number.Float), |
351 (r'(\d+\.\d*|\d*\.\d+)([fF][+-]?[0-9]+)?', Number.Float), |
342 (r'[0-9][0-9.]*(ms?|d|h|s)', Number), |
352 (r'[0-9][0-9.]*(ms?|d|h|s)', Number), |
343 (r'0\d+', Number.Oct), |
353 (r'0\d+', Number.Oct), |
344 (r'0x[a-fA-F0-9]+', Number.Hex), |
354 (r'0x[a-fA-F0-9]+', Number.Hex), |