""" pygments.lexers.meson ~~~~~~~~~~~~~~~~~~~~~ Pygments lexer for the Meson build system :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ import re from pygments.lexer import ( RegexLexer, words, include, ) from pygments.token import ( Comment, Name, Number, Punctuation, Operator, Keyword, String, Whitespace, ) __all__ = ['MesonLexer'] class MesonLexer(RegexLexer): """Meson language lexer. The grammar definition use to transcribe the syntax was retrieved from https://mesonbuild.com/Syntax.html#grammar for version 0.58. Some of those definitions are improperly transcribed, so the Meson++ implementation was also checked: https://github.com/dcbaker/meson-plus-plus. .. versionadded:: 2.10 """ # TODO String interpolation @VARNAME@ inner matches # TODO keyword_arg: value inner matches name = 'Meson' url = 'https://mesonbuild.com/' aliases = ['meson', 'meson.build'] filenames = ['meson.build', 'meson_options.txt'] mimetypes = ['text/x-meson'] tokens = { 'root': [ (r'#.*?$', Comment), (r"'''.*'''", String.Single), (r'[1-9][0-9]*', Number.Integer), (r'0o[0-7]+', Number.Oct), (r'0x[a-fA-F0-9]+', Number.Hex), include('string'), include('keywords'), include('expr'), (r'[a-zA-Z_][a-zA-Z_0-9]*', Name), (r'\s+', Whitespace), ], 'string': [ (r"[']{3}([']{0,2}([^\\']|\\(.|\n)))*[']{3}", String), (r"'.*?(?