""" pygments.lexers.tls ~~~~~~~~~~~~~~~~~~~ Lexers for the TLS presentation language. :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ import re from pygments.lexer import RegexLexer, words from pygments.token import Comment, Operator, Keyword, Name, String, \ Number, Punctuation, Whitespace __all__ = ['TlsLexer'] class TlsLexer(RegexLexer): """ The TLS presentation language, described in RFC 8446. .. versionadded:: 2.16 """ name = 'TLS Presentation Language' url = 'https://www.rfc-editor.org/rfc/rfc8446#section-3' filenames = [] aliases = ['tls'] mimetypes = [] flags = re.MULTILINE | re.DOTALL tokens = { 'root': [ (r'\s+', Whitespace), # comments (r'/[*].*?[*]/', Comment.Multiline), # Keywords (words(('struct', 'enum', 'select', 'case'), suffix=r'\b'), Keyword), (words(('uint8', 'uint16', 'uint24', 'uint32', 'uint64', 'opaque'), suffix=r'\b'), Keyword.Type), # numeric literals (r'0x[0-9a-fA-F]+', Number.Hex), (r'[0-9]+', Number.Integer), # string literal (r'"(\\.|[^"\\])*"', String), # tokens (r'[.]{2}', Operator), (r'[+\-*/&^]', Operator), (r'[|<>=!()\[\]{}.,;:\?]', Punctuation), # identifiers (r'[^\W\d]\w*', Name.Other), ] }