annotate src/capnproto-git-20161025/doc/_plugins/capnp_lexer.py @ 48:9530b331f8c1

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