Mercurial > hg > sv-dependency-builds
diff src/capnproto-git-20161025/doc/_plugins/capnp_lexer.py @ 133:1ac99bfc383d
Add Cap'n Proto source
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Tue, 25 Oct 2016 11:17:01 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/capnproto-git-20161025/doc/_plugins/capnp_lexer.py Tue Oct 25 11:17:01 2016 +0100 @@ -0,0 +1,64 @@ +#! /usr/bin/env python + +from pygments.lexer import RegexLexer +from pygments.token import * + +class CapnpLexer(RegexLexer): + name = "Cap'n Proto lexer" + aliases = ['capnp'] + filenames = ['*.capnp'] + + 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|extends|in|of|on|as|with|from|fixed)\b', + Token.Keyword), + (r'[a-zA-Z0-9_.]+', Token.Name), + (r'[^#@=:$a-zA-Z0-9_]+', Text), + ], + 'type': [ + (r'[^][=;,(){}$]+', Name.Class), + (r'[[(]', Name.Class, 'parentype'), + (r'', Name.Class, '#pop') + ], + 'parentype': [ + (r'[^][;()]+', Name.Class), + (r'[[(]', Name.Class, '#push'), + (r'[])]', Name.Class, '#pop'), + (r'', Name.Class, '#pop') + ], + 'expression': [ + (r'[^][;,(){}$]+', Literal), + (r'[[(]', Literal, 'parenexp'), + (r'', Literal, '#pop') + ], + 'parenexp': [ + (r'[^][;()]+', Literal), + (r'[[(]', Literal, '#push'), + (r'[])]', Literal, '#pop'), + (r'', Literal, '#pop') + ], + 'annotation': [ + (r'[^][;,(){}=:]+', Name.Attribute), + (r'[[(]', Name.Attribute, 'annexp'), + (r'', Name.Attribute, '#pop') + ], + 'annexp': [ + (r'[^][;()]+', Name.Attribute), + (r'[[(]', Name.Attribute, '#push'), + (r'[])]', Name.Attribute, '#pop'), + (r'', Name.Attribute, '#pop') + ], + } + +if __name__ == "__main__": + from setuptools import setup, find_packages + setup(name = "CapnpPygmentsLexer", + version = "0.1", + packages = find_packages(), + py_modules = [ 'capnp_lexer' ], + entry_points = {'pygments.lexers': 'capnp = capnp_lexer:CapnpLexer'})