summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES1
-rw-r--r--pygments/lexers/_mapping.py1
-rw-r--r--pygments/lexers/compiled.py46
3 files changed, 47 insertions, 1 deletions
diff --git a/CHANGES b/CHANGES
index bafcf026..242e78ba 100644
--- a/CHANGES
+++ b/CHANGES
@@ -17,6 +17,7 @@ Version 0.7
* Trac Wiki markup
* Python tracebacks
* ReStructuredText
+ * Dylan
* and the Befunge esoteric programming language (yay!)
- Added Mako lexers by Ben Bangert.
diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py
index a482e5b0..bf2dad76 100644
--- a/pygments/lexers/_mapping.py
+++ b/pygments/lexers/_mapping.py
@@ -33,6 +33,7 @@ LEXERS = {
'DelphiLexer': ('pygments.lexers.compiled', 'Delphi', ('delphi', 'pas', 'pascal', 'objectpascal'), ('*.pas',), ('text/x-pascal',)),
'DiffLexer': ('pygments.lexers.text', 'Diff', ('diff',), ('*.diff', '*.patch'), ('text/x-diff', 'text/x-patch')),
'DjangoLexer': ('pygments.lexers.templates', 'Django/Jinja', ('django', 'jinja'), (), ('application/x-django-templating', 'application/x-jinja')),
+ 'DylanLexer': ('pygments.lexers.compiled', 'DylanLexer', ('dylan',), ('*.dylan',), ('text/x-dylan',)),
'ErbLexer': ('pygments.lexers.templates', 'ERB', ('erb',), (), ('application/x-ruby-templating',)),
'GenshiLexer': ('pygments.lexers.templates', 'Genshi', ('genshi', 'kid', 'xml+genshi', 'xml+kid'), ('*.kid',), ('application/x-genshi', 'application/x-kid')),
'GenshiTextLexer': ('pygments.lexers.templates', 'Genshi Text', ('genshitext',), (), ('application/x-genshi-text', 'text/x-genshi')),
diff --git a/pygments/lexers/compiled.py b/pygments/lexers/compiled.py
index 6c33b10b..de48bd36 100644
--- a/pygments/lexers/compiled.py
+++ b/pygments/lexers/compiled.py
@@ -24,7 +24,7 @@ from pygments.token import \
Error
-__all__ = ['CLexer', 'CppLexer', 'DelphiLexer', 'JavaLexer']
+__all__ = ['CLexer', 'CppLexer', 'DelphiLexer', 'JavaLexer', 'DylanLexer']
class CLexer(RegexLexer):
@@ -738,3 +738,47 @@ class JavaLexer(RegexLexer):
(r'[a-zA-Z_][a-zA-Z0-9_]*', Name.Class, '#pop')
]
}
+
+
+class DylanLexer(RegexLexer):
+ """
+ For the `Dylan <http://www.opendylan.org/>` language.
+
+ *New in Pygments 0.7.*
+ """
+
+ name = 'DylanLexer'
+ aliases = ['dylan']
+ filenames = ['*.dylan']
+ mimetypes = ['text/x-dylan']
+
+ flags = re.DOTALL
+
+ tokens = {
+ 'root': [
+ (r'\b(subclass|abstract|block|c(on(crete|stant)|lass)|domain'
+ r'|ex(c(eption|lude)|port)|f(unction(|al))|generic|handler'
+ r'|i(n(herited|line|stance|terface)|mport)|library|m(acro|ethod)'
+ r'|open|primary|sealed|si(deways|ngleton)|slot'
+ r'|v(ariable|irtual))\b', Name.Builtin),
+ (r'<\w+>', Keyword.Type),
+ (r'#?"(?:\\.|[^"])+?"', String.Double),
+ (r'//.*?\n', Comment),
+ (r'/\*[\w\W]*?\*/', Comment.Multiline),
+ (r'\'.*?\'', String.Single),
+ (r'=>|\b(a(bove|fterwards)|b(e(gin|low)|y)|c(ase|leanup|reate)'
+ r'|define|else(|if)|end|f(inally|or|rom)|i[fn]|l(et|ocal)|otherwise'
+ r'|rename|s(elect|ignal)|t(hen|o)|u(n(less|til)|se)|wh(en|ile))\b', Keyword),
+ (r'([ \t])([!\$%&\*\/:<=>\?~_^a-zA-Z0-9.+\-]*:)',
+ bygroups(Text, Name.Variable)),
+ (r'([ \t]*)(\S+[^:])([ \t]*)(\()([ \t]*)',
+ bygroups(Text, Name.Function, Text, Punctuation, Text)),
+ (r'-?[0-9.]+', Number),
+ (r'[(),;]', Punctuation),
+ (r'\$[a-zA-Z0-9-]+', Name.Constant),
+ (r'[!$%&*/:<>=?~^.+\[\]{}-]+', Operator),
+ (r'\s+', Text),
+ (r'#[a-zA-Z0-9-]+', Keyword),
+ (r'[a-zA-Z0-9-]+', Name.Variable),
+ ],
+ }