Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/pygments/lexers/bare.py: 100%
10 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 06:16 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 06:16 +0000
1"""
2 pygments.lexers.bare
3 ~~~~~~~~~~~~~~~~~~~~
5 Lexer for the BARE schema.
7 :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
8 :license: BSD, see LICENSE for details.
9"""
11from pygments.lexer import RegexLexer, words, bygroups
12from pygments.token import Text, Comment, Keyword, Name, Literal, Whitespace
14__all__ = ['BareLexer']
17class BareLexer(RegexLexer):
18 """
19 For BARE schema source.
21 .. versionadded:: 2.7
22 """
23 name = 'BARE'
24 url = 'https://baremessages.org'
25 filenames = ['*.bare']
26 aliases = ['bare']
28 keywords = [
29 'type',
30 'enum',
31 'u8',
32 'u16',
33 'u32',
34 'u64',
35 'uint',
36 'i8',
37 'i16',
38 'i32',
39 'i64',
40 'int',
41 'f32',
42 'f64',
43 'bool',
44 'void',
45 'data',
46 'string',
47 'optional',
48 'map',
49 ]
51 tokens = {
52 'root': [
53 (r'(type)(\s+)([A-Z][a-zA-Z0-9]+)(\s+)(\{)',
54 bygroups(Keyword, Whitespace, Name.Class, Whitespace, Text), 'struct'),
55 (r'(type)(\s+)([A-Z][a-zA-Z0-9]+)(\s+)(\()',
56 bygroups(Keyword, Whitespace, Name.Class, Whitespace, Text), 'union'),
57 (r'(type)(\s+)([A-Z][a-zA-Z0-9]+)(\s+)',
58 bygroups(Keyword, Whitespace, Name, Whitespace), 'typedef'),
59 (r'(enum)(\s+)([A-Z][a-zA-Z0-9]+)(\s+\{)',
60 bygroups(Keyword, Whitespace, Name.Class, Whitespace), 'enum'),
61 (r'#.*?$', Comment),
62 (r'\s+', Whitespace),
63 ],
64 'struct': [
65 (r'\{', Text, '#push'),
66 (r'\}', Text, '#pop'),
67 (r'([a-zA-Z0-9]+)(:)(\s*)',
68 bygroups(Name.Attribute, Text, Whitespace), 'typedef'),
69 (r'\s+', Whitespace),
70 ],
71 'union': [
72 (r'\)', Text, '#pop'),
73 (r'(\s*)(\|)(\s*)', bygroups(Whitespace, Text, Whitespace)),
74 (r'[A-Z][a-zA-Z0-9]+', Name.Class),
75 (words(keywords), Keyword),
76 (r'\s+', Whitespace),
77 ],
78 'typedef': [
79 (r'\[\]', Text),
80 (r'#.*?$', Comment, '#pop'),
81 (r'(\[)(\d+)(\])', bygroups(Text, Literal, Text)),
82 (r'<|>', Text),
83 (r'\(', Text, 'union'),
84 (r'(\[)([a-z][a-z-A-Z0-9]+)(\])', bygroups(Text, Keyword, Text)),
85 (r'(\[)([A-Z][a-z-A-Z0-9]+)(\])', bygroups(Text, Name.Class, Text)),
86 (r'([A-Z][a-z-A-Z0-9]+)', Name.Class),
87 (words(keywords), Keyword),
88 (r'\n', Text, '#pop'),
89 (r'\{', Text, 'struct'),
90 (r'\s+', Whitespace),
91 (r'\d+', Literal),
92 ],
93 'enum': [
94 (r'\{', Text, '#push'),
95 (r'\}', Text, '#pop'),
96 (r'([A-Z][A-Z0-9_]*)(\s*=\s*)(\d+)',
97 bygroups(Name.Attribute, Text, Literal)),
98 (r'([A-Z][A-Z0-9_]*)', bygroups(Name.Attribute)),
99 (r'#.*?$', Comment),
100 (r'\s+', Whitespace),
101 ],
102 }