annotate src/capnproto-0.6.0/doc/_plugins/capnp_lexer.py @ 62:0994c39f1e94

Cap'n Proto v0.6 + build for OSX
author Chris Cannam <cannam@all-day-breakfast.com>
date Mon, 22 May 2017 10:01:37 +0100
parents
children
rev   line source
cannam@62 1 #! /usr/bin/env python
cannam@62 2
cannam@62 3 from pygments.lexer import RegexLexer
cannam@62 4 from pygments.token import *
cannam@62 5
cannam@62 6 class CapnpLexer(RegexLexer):
cannam@62 7 name = "Cap'n Proto lexer"
cannam@62 8 aliases = ['capnp']
cannam@62 9 filenames = ['*.capnp']
cannam@62 10
cannam@62 11 tokens = {
cannam@62 12 'root': [
cannam@62 13 (r'#.*?$', Comment.Single),
cannam@62 14 (r'@[0-9a-zA-Z]*', Name.Decorator),
cannam@62 15 (r'=', Literal, 'expression'),
cannam@62 16 (r':', Name.Class, 'type'),
cannam@62 17 (r'\$', Name.Attribute, 'annotation'),
cannam@62 18 (r'(struct|enum|interface|union|import|using|const|annotation|extends|in|of|on|as|with|from|fixed)\b',
cannam@62 19 Token.Keyword),
cannam@62 20 (r'[a-zA-Z0-9_.]+', Token.Name),
cannam@62 21 (r'[^#@=:$a-zA-Z0-9_]+', Text),
cannam@62 22 ],
cannam@62 23 'type': [
cannam@62 24 (r'[^][=;,(){}$]+', Name.Class),
cannam@62 25 (r'[[(]', Name.Class, 'parentype'),
cannam@62 26 (r'', Name.Class, '#pop')
cannam@62 27 ],
cannam@62 28 'parentype': [
cannam@62 29 (r'[^][;()]+', Name.Class),
cannam@62 30 (r'[[(]', Name.Class, '#push'),
cannam@62 31 (r'[])]', Name.Class, '#pop'),
cannam@62 32 (r'', Name.Class, '#pop')
cannam@62 33 ],
cannam@62 34 'expression': [
cannam@62 35 (r'[^][;,(){}$]+', Literal),
cannam@62 36 (r'[[(]', Literal, 'parenexp'),
cannam@62 37 (r'', Literal, '#pop')
cannam@62 38 ],
cannam@62 39 'parenexp': [
cannam@62 40 (r'[^][;()]+', Literal),
cannam@62 41 (r'[[(]', Literal, '#push'),
cannam@62 42 (r'[])]', Literal, '#pop'),
cannam@62 43 (r'', Literal, '#pop')
cannam@62 44 ],
cannam@62 45 'annotation': [
cannam@62 46 (r'[^][;,(){}=:]+', Name.Attribute),
cannam@62 47 (r'[[(]', Name.Attribute, 'annexp'),
cannam@62 48 (r'', Name.Attribute, '#pop')
cannam@62 49 ],
cannam@62 50 'annexp': [
cannam@62 51 (r'[^][;()]+', Name.Attribute),
cannam@62 52 (r'[[(]', Name.Attribute, '#push'),
cannam@62 53 (r'[])]', Name.Attribute, '#pop'),
cannam@62 54 (r'', Name.Attribute, '#pop')
cannam@62 55 ],
cannam@62 56 }
cannam@62 57
cannam@62 58 if __name__ == "__main__":
cannam@62 59 from setuptools import setup, find_packages
cannam@62 60 setup(name = "CapnpPygmentsLexer",
cannam@62 61 version = "0.1",
cannam@62 62 packages = find_packages(),
cannam@62 63 py_modules = [ 'capnp_lexer' ],
cannam@62 64 entry_points = {'pygments.lexers': 'capnp = capnp_lexer:CapnpLexer'})