cpp top-level property

Mode cpp
final

Implementation

final cpp = Mode(
    refs: {
      '~contains~0~contains~6': Mode(className: "string", variants: [
        Mode(ref: '~contains~0~contains~1~contains~1~variants~0'),
        Mode(ref: '~contains~0~contains~1~contains~1~variants~1'),
        Mode(ref: '~contains~0~contains~1~contains~1~variants~2')
      ]),
      '~contains~0~contains~5': Mode(
          className: "number",
          variants: [
            Mode(begin: "\\b(0b[01']+)"),
            Mode(
                begin:
                    "(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"),
            Mode(
                begin:
                    "(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)")
          ],
          relevance: 0),
      '~contains~0~contains~2':
          Mode(className: "type", begin: "\\b[a-z\\d_]*_t\\b"),
      '~contains~0~contains~1~contains~3':
          Mode(scope: "comment", begin: "//", end: "\$", contains: [
        Mode(begin: "\\\\\\n"),
        Mode(
            scope: "doctag",
            begin: "[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
            end: "(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",
            excludeBegin: true,
            relevance: 0),
        Mode(
            begin:
                "[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}")
      ]),
      '~contains~0~contains~1~contains~1~variants~2': Mode(
          begin: "(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(",
          end: "\\)([^()\\\\ ]{0,16})\"",
          onBegin: endSameAsBeginOnBegin,
          onEnd: endSameAsBeginOnEnd),
      '~contains~0~contains~1~contains~1~variants~1': Mode(
          begin:
              "(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",
          end: "'",
          illegal: "."),
      '~contains~0~contains~1~contains~1~variants~0': Mode(
          begin: "(u8?|U|L)?\"",
          end: "\"",
          illegal: "\\n",
          contains: [BACKSLASH_ESCAPE]),
      '~contains~0~contains~1': Mode(
          className: "meta",
          begin: "#\\s*[a-z]+\\b",
          end: "\$",
          keywords: {
            "keyword":
                "if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"
          },
          contains: [
            Mode(begin: "\\\\\\n", relevance: 0),
            Mode(className: "string", variants: [
              Mode(ref: '~contains~0~contains~1~contains~1~variants~0'),
              Mode(ref: '~contains~0~contains~1~contains~1~variants~1'),
              Mode(ref: '~contains~0~contains~1~contains~1~variants~2')
            ]),
            Mode(className: "string", begin: "<.*?>"),
            Mode(ref: '~contains~0~contains~1~contains~3'),
            C_BLOCK_COMMENT_MODE
          ]),
      '~contains~0~contains~0': Mode(
          className: "function.dispatch",
          relevance: 0,
          keywords: {
            "_hint": [
              "abort",
              "abs",
              "acos",
              "apply",
              "as_const",
              "asin",
              "atan",
              "atan2",
              "calloc",
              "ceil",
              "cerr",
              "cin",
              "clog",
              "cos",
              "cosh",
              "cout",
              "declval",
              "endl",
              "exchange",
              "exit",
              "exp",
              "fabs",
              "floor",
              "fmod",
              "forward",
              "fprintf",
              "fputs",
              "free",
              "frexp",
              "fscanf",
              "future",
              "invoke",
              "isalnum",
              "isalpha",
              "iscntrl",
              "isdigit",
              "isgraph",
              "islower",
              "isprint",
              "ispunct",
              "isspace",
              "isupper",
              "isxdigit",
              "labs",
              "launder",
              "ldexp",
              "log",
              "log10",
              "make_pair",
              "make_shared",
              "make_shared_for_overwrite",
              "make_tuple",
              "make_unique",
              "malloc",
              "memchr",
              "memcmp",
              "memcpy",
              "memset",
              "modf",
              "move",
              "pow",
              "printf",
              "putchar",
              "puts",
              "realloc",
              "scanf",
              "sin",
              "sinh",
              "snprintf",
              "sprintf",
              "sqrt",
              "sscanf",
              "std",
              "stderr",
              "stdin",
              "stdout",
              "strcat",
              "strchr",
              "strcmp",
              "strcpy",
              "strcspn",
              "strlen",
              "strncat",
              "strncmp",
              "strncpy",
              "strpbrk",
              "strrchr",
              "strspn",
              "strstr",
              "swap",
              "tan",
              "tanh",
              "terminate",
              "to_underlying",
              "tolower",
              "toupper",
              "vfprintf",
              "visit",
              "vprintf",
              "vsprintf"
            ]
          },
          begin:
              "\\b(?!decltype)(?!if)(?!for)(?!switch)(?!while)[a-zA-Z]\\w*(?=(<[^<>]+>|)\\s*\\()"),
    },
    name: "C++",
    aliases: ["cc", "c++", "h++", "hpp", "hh", "hxx", "cxx"],
    keywords: {
      "type": [
        "bool",
        "char",
        "char16_t",
        "char32_t",
        "char8_t",
        "double",
        "float",
        "int",
        "long",
        "short",
        "void",
        "wchar_t",
        "unsigned",
        "signed",
        "const",
        "static"
      ],
      "keyword": [
        "alignas",
        "alignof",
        "and",
        "and_eq",
        "asm",
        "atomic_cancel",
        "atomic_commit",
        "atomic_noexcept",
        "auto",
        "bitand",
        "bitor",
        "break",
        "case",
        "catch",
        "class",
        "co_await",
        "co_return",
        "co_yield",
        "compl",
        "concept",
        "const_cast|10",
        "consteval",
        "constexpr",
        "constinit",
        "continue",
        "decltype",
        "default",
        "delete",
        "do",
        "dynamic_cast|10",
        "else",
        "enum",
        "explicit",
        "export",
        "extern",
        "false",
        "final",
        "for",
        "friend",
        "goto",
        "if",
        "import",
        "inline",
        "module",
        "mutable",
        "namespace",
        "new",
        "noexcept",
        "not",
        "not_eq",
        "nullptr",
        "operator",
        "or",
        "or_eq",
        "override",
        "private",
        "protected",
        "public",
        "reflexpr",
        "register",
        "reinterpret_cast|10",
        "requires",
        "return",
        "sizeof",
        "static_assert",
        "static_cast|10",
        "struct",
        "switch",
        "synchronized",
        "template",
        "this",
        "thread_local",
        "throw",
        "transaction_safe",
        "transaction_safe_dynamic",
        "true",
        "try",
        "typedef",
        "typeid",
        "typename",
        "union",
        "using",
        "virtual",
        "volatile",
        "while",
        "xor",
        "xor_eq"
      ],
      "literal": ["NULL", "false", "nullopt", "nullptr", "true"],
      "built_in": ["_Pragma"],
      "_type_hints": [
        "any",
        "auto_ptr",
        "barrier",
        "binary_semaphore",
        "bitset",
        "complex",
        "condition_variable",
        "condition_variable_any",
        "counting_semaphore",
        "deque",
        "false_type",
        "future",
        "imaginary",
        "initializer_list",
        "istringstream",
        "jthread",
        "latch",
        "lock_guard",
        "multimap",
        "multiset",
        "mutex",
        "optional",
        "ostringstream",
        "packaged_task",
        "pair",
        "promise",
        "priority_queue",
        "queue",
        "recursive_mutex",
        "recursive_timed_mutex",
        "scoped_lock",
        "set",
        "shared_future",
        "shared_lock",
        "shared_mutex",
        "shared_timed_mutex",
        "shared_ptr",
        "stack",
        "string_view",
        "stringstream",
        "timed_mutex",
        "thread",
        "true_type",
        "tuple",
        "unique_lock",
        "unique_ptr",
        "unordered_map",
        "unordered_multimap",
        "unordered_multiset",
        "unordered_set",
        "variant",
        "vector",
        "weak_ptr",
        "wstring",
        "wstring_view"
      ]
    },
    illegal: "</",
    classNameAliases: {"function.dispatch": "built_in"},
    contains: [
      Mode(variants: [
        Mode(begin: "=", end: ";"),
        Mode(begin: "\\(", end: "\\)"),
        Mode(beginKeywords: "new throw return else", end: ";")
      ], keywords: {
        "type": [
          "bool",
          "char",
          "char16_t",
          "char32_t",
          "char8_t",
          "double",
          "float",
          "int",
          "long",
          "short",
          "void",
          "wchar_t",
          "unsigned",
          "signed",
          "const",
          "static"
        ],
        "keyword": [
          "alignas",
          "alignof",
          "and",
          "and_eq",
          "asm",
          "atomic_cancel",
          "atomic_commit",
          "atomic_noexcept",
          "auto",
          "bitand",
          "bitor",
          "break",
          "case",
          "catch",
          "class",
          "co_await",
          "co_return",
          "co_yield",
          "compl",
          "concept",
          "const_cast|10",
          "consteval",
          "constexpr",
          "constinit",
          "continue",
          "decltype",
          "default",
          "delete",
          "do",
          "dynamic_cast|10",
          "else",
          "enum",
          "explicit",
          "export",
          "extern",
          "false",
          "final",
          "for",
          "friend",
          "goto",
          "if",
          "import",
          "inline",
          "module",
          "mutable",
          "namespace",
          "new",
          "noexcept",
          "not",
          "not_eq",
          "nullptr",
          "operator",
          "or",
          "or_eq",
          "override",
          "private",
          "protected",
          "public",
          "reflexpr",
          "register",
          "reinterpret_cast|10",
          "requires",
          "return",
          "sizeof",
          "static_assert",
          "static_cast|10",
          "struct",
          "switch",
          "synchronized",
          "template",
          "this",
          "thread_local",
          "throw",
          "transaction_safe",
          "transaction_safe_dynamic",
          "true",
          "try",
          "typedef",
          "typeid",
          "typename",
          "union",
          "using",
          "virtual",
          "volatile",
          "while",
          "xor",
          "xor_eq"
        ],
        "literal": ["NULL", "false", "nullopt", "nullptr", "true"],
        "built_in": ["_Pragma"],
        "_type_hints": [
          "any",
          "auto_ptr",
          "barrier",
          "binary_semaphore",
          "bitset",
          "complex",
          "condition_variable",
          "condition_variable_any",
          "counting_semaphore",
          "deque",
          "false_type",
          "future",
          "imaginary",
          "initializer_list",
          "istringstream",
          "jthread",
          "latch",
          "lock_guard",
          "multimap",
          "multiset",
          "mutex",
          "optional",
          "ostringstream",
          "packaged_task",
          "pair",
          "promise",
          "priority_queue",
          "queue",
          "recursive_mutex",
          "recursive_timed_mutex",
          "scoped_lock",
          "set",
          "shared_future",
          "shared_lock",
          "shared_mutex",
          "shared_timed_mutex",
          "shared_ptr",
          "stack",
          "string_view",
          "stringstream",
          "timed_mutex",
          "thread",
          "true_type",
          "tuple",
          "unique_lock",
          "unique_ptr",
          "unordered_map",
          "unordered_multimap",
          "unordered_multiset",
          "unordered_set",
          "variant",
          "vector",
          "weak_ptr",
          "wstring",
          "wstring_view"
        ]
      }, contains: [
        Mode(ref: '~contains~0~contains~0'),
        Mode(ref: '~contains~0~contains~1'),
        Mode(ref: '~contains~0~contains~2'),
        Mode(ref: '~contains~0~contains~1~contains~3'),
        C_BLOCK_COMMENT_MODE,
        Mode(ref: '~contains~0~contains~5'),
        Mode(ref: '~contains~0~contains~6'),
        Mode(
            begin: "\\(",
            end: "\\)",
            keywords: {
              "type": [
                "bool",
                "char",
                "char16_t",
                "char32_t",
                "char8_t",
                "double",
                "float",
                "int",
                "long",
                "short",
                "void",
                "wchar_t",
                "unsigned",
                "signed",
                "const",
                "static"
              ],
              "keyword": [
                "alignas",
                "alignof",
                "and",
                "and_eq",
                "asm",
                "atomic_cancel",
                "atomic_commit",
                "atomic_noexcept",
                "auto",
                "bitand",
                "bitor",
                "break",
                "case",
                "catch",
                "class",
                "co_await",
                "co_return",
                "co_yield",
                "compl",
                "concept",
                "const_cast|10",
                "consteval",
                "constexpr",
                "constinit",
                "continue",
                "decltype",
                "default",
                "delete",
                "do",
                "dynamic_cast|10",
                "else",
                "enum",
                "explicit",
                "export",
                "extern",
                "false",
                "final",
                "for",
                "friend",
                "goto",
                "if",
                "import",
                "inline",
                "module",
                "mutable",
                "namespace",
                "new",
                "noexcept",
                "not",
                "not_eq",
                "nullptr",
                "operator",
                "or",
                "or_eq",
                "override",
                "private",
                "protected",
                "public",
                "reflexpr",
                "register",
                "reinterpret_cast|10",
                "requires",
                "return",
                "sizeof",
                "static_assert",
                "static_cast|10",
                "struct",
                "switch",
                "synchronized",
                "template",
                "this",
                "thread_local",
                "throw",
                "transaction_safe",
                "transaction_safe_dynamic",
                "true",
                "try",
                "typedef",
                "typeid",
                "typename",
                "union",
                "using",
                "virtual",
                "volatile",
                "while",
                "xor",
                "xor_eq"
              ],
              "literal": ["NULL", "false", "nullopt", "nullptr", "true"],
              "built_in": ["_Pragma"],
              "_type_hints": [
                "any",
                "auto_ptr",
                "barrier",
                "binary_semaphore",
                "bitset",
                "complex",
                "condition_variable",
                "condition_variable_any",
                "counting_semaphore",
                "deque",
                "false_type",
                "future",
                "imaginary",
                "initializer_list",
                "istringstream",
                "jthread",
                "latch",
                "lock_guard",
                "multimap",
                "multiset",
                "mutex",
                "optional",
                "ostringstream",
                "packaged_task",
                "pair",
                "promise",
                "priority_queue",
                "queue",
                "recursive_mutex",
                "recursive_timed_mutex",
                "scoped_lock",
                "set",
                "shared_future",
                "shared_lock",
                "shared_mutex",
                "shared_timed_mutex",
                "shared_ptr",
                "stack",
                "string_view",
                "stringstream",
                "timed_mutex",
                "thread",
                "true_type",
                "tuple",
                "unique_lock",
                "unique_ptr",
                "unordered_map",
                "unordered_multimap",
                "unordered_multiset",
                "unordered_set",
                "variant",
                "vector",
                "weak_ptr",
                "wstring",
                "wstring_view"
              ]
            },
            contains: [
              Mode(ref: '~contains~0~contains~0'),
              Mode(ref: '~contains~0~contains~1'),
              Mode(ref: '~contains~0~contains~2'),
              Mode(ref: '~contains~0~contains~1~contains~3'),
              C_BLOCK_COMMENT_MODE,
              Mode(ref: '~contains~0~contains~5'),
              Mode(ref: '~contains~0~contains~6'),
              Mode(self: true)
            ],
            relevance: 0)
      ], relevance: 0),
      Mode(
          className: "function",
          begin:
              "((?!struct)(decltype\\(auto\\)|(?:[a-zA-Z_]\\w*::)?[a-zA-Z_]\\w*(?:<[^<>]+>)?)[\\*&\\s]+)+(?:[a-zA-Z_]\\w*::)?[a-zA-Z]\\w*\\s*\\(",
          returnBegin: true,
          end: "[{;=]",
          excludeEnd: true,
          keywords: {
            "type": [
              "bool",
              "char",
              "char16_t",
              "char32_t",
              "char8_t",
              "double",
              "float",
              "int",
              "long",
              "short",
              "void",
              "wchar_t",
              "unsigned",
              "signed",
              "const",
              "static"
            ],
            "keyword": [
              "alignas",
              "alignof",
              "and",
              "and_eq",
              "asm",
              "atomic_cancel",
              "atomic_commit",
              "atomic_noexcept",
              "auto",
              "bitand",
              "bitor",
              "break",
              "case",
              "catch",
              "class",
              "co_await",
              "co_return",
              "co_yield",
              "compl",
              "concept",
              "const_cast|10",
              "consteval",
              "constexpr",
              "constinit",
              "continue",
              "decltype",
              "default",
              "delete",
              "do",
              "dynamic_cast|10",
              "else",
              "enum",
              "explicit",
              "export",
              "extern",
              "false",
              "final",
              "for",
              "friend",
              "goto",
              "if",
              "import",
              "inline",
              "module",
              "mutable",
              "namespace",
              "new",
              "noexcept",
              "not",
              "not_eq",
              "nullptr",
              "operator",
              "or",
              "or_eq",
              "override",
              "private",
              "protected",
              "public",
              "reflexpr",
              "register",
              "reinterpret_cast|10",
              "requires",
              "return",
              "sizeof",
              "static_assert",
              "static_cast|10",
              "struct",
              "switch",
              "synchronized",
              "template",
              "this",
              "thread_local",
              "throw",
              "transaction_safe",
              "transaction_safe_dynamic",
              "true",
              "try",
              "typedef",
              "typeid",
              "typename",
              "union",
              "using",
              "virtual",
              "volatile",
              "while",
              "xor",
              "xor_eq"
            ],
            "literal": ["NULL", "false", "nullopt", "nullptr", "true"],
            "built_in": ["_Pragma"],
            "_type_hints": [
              "any",
              "auto_ptr",
              "barrier",
              "binary_semaphore",
              "bitset",
              "complex",
              "condition_variable",
              "condition_variable_any",
              "counting_semaphore",
              "deque",
              "false_type",
              "future",
              "imaginary",
              "initializer_list",
              "istringstream",
              "jthread",
              "latch",
              "lock_guard",
              "multimap",
              "multiset",
              "mutex",
              "optional",
              "ostringstream",
              "packaged_task",
              "pair",
              "promise",
              "priority_queue",
              "queue",
              "recursive_mutex",
              "recursive_timed_mutex",
              "scoped_lock",
              "set",
              "shared_future",
              "shared_lock",
              "shared_mutex",
              "shared_timed_mutex",
              "shared_ptr",
              "stack",
              "string_view",
              "stringstream",
              "timed_mutex",
              "thread",
              "true_type",
              "tuple",
              "unique_lock",
              "unique_ptr",
              "unordered_map",
              "unordered_multimap",
              "unordered_multiset",
              "unordered_set",
              "variant",
              "vector",
              "weak_ptr",
              "wstring",
              "wstring_view"
            ]
          },
          illegal: "[^\\w\\s\\*&:<>.]",
          contains: [
            Mode(
                begin: "decltype\\(auto\\)",
                keywords: {
                  "type": [
                    "bool",
                    "char",
                    "char16_t",
                    "char32_t",
                    "char8_t",
                    "double",
                    "float",
                    "int",
                    "long",
                    "short",
                    "void",
                    "wchar_t",
                    "unsigned",
                    "signed",
                    "const",
                    "static"
                  ],
                  "keyword": [
                    "alignas",
                    "alignof",
                    "and",
                    "and_eq",
                    "asm",
                    "atomic_cancel",
                    "atomic_commit",
                    "atomic_noexcept",
                    "auto",
                    "bitand",
                    "bitor",
                    "break",
                    "case",
                    "catch",
                    "class",
                    "co_await",
                    "co_return",
                    "co_yield",
                    "compl",
                    "concept",
                    "const_cast|10",
                    "consteval",
                    "constexpr",
                    "constinit",
                    "continue",
                    "decltype",
                    "default",
                    "delete",
                    "do",
                    "dynamic_cast|10",
                    "else",
                    "enum",
                    "explicit",
                    "export",
                    "extern",
                    "false",
                    "final",
                    "for",
                    "friend",
                    "goto",
                    "if",
                    "import",
                    "inline",
                    "module",
                    "mutable",
                    "namespace",
                    "new",
                    "noexcept",
                    "not",
                    "not_eq",
                    "nullptr",
                    "operator",
                    "or",
                    "or_eq",
                    "override",
                    "private",
                    "protected",
                    "public",
                    "reflexpr",
                    "register",
                    "reinterpret_cast|10",
                    "requires",
                    "return",
                    "sizeof",
                    "static_assert",
                    "static_cast|10",
                    "struct",
                    "switch",
                    "synchronized",
                    "template",
                    "this",
                    "thread_local",
                    "throw",
                    "transaction_safe",
                    "transaction_safe_dynamic",
                    "true",
                    "try",
                    "typedef",
                    "typeid",
                    "typename",
                    "union",
                    "using",
                    "virtual",
                    "volatile",
                    "while",
                    "xor",
                    "xor_eq"
                  ],
                  "literal": ["NULL", "false", "nullopt", "nullptr", "true"],
                  "built_in": ["_Pragma"],
                  "_type_hints": [
                    "any",
                    "auto_ptr",
                    "barrier",
                    "binary_semaphore",
                    "bitset",
                    "complex",
                    "condition_variable",
                    "condition_variable_any",
                    "counting_semaphore",
                    "deque",
                    "false_type",
                    "future",
                    "imaginary",
                    "initializer_list",
                    "istringstream",
                    "jthread",
                    "latch",
                    "lock_guard",
                    "multimap",
                    "multiset",
                    "mutex",
                    "optional",
                    "ostringstream",
                    "packaged_task",
                    "pair",
                    "promise",
                    "priority_queue",
                    "queue",
                    "recursive_mutex",
                    "recursive_timed_mutex",
                    "scoped_lock",
                    "set",
                    "shared_future",
                    "shared_lock",
                    "shared_mutex",
                    "shared_timed_mutex",
                    "shared_ptr",
                    "stack",
                    "string_view",
                    "stringstream",
                    "timed_mutex",
                    "thread",
                    "true_type",
                    "tuple",
                    "unique_lock",
                    "unique_ptr",
                    "unordered_map",
                    "unordered_multimap",
                    "unordered_multiset",
                    "unordered_set",
                    "variant",
                    "vector",
                    "weak_ptr",
                    "wstring",
                    "wstring_view"
                  ]
                },
                relevance: 0),
            Mode(
                begin: "(?:[a-zA-Z_]\\w*::)?[a-zA-Z]\\w*\\s*\\(",
                returnBegin: true,
                contains: [
                  Mode(
                      className: "title",
                      begin: "(?:[a-zA-Z_]\\w*::)?[a-zA-Z]\\w*",
                      relevance: 0)
                ],
                relevance: 0),
            Mode(begin: "::", relevance: 0),
            Mode(begin: ":", endsWithParent: true, contains: [
              Mode(ref: '~contains~0~contains~6'),
              Mode(ref: '~contains~0~contains~5')
            ]),
            Mode(relevance: 0, match: ","),
            Mode(
                className: "params",
                begin: "\\(",
                end: "\\)",
                keywords: {
                  "type": [
                    "bool",
                    "char",
                    "char16_t",
                    "char32_t",
                    "char8_t",
                    "double",
                    "float",
                    "int",
                    "long",
                    "short",
                    "void",
                    "wchar_t",
                    "unsigned",
                    "signed",
                    "const",
                    "static"
                  ],
                  "keyword": [
                    "alignas",
                    "alignof",
                    "and",
                    "and_eq",
                    "asm",
                    "atomic_cancel",
                    "atomic_commit",
                    "atomic_noexcept",
                    "auto",
                    "bitand",
                    "bitor",
                    "break",
                    "case",
                    "catch",
                    "class",
                    "co_await",
                    "co_return",
                    "co_yield",
                    "compl",
                    "concept",
                    "const_cast|10",
                    "consteval",
                    "constexpr",
                    "constinit",
                    "continue",
                    "decltype",
                    "default",
                    "delete",
                    "do",
                    "dynamic_cast|10",
                    "else",
                    "enum",
                    "explicit",
                    "export",
                    "extern",
                    "false",
                    "final",
                    "for",
                    "friend",
                    "goto",
                    "if",
                    "import",
                    "inline",
                    "module",
                    "mutable",
                    "namespace",
                    "new",
                    "noexcept",
                    "not",
                    "not_eq",
                    "nullptr",
                    "operator",
                    "or",
                    "or_eq",
                    "override",
                    "private",
                    "protected",
                    "public",
                    "reflexpr",
                    "register",
                    "reinterpret_cast|10",
                    "requires",
                    "return",
                    "sizeof",
                    "static_assert",
                    "static_cast|10",
                    "struct",
                    "switch",
                    "synchronized",
                    "template",
                    "this",
                    "thread_local",
                    "throw",
                    "transaction_safe",
                    "transaction_safe_dynamic",
                    "true",
                    "try",
                    "typedef",
                    "typeid",
                    "typename",
                    "union",
                    "using",
                    "virtual",
                    "volatile",
                    "while",
                    "xor",
                    "xor_eq"
                  ],
                  "literal": ["NULL", "false", "nullopt", "nullptr", "true"],
                  "built_in": ["_Pragma"],
                  "_type_hints": [
                    "any",
                    "auto_ptr",
                    "barrier",
                    "binary_semaphore",
                    "bitset",
                    "complex",
                    "condition_variable",
                    "condition_variable_any",
                    "counting_semaphore",
                    "deque",
                    "false_type",
                    "future",
                    "imaginary",
                    "initializer_list",
                    "istringstream",
                    "jthread",
                    "latch",
                    "lock_guard",
                    "multimap",
                    "multiset",
                    "mutex",
                    "optional",
                    "ostringstream",
                    "packaged_task",
                    "pair",
                    "promise",
                    "priority_queue",
                    "queue",
                    "recursive_mutex",
                    "recursive_timed_mutex",
                    "scoped_lock",
                    "set",
                    "shared_future",
                    "shared_lock",
                    "shared_mutex",
                    "shared_timed_mutex",
                    "shared_ptr",
                    "stack",
                    "string_view",
                    "stringstream",
                    "timed_mutex",
                    "thread",
                    "true_type",
                    "tuple",
                    "unique_lock",
                    "unique_ptr",
                    "unordered_map",
                    "unordered_multimap",
                    "unordered_multiset",
                    "unordered_set",
                    "variant",
                    "vector",
                    "weak_ptr",
                    "wstring",
                    "wstring_view"
                  ]
                },
                relevance: 0,
                contains: [
                  Mode(ref: '~contains~0~contains~1~contains~3'),
                  C_BLOCK_COMMENT_MODE,
                  Mode(ref: '~contains~0~contains~6'),
                  Mode(ref: '~contains~0~contains~5'),
                  Mode(ref: '~contains~0~contains~2'),
                  Mode(
                      begin: "\\(",
                      end: "\\)",
                      keywords: {
                        "type": [
                          "bool",
                          "char",
                          "char16_t",
                          "char32_t",
                          "char8_t",
                          "double",
                          "float",
                          "int",
                          "long",
                          "short",
                          "void",
                          "wchar_t",
                          "unsigned",
                          "signed",
                          "const",
                          "static"
                        ],
                        "keyword": [
                          "alignas",
                          "alignof",
                          "and",
                          "and_eq",
                          "asm",
                          "atomic_cancel",
                          "atomic_commit",
                          "atomic_noexcept",
                          "auto",
                          "bitand",
                          "bitor",
                          "break",
                          "case",
                          "catch",
                          "class",
                          "co_await",
                          "co_return",
                          "co_yield",
                          "compl",
                          "concept",
                          "const_cast|10",
                          "consteval",
                          "constexpr",
                          "constinit",
                          "continue",
                          "decltype",
                          "default",
                          "delete",
                          "do",
                          "dynamic_cast|10",
                          "else",
                          "enum",
                          "explicit",
                          "export",
                          "extern",
                          "false",
                          "final",
                          "for",
                          "friend",
                          "goto",
                          "if",
                          "import",
                          "inline",
                          "module",
                          "mutable",
                          "namespace",
                          "new",
                          "noexcept",
                          "not",
                          "not_eq",
                          "nullptr",
                          "operator",
                          "or",
                          "or_eq",
                          "override",
                          "private",
                          "protected",
                          "public",
                          "reflexpr",
                          "register",
                          "reinterpret_cast|10",
                          "requires",
                          "return",
                          "sizeof",
                          "static_assert",
                          "static_cast|10",
                          "struct",
                          "switch",
                          "synchronized",
                          "template",
                          "this",
                          "thread_local",
                          "throw",
                          "transaction_safe",
                          "transaction_safe_dynamic",
                          "true",
                          "try",
                          "typedef",
                          "typeid",
                          "typename",
                          "union",
                          "using",
                          "virtual",
                          "volatile",
                          "while",
                          "xor",
                          "xor_eq"
                        ],
                        "literal": [
                          "NULL",
                          "false",
                          "nullopt",
                          "nullptr",
                          "true"
                        ],
                        "built_in": ["_Pragma"],
                        "_type_hints": [
                          "any",
                          "auto_ptr",
                          "barrier",
                          "binary_semaphore",
                          "bitset",
                          "complex",
                          "condition_variable",
                          "condition_variable_any",
                          "counting_semaphore",
                          "deque",
                          "false_type",
                          "future",
                          "imaginary",
                          "initializer_list",
                          "istringstream",
                          "jthread",
                          "latch",
                          "lock_guard",
                          "multimap",
                          "multiset",
                          "mutex",
                          "optional",
                          "ostringstream",
                          "packaged_task",
                          "pair",
                          "promise",
                          "priority_queue",
                          "queue",
                          "recursive_mutex",
                          "recursive_timed_mutex",
                          "scoped_lock",
                          "set",
                          "shared_future",
                          "shared_lock",
                          "shared_mutex",
                          "shared_timed_mutex",
                          "shared_ptr",
                          "stack",
                          "string_view",
                          "stringstream",
                          "timed_mutex",
                          "thread",
                          "true_type",
                          "tuple",
                          "unique_lock",
                          "unique_ptr",
                          "unordered_map",
                          "unordered_multimap",
                          "unordered_multiset",
                          "unordered_set",
                          "variant",
                          "vector",
                          "weak_ptr",
                          "wstring",
                          "wstring_view"
                        ]
                      },
                      relevance: 0,
                      contains: [
                        Mode(self: true),
                        Mode(ref: '~contains~0~contains~1~contains~3'),
                        C_BLOCK_COMMENT_MODE,
                        Mode(ref: '~contains~0~contains~6'),
                        Mode(ref: '~contains~0~contains~5'),
                        Mode(ref: '~contains~0~contains~2')
                      ])
                ]),
            Mode(ref: '~contains~0~contains~2'),
            Mode(ref: '~contains~0~contains~1~contains~3'),
            C_BLOCK_COMMENT_MODE,
            Mode(ref: '~contains~0~contains~1')
          ]),
      Mode(ref: '~contains~0~contains~0'),
      Mode(ref: '~contains~0~contains~0'),
      Mode(ref: '~contains~0~contains~1'),
      Mode(ref: '~contains~0~contains~2'),
      Mode(ref: '~contains~0~contains~1~contains~3'),
      C_BLOCK_COMMENT_MODE,
      Mode(ref: '~contains~0~contains~5'),
      Mode(ref: '~contains~0~contains~6'),
      Mode(ref: '~contains~0~contains~1'),
      Mode(
          begin:
              "\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\s*<(?!<)",
          end: ">",
          keywords: {
            "type": [
              "bool",
              "char",
              "char16_t",
              "char32_t",
              "char8_t",
              "double",
              "float",
              "int",
              "long",
              "short",
              "void",
              "wchar_t",
              "unsigned",
              "signed",
              "const",
              "static"
            ],
            "keyword": [
              "alignas",
              "alignof",
              "and",
              "and_eq",
              "asm",
              "atomic_cancel",
              "atomic_commit",
              "atomic_noexcept",
              "auto",
              "bitand",
              "bitor",
              "break",
              "case",
              "catch",
              "class",
              "co_await",
              "co_return",
              "co_yield",
              "compl",
              "concept",
              "const_cast|10",
              "consteval",
              "constexpr",
              "constinit",
              "continue",
              "decltype",
              "default",
              "delete",
              "do",
              "dynamic_cast|10",
              "else",
              "enum",
              "explicit",
              "export",
              "extern",
              "false",
              "final",
              "for",
              "friend",
              "goto",
              "if",
              "import",
              "inline",
              "module",
              "mutable",
              "namespace",
              "new",
              "noexcept",
              "not",
              "not_eq",
              "nullptr",
              "operator",
              "or",
              "or_eq",
              "override",
              "private",
              "protected",
              "public",
              "reflexpr",
              "register",
              "reinterpret_cast|10",
              "requires",
              "return",
              "sizeof",
              "static_assert",
              "static_cast|10",
              "struct",
              "switch",
              "synchronized",
              "template",
              "this",
              "thread_local",
              "throw",
              "transaction_safe",
              "transaction_safe_dynamic",
              "true",
              "try",
              "typedef",
              "typeid",
              "typename",
              "union",
              "using",
              "virtual",
              "volatile",
              "while",
              "xor",
              "xor_eq"
            ],
            "literal": ["NULL", "false", "nullopt", "nullptr", "true"],
            "built_in": ["_Pragma"],
            "_type_hints": [
              "any",
              "auto_ptr",
              "barrier",
              "binary_semaphore",
              "bitset",
              "complex",
              "condition_variable",
              "condition_variable_any",
              "counting_semaphore",
              "deque",
              "false_type",
              "future",
              "imaginary",
              "initializer_list",
              "istringstream",
              "jthread",
              "latch",
              "lock_guard",
              "multimap",
              "multiset",
              "mutex",
              "optional",
              "ostringstream",
              "packaged_task",
              "pair",
              "promise",
              "priority_queue",
              "queue",
              "recursive_mutex",
              "recursive_timed_mutex",
              "scoped_lock",
              "set",
              "shared_future",
              "shared_lock",
              "shared_mutex",
              "shared_timed_mutex",
              "shared_ptr",
              "stack",
              "string_view",
              "stringstream",
              "timed_mutex",
              "thread",
              "true_type",
              "tuple",
              "unique_lock",
              "unique_ptr",
              "unordered_map",
              "unordered_multimap",
              "unordered_multiset",
              "unordered_set",
              "variant",
              "vector",
              "weak_ptr",
              "wstring",
              "wstring_view"
            ]
          },
          contains: [
            Mode(self: true),
            Mode(ref: '~contains~0~contains~2')
          ]),
      Mode(begin: "[a-zA-Z]\\w*::", keywords: {
        "type": [
          "bool",
          "char",
          "char16_t",
          "char32_t",
          "char8_t",
          "double",
          "float",
          "int",
          "long",
          "short",
          "void",
          "wchar_t",
          "unsigned",
          "signed",
          "const",
          "static"
        ],
        "keyword": [
          "alignas",
          "alignof",
          "and",
          "and_eq",
          "asm",
          "atomic_cancel",
          "atomic_commit",
          "atomic_noexcept",
          "auto",
          "bitand",
          "bitor",
          "break",
          "case",
          "catch",
          "class",
          "co_await",
          "co_return",
          "co_yield",
          "compl",
          "concept",
          "const_cast|10",
          "consteval",
          "constexpr",
          "constinit",
          "continue",
          "decltype",
          "default",
          "delete",
          "do",
          "dynamic_cast|10",
          "else",
          "enum",
          "explicit",
          "export",
          "extern",
          "false",
          "final",
          "for",
          "friend",
          "goto",
          "if",
          "import",
          "inline",
          "module",
          "mutable",
          "namespace",
          "new",
          "noexcept",
          "not",
          "not_eq",
          "nullptr",
          "operator",
          "or",
          "or_eq",
          "override",
          "private",
          "protected",
          "public",
          "reflexpr",
          "register",
          "reinterpret_cast|10",
          "requires",
          "return",
          "sizeof",
          "static_assert",
          "static_cast|10",
          "struct",
          "switch",
          "synchronized",
          "template",
          "this",
          "thread_local",
          "throw",
          "transaction_safe",
          "transaction_safe_dynamic",
          "true",
          "try",
          "typedef",
          "typeid",
          "typename",
          "union",
          "using",
          "virtual",
          "volatile",
          "while",
          "xor",
          "xor_eq"
        ],
        "literal": ["NULL", "false", "nullopt", "nullptr", "true"],
        "built_in": ["_Pragma"],
        "_type_hints": [
          "any",
          "auto_ptr",
          "barrier",
          "binary_semaphore",
          "bitset",
          "complex",
          "condition_variable",
          "condition_variable_any",
          "counting_semaphore",
          "deque",
          "false_type",
          "future",
          "imaginary",
          "initializer_list",
          "istringstream",
          "jthread",
          "latch",
          "lock_guard",
          "multimap",
          "multiset",
          "mutex",
          "optional",
          "ostringstream",
          "packaged_task",
          "pair",
          "promise",
          "priority_queue",
          "queue",
          "recursive_mutex",
          "recursive_timed_mutex",
          "scoped_lock",
          "set",
          "shared_future",
          "shared_lock",
          "shared_mutex",
          "shared_timed_mutex",
          "shared_ptr",
          "stack",
          "string_view",
          "stringstream",
          "timed_mutex",
          "thread",
          "true_type",
          "tuple",
          "unique_lock",
          "unique_ptr",
          "unordered_map",
          "unordered_multimap",
          "unordered_multiset",
          "unordered_set",
          "variant",
          "vector",
          "weak_ptr",
          "wstring",
          "wstring_view"
        ]
      }),
      Mode(match: [
        "\\b(?:enum(?:\\s+(?:class|struct))?|class|struct|union)",
        "\\s+",
        "\\w+"
      ], className: {
        "1": "keyword",
        "3": "title.class"
      })
    ]);