eric6/ThirdParty/Pygments/pygments/lexers/capnproto.py

changeset 6942
2602857055c5
parent 6651
e8f3b5568b21
child 7547
21b0534faebc
diff -r f99d60d6b59b -r 2602857055c5 eric6/ThirdParty/Pygments/pygments/lexers/capnproto.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric6/ThirdParty/Pygments/pygments/lexers/capnproto.py	Sun Apr 14 15:09:21 2019 +0200
@@ -0,0 +1,78 @@
+# -*- coding: utf-8 -*-
+"""
+    pygments.lexers.capnproto
+    ~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    Lexers for the Cap'n Proto schema language.
+
+    :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+"""
+
+import re
+
+from pygments.lexer import RegexLexer, default
+from pygments.token import Text, Comment, Keyword, Name, Literal
+
+__all__ = ['CapnProtoLexer']
+
+
+class CapnProtoLexer(RegexLexer):
+    """
+    For `Cap'n Proto <https://capnproto.org>`_ source.
+
+    .. versionadded:: 2.2
+    """
+    name = 'Cap\'n Proto'
+    filenames = ['*.capnp']
+    aliases = ['capnp']
+
+    flags = re.MULTILINE | re.UNICODE
+
+    tokens = {
+        'root': [
+            (r'#.*?$', Comment.Single),
+            (r'@[0-9a-zA-Z]*', Name.Decorator),
+            (r'=', Literal, 'expression'),
+            (r':', Name.Class, 'type'),
+            (r'\$', Name.Attribute, 'annotation'),
+            (r'(struct|enum|interface|union|import|using|const|annotation|'
+             r'extends|in|of|on|as|with|from|fixed)\b',
+             Keyword),
+            (r'[\w.]+', Name),
+            (r'[^#@=:$\w]+', Text),
+        ],
+        'type': [
+            (r'[^][=;,(){}$]+', Name.Class),
+            (r'[\[(]', Name.Class, 'parentype'),
+            default('#pop'),
+        ],
+        'parentype': [
+            (r'[^][;()]+', Name.Class),
+            (r'[\[(]', Name.Class, '#push'),
+            (r'[])]', Name.Class, '#pop'),
+            default('#pop'),
+        ],
+        'expression': [
+            (r'[^][;,(){}$]+', Literal),
+            (r'[\[(]', Literal, 'parenexp'),
+            default('#pop'),
+        ],
+        'parenexp': [
+            (r'[^][;()]+', Literal),
+            (r'[\[(]', Literal, '#push'),
+            (r'[])]', Literal, '#pop'),
+            default('#pop'),
+        ],
+        'annotation': [
+            (r'[^][;,(){}=:]+', Name.Attribute),
+            (r'[\[(]', Name.Attribute, 'annexp'),
+            default('#pop'),
+        ],
+        'annexp': [
+            (r'[^][;()]+', Name.Attribute),
+            (r'[\[(]', Name.Attribute, '#push'),
+            (r'[])]', Name.Attribute, '#pop'),
+            default('#pop'),
+        ],
+    }

eric ide

mercurial