diff options
author | nkozlovskiy <nmk@ydb.tech> | 2023-09-29 12:24:06 +0300 |
---|---|---|
committer | nkozlovskiy <nmk@ydb.tech> | 2023-09-29 12:41:34 +0300 |
commit | e0e3e1717e3d33762ce61950504f9637a6e669ed (patch) | |
tree | bca3ff6939b10ed60c3d5c12439963a1146b9711 /contrib/python/Pygments/py3/pygments/lexers/meson.py | |
parent | 38f2c5852db84c7b4d83adfcb009eb61541d1ccd (diff) | |
download | ydb-e0e3e1717e3d33762ce61950504f9637a6e669ed.tar.gz |
add ydb deps
Diffstat (limited to 'contrib/python/Pygments/py3/pygments/lexers/meson.py')
-rw-r--r-- | contrib/python/Pygments/py3/pygments/lexers/meson.py | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/contrib/python/Pygments/py3/pygments/lexers/meson.py b/contrib/python/Pygments/py3/pygments/lexers/meson.py new file mode 100644 index 0000000000..f74f7191a3 --- /dev/null +++ b/contrib/python/Pygments/py3/pygments/lexers/meson.py @@ -0,0 +1,140 @@ +""" + pygments.lexers.meson + ~~~~~~~~~~~~~~~~~~~~~ + + Pygments lexer for the Meson build system + + :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +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"'.*?(?<!\\)(\\\\)*?'", String), + ], + 'keywords': [ + (words(( + 'if', + 'elif', + 'else', + 'endif', + 'foreach', + 'endforeach', + 'break', + 'continue', + ), + suffix=r'\b'), Keyword), + ], + 'expr': [ + (r'(in|and|or|not)\b', Operator.Word), + (r'(\*=|/=|%=|\+]=|-=|==|!=|\+|-|=)', Operator), + (r'[\[\]{}:().,?]', Punctuation), + (words(('true', 'false'), suffix=r'\b'), Keyword.Constant), + include('builtins'), + (words(( + 'meson', + 'build_machine', + 'host_machine', + 'target_machine', + ), + suffix=r'\b'), Name.Variable.Magic), + ], + 'builtins': [ + # This list was extracted from the v0.58 reference manual + (words(( + 'add_global_arguments', + 'add_global_link_arguments', + 'add_languages', + 'add_project_arguments', + 'add_project_link_arguments', + 'add_test_setup', + 'assert', + 'benchmark', + 'both_libraries', + 'build_target', + 'configuration_data', + 'configure_file', + 'custom_target', + 'declare_dependency', + 'dependency', + 'disabler', + 'environment', + 'error', + 'executable', + 'files', + 'find_library', + 'find_program', + 'generator', + 'get_option', + 'get_variable', + 'include_directories', + 'install_data', + 'install_headers', + 'install_man', + 'install_subdir', + 'is_disabler', + 'is_variable', + 'jar', + 'join_paths', + 'library', + 'message', + 'project', + 'range', + 'run_command', + 'set_variable', + 'shared_library', + 'shared_module', + 'static_library', + 'subdir', + 'subdir_done', + 'subproject', + 'summary', + 'test', + 'vcs_tag', + 'warning', + ), + prefix=r'(?<!\.)', + suffix=r'\b'), Name.Builtin), + (r'(?<!\.)import\b', Name.Namespace), + ], + } |