{ "name": "Meson", "scopeName": "source.meson", "patterns": [ { "name": "comment.line.meson", "match": "\\#.*$" }, { "include": "#string_quoted_single" }, { "name": "keyword.control.flow.meson", "match": "\\b(if|else|elif|endif|foreach|endforeach)\\b" }, { "name": "keyword.operator.logical.meson", "match": "\\b(and|not|or)\\b" }, { "name": "constant.language.meson", "match": "\\b(true|false)\\b" }, { "name": "constant.numeric.float.meson", "match": "\\b([1-9]+[0-9]*\\.[0-9]*)" }, { "name": "constant.numeric.integer.decimal.meson", "match": "\\b([1-9]+[0-9]*|0)" }, { "name": "support.variable.meson", "match": "\\b(meson|host_machine|build_machine|target_machine)\\b" }, { "name": "variable.parameter.function.keyword.meson", "match": "\\b([\\w_]+)\\s*(?=:)" }, { "name": "keyword.operator.comparison.meson", "match": "\u003c\\=|\u003e\\=|\\=\\=|\u003c|\u003e|\\!\\=" }, { "name": "keyword.operator.assignment.augmented.meson", "match": "\\+\\=" }, { "name": "keyword.operator.assignment.meson", "match": "\\=" }, { "name": "keyword.operator.arithmetic.meson", "match": "\\+|\\-|\\*|%|\\/" }, { "name": "support.function.builtin.meson", "match": "(?x)\\b(add_global_arguments|add_project_arguments|add_global_link_arguments|add_project_link_arguments|add_test_setup|add_languages|assert|benchmark|build_target|configuration_data|configure_file|custom_target|declare_dependency|dependency|environment|error|executable|generator|gettext|get_option|get_variable|files|find_library|find_program|include_directories|import|install_data|install_headers|install_man|install_subdir|is_variable|jar|join_paths|library|message|option|project|run_target|run_command|set_variable|subdir|subproject|shared_library|shared_module|static_library|test|vcs_tag\n)\\b\\s*(?=\\()" } ], "repository": { "constant_placeholder": { "name": "constant.other.placeholder.meson", "match": "(?i:(%(\\([a-z_]+\\))?#?0?\\-?[ ]?\\+?([0-9]*|\\*)(\\.([0-9]*|\\*))?([hL][a-z]|[a-z%]))|(\\{([!\\[\\].:\\w ]+)?\\}))" }, "escaped_character": { "match": "((\\\\\\n)|(\\\\\\\\)|(\\\\')|(\\\\n)|(\\\\r)|(\\\\t))", "captures": { "1": { "name": "constant.character.escape.newline.meson" }, "2": { "name": "constant.character.escape.backlash.meson" }, "3": { "name": "constant.character.escape.single-quote.meson" }, "4": { "name": "constant.character.escape.linefeed.meson" }, "5": { "name": "constant.character.escape.return.meson" }, "6": { "name": "constant.character.escape.tab.meson" } } }, "string_quoted_single": { "patterns": [ { "name": "string.quoted.single.single-line.meson", "match": "(?\u003c!')(')(('))(?!')", "captures": { "1": { "name": "puncutation.definition.string.begin.meson" }, "2": { "name": "puncutation.definition.string.end.meson" }, "3": { "name": "meta.empty-string.single.meson" } } }, { "name": "string.quoted.single.block.meson", "begin": "(''')", "end": "((?\u003c=''')(')''|''')", "patterns": [ { "include": "#constant_placeholder" }, { "include": "#escaped_character" } ], "beginCaptures": { "1": { "name": "punctuation.definition.string.begin.meson" } }, "endCaptures": { "1": { "name": "punctuation.definition.string.end.meson" }, "2": { "name": "meta.empty-string.single.meson" } } }, { "name": "string.quoted.single.single-line.meson", "begin": "(')", "end": "(')|(\\n)", "patterns": [ { "include": "#constant_placeholder" }, { "include": "#escaped_character" } ], "beginCaptures": { "1": { "name": "punctuation.definition.string.begin.meson" } }, "endCaptures": { "1": { "name": "punctuation.definition.string.end.meson" }, "2": { "name": "invalid.illegal.unclosed-string.meson" } } } ] } } }