summaryrefslogtreecommitdiff
path: root/venv/lib/python3.11/site-packages/pygments/lexers/bare.py
diff options
context:
space:
mode:
authorcyfraeviolae <cyfraeviolae>2024-04-03 03:10:44 -0400
committercyfraeviolae <cyfraeviolae>2024-04-03 03:10:44 -0400
commit6d7ba58f880be618ade07f8ea080fe8c4bf8a896 (patch)
treeb1c931051ffcebd2bd9d61d98d6233ffa289bbce /venv/lib/python3.11/site-packages/pygments/lexers/bare.py
parent4f884c9abc32990b4061a1bb6997b4b37e58ea0b (diff)
venv
Diffstat (limited to 'venv/lib/python3.11/site-packages/pygments/lexers/bare.py')
-rw-r--r--venv/lib/python3.11/site-packages/pygments/lexers/bare.py102
1 files changed, 102 insertions, 0 deletions
diff --git a/venv/lib/python3.11/site-packages/pygments/lexers/bare.py b/venv/lib/python3.11/site-packages/pygments/lexers/bare.py
new file mode 100644
index 0000000..fce5ae0
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/pygments/lexers/bare.py
@@ -0,0 +1,102 @@
+"""
+ pygments.lexers.bare
+ ~~~~~~~~~~~~~~~~~~~~
+
+ Lexer for the BARE schema.
+
+ :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+from pygments.lexer import RegexLexer, words, bygroups
+from pygments.token import Text, Comment, Keyword, Name, Literal, Whitespace
+
+__all__ = ['BareLexer']
+
+
+class BareLexer(RegexLexer):
+ """
+ For BARE schema source.
+
+ .. versionadded:: 2.7
+ """
+ name = 'BARE'
+ url = 'https://baremessages.org'
+ filenames = ['*.bare']
+ aliases = ['bare']
+
+ keywords = [
+ 'type',
+ 'enum',
+ 'u8',
+ 'u16',
+ 'u32',
+ 'u64',
+ 'uint',
+ 'i8',
+ 'i16',
+ 'i32',
+ 'i64',
+ 'int',
+ 'f32',
+ 'f64',
+ 'bool',
+ 'void',
+ 'data',
+ 'string',
+ 'optional',
+ 'map',
+ ]
+
+ tokens = {
+ 'root': [
+ (r'(type)(\s+)([A-Z][a-zA-Z0-9]+)(\s+)(\{)',
+ bygroups(Keyword, Whitespace, Name.Class, Whitespace, Text), 'struct'),
+ (r'(type)(\s+)([A-Z][a-zA-Z0-9]+)(\s+)(\()',
+ bygroups(Keyword, Whitespace, Name.Class, Whitespace, Text), 'union'),
+ (r'(type)(\s+)([A-Z][a-zA-Z0-9]+)(\s+)',
+ bygroups(Keyword, Whitespace, Name, Whitespace), 'typedef'),
+ (r'(enum)(\s+)([A-Z][a-zA-Z0-9]+)(\s+\{)',
+ bygroups(Keyword, Whitespace, Name.Class, Whitespace), 'enum'),
+ (r'#.*?$', Comment),
+ (r'\s+', Whitespace),
+ ],
+ 'struct': [
+ (r'\{', Text, '#push'),
+ (r'\}', Text, '#pop'),
+ (r'([a-zA-Z0-9]+)(:)(\s*)',
+ bygroups(Name.Attribute, Text, Whitespace), 'typedef'),
+ (r'\s+', Whitespace),
+ ],
+ 'union': [
+ (r'\)', Text, '#pop'),
+ (r'(\s*)(\|)(\s*)', bygroups(Whitespace, Text, Whitespace)),
+ (r'[A-Z][a-zA-Z0-9]+', Name.Class),
+ (words(keywords), Keyword),
+ (r'\s+', Whitespace),
+ ],
+ 'typedef': [
+ (r'\[\]', Text),
+ (r'#.*?$', Comment, '#pop'),
+ (r'(\[)(\d+)(\])', bygroups(Text, Literal, Text)),
+ (r'<|>', Text),
+ (r'\(', Text, 'union'),
+ (r'(\[)([a-z][a-z-A-Z0-9]+)(\])', bygroups(Text, Keyword, Text)),
+ (r'(\[)([A-Z][a-z-A-Z0-9]+)(\])', bygroups(Text, Name.Class, Text)),
+ (r'([A-Z][a-z-A-Z0-9]+)', Name.Class),
+ (words(keywords), Keyword),
+ (r'\n', Text, '#pop'),
+ (r'\{', Text, 'struct'),
+ (r'\s+', Whitespace),
+ (r'\d+', Literal),
+ ],
+ 'enum': [
+ (r'\{', Text, '#push'),
+ (r'\}', Text, '#pop'),
+ (r'([A-Z][A-Z0-9_]*)(\s*=\s*)(\d+)',
+ bygroups(Name.Attribute, Text, Literal)),
+ (r'([A-Z][A-Z0-9_]*)', bygroups(Name.Attribute)),
+ (r'#.*?$', Comment),
+ (r'\s+', Whitespace),
+ ],
+ }