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