diff options
| author | cyfraeviolae <cyfraeviolae> | 2024-04-03 03:10:44 -0400 | 
|---|---|---|
| committer | cyfraeviolae <cyfraeviolae> | 2024-04-03 03:10:44 -0400 | 
| commit | 6d7ba58f880be618ade07f8ea080fe8c4bf8a896 (patch) | |
| tree | b1c931051ffcebd2bd9d61d98d6233ffa289bbce /venv/lib/python3.11/site-packages/pygments/lexers/spice.py | |
| parent | 4f884c9abc32990b4061a1bb6997b4b37e58ea0b (diff) | |
venv
Diffstat (limited to 'venv/lib/python3.11/site-packages/pygments/lexers/spice.py')
| -rw-r--r-- | venv/lib/python3.11/site-packages/pygments/lexers/spice.py | 70 | 
1 files changed, 70 insertions, 0 deletions
diff --git a/venv/lib/python3.11/site-packages/pygments/lexers/spice.py b/venv/lib/python3.11/site-packages/pygments/lexers/spice.py new file mode 100644 index 0000000..5c2d8f2 --- /dev/null +++ b/venv/lib/python3.11/site-packages/pygments/lexers/spice.py @@ -0,0 +1,70 @@ +""" +    pygments.lexers.spice +    ~~~~~~~~~~~~~~~~~~~~~ + +    Lexers for the Spice programming language. + +    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. +    :license: BSD, see LICENSE for details. +""" + +from pygments.lexer import RegexLexer, bygroups, words +from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ +    Number, Punctuation, Whitespace + +__all__ = ['SpiceLexer'] + + +class SpiceLexer(RegexLexer): +    """ +    For Spice source. + +    .. versionadded:: 2.11 +    """ +    name = 'Spice' +    url = 'https://www.spicelang.com' +    filenames = ['*.spice'] +    aliases = ['spice', 'spicelang'] +    mimetypes = ['text/x-spice'] + +    tokens = { +        'root': [ +            (r'\n', Whitespace), +            (r'\s+', Whitespace), +            (r'\\\n', Text), +            # comments +            (r'//(.*?)\n', Comment.Single), +            (r'/(\\\n)?[*]{2}(.|\n)*?[*](\\\n)?/', String.Doc), +            (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline), +            # keywords +            (r'(import|as)\b', Keyword.Namespace), +            (r'(f|p|type|struct|interface|enum|alias|operator)\b', Keyword.Declaration), +            (words(('if', 'else', 'for', 'foreach', 'do', 'while', 'break', +                    'continue', 'return', 'assert', 'unsafe', 'ext'), suffix=r'\b'), Keyword), +            (words(('const', 'signed', 'unsigned', 'inline', 'public', 'heap'), +                   suffix=r'\b'), Keyword.Pseudo), +            (words(('new', 'switch', 'case', 'yield', 'stash', 'pick', 'sync', +                    'class'), suffix=r'\b'), Keyword.Reserved), +            (r'(true|false|nil)\b', Keyword.Constant), +            (words(('double', 'int', 'short', 'long', 'byte', 'char', 'string', +                    'bool', 'dyn'), suffix=r'\b'), Keyword.Type), +            (words(('printf', 'sizeof', 'alignof', 'len', 'panic'), suffix=r'\b(\()'), +             bygroups(Name.Builtin, Punctuation)), +            # numeric literals +            (r'[-]?[0-9]*[.][0-9]+([eE][+-]?[0-9]+)?', Number.Double), +            (r'0[bB][01]+[slu]?', Number.Bin), +            (r'0[oO][0-7]+[slu]?', Number.Oct), +            (r'0[xXhH][0-9a-fA-F]+[slu]?', Number.Hex), +            (r'(0[dD])?[0-9]+[slu]?', Number.Integer), +            # string literal +            (r'"(\\\\|\\[^\\]|[^"\\])*"', String), +            # char literal +            (r'\'(\\\\|\\[^\\]|[^\'\\])\'', String.Char), +            # tokens +            (r'<<=|>>=|<<|>>|<=|>=|\+=|-=|\*=|/=|\%=|\|=|&=|\^=|&&|\|\||&|\||' +             r'\+\+|--|\%|\^|\~|==|!=|->|::|[.]{3}|#!|#|[+\-*/&]', Operator), +            (r'[|<>=!()\[\]{}.,;:\?]', Punctuation), +            # identifiers +            (r'[^\W\d]\w*', Name.Other), +        ] +    }  | 
