summaryrefslogtreecommitdiff
path: root/pygments/lexers/dotnet.py
diff options
context:
space:
mode:
Diffstat (limited to 'pygments/lexers/dotnet.py')
-rw-r--r--pygments/lexers/dotnet.py46
1 files changed, 26 insertions, 20 deletions
diff --git a/pygments/lexers/dotnet.py b/pygments/lexers/dotnet.py
index 0754ba02..5a07cd0d 100644
--- a/pygments/lexers/dotnet.py
+++ b/pygments/lexers/dotnet.py
@@ -58,7 +58,7 @@ class CSharpLexer(RegexLexer):
# see http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf
levels = {
- 'none': '@?[_a-zA-Z][a-zA-Z0-9_]*',
+ 'none': '@?[_a-zA-Z]\w*',
'basic': ('@?[_' + uni.Lu + uni.Ll + uni.Lt + uni.Lm + uni.Nl + ']' +
'[' + uni.Lu + uni.Ll + uni.Lt + uni.Lm + uni.Nl +
uni.Nd + uni.Pc + uni.Cf + uni.Mn + uni.Mc + ']*'),
@@ -170,7 +170,7 @@ class NemerleLexer(RegexLexer):
# http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf
levels = dict(
- none = '@?[_a-zA-Z][a-zA-Z0-9_]*',
+ none = '@?[_a-zA-Z]\w*',
basic = ('@?[_' + uni.Lu + uni.Ll + uni.Lt + uni.Lm + uni.Nl + ']' +
'[' + uni.Lu + uni.Ll + uni.Lt + uni.Lm + uni.Nl +
uni.Nd + uni.Pc + uni.Cf + uni.Mn + uni.Mc + ']*'),
@@ -336,7 +336,7 @@ class BooLexer(RegexLexer):
(r'"""(\\\\|\\"|.*?)"""', String.Double),
(r'"(\\\\|\\"|[^"]*?)"', String.Double),
(r"'(\\\\|\\'|[^']*?)'", String.Single),
- (r'[a-zA-Z_][a-zA-Z0-9_]*', Name),
+ (r'[a-zA-Z_]\w*', Name),
(r'(\d+\.\d*|\d*\.\d+)([fF][+-]?[0-9]+)?', Number.Float),
(r'[0-9][0-9\.]*(ms?|d|h|s)', Number),
(r'0\d+', Number.Oct),
@@ -351,13 +351,13 @@ class BooLexer(RegexLexer):
('[*/]', Comment.Multiline)
],
'funcname': [
- ('[a-zA-Z_][a-zA-Z0-9_]*', Name.Function, '#pop')
+ ('[a-zA-Z_]\w*', Name.Function, '#pop')
],
'classname': [
- ('[a-zA-Z_][a-zA-Z0-9_]*', Name.Class, '#pop')
+ ('[a-zA-Z_]\w*', Name.Class, '#pop')
],
'namespace': [
- ('[a-zA-Z_][a-zA-Z0-9_.]*', Name.Namespace, '#pop')
+ ('[a-zA-Z_][\w.]*', Name.Namespace, '#pop')
]
}
@@ -425,7 +425,7 @@ class VbNetLexer(RegexLexer):
r'<=|>=|<>|[-&*/\\^+=<>]',
Operator),
('"', String, 'string'),
- ('[a-zA-Z_][a-zA-Z0-9_]*[%&@!#$]?', Name),
+ ('[a-z_]\w*[%&@!#$]?', Name),
('#.*?#', Literal.Date),
(r'(\d+\.\d*|\d*\.\d+)([fF][+-]?[0-9]+)?', Number.Float),
(r'\d+([SILDFR]|US|UI|UL)?', Number.Integer),
@@ -439,17 +439,17 @@ class VbNetLexer(RegexLexer):
(r'[^"]+', String),
],
'dim': [
- (r'[a-z_][a-z0-9_]*', Name.Variable, '#pop'),
+ (r'[a-z_]\w*', Name.Variable, '#pop'),
(r'', Text, '#pop'), # any other syntax
],
'funcname': [
- (r'[a-z_][a-z0-9_]*', Name.Function, '#pop'),
+ (r'[a-z_]\w*', Name.Function, '#pop'),
],
'classname': [
- (r'[a-z_][a-z0-9_]*', Name.Class, '#pop'),
+ (r'[a-z_]\w*', Name.Class, '#pop'),
],
'namespace': [
- (r'[a-z_][a-z0-9_.]*', Name.Namespace, '#pop'),
+ (r'[a-z_][\w.]*', Name.Namespace, '#pop'),
],
'end': [
(r'\s+', Text),
@@ -459,6 +459,12 @@ class VbNetLexer(RegexLexer):
]
}
+ def analyse_text(text):
+ if (re.search(r'^[ \t]*#If', text, re.I)
+ or re.search(r'^[ \t]*(Module|Namespace)', re.I)):
+ return 0.5
+
+
class GenericAspxLexer(RegexLexer):
"""
@@ -589,9 +595,9 @@ class FSharpLexer(RegexLexer):
'root': [
(r'\s+', Text),
(r'\(\)|\[\]', Name.Builtin.Pseudo),
- (r'\b(?<!\.)([A-Z][A-Za-z0-9_\']*)(?=\s*\.)',
+ (r'\b(?<!\.)([A-Z][\w\']*)(?=\s*\.)',
Name.Namespace, 'dotted'),
- (r'\b([A-Z][A-Za-z0-9_\']*)', Name),
+ (r'\b([A-Z][\w\']*)', Name),
(r'///.*?\n', String.Doc),
(r'//.*?\n', Comment.Single),
(r'\(\*(?!\))', Comment, 'comment'),
@@ -600,13 +606,13 @@ class FSharpLexer(RegexLexer):
(r'"""', String, 'tqs'),
(r'"', String, 'string'),
- (r'\b(open|module)(\s+)([a-zA-Z0-9_.]+)',
+ (r'\b(open|module)(\s+)([\w.]+)',
bygroups(Keyword, Text, Name.Namespace)),
- (r'\b(let!?)(\s+)([a-zA-Z0-9_]+)',
+ (r'\b(let!?)(\s+)(\w+)',
bygroups(Keyword, Text, Name.Variable)),
- (r'\b(type)(\s+)([a-zA-Z0-9_]+)',
+ (r'\b(type)(\s+)(\w+)',
bygroups(Keyword, Text, Name.Class)),
- (r'\b(member|override)(\s+)([a-zA-Z0-9_]+)(\.)([a-zA-Z0-9_]+)',
+ (r'\b(member|override)(\s+)(\w+)(\.)(\w+)',
bygroups(Keyword, Text, Name, Punctuation, Name.Function)),
(r'\b(%s)\b' % '|'.join(keywords), Keyword),
(r'(%s)' % '|'.join(keyopts), Operator),
@@ -635,9 +641,9 @@ class FSharpLexer(RegexLexer):
'dotted': [
(r'\s+', Text),
(r'\.', Punctuation),
- (r'[A-Z][A-Za-z0-9_\']*(?=\s*\.)', Name.Namespace),
- (r'[A-Z][A-Za-z0-9_\']*', Name, '#pop'),
- (r'[a-z_][A-Za-z0-9_\']*', Name, '#pop'),
+ (r'[A-Z][\w\']*(?=\s*\.)', Name.Namespace),
+ (r'[A-Z][\w\']*', Name, '#pop'),
+ (r'[a-z_][\w\']*', Name, '#pop'),
# e.g. dictionary index access
(r'', Text, '#pop'),
],