From 01ca0d40017aaa2d36ecb053d8ae0ad65702d7e9 Mon Sep 17 00:00:00 2001 From: Jeff Hykin Date: Thu, 11 Jul 2024 13:42:07 -0500 Subject: [PATCH] better support for initlizers and ranged assignment --- .../cpp.embedded.macro.tmLanguage.json | 2 +- autogenerated/cpp.tmLanguage.json | 499 ++++- autogenerated/cpp_scopes.txt | 1 + language_examples/#071.cpp | 13 +- language_examples/#071.spec.yaml | 286 ++- language_examples/#414.spec.yaml | 22 +- language_examples/#442.spec.yaml | 49 +- language_examples/#651.spec.yaml | 30 +- language_examples/constructor_call.cpp | 114 ++ language_examples/constructor_call.spec.yaml | 1690 +++++++++++++++++ language_examples/misc_000.spec.yaml | 10 +- language_examples/misc_005.spec.yaml | 50 +- language_examples/misc_006.spec.yaml | 10 +- language_examples/misc_asteria.spec.yaml | 75 +- ...operator_overload_implicit_const.spec.yaml | 28 +- language_examples/ranged_for.spec.yaml | 68 +- language_examples/test.spec.yaml | 16 +- language_examples/theme_demo.spec.yaml | 1 + main/main.rb | 41 + package.json | 2 +- 20 files changed, 2928 insertions(+), 79 deletions(-) create mode 100644 language_examples/constructor_call.cpp create mode 100644 language_examples/constructor_call.spec.yaml diff --git a/autogenerated/cpp.embedded.macro.tmLanguage.json b/autogenerated/cpp.embedded.macro.tmLanguage.json index 6949cc7c..06ec37a8 100644 --- a/autogenerated/cpp.embedded.macro.tmLanguage.json +++ b/autogenerated/cpp.embedded.macro.tmLanguage.json @@ -1 +1 @@ -{"information_for_contributors":["This code was auto generated by a much-more-readable ruby file","This file essentially an updated/improved fork of the atom syntax","see https://github.com/jeff-hykin/better-cpp-syntax/blob/master"],"version":"","name":"C++","scopeName":"source.cpp.embedded.macro","fileTypes":[],"patterns":[{"include":"#ever_present_context"},{"include":"#constructor_root"},{"include":"#destructor_root"},{"include":"#function_definition"},{"include":"#operator_overload"},{"include":"#using_namespace"},{"include":"source.cpp#type_alias"},{"include":"source.cpp#using_name"},{"include":"source.cpp#namespace_alias"},{"include":"#namespace_block"},{"include":"#extern_block"},{"include":"#typedef_class"},{"include":"#typedef_struct"},{"include":"#typedef_union"},{"include":"source.cpp#misc_keywords"},{"include":"source.cpp#standard_declares"},{"include":"#class_block"},{"include":"#struct_block"},{"include":"#union_block"},{"include":"#enum_block"},{"include":"source.cpp#template_isolated_definition"},{"include":"#template_definition"},{"include":"source.cpp#template_explicit_instantiation"},{"include":"source.cpp#access_control_keywords"},{"include":"#block"},{"include":"#static_assert"},{"include":"#assembly"},{"include":"#function_pointer"},{"include":"#evaluation_context"}],"repository":{"alignas_attribute":{"begin":"alignas\\(","end":"\\)|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|%|\"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.italic.doxygen.cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.bold.doxygen.cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.inline.raw.string.cpp"}}},{"match":"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:\\s+)?(?:in|out)(?:\\s+)?)+)\\])?(\\s+((?|%|\"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.italic.doxygen.cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.bold.doxygen.cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.inline.raw.string.cpp"}}},{"match":"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:\\s+)?(?:in|out)(?:\\s+)?)+)\\])?(\\s+((?|%|\"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.italic.doxygen.cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.bold.doxygen.cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.inline.raw.string.cpp"}}},{"match":"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:\\s+)?(?:in|out)(?:\\s+)?)+)\\])?(\\s+((?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?(\\()","end":"\\)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)(((?>(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?(\\()","end":"\\)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\{)","end":"\\}|(?=(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)(((?>(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?(::))?(?:\\s+)?((?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?(\\()","end":"\\)|(?=(?|\\*\\/))\\s*+(?:((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))","captures":{"1":{"name":"punctuation.definition.function.return-type.cpp"},"2":{"patterns":[{"include":"source.cpp#inline_comment"}]},"3":{"name":"comment.block.cpp punctuation.definition.comment.begin.cpp"},"4":{"name":"comment.block.cpp"},"5":{"name":"comment.block.cpp punctuation.definition.comment.end.cpp"},"6":{"name":"meta.qualified_type.cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{"match":"(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()(\\*)(?:\\s+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:\\s+)?(?:(\\[)(\\w*)(\\])(?:\\s+)?)*(\\))(?:\\s+)?(\\()","end":"(\\))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?]|\\n)(?!\\()|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()(\\*)(?:\\s+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:\\s+)?(?:(\\[)(\\w*)(\\])(?:\\s+)?)*(\\))(?:\\s+)?(\\()","end":"(\\))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?]|\\n)(?!\\()|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))","captures":{"1":{"name":"meta.qualified_type.cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{"match":"(?])|(?<=\\Wreturn|^return))(?:\\s+)?(\\[(?!\\[| *+\"| *+\\d))((?:[^\\[\\]]|((??)++\\]))*+)(\\](?!((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))[\\[\\];=]))","end":"(?<=[;}])|(?=(?","end":"(?=\\{)|(?=(?\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:\\s+)?(?:(?:\\.\\*|\\.)|(?:->\\*|->))(?:\\s+)?)*)(?:\\s+)?(~?(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)(?:\\s+)?(\\()","end":"\\)|(?=(?|->\\*))(?:\\s+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?\\*|->)))","captures":{"1":{"patterns":[{"include":"source.cpp#inline_comment"}]},"2":{"name":"comment.block.cpp punctuation.definition.comment.begin.cpp"},"3":{"name":"comment.block.cpp"},"4":{"name":"comment.block.cpp punctuation.definition.comment.end.cpp"},"5":{"name":"variable.language.this.cpp"},"6":{"name":"variable.other.object.property.cpp"},"7":{"name":"punctuation.separator.dot-access.cpp"},"8":{"name":"punctuation.separator.pointer-access.cpp"}}},{"match":"(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?\\*|->)))","captures":{"1":{"patterns":[{"include":"source.cpp#inline_comment"}]},"2":{"name":"comment.block.cpp punctuation.definition.comment.begin.cpp"},"3":{"name":"comment.block.cpp"},"4":{"name":"comment.block.cpp punctuation.definition.comment.end.cpp"},"5":{"name":"variable.language.this.cpp"},"6":{"name":"variable.other.object.access.cpp"},"7":{"name":"punctuation.separator.dot-access.cpp"},"8":{"name":"punctuation.separator.pointer-access.cpp"}}},{"include":"source.cpp#member_access"},{"include":"#method_access"}]},"10":{"name":"entity.name.function.member.cpp"},"11":{"name":"punctuation.section.arguments.begin.bracket.round.function.member.cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.function.member.cpp"}},"patterns":[{"include":"#evaluation_context"}]},"ms_attributes":{"begin":"__declspec\\(","end":"\\)|(?=(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)(?:\\s+)?((?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(%=|\\+=|-=|\\*=|(?>=|\\|=)|(\\=))","end":"(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=;|,)","end":"(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)(operator)(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)(?:(?:((?:delete\\[\\]|delete|new\\[\\]|<=>|<<=|new|>>=|\\->\\*|\\/=|%=|&=|>=|\\|=|\\+\\+|\\-\\-|\\(\\)|\\[\\]|\\->|\\+\\+|<<|>>|\\-\\-|<=|\\^=|==|!=|&&|\\|\\||\\+=|\\-=|\\*=|,|\\+|\\-|!|~|\\*|&|\\*|\\/|%|\\+|\\-|<|>|&|\\^|\\||=))|((?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?>","name":"keyword.operator.bitwise.shift.cpp"},{"match":"!=|<=|>=|==|<|>","name":"keyword.operator.comparison.cpp"},{"match":"&&|!|\\|\\|","name":"keyword.operator.logical.cpp"},{"match":"&|\\||\\^|~","name":"keyword.operator.bitwise.cpp"},{"match":"(?:(%=|\\+=|-=|\\*=|(?>=|\\|=)|(\\=))","captures":{"1":{"name":"keyword.operator.assignment.compound.cpp"},"2":{"name":"keyword.operator.assignment.compound.bitwise.cpp"},"3":{"name":"keyword.operator.assignment.cpp"}}},{"match":"%|\\*|\\/|-|\\+","name":"keyword.operator.arithmetic.cpp"},{"include":"#ternary_operator"}]},"parameter":{"begin":"((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\w)","end":"(?:(?=\\))|(,))|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(:)(?!:)","captures":{"1":{"name":"meta.type.cpp"},"2":{"patterns":[{"include":"source.cpp#storage_specifiers"}]},"3":{"name":"comment.block.cpp punctuation.definition.comment.begin.cpp"},"4":{"name":"comment.block.cpp"},"5":{"name":"comment.block.cpp punctuation.definition.comment.end.cpp"},"6":{"patterns":[{"include":"source.cpp#inline_comment"}]},"7":{"name":"comment.block.cpp punctuation.definition.comment.begin.cpp"},"8":{"name":"comment.block.cpp"},"9":{"name":"comment.block.cpp punctuation.definition.comment.end.cpp"},"10":{"name":"meta.qualified_type.cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{"match":"(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\[)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(,)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))*((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\])((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(:)(?!:)","captures":{"1":{"name":"meta.type.cpp"},"2":{"patterns":[{"include":"source.cpp#storage_specifiers"}]},"3":{"name":"comment.block.cpp punctuation.definition.comment.begin.cpp"},"4":{"name":"comment.block.cpp"},"5":{"name":"comment.block.cpp punctuation.definition.comment.end.cpp"},"6":{"patterns":[{"include":"source.cpp#inline_comment"}]},"7":{"name":"comment.block.cpp punctuation.definition.comment.begin.cpp"},"8":{"name":"comment.block.cpp"},"9":{"name":"comment.block.cpp punctuation.definition.comment.end.cpp"},"10":{"name":"meta.qualified_type.cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{"match":"(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?=(?|(?=(?|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()(\\*)(?:\\s+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:\\s+)?(?:(\\[)(\\w*)(\\])(?:\\s+)?)*(\\))(?:\\s+)?(\\()","end":"(\\))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?]|\\n)(?!\\()|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)?((?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|%|\"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.italic.doxygen.cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.bold.doxygen.cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.inline.raw.string.cpp"}}},{"match":"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:\\s+)?(?:in|out)(?:\\s+)?)+)\\])?(\\s+((?|%|\"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.italic.doxygen.cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.bold.doxygen.cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.inline.raw.string.cpp"}}},{"match":"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:\\s+)?(?:in|out)(?:\\s+)?)+)\\])?(\\s+((?|%|\"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.italic.doxygen.cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.bold.doxygen.cpp"}}},{"match":"((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)","captures":{"1":{"name":"storage.type.class.doxygen.cpp"},"2":{"name":"markup.inline.raw.string.cpp"}}},{"match":"(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?","name":"storage.type.class.doxygen.cpp"},{"match":"((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:\\s+)?(?:in|out)(?:\\s+)?)+)\\])?(\\s+((?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?(\\()","end":"\\)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)(((?>(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?(\\()","end":"\\)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\{)","end":"\\}|(?=(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)(((?>(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?(::))?(?:\\s+)?((?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?(\\()","end":"\\)|(?=(?|\\*\\/))\\s*+(?:((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))","captures":{"1":{"name":"punctuation.definition.function.return-type.cpp"},"2":{"patterns":[{"include":"source.cpp#inline_comment"}]},"3":{"name":"comment.block.cpp punctuation.definition.comment.begin.cpp"},"4":{"name":"comment.block.cpp"},"5":{"name":"comment.block.cpp punctuation.definition.comment.end.cpp"},"6":{"name":"meta.qualified_type.cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{"match":"(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()(\\*)(?:\\s+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:\\s+)?(?:(\\[)(\\w*)(\\])(?:\\s+)?)*(\\))(?:\\s+)?(\\()","end":"(\\))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?]|\\n)(?!\\()|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()(\\*)(?:\\s+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:\\s+)?(?:(\\[)(\\w*)(\\])(?:\\s+)?)*(\\))(?:\\s+)?(\\()","end":"(\\))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?]|\\n)(?!\\()|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))","captures":{"1":{"name":"meta.qualified_type.cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{"match":"(?])|(?<=\\Wreturn|^return))(?:\\s+)?(\\[(?!\\[| *+\"| *+\\d))((?:[^\\[\\]]|((??)++\\]))*+)(\\](?!((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))[\\[\\];=]))","end":"(?<=[;}])|(?=(?","end":"(?=\\{)|(?=(?\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:\\s+)?(?:(?:\\.\\*|\\.)|(?:->\\*|->))(?:\\s+)?)*)(?:\\s+)?(~?(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)(?:\\s+)?(\\()","end":"\\)|(?=(?|->\\*))(?:\\s+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?\\*|->)))","captures":{"1":{"patterns":[{"include":"source.cpp#inline_comment"}]},"2":{"name":"comment.block.cpp punctuation.definition.comment.begin.cpp"},"3":{"name":"comment.block.cpp"},"4":{"name":"comment.block.cpp punctuation.definition.comment.end.cpp"},"5":{"name":"variable.language.this.cpp"},"6":{"name":"variable.other.object.property.cpp"},"7":{"name":"punctuation.separator.dot-access.cpp"},"8":{"name":"punctuation.separator.pointer-access.cpp"}}},{"match":"(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?\\*|->)))","captures":{"1":{"patterns":[{"include":"source.cpp#inline_comment"}]},"2":{"name":"comment.block.cpp punctuation.definition.comment.begin.cpp"},"3":{"name":"comment.block.cpp"},"4":{"name":"comment.block.cpp punctuation.definition.comment.end.cpp"},"5":{"name":"variable.language.this.cpp"},"6":{"name":"variable.other.object.access.cpp"},"7":{"name":"punctuation.separator.dot-access.cpp"},"8":{"name":"punctuation.separator.pointer-access.cpp"}}},{"include":"source.cpp#member_access"},{"include":"#method_access"}]},"10":{"name":"entity.name.function.member.cpp"},"11":{"name":"punctuation.section.arguments.begin.bracket.round.function.member.cpp"}},"endCaptures":{"0":{"name":"punctuation.section.arguments.end.bracket.round.function.member.cpp"}},"patterns":[{"include":"#evaluation_context"}]},"ms_attributes":{"begin":"__declspec\\(","end":"\\)|(?=(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)(?:\\s+)?((?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:((?:%=|\\+=|-=|\\*=|(?>=|\\|=))|(\\=))","end":"(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=;|,)","end":"(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)(operator)(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)(?:(?:((?:delete\\[\\]|delete|new\\[\\]|<=>|<<=|new|>>=|\\->\\*|\\/=|%=|&=|>=|\\|=|\\+\\+|\\-\\-|\\(\\)|\\[\\]|\\->|\\+\\+|<<|>>|\\-\\-|<=|\\^=|==|!=|&&|\\|\\||\\+=|\\-=|\\*=|,|\\+|\\-|!|~|\\*|&|\\*|\\/|%|\\+|\\-|<|>|&|\\^|\\||=))|((?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?>)","name":"keyword.operator.bitwise.shift.cpp"},{"match":"(?:!=|<=|>=|==|<|>)","name":"keyword.operator.comparison.cpp"},{"match":"(?:&&|!|\\|\\|)","name":"keyword.operator.logical.cpp"},{"match":"(?:&|\\||\\^|~)","name":"keyword.operator.bitwise.cpp"},{"match":"(?:((?:%=|\\+=|-=|\\*=|(?>=|\\|=))|(\\=))","captures":{"1":{"name":"keyword.operator.assignment.compound.cpp"},"2":{"name":"keyword.operator.assignment.compound.bitwise.cpp"},"3":{"name":"keyword.operator.assignment.cpp"}}},{"match":"(?:%|\\*|\\/|-|\\+)","name":"keyword.operator.arithmetic.cpp"},{"include":"#ternary_operator"}]},"parameter":{"begin":"((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\w)","end":"(?:(?=\\))|(,))|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(:)(?!:)","captures":{"1":{"name":"meta.type.cpp"},"2":{"patterns":[{"include":"source.cpp#storage_specifiers"}]},"3":{"name":"comment.block.cpp punctuation.definition.comment.begin.cpp"},"4":{"name":"comment.block.cpp"},"5":{"name":"comment.block.cpp punctuation.definition.comment.end.cpp"},"6":{"patterns":[{"include":"source.cpp#inline_comment"}]},"7":{"name":"comment.block.cpp punctuation.definition.comment.begin.cpp"},"8":{"name":"comment.block.cpp"},"9":{"name":"comment.block.cpp punctuation.definition.comment.end.cpp"},"10":{"name":"meta.qualified_type.cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{"match":"(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\[)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(,)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))*((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\])((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(:)(?!:)","captures":{"1":{"name":"meta.type.cpp"},"2":{"patterns":[{"include":"source.cpp#storage_specifiers"}]},"3":{"name":"comment.block.cpp punctuation.definition.comment.begin.cpp"},"4":{"name":"comment.block.cpp"},"5":{"name":"comment.block.cpp punctuation.definition.comment.end.cpp"},"6":{"patterns":[{"include":"source.cpp#inline_comment"}]},"7":{"name":"comment.block.cpp punctuation.definition.comment.begin.cpp"},"8":{"name":"comment.block.cpp"},"9":{"name":"comment.block.cpp punctuation.definition.comment.end.cpp"},"10":{"name":"meta.qualified_type.cpp","patterns":[{"match":"::","name":"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"},{"match":"(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?=(?|(?=(?|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()(\\*)(?:\\s+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:\\s+)?(?:(\\[)(\\w*)(\\])(?:\\s+)?)*(\\))(?:\\s+)?(\\()","end":"(\\))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?]|\\n)(?!\\()|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*","end":"[\\s]*(?=;)|(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*\\s*+)?((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?|\\?\\?>)|(?=[;>\\[\\]=]))", @@ -3515,6 +3725,15 @@ { "include": "#language_constants" }, + { + "include": "#constructor_bracket_call" + }, + { + "include": "#simple_constructor_call" + }, + { + "include": "#simple_array_assignment" + }, { "include": "#builtin_storage_type_initilizer" }, @@ -3721,6 +3940,9 @@ { "include": "#ever_present_context" }, + { + "include": "#simple_array_assignment" + }, { "include": "#using_namespace" }, @@ -6534,7 +6756,7 @@ ] }, "normal_variable_assignment": { - "begin": "^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:((?:(?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(%=|\\+=|-=|\\*=|(?>=|\\|=)|(\\=))", + "begin": "^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:((?:(?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:((?:%=|\\+=|-=|\\*=|(?>=|\\|=))|(\\=))", "end": "(?=;)", "beginCaptures": { "1": { @@ -8236,23 +8458,23 @@ "name": "keyword.operator.increment.cpp" }, { - "match": "<<|>>", + "match": "(?:<<|>>)", "name": "keyword.operator.bitwise.shift.cpp" }, { - "match": "!=|<=|>=|==|<|>", + "match": "(?:!=|<=|>=|==|<|>)", "name": "keyword.operator.comparison.cpp" }, { - "match": "&&|!|\\|\\|", + "match": "(?:&&|!|\\|\\|)", "name": "keyword.operator.logical.cpp" }, { - "match": "&|\\||\\^|~", + "match": "(?:&|\\||\\^|~)", "name": "keyword.operator.bitwise.cpp" }, { - "match": "(?:(%=|\\+=|-=|\\*=|(?>=|\\|=)|(\\=))", + "match": "(?:((?:%=|\\+=|-=|\\*=|(?>=|\\|=))|(\\=))", "captures": { "1": { "name": "keyword.operator.assignment.compound.cpp" @@ -8266,7 +8488,7 @@ } }, { - "match": "%|\\*|\\/|-|\\+", + "match": "(?:%|\\*|\\/|-|\\+)", "name": "keyword.operator.arithmetic.cpp" }, { @@ -13061,6 +13283,258 @@ "match": ";", "name": "punctuation.terminator.statement.cpp" }, + "simple_array_assignment": { + "match": "((?>=|\\|=))|(\\=))", + "captures": { + "1": { + "name": "variable.other.assignment.cpp" + }, + "2": { + "name": "punctuation.definition.begin.bracket.square.array.type.cpp" + }, + "3": { + "name": "punctuation.definition.end.bracket.square.array.type.cpp" + }, + "4": { + "patterns": [ + { + "include": "#inline_comment" + } + ] + }, + "5": { + "patterns": [ + { + "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+", + "captures": { + "1": { + "name": "comment.block.cpp punctuation.definition.comment.begin.cpp" + }, + "2": { + "name": "comment.block.cpp" + }, + "3": { + "name": "comment.block.cpp punctuation.definition.comment.end.cpp" + } + } + } + ] + }, + "6": { + "name": "keyword.operator.assignment.compound.cpp" + }, + "7": { + "name": "keyword.operator.assignment.compound.bitwise.cpp" + }, + "8": { + "name": "keyword.operator.assignment.cpp" + } + } + }, + "simple_constructor_call": { + "match": "(?!class|struct|union|enum|explicit|new|delete|operator|template|throw|decltype|typename|override|final)\\b(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|if)\\b)(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(?=((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?", "captures": { @@ -15953,6 +16427,15 @@ { "include": "#language_constants" }, + { + "include": "#constructor_bracket_call" + }, + { + "include": "#simple_constructor_call" + }, + { + "include": "#simple_array_assignment" + }, { "include": "#builtin_storage_type_initilizer" }, @@ -18563,7 +19046,7 @@ "name": "punctuation.vararg-ellipses.cpp" }, "variable_assignment": { - "match": "(?:((?:(?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(%=|\\+=|-=|\\*=|(?>=|\\|=)|(\\=))", + "match": "(?:((?:(?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)(?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:transaction_safe_dynamic|__has_cpp_attribute|reinterpret_cast|transaction_safe|atomic_noexcept|atomic_commit|__has_include|atomic_cancel|synchronized|thread_local|dynamic_cast|static_cast|const_cast|constexpr|co_return|constinit|namespace|protected|consteval|constexpr|constexpr|co_return|consteval|co_await|continue|template|reflexpr|volatile|register|co_await|co_yield|restrict|noexcept|volatile|override|explicit|decltype|operator|noexcept|noexcept|typename|requires|co_yield|nullptr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|define|module|sizeof|switch|delete|pragma|and_eq|inline|xor_eq|typeid|import|extern|public|bitand|static|export|return|friend|ifndef|not_eq|false|final|break|const|catch|endif|ifdef|undef|error|audit|while|using|axiom|or_eq|compl|throw|bitor|const|line|case|else|this|true|goto|else|NULL|elif|new|asm|xor|and|try|not|for|do|if|or|if)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:((?:%=|\\+=|-=|\\*=|(?>=|\\|=))|(\\=))", "captures": { "1": { "patterns": [ diff --git a/autogenerated/cpp_scopes.txt b/autogenerated/cpp_scopes.txt index ad5ed3bf..dee775c2 100644 --- a/autogenerated/cpp_scopes.txt +++ b/autogenerated/cpp_scopes.txt @@ -15,6 +15,7 @@ constant.numeric.exponent.hexadecimal.cpp constant.numeric.hexadecimal.cpp constant.numeric.octal.cpp constant.other.placeholder +entity.name.function.call.constructor.cpp entity.name.function.call.cpp entity.name.function.call.initializer.cpp entity.name.function.constructor.cpp diff --git a/language_examples/#071.cpp b/language_examples/#071.cpp index 4506ae18..c3ea66e6 100644 --- a/language_examples/#071.cpp +++ b/language_examples/#071.cpp @@ -15,4 +15,15 @@ usertype user_value{'A'}; scoped::templated value; compound::type value; int a[] = {1,2,3}; -void function_declaration(int *, usertype user_value); \ No newline at end of file +function_declaration(int *, usertype user_value); + +int main() { + int a; + int b; + usertype user_value; + usertype user_value{'A'}; + scoped::templated value; + compound::type value; + int a[] = {1,2,3}; + function_declaration(int *, usertype user_value); +} \ No newline at end of file diff --git a/language_examples/#071.spec.yaml b/language_examples/#071.spec.yaml index a386591e..f4814792 100644 --- a/language_examples/#071.spec.yaml +++ b/language_examples/#071.spec.yaml @@ -45,7 +45,13 @@ - source: ; scopes: - punctuation.terminator.statement -- source: ' usertype user_value' +- source: usertype + scopes: + - meta.qualified_type + - entity.name.type +- source: user_value + scopes: + - entity.name.function.call.constructor - source: '{' scopesBegin: - meta.block @@ -74,7 +80,15 @@ scopes: - storage.type.primitive - storage.type.built-in.primitive -- source: ' a[] ' +- source: a + scopes: + - variable.other.assignment +- source: '[' + scopes: + - punctuation.definition.begin.bracket.square.array.type +- source: ']' + scopes: + - punctuation.definition.end.bracket.square.array.type - source: '=' scopes: - keyword.operator.assignment @@ -221,7 +235,13 @@ - source: ; scopes: - punctuation.terminator.statement -- source: usertype user_value +- source: usertype + scopes: + - meta.qualified_type + - entity.name.type +- source: user_value + scopes: + - entity.name.function.call.constructor - source: '{' scopesBegin: - meta.block @@ -312,7 +332,15 @@ scopes: - storage.type.primitive - storage.type.built-in.primitive -- source: ' a[] ' +- source: a + scopes: + - variable.other.assignment +- source: '[' + scopes: + - punctuation.definition.begin.bracket.square.array.type +- source: ']' + scopes: + - punctuation.definition.end.bracket.square.array.type - source: '=' scopes: - keyword.operator.assignment @@ -344,14 +372,37 @@ - source: ; scopes: - punctuation.terminator.statement -- source: void +- source: function_declaration + scopes: + - entity.name.function.call +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.call +- source: int + scopes: + - storage.type.primitive + - storage.type.built-in.primitive +- source: '*' + scopes: + - keyword.operator.arithmetic +- source: ',' + scopes: + - punctuation.separator.delimiter.comma +- source: ' usertype user_value' +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.call +- source: ; + scopes: + - punctuation.terminator.statement +- source: int scopesBegin: - meta.function.definition scopes: - meta.qualified_type - storage.type.primitive - storage.type.built-in.primitive -- source: function_declaration +- source: main scopesBegin: - meta.head.function.definition scopes: @@ -359,34 +410,231 @@ - source: ( scopes: - punctuation.section.parameters.begin.bracket.round +- source: ) + scopes: + - punctuation.section.parameters.end.bracket.round +- source: '{' + scopes: + - punctuation.section.block.begin.bracket.curly.function.definition + scopesEnd: + - meta.head.function.definition - source: int scopesBegin: - - meta.function.definition.parameters - - meta.parameter + - meta.body.function.definition scopes: + - meta.qualified_type - storage.type.primitive - storage.type.built-in.primitive +- source: a + scopes: + - variable.other.object.declare +- source: ; + scopes: + - punctuation.terminator.statement +- source: int + scopes: + - meta.qualified_type + - storage.type.primitive + - storage.type.built-in.primitive +- source: b + scopes: + - variable.other.object.declare +- source: ; + scopes: + - punctuation.terminator.statement +- source: usertype + scopes: + - meta.qualified_type + - entity.name.type +- source: user_value + scopes: + - variable.other.object.declare +- source: ; + scopes: + - punctuation.terminator.statement +- source: usertype + scopes: + - meta.qualified_type + - entity.name.type +- source: user_value + scopes: + - entity.name.function.call.constructor +- source: '{' + scopesBegin: + - meta.block + scopes: + - punctuation.section.block.begin.bracket.curly +- source: '''' + scopesBegin: + - string.quoted.single + scopes: + - punctuation.definition.string.begin +- source: A +- source: '''' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.single +- source: '}' + scopes: + - punctuation.section.block.end.bracket.curly + scopesEnd: + - meta.block +- source: ; + scopes: + - punctuation.terminator.statement +- source: scoped + scopesBegin: + - meta.qualified_type + scopes: + - entity.name.scope-resolution +- source: '::' + scopes: + - punctuation.separator.namespace.access + - punctuation.separator.scope-resolution +- source: templated + scopes: + - entity.name.type +- source: < + scopesBegin: + - meta.template.call + scopes: + - punctuation.section.angle-brackets.begin.template.call +- source: type + scopes: + - meta.qualified_type + - entity.name.type +- source: '>' + scopes: + - punctuation.section.angle-brackets.end.template.call + scopesEnd: + - meta.qualified_type + - meta.template.call +- source: value + scopes: + - variable.other.object.declare +- source: ; + scopes: + - punctuation.terminator.statement +- source: compound + scopesBegin: + - meta.qualified_type + scopes: + - entity.name.scope-resolution +- source: < + scopesBegin: + - meta.template.call + - meta.template.call + scopes: + - punctuation.section.angle-brackets.begin.template.call +- source: typename + scopes: + - storage.modifier +- source: templated + scopesBegin: + - meta.qualified_type + scopes: + - entity.name.scope-resolution +- source: '::' + scopes: + - punctuation.separator.namespace.access + - punctuation.separator.scope-resolution +- source: type + scopes: + - entity.name.type + scopesEnd: + - meta.qualified_type - source: '*' scopes: - - storage.modifier.pointer + - keyword.operator.arithmetic +- source: '>' + scopes: + - punctuation.section.angle-brackets.end.template.call + scopesEnd: + - meta.template.call + - meta.template.call +- source: '::' + scopes: + - punctuation.separator.namespace.access + - punctuation.separator.scope-resolution +- source: type + scopes: + - entity.name.type + scopesEnd: + - meta.qualified_type +- source: value + scopes: + - variable.other.object.declare +- source: ; + scopes: + - punctuation.terminator.statement +- source: int + scopes: + - storage.type.primitive + - storage.type.built-in.primitive +- source: a + scopes: + - variable.other.assignment +- source: '[' + scopes: + - punctuation.definition.begin.bracket.square.array.type +- source: ']' + scopes: + - punctuation.definition.end.bracket.square.array.type +- source: '=' + scopes: + - keyword.operator.assignment +- source: '{' + scopesBegin: + - meta.block + scopes: + - punctuation.section.block.begin.bracket.curly +- source: '1' + scopes: + - constant.numeric.decimal - source: ',' scopes: - punctuation.separator.delimiter.comma -- source: usertype +- source: '2' scopes: - - entity.name.type.parameter -- source: user_value + - constant.numeric.decimal +- source: ',' scopes: - - variable.parameter + - punctuation.separator.delimiter.comma +- source: '3' + scopes: + - constant.numeric.decimal +- source: '}' + scopes: + - punctuation.section.block.end.bracket.curly scopesEnd: - - meta.function.definition.parameters - - meta.parameter + - meta.block +- source: ; + scopes: + - punctuation.terminator.statement +- source: function_declaration + scopes: + - entity.name.function.call +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.call +- source: int + scopes: + - storage.type.primitive + - storage.type.built-in.primitive +- source: '*' + scopes: + - keyword.operator.arithmetic +- source: ',' + scopes: + - punctuation.separator.delimiter.comma +- source: ' usertype user_value' - source: ) scopes: - - punctuation.section.parameters.end.bracket.round - scopesEnd: - - meta.function.definition - - meta.head.function.definition + - punctuation.section.arguments.end.bracket.round.function.call - source: ; scopes: - punctuation.terminator.statement +- source: '}' + scopes: + - punctuation.section.block.end.bracket.curly.function.definition diff --git a/language_examples/#414.spec.yaml b/language_examples/#414.spec.yaml index 468506f1..19ed64c2 100644 --- a/language_examples/#414.spec.yaml +++ b/language_examples/#414.spec.yaml @@ -1,4 +1,8 @@ -- source: L_API ALenum AL_APIENTRY +- source: L_API ALenum +- source: AL_APIENTRY + scopes: + - meta.qualified_type + - entity.name.type - source: alGetError scopes: - entity.name.function.call @@ -18,7 +22,13 @@ - meta.block scopes: - punctuation.section.block.begin.bracket.curly -- source: ' ContextRef context' +- source: ContextRef + scopes: + - meta.qualified_type + - entity.name.type +- source: context + scopes: + - entity.name.function.call.constructor - source: '{' scopesBegin: - meta.block @@ -65,7 +75,13 @@ - source: constexpr scopes: - storage.modifier.specifier.functional.pre-parameters.constexpr -- source: ' ALenum deferror' +- source: ALenum + scopes: + - meta.qualified_type + - entity.name.type +- source: deferror + scopes: + - entity.name.function.call.constructor - source: '{' scopesBegin: - meta.block diff --git a/language_examples/#442.spec.yaml b/language_examples/#442.spec.yaml index ea69cf61..d5e7cd53 100644 --- a/language_examples/#442.spec.yaml +++ b/language_examples/#442.spec.yaml @@ -1198,6 +1198,8 @@ - comment.block.documentation - source: ' REPROCXX_EXPORT' - source: std + scopesBegin: + - meta.qualified_type scopes: - entity.name.scope-resolution - source: '::' @@ -1205,6 +1207,10 @@ - punctuation.separator.namespace.access - punctuation.separator.scope-resolution - source: error_code + scopes: + - entity.name.type + scopesEnd: + - meta.qualified_type - source: start scopes: - entity.name.function.call @@ -1342,6 +1348,8 @@ - comment.block.documentation - source: ' REPROCXX_EXPORT' - source: std + scopesBegin: + - meta.qualified_type scopes: - entity.name.scope-resolution - source: '::' @@ -1349,24 +1357,37 @@ - punctuation.separator.namespace.access - punctuation.separator.scope-resolution - source: pair + scopes: + - entity.name.type - source: < + scopesBegin: + - meta.template.call scopes: - - keyword.operator.comparison + - punctuation.section.angle-brackets.begin.template.call - source: stream + scopes: + - meta.qualified_type + - entity.name.type - source: ',' scopes: - - punctuation.separator.delimiter.comma + - punctuation.separator.delimiter.comma.template.argument - source: std scopes: - - entity.name.scope-resolution + - entity.name.scope-resolution.template.call - source: '::' scopes: - punctuation.separator.namespace.access - - punctuation.separator.scope-resolution + - punctuation.separator.scope-resolution.template.call - source: error_code + scopes: + - meta.qualified_type + - entity.name.type - source: '>' scopes: - - keyword.operator.comparison + - punctuation.section.angle-brackets.end.template.call + scopesEnd: + - meta.qualified_type + - meta.template.call - source: poll scopes: - entity.name.function.call @@ -1572,6 +1593,8 @@ - punctuation.terminator.statement - source: ' REPROCXX_EXPORT' - source: std + scopesBegin: + - meta.qualified_type scopes: - entity.name.scope-resolution - source: '::' @@ -1579,6 +1602,10 @@ - punctuation.separator.namespace.access - punctuation.separator.scope-resolution - source: error_code + scopes: + - entity.name.type + scopesEnd: + - meta.qualified_type - source: close scopes: - entity.name.function.call @@ -1672,6 +1699,8 @@ - punctuation.terminator.statement - source: ' REPROCXX_EXPORT' - source: std + scopesBegin: + - meta.qualified_type scopes: - entity.name.scope-resolution - source: '::' @@ -1679,6 +1708,10 @@ - punctuation.separator.namespace.access - punctuation.separator.scope-resolution - source: error_code + scopes: + - entity.name.type + scopesEnd: + - meta.qualified_type - source: terminate scopes: - entity.name.function.call @@ -1696,6 +1729,8 @@ - punctuation.terminator.statement - source: ' REPROCXX_EXPORT' - source: std + scopesBegin: + - meta.qualified_type scopes: - entity.name.scope-resolution - source: '::' @@ -1703,6 +1738,10 @@ - punctuation.separator.namespace.access - punctuation.separator.scope-resolution - source: error_code + scopes: + - entity.name.type + scopesEnd: + - meta.qualified_type - source: kill scopes: - entity.name.function.call diff --git a/language_examples/#651.spec.yaml b/language_examples/#651.spec.yaml index 65cb7db5..c93f9d23 100644 --- a/language_examples/#651.spec.yaml +++ b/language_examples/#651.spec.yaml @@ -27,6 +27,8 @@ scopes: - storage.modifier.specifier.functional.pre-parameters.constexpr - source: std + scopesBegin: + - meta.qualified_type scopes: - entity.name.scope-resolution - source: '::' @@ -37,7 +39,11 @@ scopes: - storage.type - storage.type.built-in -- source: ' highlight' + scopesEnd: + - meta.qualified_type +- source: highlight + scopes: + - entity.name.function.call.constructor - source: '{' scopesBegin: - meta.block @@ -55,6 +61,11 @@ scopes: - storage.modifier.specifier.const - source: '::' + scopesBegin: + - meta.qualified_type + scopes: + - punctuation.separator.namespace.access + - punctuation.separator.scope-resolution - source: std scopes: - entity.name.scope-resolution @@ -66,7 +77,11 @@ scopes: - storage.type - storage.type.built-in -- source: ' highlight2' + scopesEnd: + - meta.qualified_type +- source: highlight2 + scopes: + - entity.name.function.call.constructor - source: '{' scopesBegin: - meta.block @@ -142,6 +157,11 @@ scopes: - storage.modifier.specifier.functional.pre-parameters.constexpr - source: '::' + scopesBegin: + - meta.qualified_type + scopes: + - punctuation.separator.namespace.access + - punctuation.separator.scope-resolution - source: std scopes: - entity.name.scope-resolution @@ -153,7 +173,11 @@ scopes: - storage.type - storage.type.built-in -- source: ' no_highlight' + scopesEnd: + - meta.qualified_type +- source: no_highlight + scopes: + - entity.name.function.call.constructor - source: '{' scopesBegin: - meta.block diff --git a/language_examples/constructor_call.cpp b/language_examples/constructor_call.cpp new file mode 100644 index 00000000..7aad3c8b --- /dev/null +++ b/language_examples/constructor_call.cpp @@ -0,0 +1,114 @@ +#include +#include +#include + +#include "Stress_ball.h" +#include "Collection.h" + +void test_stress_balls() +{ + A; + srand(time(0)); + + // open input files + ifstream input_file1("stress_ball1.data"); + if (!input_file1) { + cout << ">>> Cannot open the file: stress_ball1.data\n"; + exit(1); + } + ifstream input_file2("stress_ball2.data"); + if (!input_file2) { + cout << ">>> Cannot open the file: stress_ball2.data\n"; + exit(1); + } + + // Making collections + CollectionSB c1; + input_file1 >> c1; + + CollectionSB c2; + input_file2 >> c2; + + // optional: + //CollectionSB c1(5); + //CollectionSB c2(10); + + //print collections + cout << endl << "CollectionSB 1:\n"; + c1.print_items(); + cout << endl << "CollectionSB 2:\n"; + c2.print_items(); + cout << endl; + + CollectionSB c3 = make_union(c1, c2); + cout << endl << "CollectionSB 3:\n"; + cout << c3 << endl; + + cout << "total no. of stress balls = " + << c3.total_items() << endl; + cout << "total no. of small stress balls = " + << c3.total_items(Stress_ball_sizes::small) << endl; + cout << "total no. of medium stress balls = " + << c3.total_items(Stress_ball_sizes::medium) << endl; + cout << "total no. of large stress balls = " + << c3.total_items(Stress_ball_sizes::large) << endl; + cout << "total no. of red stress balls = " + << c3.total_items(Stress_ball_colors::red) << endl; + + Stress_ball sb(Stress_ball_colors::green, Stress_ball_sizes::small); + if (c3.contains(sb)) + cout << "CollectionSB 3 contains (green, small) stress ball\n"; + else + cout << "CollectionSB 3 does not contain (green, small) stress ball\n"; + + cout << "\nRemove all (green, small) stress ball\n"; + while (c3.contains(sb)) + c3.remove_this_item(sb); + cout << "total no. of stress balls = " + << c3.total_items() << endl; + + if (c3.contains(sb)) + cout << "CollectionSB 3 contains (green, small) stress ball\n"; + else + cout << "CollectionSB 3 does not contain (green, small) stress ball\n"; + + cout << "Add (green, small) stress ball\n"; + c3.insert_item(sb); + if (c3.contains(sb)) + cout << "CollectionSB 3 contains (green, small) stress ball\n"; + else + cout << "CollectionSB 3 does not contain (green, small) stress ball\n"; + + CollectionSB c4(c3); //make a copy + sort_by_size(c3, Sort_choice::bubble_sort); + cout << endl << "CollectionSB 3 sorted by bubble sort:\n"; + cout << c3; + + c3 = c4; + sort_by_size(c3, Sort_choice::quick_sort); + cout << endl << "CollectionSB 3 sorted by quick sort:\n"; + cout << c3 << endl; + + c3 = c4; + sort_by_size(c3, Sort_choice::merge_sort); + cout << endl << "CollectionSB 3 sorted by merge sort:\n"; + cout << c3 << endl; + + cout << "Make empty collection 3\n"; + c3.make_empty(); + if (c3.is_empty()) + cout << "CollectionSB 3 is empty\n"; + cout << endl << "CollectionSB 3:\n"; + cout << c3 << endl; + + cout << "Make copy of collection 1 to collection 3\n"; + c3 = c1; + cout << endl << "CollectionSB 3:\n"; + cout << c3 << endl; + + cout << "Swap collections 2 and 3:\n"; + swap(c2, c3); + cout << endl << "CollectionSB 3:\n"; + cout << c3 << endl; +} + diff --git a/language_examples/constructor_call.spec.yaml b/language_examples/constructor_call.spec.yaml new file mode 100644 index 00000000..53ae4756 --- /dev/null +++ b/language_examples/constructor_call.spec.yaml @@ -0,0 +1,1690 @@ +- source: '#' + scopesBegin: + - meta.preprocessor.include + - keyword.control.directive.include + scopes: + - punctuation.definition.directive +- source: include + scopesEnd: + - keyword.control.directive.include +- source: < + scopesBegin: + - string.quoted.other.lt-gt.include + scopes: + - punctuation.definition.string.begin +- source: iostream +- source: '>' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.other.lt-gt.include +- source: '#' + scopesBegin: + - keyword.control.directive.include + scopes: + - punctuation.definition.directive +- source: include + scopesEnd: + - keyword.control.directive.include +- source: < + scopesBegin: + - string.quoted.other.lt-gt.include + scopes: + - punctuation.definition.string.begin +- source: fstream +- source: '>' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.other.lt-gt.include +- source: '#' + scopesBegin: + - keyword.control.directive.include + scopes: + - punctuation.definition.directive +- source: include + scopesEnd: + - keyword.control.directive.include +- source: < + scopesBegin: + - string.quoted.other.lt-gt.include + scopes: + - punctuation.definition.string.begin +- source: sstream +- source: '>' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.other.lt-gt.include +- source: '#' + scopesBegin: + - keyword.control.directive.include + scopes: + - punctuation.definition.directive +- source: include + scopesEnd: + - keyword.control.directive.include +- source: '"' + scopesBegin: + - string.quoted.double.include + scopes: + - punctuation.definition.string.begin +- source: Stress_ball.h +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double.include +- source: '#' + scopesBegin: + - keyword.control.directive.include + scopes: + - punctuation.definition.directive +- source: include + scopesEnd: + - keyword.control.directive.include +- source: '"' + scopesBegin: + - string.quoted.double.include + scopes: + - punctuation.definition.string.begin +- source: Collection.h +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - meta.preprocessor.include + - string.quoted.double.include +- source: void + scopesBegin: + - meta.function.definition + scopes: + - meta.qualified_type + - storage.type.primitive + - storage.type.built-in.primitive +- source: test_stress_balls + scopesBegin: + - meta.head.function.definition + scopes: + - entity.name.function.definition +- source: ( + scopes: + - punctuation.section.parameters.begin.bracket.round +- source: ) + scopes: + - punctuation.section.parameters.end.bracket.round +- source: '{' + scopes: + - punctuation.section.block.begin.bracket.curly.function.definition + scopesEnd: + - meta.head.function.definition +- source: ' A' + scopesBegin: + - meta.body.function.definition +- source: ; + scopes: + - punctuation.terminator.statement +- source: srand + scopes: + - entity.name.function.call +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.call +- source: time + scopes: + - entity.name.function.call +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.call +- source: '0' + scopes: + - constant.numeric.decimal +- source: ) + scopesBegin: + - punctuation.section.arguments.end.bracket.round.function.call +- source: ) + scopesEnd: + - punctuation.section.arguments.end.bracket.round.function.call +- source: ; + scopes: + - punctuation.terminator.statement +- source: // + scopesBegin: + - comment.line.double-slash + scopes: + - punctuation.definition.comment +- source: ' open input files' + scopesEnd: + - comment.line.double-slash +- source: ifstream + scopes: + - meta.qualified_type + - entity.name.type +- source: input_file1 + scopes: + - entity.name.function.call +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.call +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: stress_ball1.data +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.call +- source: ; + scopes: + - punctuation.terminator.statement +- source: if + scopes: + - keyword.control.if +- source: ( + scopesBegin: + - meta.parens + scopes: + - punctuation.section.parens.begin.bracket.round +- source: '!' + scopes: + - keyword.operator.logical +- source: input_file1 +- source: ) + scopes: + - punctuation.section.parens.end.bracket.round + scopesEnd: + - meta.parens +- source: '{' + scopesBegin: + - meta.block + scopes: + - punctuation.section.block.begin.bracket.curly +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: '>>> Cannot open the file: stress_ball1.data' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: exit + scopes: + - entity.name.function.call +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.call +- source: '1' + scopes: + - constant.numeric.decimal +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.call +- source: ; + scopes: + - punctuation.terminator.statement +- source: '}' + scopes: + - punctuation.section.block.end.bracket.curly + scopesEnd: + - meta.block +- source: ifstream + scopes: + - meta.qualified_type + - entity.name.type +- source: input_file2 + scopes: + - entity.name.function.call +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.call +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: stress_ball2.data +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.call +- source: ; + scopes: + - punctuation.terminator.statement +- source: if + scopes: + - keyword.control.if +- source: ( + scopesBegin: + - meta.parens + scopes: + - punctuation.section.parens.begin.bracket.round +- source: '!' + scopes: + - keyword.operator.logical +- source: input_file2 +- source: ) + scopes: + - punctuation.section.parens.end.bracket.round + scopesEnd: + - meta.parens +- source: '{' + scopesBegin: + - meta.block + scopes: + - punctuation.section.block.begin.bracket.curly +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: '>>> Cannot open the file: stress_ball2.data' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: exit + scopes: + - entity.name.function.call +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.call +- source: '1' + scopes: + - constant.numeric.decimal +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.call +- source: ; + scopes: + - punctuation.terminator.statement +- source: '}' + scopes: + - punctuation.section.block.end.bracket.curly + scopesEnd: + - meta.block +- source: // + scopesBegin: + - comment.line.double-slash + scopes: + - punctuation.definition.comment +- source: ' Making collections' + scopesEnd: + - comment.line.double-slash +- source: CollectionSB + scopes: + - meta.qualified_type + - entity.name.type +- source: c1 + scopes: + - variable.other.object.declare +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' input_file1 ' +- source: '>>' + scopes: + - keyword.operator.bitwise.shift +- source: ' c1' +- source: ; + scopes: + - punctuation.terminator.statement +- source: CollectionSB + scopes: + - meta.qualified_type + - entity.name.type +- source: c2 + scopes: + - variable.other.object.declare +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' input_file2 ' +- source: '>>' + scopes: + - keyword.operator.bitwise.shift +- source: ' c2' +- source: ; + scopes: + - punctuation.terminator.statement +- source: // + scopesBegin: + - comment.line.double-slash + scopes: + - punctuation.definition.comment +- source: ' optional:' +- source: // + scopes: + - punctuation.definition.comment +- source: CollectionSB c1(5); +- source: // + scopes: + - punctuation.definition.comment +- source: CollectionSB c2(10); +- source: // + scopes: + - punctuation.definition.comment +- source: print collections + scopesEnd: + - comment.line.double-slash +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'CollectionSB 1:' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: c1 + scopes: + - variable.other.object.access +- source: . + scopes: + - punctuation.separator.dot-access +- source: print_items + scopes: + - entity.name.function.member +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.member +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.member +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'CollectionSB 2:' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: c2 + scopes: + - variable.other.object.access +- source: . + scopes: + - punctuation.separator.dot-access +- source: print_items + scopes: + - entity.name.function.member +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.member +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.member +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl' +- source: ; + scopes: + - punctuation.terminator.statement +- source: CollectionSB + scopes: + - meta.qualified_type + - entity.name.type +- source: c3 + scopes: + - variable.other.assignment +- source: '=' + scopes: + - keyword.operator.assignment +- source: make_union + scopes: + - entity.name.function.call +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.call +- source: c1 +- source: ',' + scopes: + - punctuation.separator.delimiter.comma +- source: ' c2' +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.call +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'CollectionSB 3:' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' c3 ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl' +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'total no. of stress balls = ' +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: c3 + scopes: + - variable.other.object.access +- source: . + scopes: + - punctuation.separator.dot-access +- source: total_items + scopes: + - entity.name.function.member +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.member +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.member +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl' +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'total no. of small stress balls = ' +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: c3 + scopes: + - variable.other.object.access +- source: . + scopes: + - punctuation.separator.dot-access +- source: total_items + scopes: + - entity.name.function.member +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.member +- source: Stress_ball_sizes + scopes: + - entity.name.scope-resolution +- source: '::' + scopes: + - punctuation.separator.namespace.access + - punctuation.separator.scope-resolution +- source: small +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.member +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl' +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'total no. of medium stress balls = ' +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: c3 + scopes: + - variable.other.object.access +- source: . + scopes: + - punctuation.separator.dot-access +- source: total_items + scopes: + - entity.name.function.member +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.member +- source: Stress_ball_sizes + scopes: + - entity.name.scope-resolution +- source: '::' + scopes: + - punctuation.separator.namespace.access + - punctuation.separator.scope-resolution +- source: medium +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.member +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl' +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'total no. of large stress balls = ' +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: c3 + scopes: + - variable.other.object.access +- source: . + scopes: + - punctuation.separator.dot-access +- source: total_items + scopes: + - entity.name.function.member +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.member +- source: Stress_ball_sizes + scopes: + - entity.name.scope-resolution +- source: '::' + scopes: + - punctuation.separator.namespace.access + - punctuation.separator.scope-resolution +- source: large +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.member +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl' +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'total no. of red stress balls = ' +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: c3 + scopes: + - variable.other.object.access +- source: . + scopes: + - punctuation.separator.dot-access +- source: total_items + scopes: + - entity.name.function.member +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.member +- source: Stress_ball_colors + scopes: + - entity.name.scope-resolution +- source: '::' + scopes: + - punctuation.separator.namespace.access + - punctuation.separator.scope-resolution +- source: red +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.member +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl' +- source: ; + scopes: + - punctuation.terminator.statement +- source: Stress_ball + scopes: + - meta.qualified_type + - entity.name.type +- source: sb + scopes: + - entity.name.function.call +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.call +- source: Stress_ball_colors + scopes: + - entity.name.scope-resolution +- source: '::' + scopes: + - punctuation.separator.namespace.access + - punctuation.separator.scope-resolution +- source: green +- source: ',' + scopes: + - punctuation.separator.delimiter.comma +- source: Stress_ball_sizes + scopes: + - entity.name.scope-resolution +- source: '::' + scopes: + - punctuation.separator.namespace.access + - punctuation.separator.scope-resolution +- source: small +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.call +- source: ; + scopes: + - punctuation.terminator.statement +- source: if + scopes: + - keyword.control.if +- source: ( + scopesBegin: + - meta.parens + scopes: + - punctuation.section.parens.begin.bracket.round +- source: c3 + scopes: + - variable.other.object.access +- source: . + scopes: + - punctuation.separator.dot-access +- source: contains + scopes: + - entity.name.function.member +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.member +- source: sb +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.member +- source: ) + scopes: + - punctuation.section.parens.end.bracket.round + scopesEnd: + - meta.parens +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'CollectionSB 3 contains (green, small) stress ball' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: else + scopes: + - keyword.control.else +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'CollectionSB 3 does not contain (green, small) stress ball' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: \n + scopes: + - constant.character.escape +- source: 'Remove all (green, small) stress ball' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: while + scopes: + - keyword.control.while +- source: ( + scopesBegin: + - meta.parens + scopes: + - punctuation.section.parens.begin.bracket.round +- source: c3 + scopes: + - variable.other.object.access +- source: . + scopes: + - punctuation.separator.dot-access +- source: contains + scopes: + - entity.name.function.member +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.member +- source: sb +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.member +- source: ) + scopes: + - punctuation.section.parens.end.bracket.round + scopesEnd: + - meta.parens +- source: c3 + scopes: + - variable.other.object.access +- source: . + scopes: + - punctuation.separator.dot-access +- source: remove_this_item + scopes: + - entity.name.function.member +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.member +- source: sb +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.member +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'total no. of stress balls = ' +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: c3 + scopes: + - variable.other.object.access +- source: . + scopes: + - punctuation.separator.dot-access +- source: total_items + scopes: + - entity.name.function.member +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.member +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.member +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl' +- source: ; + scopes: + - punctuation.terminator.statement +- source: if + scopes: + - keyword.control.if +- source: ( + scopesBegin: + - meta.parens + scopes: + - punctuation.section.parens.begin.bracket.round +- source: c3 + scopes: + - variable.other.object.access +- source: . + scopes: + - punctuation.separator.dot-access +- source: contains + scopes: + - entity.name.function.member +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.member +- source: sb +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.member +- source: ) + scopes: + - punctuation.section.parens.end.bracket.round + scopesEnd: + - meta.parens +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'CollectionSB 3 contains (green, small) stress ball' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: else + scopes: + - keyword.control.else +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'CollectionSB 3 does not contain (green, small) stress ball' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'Add (green, small) stress ball' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: c3 + scopes: + - variable.other.object.access +- source: . + scopes: + - punctuation.separator.dot-access +- source: insert_item + scopes: + - entity.name.function.member +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.member +- source: sb +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.member +- source: ; + scopes: + - punctuation.terminator.statement +- source: if + scopes: + - keyword.control.if +- source: ( + scopesBegin: + - meta.parens + scopes: + - punctuation.section.parens.begin.bracket.round +- source: c3 + scopes: + - variable.other.object.access +- source: . + scopes: + - punctuation.separator.dot-access +- source: contains + scopes: + - entity.name.function.member +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.member +- source: sb +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.member +- source: ) + scopes: + - punctuation.section.parens.end.bracket.round + scopesEnd: + - meta.parens +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'CollectionSB 3 contains (green, small) stress ball' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: else + scopes: + - keyword.control.else +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'CollectionSB 3 does not contain (green, small) stress ball' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: CollectionSB + scopes: + - meta.qualified_type + - entity.name.type +- source: c4 + scopes: + - entity.name.function.call +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.call +- source: c3 +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.call +- source: ; + scopes: + - punctuation.terminator.statement +- source: // + scopesBegin: + - comment.line.double-slash + scopes: + - punctuation.definition.comment +- source: make a copy + scopesEnd: + - comment.line.double-slash +- source: sort_by_size + scopes: + - entity.name.function.call +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.call +- source: c3 +- source: ',' + scopes: + - punctuation.separator.delimiter.comma +- source: Sort_choice + scopes: + - entity.name.scope-resolution +- source: '::' + scopes: + - punctuation.separator.namespace.access + - punctuation.separator.scope-resolution +- source: bubble_sort +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.call +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'CollectionSB 3 sorted by bubble sort:' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' c3' +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' c3 ' +- source: '=' + scopes: + - keyword.operator.assignment +- source: ' c4' +- source: ; + scopes: + - punctuation.terminator.statement +- source: sort_by_size + scopes: + - entity.name.function.call +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.call +- source: c3 +- source: ',' + scopes: + - punctuation.separator.delimiter.comma +- source: Sort_choice + scopes: + - entity.name.scope-resolution +- source: '::' + scopes: + - punctuation.separator.namespace.access + - punctuation.separator.scope-resolution +- source: quick_sort +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.call +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'CollectionSB 3 sorted by quick sort:' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' c3 ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl' +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' c3 ' +- source: '=' + scopes: + - keyword.operator.assignment +- source: ' c4' +- source: ; + scopes: + - punctuation.terminator.statement +- source: sort_by_size + scopes: + - entity.name.function.call +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.call +- source: c3 +- source: ',' + scopes: + - punctuation.separator.delimiter.comma +- source: Sort_choice + scopes: + - entity.name.scope-resolution +- source: '::' + scopes: + - punctuation.separator.namespace.access + - punctuation.separator.scope-resolution +- source: merge_sort +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.call +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'CollectionSB 3 sorted by merge sort:' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' c3 ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl' +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: Make empty collection 3 +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: c3 + scopes: + - variable.other.object.access +- source: . + scopes: + - punctuation.separator.dot-access +- source: make_empty + scopes: + - entity.name.function.member +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.member +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.member +- source: ; + scopes: + - punctuation.terminator.statement +- source: if + scopes: + - keyword.control.if +- source: ( + scopesBegin: + - meta.parens + scopes: + - punctuation.section.parens.begin.bracket.round +- source: c3 + scopes: + - variable.other.object.access +- source: . + scopes: + - punctuation.separator.dot-access +- source: is_empty + scopes: + - entity.name.function.member +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.member +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.member +- source: ) + scopes: + - punctuation.section.parens.end.bracket.round + scopesEnd: + - meta.parens +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: CollectionSB 3 is empty +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'CollectionSB 3:' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' c3 ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl' +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: Make copy of collection 1 to collection 3 +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' c3 ' +- source: '=' + scopes: + - keyword.operator.assignment +- source: ' c1' +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'CollectionSB 3:' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' c3 ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl' +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'Swap collections 2 and 3:' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: swap + scopes: + - entity.name.function.call +- source: ( + scopes: + - punctuation.section.arguments.begin.bracket.round.function.call +- source: c2 +- source: ',' + scopes: + - punctuation.separator.delimiter.comma +- source: ' c3' +- source: ) + scopes: + - punctuation.section.arguments.end.bracket.round.function.call +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: '"' + scopesBegin: + - string.quoted.double + scopes: + - punctuation.definition.string.begin +- source: 'CollectionSB 3:' +- source: \n + scopes: + - constant.character.escape +- source: '"' + scopes: + - punctuation.definition.string.end + scopesEnd: + - string.quoted.double +- source: ; + scopes: + - punctuation.terminator.statement +- source: ' cout ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' c3 ' +- source: '<<' + scopes: + - keyword.operator.bitwise.shift +- source: ' endl' +- source: ; + scopes: + - punctuation.terminator.statement +- source: '}' + scopes: + - punctuation.section.block.end.bracket.curly.function.definition diff --git a/language_examples/misc_000.spec.yaml b/language_examples/misc_000.spec.yaml index 5e81d62a..67b75f03 100644 --- a/language_examples/misc_000.spec.yaml +++ b/language_examples/misc_000.spec.yaml @@ -8843,7 +8843,15 @@ scopes: - storage.type.primitive - storage.type.built-in.primitive -- source: ' s_digits[] ' +- source: s_digits + scopes: + - variable.other.assignment +- source: '[' + scopes: + - punctuation.definition.begin.bracket.square.array.type +- source: ']' + scopes: + - punctuation.definition.end.bracket.square.array.type - source: '=' scopes: - keyword.operator.assignment diff --git a/language_examples/misc_005.spec.yaml b/language_examples/misc_005.spec.yaml index e8a249ef..d6f79383 100644 --- a/language_examples/misc_005.spec.yaml +++ b/language_examples/misc_005.spec.yaml @@ -10798,7 +10798,10 @@ - source: ' save a success log' scopesEnd: - comment.line.double-slash -- source: ' ofstream' +- source: ofstream + scopes: + - meta.qualified_type + - entity.name.type - source: the_file_stream scopes: - entity.name.function.call @@ -25180,7 +25183,10 @@ scopesEnd: - meta.toc-list.banner.double-slash - comment.line.double-slash -- source: ' regex' +- source: regex + scopes: + - meta.qualified_type + - entity.name.type - source: is_it_an_int scopes: - entity.name.function.call @@ -25433,7 +25439,10 @@ scopesEnd: - meta.toc-list.banner.double-slash - comment.line.double-slash -- source: ' regex' +- source: regex + scopes: + - meta.qualified_type + - entity.name.type - source: is_it_a_number scopes: - entity.name.function.call @@ -26834,7 +26843,10 @@ - source: ; scopes: - punctuation.terminator.statement -- source: ' fstream' +- source: fstream + scopes: + - meta.qualified_type + - entity.name.type - source: the_file scopes: - entity.name.function.call @@ -27006,9 +27018,12 @@ - punctuation.section.block.begin.bracket.curly.function.definition scopesEnd: - meta.head.function.definition -- source: ' ofstream' +- source: ofstream scopesBegin: - meta.body.function.definition + scopes: + - meta.qualified_type + - entity.name.type - source: the_file_stream scopes: - entity.name.function.call @@ -27129,9 +27144,12 @@ - punctuation.section.block.begin.bracket.curly.function.definition scopesEnd: - meta.head.function.definition -- source: ' ifstream' +- source: ifstream scopesBegin: - meta.body.function.definition + scopes: + - meta.qualified_type + - entity.name.type - source: the_file_stream scopes: - entity.name.function.call @@ -27227,9 +27245,12 @@ - punctuation.section.block.begin.bracket.curly.function.definition scopesEnd: - meta.head.function.definition -- source: ' ofstream' +- source: ofstream scopesBegin: - meta.body.function.definition + scopes: + - meta.qualified_type + - entity.name.type - source: the_file_stream scopes: - entity.name.function.call @@ -27306,9 +27327,12 @@ - punctuation.section.block.begin.bracket.curly.function.definition scopesEnd: - meta.head.function.definition -- source: ' ifstream' +- source: ifstream scopesBegin: - meta.body.function.definition + scopes: + - meta.qualified_type + - entity.name.type - source: the_file scopes: - entity.name.function.call @@ -27322,7 +27346,10 @@ - source: ; scopes: - punctuation.terminator.statement -- source: ' string' +- source: string + scopes: + - meta.qualified_type + - entity.name.type - source: content scopes: - entity.name.function.call @@ -27461,9 +27488,12 @@ - punctuation.section.block.begin.bracket.curly.function.definition scopesEnd: - meta.head.function.definition -- source: ' fstream' +- source: fstream scopesBegin: - meta.body.function.definition + scopes: + - meta.qualified_type + - entity.name.type - source: the_file scopes: - entity.name.function.call diff --git a/language_examples/misc_006.spec.yaml b/language_examples/misc_006.spec.yaml index 5e81d62a..67b75f03 100644 --- a/language_examples/misc_006.spec.yaml +++ b/language_examples/misc_006.spec.yaml @@ -8843,7 +8843,15 @@ scopes: - storage.type.primitive - storage.type.built-in.primitive -- source: ' s_digits[] ' +- source: s_digits + scopes: + - variable.other.assignment +- source: '[' + scopes: + - punctuation.definition.begin.bracket.square.array.type +- source: ']' + scopes: + - punctuation.definition.end.bracket.square.array.type - source: '=' scopes: - keyword.operator.assignment diff --git a/language_examples/misc_asteria.spec.yaml b/language_examples/misc_asteria.spec.yaml index 99d11a13..54fb7c5a 100644 --- a/language_examples/misc_asteria.spec.yaml +++ b/language_examples/misc_asteria.spec.yaml @@ -4622,7 +4622,15 @@ scopes: - storage.type.primitive - storage.type.built-in.primitive -- source: ' s_name_chars[] ' +- source: s_name_chars + scopes: + - variable.other.assignment +- source: '[' + scopes: + - punctuation.definition.begin.bracket.square.array.type +- source: ']' + scopes: + - punctuation.definition.end.bracket.square.array.type - source: '=' scopes: - keyword.operator.assignment @@ -5117,7 +5125,15 @@ - source: constexpr scopes: - storage.modifier.specifier.functional.pre-parameters.constexpr -- source: ' s_keywords[] ' +- source: s_keywords + scopes: + - variable.other.assignment +- source: '[' + scopes: + - punctuation.definition.begin.bracket.square.array.type +- source: ']' + scopes: + - punctuation.definition.end.bracket.square.array.type - source: '=' scopes: - keyword.operator.assignment @@ -7037,7 +7053,15 @@ scopes: - storage.type.primitive - storage.type.built-in.primitive -- source: ' s_punct_chars[] ' +- source: s_punct_chars + scopes: + - variable.other.assignment +- source: '[' + scopes: + - punctuation.definition.begin.bracket.square.array.type +- source: ']' + scopes: + - punctuation.definition.end.bracket.square.array.type - source: '=' scopes: - keyword.operator.assignment @@ -7321,7 +7345,15 @@ - source: constexpr scopes: - storage.modifier.specifier.functional.pre-parameters.constexpr -- source: ' s_punctuators[] ' +- source: s_punctuators + scopes: + - variable.other.assignment +- source: '[' + scopes: + - punctuation.definition.begin.bracket.square.array.type +- source: ']' + scopes: + - punctuation.definition.end.bracket.square.array.type - source: '=' scopes: - keyword.operator.assignment @@ -11783,7 +11815,15 @@ scopes: - storage.type.primitive - storage.type.built-in.primitive -- source: ' s_digits[] ' +- source: s_digits + scopes: + - variable.other.assignment +- source: '[' + scopes: + - punctuation.definition.begin.bracket.square.array.type +- source: ']' + scopes: + - punctuation.definition.end.bracket.square.array.type - source: '=' scopes: - keyword.operator.assignment @@ -14678,7 +14718,15 @@ scopes: - storage.type.primitive - storage.type.built-in.primitive -- source: ' s_digits[] ' +- source: s_digits + scopes: + - variable.other.assignment +- source: '[' + scopes: + - punctuation.definition.begin.bracket.square.array.type +- source: ']' + scopes: + - punctuation.definition.end.bracket.square.array.type - source: '=' scopes: - keyword.operator.assignment @@ -16629,7 +16677,15 @@ scopes: - storage.type.primitive - storage.type.built-in.primitive -- source: ' s_suffix_chars[] ' +- source: s_suffix_chars + scopes: + - variable.other.assignment +- source: '[' + scopes: + - punctuation.definition.begin.bracket.square.array.type +- source: ']' + scopes: + - punctuation.definition.end.bracket.square.array.type - source: '=' scopes: - keyword.operator.assignment @@ -20187,7 +20243,10 @@ - source: ' Read source code line by line.' scopesEnd: - comment.line.double-slash -- source: ' Line_Reader' +- source: Line_Reader + scopes: + - meta.qualified_type + - entity.name.type - source: reader scopes: - entity.name.function.call diff --git a/language_examples/operator_overload_implicit_const.spec.yaml b/language_examples/operator_overload_implicit_const.spec.yaml index 13aa670f..ff548bd4 100644 --- a/language_examples/operator_overload_implicit_const.spec.yaml +++ b/language_examples/operator_overload_implicit_const.spec.yaml @@ -1115,28 +1115,42 @@ - source: ; scopes: - punctuation.terminator.statement -- source: ' ChunkedVector' +- source: ChunkedVector + scopesBegin: + - meta.qualified_type + scopes: + - entity.name.type - source: < + scopesBegin: + - meta.template.call scopes: - - keyword.operator.comparison + - punctuation.section.angle-brackets.begin.template.call - source: std scopes: - - entity.name.scope-resolution + - entity.name.scope-resolution.template.call - source: '::' scopes: - punctuation.separator.namespace.access - - punctuation.separator.scope-resolution + - punctuation.separator.scope-resolution.template.call - source: string + scopes: + - meta.qualified_type + - entity.name.type - source: ',' scopes: - - punctuation.separator.delimiter.comma + - punctuation.separator.delimiter.comma.template.argument - source: '8192' scopes: - constant.numeric.decimal - source: '>' scopes: - - keyword.operator.comparison -- source: ' store' + - punctuation.section.angle-brackets.end.template.call + scopesEnd: + - meta.qualified_type + - meta.template.call +- source: store + scopes: + - entity.name.function.call.constructor - source: '{' scopesBegin: - meta.block diff --git a/language_examples/ranged_for.spec.yaml b/language_examples/ranged_for.spec.yaml index 51c16542..1048c5c4 100644 --- a/language_examples/ranged_for.spec.yaml +++ b/language_examples/ranged_for.spec.yaml @@ -2621,9 +2621,10 @@ - storage.modifier.specifier.static - source: void scopes: + - meta.qualified_type - storage.type.primitive - storage.type.built-in.primitive -- source: ' import' +- source: import - source: ( scopesBegin: - meta.parens @@ -5209,6 +5210,9 @@ - punctuation.separator.namespace.access - punctuation.separator.scope-resolution - source: string + scopes: + - meta.qualified_type + - entity.name.type - source: sym scopes: - entity.name.function.call @@ -11980,16 +11984,25 @@ - punctuation.separator.namespace.access - punctuation.separator.scope-resolution - source: set + scopesBegin: + - meta.qualified_type + scopes: + - entity.name.type - source: < + scopesBegin: + - meta.template.call scopes: - - keyword.operator.comparison -- source: 'Value ' + - punctuation.section.angle-brackets.begin.template.call +- source: Value + scopes: + - meta.qualified_type + - entity.name.type - source: '*' scopes: - keyword.operator.arithmetic - source: ',' scopes: - - punctuation.separator.delimiter.comma + - punctuation.separator.delimiter.comma.template.argument - source: decltype scopes: - keyword.operator.functionlike @@ -12006,7 +12019,10 @@ - punctuation.section.arguments.end.bracket.round.decltype - source: '>' scopes: - - keyword.operator.comparison + - punctuation.section.angle-brackets.end.template.call + scopesEnd: + - meta.qualified_type + - meta.template.call - source: doneKeys scopes: - entity.name.function.call @@ -15756,6 +15772,9 @@ - punctuation.separator.namespace.access - punctuation.separator.scope-resolution - source: string + scopes: + - meta.qualified_type + - entity.name.type - source: name scopes: - entity.name.function.call @@ -30901,6 +30920,9 @@ - punctuation.separator.namespace.access - punctuation.separator.scope-resolution - source: string + scopes: + - meta.qualified_type + - entity.name.type - source: name scopes: - entity.name.function.call @@ -30959,6 +30981,9 @@ - punctuation.separator.namespace.access - punctuation.separator.scope-resolution - source: string + scopes: + - meta.qualified_type + - entity.name.type - source: contents scopes: - entity.name.function.call @@ -51849,7 +51874,15 @@ - source: '*' scopes: - keyword.operator.arithmetic -- source: ' vs[] ' +- source: vs + scopes: + - variable.other.assignment +- source: '[' + scopes: + - punctuation.definition.begin.bracket.square.array.type +- source: ']' + scopes: + - punctuation.definition.end.bracket.square.array.type - source: '=' scopes: - keyword.operator.assignment @@ -58963,7 +58996,13 @@ - source: ; scopes: - punctuation.terminator.statement -- source: ' CompareValues comp' +- source: CompareValues + scopes: + - meta.qualified_type + - entity.name.type +- source: comp + scopes: + - entity.name.function.call.constructor - source: '{' scopesBegin: - meta.block @@ -66744,7 +66783,10 @@ - source: ; scopes: - punctuation.terminator.statement -- source: ' DrvName' +- source: DrvName + scopes: + - meta.qualified_type + - entity.name.type - source: parsed scopes: - entity.name.function.call @@ -69726,7 +69768,15 @@ scopes: - storage.type.primitive - storage.type.built-in.primitive -- source: ' code[] ' +- source: code + scopes: + - variable.other.assignment +- source: '[' + scopes: + - punctuation.definition.begin.bracket.square.array.type +- source: ']' + scopes: + - punctuation.definition.end.bracket.square.array.type - source: '=' scopes: - keyword.operator.assignment diff --git a/language_examples/test.spec.yaml b/language_examples/test.spec.yaml index cd39a8fa..6f3da51e 100644 --- a/language_examples/test.spec.yaml +++ b/language_examples/test.spec.yaml @@ -309,13 +309,25 @@ - punctuation.separator.namespace.access - punctuation.separator.scope-resolution - source: unique_ptr + scopesBegin: + - meta.qualified_type + scopes: + - entity.name.type - source: < + scopesBegin: + - meta.template.call scopes: - - keyword.operator.comparison + - punctuation.section.angle-brackets.begin.template.call - source: O + scopes: + - meta.qualified_type + - entity.name.type - source: '>' scopes: - - keyword.operator.comparison + - punctuation.section.angle-brackets.end.template.call + scopesEnd: + - meta.qualified_type + - meta.template.call - source: o scopes: - entity.name.function.call diff --git a/language_examples/theme_demo.spec.yaml b/language_examples/theme_demo.spec.yaml index d373638d..372ab934 100644 --- a/language_examples/theme_demo.spec.yaml +++ b/language_examples/theme_demo.spec.yaml @@ -127,6 +127,7 @@ - storage.modifier.specifier.functional.pre-parameters.inline - source: int scopes: + - meta.qualified_type - storage.type.primitive - storage.type.built-in.primitive - source: f diff --git a/main/main.rb b/main/main.rb index 599fb79b..9ea228d5 100644 --- a/main/main.rb +++ b/main/main.rb @@ -189,6 +189,7 @@ def generateBlockFinder( name:"", tag_as:"", start_pattern:nil, needs_semicolon: :constructor_root, :destructor_root, :function_definition, + :simple_array_assignment, :operator_overload, :using_namespace, :type_alias, @@ -265,6 +266,9 @@ def generateBlockFinder( name:"", tag_as:"", start_pattern:nil, needs_semicolon: :the_this_keyword, :language_constants, # types, modifiers, and specifiers + :constructor_bracket_call, + :simple_constructor_call, + :simple_array_assignment, :builtin_storage_type_initilizer, # needs to be above storage types :qualifiers_and_specifiers_post_parameters, # TODO this needs to be integrated into the function definition pattern :functional_specifiers_pre_parameters, # TODO: these probably need to be moved inside the function definition pattern @@ -279,6 +283,7 @@ def generateBlockFinder( name:"", tag_as:"", start_pattern:nil, needs_semicolon: # :empty_square_brackets, (see https://github.com/jeff-hykin/better-cpp-syntax/pull/380#issuecomment-542491824) :semicolon, :comma, + # :unknown_variable, ] grammar[:function_parameter_context] = [ :ever_present_context, # comments and macros @@ -1058,6 +1063,42 @@ def generateBlockFinder( name:"", tag_as:"", start_pattern:nil, needs_semicolon: ), ], ) + constructor_call_base = lookAheadToAvoid(/class|struct|union|enum|explicit|new|delete|operator|template|throw|decltype|typename|override|final/).then(/\b/).then( + qualified_type + ) + grammar[:constructor_bracket_call] = Pattern.new( + constructor_call_base.then(std_space).then( + match: variable_name, + tag_as: "entity.name.function.call.constructor", + ).then(std_space).lookAheadFor(/\{/) + ) + grammar[:simple_constructor_call] = Pattern.new( + constructor_call_base.lookAheadFor( + std_space.lookAheadFor(variable_name.lookAheadFor(std_space.lookAheadFor(/(?:\{|\()/))) + ) + ) + grammar[:simple_array_assignment] = Pattern.new( + Pattern.new( + tag_as: "variable.other.assignment", + match: variable_name, + ).then( + match: /\[/, + tag_as: "punctuation.definition.begin.bracket.square.array.type", + ).then( + match: / */, + ).then( + match: /\]/, + tag_as: "punctuation.definition.end.bracket.square.array.type", + ).then(std_space).then( + assignment_operators + ) + ) + # grammar[:unknown_variable] = Pattern.new( + # Pattern.new( + # tag_as: "variable.other.unknown.$match", + # match: variable_name, + # ) + # ) normal_type_pattern = maybe(declaration_storage_specifiers.then(std_space)).then(qualified_type.maybe(ref_deref[])) # normal variable assignment grammar[:variable_assignment] = Pattern.new( diff --git a/package.json b/package.json index bcbf849e..f9317666 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "better-cpp-syntax", "displayName": "Better C++ Syntax", "description": "The bleeding edge of the C++ syntax", - "version": "1.23.1", + "version": "1.25.0", "icon": "icon.png", "scripts": {}, "keywords": [