UNPKG

tm-grammars

Version:
1,454 lines 120 kB
{ "displayName": "C", "name": "c", "patterns": [ { "include": "#preprocessor-rule-enabled" }, { "include": "#preprocessor-rule-disabled" }, { "include": "#preprocessor-rule-conditional" }, { "include": "#predefined_macros" }, { "include": "#comments" }, { "include": "#switch_statement" }, { "include": "#anon_pattern_1" }, { "include": "#storage_types" }, { "include": "#anon_pattern_2" }, { "include": "#anon_pattern_3" }, { "include": "#anon_pattern_4" }, { "include": "#anon_pattern_5" }, { "include": "#anon_pattern_6" }, { "include": "#anon_pattern_7" }, { "include": "#operators" }, { "include": "#numbers" }, { "include": "#strings" }, { "include": "#anon_pattern_range_1" }, { "include": "#anon_pattern_range_2" }, { "include": "#anon_pattern_range_3" }, { "include": "#pragma-mark" }, { "include": "#anon_pattern_range_4" }, { "include": "#anon_pattern_range_5" }, { "include": "#anon_pattern_range_6" }, { "include": "#anon_pattern_8" }, { "include": "#anon_pattern_9" }, { "include": "#anon_pattern_10" }, { "include": "#anon_pattern_11" }, { "include": "#anon_pattern_12" }, { "include": "#anon_pattern_13" }, { "include": "#block" }, { "include": "#parens" }, { "include": "#anon_pattern_range_7" }, { "include": "#line_continuation_character" }, { "include": "#anon_pattern_range_8" }, { "include": "#anon_pattern_range_9" }, { "include": "#anon_pattern_14" }, { "include": "#anon_pattern_15" } ], "repository": { "access-method": { "begin": "([A-Z_a-z][0-9A-Z_a-z]*|(?<=[])]))\\s*(?:(\\.)|(->))((?:[A-Z_a-z][0-9A-Z_a-z]*\\s*(?:\\.|->))*)\\s*([A-Z_a-z][0-9A-Z_a-z]*)(\\()", "beginCaptures": { "1": { "name": "variable.object.c" }, "2": { "name": "punctuation.separator.dot-access.c" }, "3": { "name": "punctuation.separator.pointer-access.c" }, "4": { "patterns": [ { "match": "\\.", "name": "punctuation.separator.dot-access.c" }, { "match": "->", "name": "punctuation.separator.pointer-access.c" }, { "match": "[A-Z_a-z][0-9A-Z_a-z]*", "name": "variable.object.c" }, { "match": ".+", "name": "everything.else.c" } ] }, "5": { "name": "entity.name.function.member.c" }, "6": { "name": "punctuation.section.arguments.begin.bracket.round.function.member.c" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.arguments.end.bracket.round.function.member.c" } }, "name": "meta.function-call.member.c", "patterns": [ { "include": "#function-call-innards" } ] }, "anon_pattern_1": { "match": "\\b(break|continue|do|else|for|goto|if|_Pragma|return|while)\\b", "name": "keyword.control.c" }, "anon_pattern_10": { "match": "\\b((?:int8|int16|int32|int64|uint8|uint16|uint32|uint64|int_least8|int_least16|int_least32|int_least64|uint_least8|uint_least16|uint_least32|uint_least64|int_fast8|int_fast16|int_fast32|int_fast64|uint_fast8|uint_fast16|uint_fast32|uint_fast64|intptr|uintptr|intmax|intmax|uintmax|uintmax)_t)\\b", "name": "support.type.stdint.c" }, "anon_pattern_11": { "match": "\\b(noErr|kNilOptions|kInvalidID|kVariableLengthArray)\\b", "name": "support.constant.mac-classic.c" }, "anon_pattern_12": { "match": "\\b(AbsoluteTime|Boolean|Byte|ByteCount|ByteOffset|BytePtr|CompTimeValue|ConstLogicalAddress|ConstStrFileNameParam|ConstStringPtr|Duration|Fixed|FixedPtr|Float32|Float32Point|Float64|Float80|Float96|FourCharCode|Fract|FractPtr|Handle|ItemCount|LogicalAddress|OptionBits|OSErr|OSStatus|OSType|OSTypePtr|PhysicalAddress|ProcessSerialNumber|ProcessSerialNumberPtr|ProcHandle|Ptr|ResType|ResTypePtr|ShortFixed|ShortFixedPtr|SignedByte|SInt16|SInt32|SInt64|SInt8|Size|StrFileName|StringHandle|StringPtr|TimeBase|TimeRecord|TimeScale|TimeValue|TimeValue64|UInt16|UInt32|UInt64|UInt8|UniChar|UniCharCount|UniCharCountPtr|UniCharPtr|UnicodeScalarValue|UniversalProcHandle|UniversalProcPtr|UnsignedFixed|UnsignedFixedPtr|UnsignedWide|UTF16Char|UTF32Char|UTF8Char)\\b", "name": "support.type.mac-classic.c" }, "anon_pattern_13": { "match": "\\b([0-9A-Z_a-z]+_t)\\b", "name": "support.type.posix-reserved.c" }, "anon_pattern_14": { "match": ";", "name": "punctuation.terminator.statement.c" }, "anon_pattern_15": { "match": ",", "name": "punctuation.separator.delimiter.c" }, "anon_pattern_2": { "match": "typedef", "name": "keyword.other.typedef.c" }, "anon_pattern_3": { "match": "\\b(const|extern|register|restrict|static|volatile|inline)\\b", "name": "storage.modifier.c" }, "anon_pattern_4": { "match": "\\bk[A-Z]\\w*\\b", "name": "constant.other.variable.mac-classic.c" }, "anon_pattern_5": { "match": "\\bg[A-Z]\\w*\\b", "name": "variable.other.readwrite.global.mac-classic.c" }, "anon_pattern_6": { "match": "\\bs[A-Z]\\w*\\b", "name": "variable.other.readwrite.static.mac-classic.c" }, "anon_pattern_7": { "match": "\\b(NULL|true|false|TRUE|FALSE)\\b", "name": "constant.language.c" }, "anon_pattern_8": { "match": "\\b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\\b", "name": "support.type.sys-types.c" }, "anon_pattern_9": { "match": "\\b(pthread_(?:attr_|cond_|condattr_|mutex_|mutexattr_|once_|rwlock_|rwlockattr_||key_)t)\\b", "name": "support.type.pthread.c" }, "anon_pattern_range_1": { "begin": "((?:(?>\\s+)|(/\\*)((?>(?:[^*]|(?>\\*+)[^/])*)((?>\\*+)/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))((#)\\s*define)\\b\\s+((?<!\\w)[A-Z_a-z]\\w*(?!\\w))(?:(\\()([^()\\\\]+)(\\)))?", "beginCaptures": { "1": { "patterns": [ { "include": "#inline_comment" } ] }, "10": { "name": "punctuation.definition.parameters.end.c" }, "2": { "name": "comment.block.c punctuation.definition.comment.begin.c" }, "3": { "name": "comment.block.c" }, "4": { "patterns": [ { "match": "\\*/", "name": "comment.block.c punctuation.definition.comment.end.c" }, { "match": "\\*", "name": "comment.block.c" } ] }, "5": { "name": "keyword.control.directive.define.c" }, "6": { "name": "punctuation.definition.directive.c" }, "7": { "name": "entity.name.function.preprocessor.c" }, "8": { "name": "punctuation.definition.parameters.begin.c" }, "9": { "patterns": [ { "captures": { "1": { "name": "variable.parameter.preprocessor.c" } }, "match": "(?<=[(,])\\s*((?<!\\w)[A-Z_a-z]\\w*(?!\\w))\\s*" }, { "match": ",", "name": "punctuation.separator.parameters.c" }, { "match": "\\.\\.\\.", "name": "ellipses.c punctuation.vararg-ellipses.variable.parameter.preprocessor.c" } ] } }, "end": "(?<!\\\\)(?=\\n)", "name": "meta.preprocessor.macro.c", "patterns": [ { "include": "#preprocessor-rule-define-line-contents" } ] }, "anon_pattern_range_2": { "begin": "^\\s*((#)\\s*(error|warning))\\b\\s*", "beginCaptures": { "1": { "name": "keyword.control.directive.diagnostic.$3.c" }, "2": { "name": "punctuation.definition.directive.c" } }, "end": "(?<!\\\\)(?=\\n)", "name": "meta.preprocessor.diagnostic.c", "patterns": [ { "begin": "\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.c" } }, "end": "\"|(?<!\\\\)(?=\\s*\\n)", "endCaptures": { "0": { "name": "punctuation.definition.string.end.c" } }, "name": "string.quoted.double.c", "patterns": [ { "include": "#line_continuation_character" } ] }, { "begin": "'", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.c" } }, "end": "'|(?<!\\\\)(?=\\s*\\n)", "endCaptures": { "0": { "name": "punctuation.definition.string.end.c" } }, "name": "string.quoted.single.c", "patterns": [ { "include": "#line_continuation_character" } ] }, { "begin": "[^\"']", "end": "(?<!\\\\)(?=\\s*\\n)", "name": "string.unquoted.single.c", "patterns": [ { "include": "#line_continuation_character" }, { "include": "#comments" } ] } ] }, "anon_pattern_range_3": { "begin": "^\\s*((#)\\s*(i(?:nclude(?:_next)?|mport)))\\b\\s*", "beginCaptures": { "1": { "name": "keyword.control.directive.$3.c" }, "2": { "name": "punctuation.definition.directive.c" } }, "end": "(?=/[*/])|(?<!\\\\)(?=\\n)", "name": "meta.preprocessor.include.c", "patterns": [ { "include": "#line_continuation_character" }, { "begin": "\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.c" } }, "end": "\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.c" } }, "name": "string.quoted.double.include.c" }, { "begin": "<", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.c" } }, "end": ">", "endCaptures": { "0": { "name": "punctuation.definition.string.end.c" } }, "name": "string.quoted.other.lt-gt.include.c" } ] }, "anon_pattern_range_4": { "begin": "^\\s*((#)\\s*line)\\b", "beginCaptures": { "1": { "name": "keyword.control.directive.line.c" }, "2": { "name": "punctuation.definition.directive.c" } }, "end": "(?=/[*/])|(?<!\\\\)(?=\\n)", "name": "meta.preprocessor.c", "patterns": [ { "include": "#strings" }, { "include": "#numbers" }, { "include": "#line_continuation_character" } ] }, "anon_pattern_range_5": { "begin": "^\\s*((#)\\s*undef)\\b", "beginCaptures": { "1": { "name": "keyword.control.directive.undef.c" }, "2": { "name": "punctuation.definition.directive.c" } }, "end": "(?=/[*/])|(?<!\\\\)(?=\\n)", "name": "meta.preprocessor.c", "patterns": [ { "match": "[$A-Z_a-z][$\\w]*", "name": "entity.name.function.preprocessor.c" }, { "include": "#line_continuation_character" } ] }, "anon_pattern_range_6": { "begin": "^\\s*((#)\\s*pragma)\\b", "beginCaptures": { "1": { "name": "keyword.control.directive.pragma.c" }, "2": { "name": "punctuation.definition.directive.c" } }, "end": "(?=/[*/])|(?<!\\\\)(?=\\n)", "name": "meta.preprocessor.pragma.c", "patterns": [ { "include": "#strings" }, { "match": "[$A-Z_a-z][-$\\w]*", "name": "entity.other.attribute-name.pragma.preprocessor.c" }, { "include": "#numbers" }, { "include": "#line_continuation_character" } ] }, "anon_pattern_range_7": { "begin": "(?<!\\w)(?!\\s*(?:atomic_uint_least64_t|atomic_uint_least16_t|atomic_uint_least32_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_fast64_t|atomic_uint_fast32_t|atomic_int_least64_t|atomic_int_least32_t|pthread_rwlockattr_t|atomic_uint_fast16_t|pthread_mutexattr_t|atomic_int_fast16_t|atomic_uint_fast8_t|atomic_int_fast64_t|atomic_int_least8_t|atomic_int_fast32_t|atomic_int_fast8_t|pthread_condattr_t|pthread_rwlock_t|atomic_uintptr_t|atomic_ptrdiff_t|atomic_uintmax_t|atomic_intmax_t|atomic_char32_t|atomic_intptr_t|atomic_char16_t|pthread_mutex_t|pthread_cond_t|atomic_wchar_t|uint_least64_t|uint_least32_t|uint_least16_t|pthread_once_t|pthread_attr_t|uint_least8_t|int_least32_t|int_least16_t|pthread_key_t|uint_fast32_t|uint_fast64_t|uint_fast16_t|atomic_size_t|atomic_ushort|atomic_ullong|int_least64_t|atomic_ulong|int_least8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|memory_order|atomic_schar|atomic_uchar|atomic_short|atomic_llong|thread_local|atomic_bool|atomic_uint|atomic_long|int_fast8_t|suseconds_t|atomic_char|atomic_int|useconds_t|_Imaginary|uintmax_t|uintmax_t|in_addr_t|in_port_t|_Noreturn|blksize_t|pthread_t|uintptr_t|volatile|u_quad_t|blkcnt_t|intmax_t|intptr_t|_Complex|uint16_t|uint32_t|uint64_t|_Alignof|_Alignas|continue|unsigned|restrict|intmax_t|register|int64_t|qaddr_t|segsz_t|_Atomic|alignas|default|caddr_t|nlink_t|typedef|u_short|fixpt_t|clock_t|swblk_t|ssize_t|alignof|daddr_t|int16_t|int32_t|uint8_t|struct|mode_t|size_t|time_t|ushort|u_long|u_char|int8_t|double|signed|static|extern|inline|return|switch|xor_eq|and_eq|bitand|not_eq|sizeof|quad_t|uid_t|bitor|union|off_t|key_t|ino_t|compl|u_int|short|const|false|while|float|pid_t|break|_Bool|or_eq|div_t|dev_t|gid_t|id_t|long|case|goto|else|bool|auto|id_t|enum|uint|true|NULL|void|char|for|not|int|and|xor|do|or|if)\\s*\\()(?=[A-Z_a-z]\\w*\\s*\\()", "end": "(?!\\G)(?<=\\))", "name": "meta.function.c", "patterns": [ { "include": "#function-innards" } ] }, "anon_pattern_range_8": { "begin": "([A-Z_a-z][0-9A-Z_a-z]*|(?<=[])]))?(\\[)(?!])", "beginCaptures": { "1": { "name": "variable.object.c" }, "2": { "name": "punctuation.definition.begin.bracket.square.c" } }, "end": "]", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.square.c" } }, "name": "meta.bracket.square.access.c", "patterns": [ { "include": "#function-call-innards" } ] }, "anon_pattern_range_9": { "match": "\\[\\s*]", "name": "storage.modifier.array.bracket.square.c" }, "backslash_escapes": { "match": "\\\\([\"'?\\\\abefnprtv]|[0-3][0-7]{0,2}|[4-7]\\d?|x\\h{0,2}|u\\h{0,4}|U\\h{0,8})", "name": "constant.character.escape.c" }, "block": { "patterns": [ { "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.section.block.begin.bracket.curly.c" } }, "end": "}|(?=\\s*#\\s*e(?:lif|lse|ndif)\\b)", "endCaptures": { "0": { "name": "punctuation.section.block.end.bracket.curly.c" } }, "name": "meta.block.c", "patterns": [ { "include": "#block_innards" } ] } ] }, "block_comment": { "patterns": [ { "begin": "\\s*+(/\\*)", "beginCaptures": { "1": { "name": "punctuation.definition.comment.begin.c" } }, "end": "\\*/", "endCaptures": { "0": { "name": "punctuation.definition.comment.end.c" } }, "name": "comment.block.c" }, { "begin": "\\s*+(/\\*)", "beginCaptures": { "1": { "name": "punctuation.definition.comment.begin.c" } }, "end": "\\*/", "endCaptures": { "0": { "name": "punctuation.definition.comment.end.c" } }, "name": "comment.block.c" } ] }, "block_innards": { "patterns": [ { "include": "#preprocessor-rule-enabled-block" }, { "include": "#preprocessor-rule-disabled-block" }, { "include": "#preprocessor-rule-conditional-block" }, { "include": "#method_access" }, { "include": "#member_access" }, { "include": "#c_function_call" }, { "begin": "(?=\\s)(?<!else|new|return)(?<=\\w)\\s+(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)((?:[A-Z_a-z][0-9A-Z_a-z]*+|::)++|(?<=operator)(?:[-!\\&*+<=>]+|\\(\\)|\\[]))\\s*(\\()", "beginCaptures": { "1": { "name": "variable.other.c" }, "2": { "name": "punctuation.section.parens.begin.bracket.round.initialization.c" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.parens.end.bracket.round.initialization.c" } }, "name": "meta.initialization.c", "patterns": [ { "include": "#function-call-innards" } ] }, { "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.section.block.begin.bracket.curly.c" } }, "end": "}|(?=\\s*#\\s*e(?:lif|lse|ndif)\\b)", "endCaptures": { "0": { "name": "punctuation.section.block.end.bracket.curly.c" } }, "patterns": [ { "include": "#block_innards" } ] }, { "include": "#parens-block" }, { "include": "$self" } ] }, "c_conditional_context": { "patterns": [ { "include": "$self" }, { "include": "#block_innards" } ] }, "c_function_call": { "begin": "(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()(?=(?:[A-Z_a-z][0-9A-Z_a-z]*+|::)++\\s*\\(|(?<=operator)(?:[-!\\&*+<=>]+|\\(\\)|\\[])\\s*\\()", "end": "(?<=\\))(?!\\w)", "name": "meta.function-call.c", "patterns": [ { "include": "#function-call-innards" } ] }, "case_statement": { "begin": "((?>(?:(?>(?<!\\s)\\s+)|(/\\*)((?>(?:[^*]|(?>\\*+)[^/])*)((?>\\*+)/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?<!\\w)case(?!\\w))", "beginCaptures": { "1": { "patterns": [ { "include": "#inline_comment" } ] }, "2": { "name": "comment.block.c punctuation.definition.comment.begin.c" }, "3": { "name": "comment.block.c" }, "4": { "patterns": [ { "match": "\\*/", "name": "comment.block.c punctuation.definition.comment.end.c" }, { "match": "\\*", "name": "comment.block.c" } ] }, "5": { "name": "keyword.control.case.c" } }, "end": "(:)", "endCaptures": { "1": { "name": "punctuation.separator.colon.case.c" } }, "name": "meta.conditional.case.c", "patterns": [ { "include": "#evaluation_context" }, { "include": "#c_conditional_context" } ] }, "comments": { "patterns": [ { "patterns": [ { "patterns": [ { "begin": "^(?>\\s*)(//[!/]+)", "beginCaptures": { "1": { "name": "punctuation.definition.comment.documentation.c" } }, "end": "(?<=\\n)(?<!\\\\\\n)", "name": "comment.line.double-slash.documentation.c", "patterns": [ { "include": "#line_continuation_character" }, { "match": "(?<=[!*/\\s])[@\\\\](?:callergraph|callgraph|else|endif|f\\$|f\\[|f]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|[\"-%.<=>]|::|\\||--|---)\\b(?:\\{[^}]*})?", "name": "storage.type.class.doxygen.c" }, { "captures": { "1": { "name": "storage.type.class.doxygen.c" }, "2": { "name": "markup.italic.doxygen.c" } }, "match": "((?<=[!*/\\s])[@\\\\](?:a|em|e))\\s+(\\S+)" }, { "captures": { "1": { "name": "storage.type.class.doxygen.c" }, "2": { "name": "markup.bold.doxygen.c" } }, "match": "((?<=[!*/\\s])[@\\\\]b)\\s+(\\S+)" }, { "captures": { "1": { "name": "storage.type.class.doxygen.c" }, "2": { "name": "markup.inline.raw.string.c" } }, "match": "((?<=[!*/\\s])[@\\\\][cp])\\s+(\\S+)" }, { "match": "(?<=[!*/\\s])[@\\\\](?:a|anchor|[bc]|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.c" }, { "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.c" }, { "captures": { "1": { "name": "storage.type.class.doxygen.c" }, "2": { "patterns": [ { "match": "in|out", "name": "keyword.other.parameter.direction.$0.c" } ] }, "3": { "name": "variable.parameter.c" } }, "match": "((?<=[!*/\\s])[@\\\\]param)(?:\\s*\\[((?:,?\\s*(?:in|out)\\s*)+)])?\\s+\\b(\\w+)\\b" }, { "match": "(?<=[!*/\\s])[@\\\\](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*})?", "name": "storage.type.class.doxygen.c" }, { "match": "(?<=[!*/\\s])[@\\\\](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*})?", "name": "storage.type.class.doxygen.c" }, { "match": "\\b[A-Z]+:|@[_a-z]+:", "name": "storage.type.class.gtkdoc" } ] }, { "captures": { "1": { "name": "punctuation.definition.comment.begin.documentation.c" }, "2": { "patterns": [ { "match": "(?<=[!*/\\s])[@\\\\](?:callergraph|callgraph|else|endif|f\\$|f\\[|f]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|[\"-%.<=>]|::|\\||--|---)\\b(?:\\{[^}]*})?", "name": "storage.type.class.doxygen.c" }, { "captures": { "1": { "name": "storage.type.class.doxygen.c" }, "2": { "name": "markup.italic.doxygen.c" } }, "match": "((?<=[!*/\\s])[@\\\\](?:a|em|e))\\s+(\\S+)" }, { "captures": { "1": { "name": "storage.type.class.doxygen.c" }, "2": { "name": "markup.bold.doxygen.c" } }, "match": "((?<=[!*/\\s])[@\\\\]b)\\s+(\\S+)" }, { "captures": { "1": { "name": "storage.type.class.doxygen.c" }, "2": { "name": "markup.inline.raw.string.c" } }, "match": "((?<=[!*/\\s])[@\\\\][cp])\\s+(\\S+)" }, { "match": "(?<=[!*/\\s])[@\\\\](?:a|anchor|[bc]|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.c" }, { "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.c" }, { "captures": { "1": { "name": "storage.type.class.doxygen.c" }, "2": { "patterns": [ { "match": "in|out", "name": "keyword.other.parameter.direction.$0.c" } ] }, "3": { "name": "variable.parameter.c" } }, "match": "((?<=[!*/\\s])[@\\\\]param)(?:\\s*\\[((?:,?\\s*(?:in|out)\\s*)+)])?\\s+\\b(\\w+)\\b" }, { "match": "(?<=[!*/\\s])[@\\\\](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*})?", "name": "storage.type.class.doxygen.c" }, { "match": "(?<=[!*/\\s])[@\\\\](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*})?", "name": "storage.type.class.doxygen.c" }, { "match": "\\b[A-Z]+:|@[_a-z]+:", "name": "storage.type.class.gtkdoc" } ] }, "3": { "name": "punctuation.definition.comment.end.documentation.c" } }, "match": "(/\\*[!*]+(?=\\s))(.+)([!*]*\\*/)", "name": "comment.block.documentation.c" }, { "begin": "((?>\\s*)/\\*[!*]+(?:(?:\\n|$)|(?=\\s)))", "beginCaptures": { "1": { "name": "punctuation.definition.comment.begin.documentation.c" } }, "end": "([!*]*\\*/)", "endCaptures": { "1": { "name": "punctuation.definition.comment.end.documentation.c" } }, "name": "comment.block.documentation.c", "patterns": [ { "match": "(?<=[!*/\\s])[@\\\\](?:callergraph|callgraph|else|endif|f\\$|f\\[|f]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|[\"-%.<=>]|::|\\||--|---)\\b(?:\\{[^}]*})?", "name": "storage.type.class.doxygen.c" }, { "captures": { "1": { "name": "storage.type.class.doxygen.c" }, "2": { "name": "markup.italic.doxygen.c" } }, "match": "((?<=[!*/\\s])[@\\\\](?:a|em|e))\\s+(\\S+)" }, { "captures": { "1": { "name": "storage.type.class.doxygen.c" }, "2": { "name": "markup.bold.doxygen.c" } }, "match": "((?<=[!*/\\s])[@\\\\]b)\\s+(\\S+)" }, { "captures": { "1": { "name": "storage.type.class.doxygen.c" }, "2": { "name": "markup.inline.raw.string.c" } }, "match": "((?<=[!*/\\s])[@\\\\][cp])\\s+(\\S+)" }, { "match": "(?<=[!*/\\s])[@\\\\](?:a|anchor|[bc]|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.c" }, { "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.c" }, { "captures": { "1": { "name": "storage.type.class.doxygen.c" }, "2": { "patterns": [ { "match": "in|out", "name": "keyword.other.parameter.direction.$0.c" } ] }, "3": { "name": "variable.parameter.c" } }, "match": "((?<=[!*/\\s])[@\\\\]param)(?:\\s*\\[((?:,?\\s*(?:in|out)\\s*)+)])?\\s+\\b(\\w+)\\b" }, { "match": "(?<=[!*/\\s])[@\\\\](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*})?", "name": "storage.type.class.doxygen.c" }, { "match": "(?<=[!*/\\s])[@\\\\](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*})?", "name": "storage.type.class.doxygen.c" }, { "match": "\\b[A-Z]+:|@[_a-z]+:", "name": "storage.type.class.gtkdoc" } ] }, { "captures": { "1": { "name": "meta.toc-list.banner.block.c" } }, "match": "^/\\* =(\\s*.*?)\\s*= \\*/$\\n?", "name": "comment.block.banner.c" }, { "begin": "(/\\*)", "beginCaptures": { "1": { "name": "punctuation.definition.comment.begin.c" } }, "end": "(\\*/)", "endCaptures": { "1": { "name": "punctuation.definition.comment.end.c" } }, "name": "comment.block.c" }, { "captures": { "1": { "name": "meta.toc-list.banner.line.c" } }, "match": "^// =(\\s*.*?)\\s*=$\\n?", "name": "comment.line.banner.c" }, { "begin": "((?:^[\\t ]+)?)(?=//)", "beginCaptures": { "1": { "name": "punctuation.whitespace.comment.leading.c" } }, "end": "(?!\\G)", "patterns": [ { "begin": "(//)", "beginCaptures": { "1": { "name": "punctuation.definition.comment.c" } }, "end": "(?=\\n)", "name": "comment.line.double-slash.c", "patterns": [ { "include": "#line_continuation_character" } ] } ] } ] }, { "include": "#block_comment" }, { "include": "#line_comment" } ] }, { "include": "#block_comment" }, { "include": "#line_comment" } ] }, "default_statement": { "begin": "((?>(?:(?>(?<!\\s)\\s+)|(/\\*)((?>(?:[^*]|(?>\\*+)[^/])*)((?>\\*+)/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?<!\\w)default(?!\\w))", "beginCaptures": { "1": { "patterns": [ { "include": "#inline_comment" } ] }, "2": { "name": "comment.block.c punctuation.definition.comment.begin.c" }, "3": { "name": "comment.block.c" }, "4": { "patterns": [ { "match": "\\*/", "name": "comment.block.c punctuation.definition.comment.end.c" }, { "match": "\\*", "name": "comment.block.c" } ] }, "5": { "name": "keyword.control.default.c" } }, "end": "(:)", "endCaptures": { "1": { "name": "punctuation.separator.colon.case.default.c" } }, "name": "meta.conditional.case.c", "patterns": [ { "include": "#evaluation_context" }, { "include": "#c_conditional_context" } ] }, "disabled": { "begin": "^\\s*#\\s*if(n?def)?\\b.*$", "end": "^\\s*#\\s*endif\\b", "patterns": [ { "include": "#disabled" }, { "include": "#pragma-mark" } ] }, "evaluation_context": { "patterns": [ { "include": "#function-call-innards" }, { "include": "$self" } ] }, "function-call-innards": { "patterns": [ { "include": "#comments" }, { "include": "#storage_types" }, { "include": "#method_access" }, { "include": "#member_access" }, { "include": "#operators" }, { "begin": "(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()((?:[A-Z_a-z][0-9A-Z_a-z]*+|::)++|(?<=operator)(?:[-!\\&*+<=>]+|\\(\\)|\\[]))\\s*(\\()", "beginCaptures": { "1": { "name": "entity.name.function.c" }, "2": { "name": "punctuation.section.arguments.begin.bracket.round.c" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.arguments.end.bracket.round.c" } }, "patterns": [ { "include": "#function-call-innards" } ] }, { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.section.parens.begin.bracket.round.c" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.parens.end.bracket.round.c" } }, "patterns": [ { "include": "#function-call-innards" } ] }, { "include": "#block_innards" } ] }, "function-innards": { "patterns": [ { "include": "#comments" }, { "include": "#storage_types" }, { "include": "#operators" }, { "include": "#vararg_ellipses" }, { "begin": "(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()((?:[A-Z_a-z][0-9A-Z_a-z]*+|::)++|(?<=operator)(?:[-!\\&*+<=>]+|\\(\\)|\\[]))\\s*(\\()", "beginCaptures": { "1": { "name": "entity.name.function.c" }, "2": { "name": "punctuation.section.parameters.begin.bracket.round.c" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.parameters.end.bracket.round.c" } }, "name": "meta.function.definition.parameters.c", "patterns": [ { "include": "#probably_a_parameter" }, { "include": "#function-innards" } ] }, { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.section.parens.begin.bracket.round.c" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.parens.end.bracket.round.c" } }, "patterns": [ { "include": "#function-innards" } ] }, { "include": "$self" } ] }, "inline_comment": { "patterns": [ { "patterns": [ { "captures": { "1": { "name": "comment.block.c punctuation.definition.comment.begin.c" }, "2": { "name": "comment.block.c" }, "3": { "patterns": [ { "match": "\\*/", "name": "comment.block.c punctuation.definition.comment.end.c" }, { "match": "\\*", "name": "comment.block.c" } ] } }, "match": "(/\\*)((?>(?:[^*]|(?>\\*+)[^/])*)((?>\\*+)/))" }, { "captures": { "1": { "name": "comment.block.c punctuation.definition.comment.begin.c" }, "2": { "name": "comment.block.c" }, "3": { "patterns": [ { "match": "\\*/", "name": "comment.block.c punctuation.definition.comment.end.c" }, { "match": "\\*", "name": "comment.block.c" } ] } }, "match": "(/\\*)((?:[^*]|\\*++[^/])*+(\\*++/))" } ] }, { "captures": { "1": { "name": "comment.block.c punctuation.definition.comment.begin.c" }, "2": { "name": "comment.block.c" }, "3": { "patterns": [ { "match": "\\*/", "name": "comment.block.c punctuation.definition.comment.end.c" }, { "match": "\\*", "name": "comment.block.c" } ] } }, "match": "(/\\*)((?:[^*]|\\*++[^/])*+(\\*++/))" } ] }, "line_comment": { "patterns": [ { "begin": "\\s*+(//)", "beginCaptures": { "1": { "name": "punctuation.definition.comment.c" } }, "end": "(?<=\\n)(?<!\\\\\\n)", "endCaptures": { }, "name": "comment.line.double-slash.c", "patterns": [ { "include": "#line_continuation_character" } ] }, { "begin": "\\s*+(//)", "beginCaptures": { "1": { "name": "punctuation.definition.comment.c" } }, "end": "(?<=\\n)(?<!\\\\\\n)", "endCaptures": { }, "name": "comment.line.double-slash.c", "patterns": [ { "include": "#line_continuation_character" } ] } ] }, "line_continuation_character": { "patterns": [ { "captures": { "1": { "name": "constant.character.escape.line-continuation.c" } }, "match": "(\\\\)\\n" } ] }, "member_access": { "captures": { "1": { "name": "variable.other.object.access.c" }, "2": { "name": "punctuation.separator.dot-access.c" }, "3": { "name": "punctuation.separator.pointer-access.c" }, "4": { "patterns": [ { "include": "#member_access" }, { "include": "#method_access" }, { "captures": { "1": { "name": "variable.other.object.access.c" }, "2": { "name": "punctuation.separator.dot-access.c" }, "3": { "name": "punctuation.separator.pointer-access.c" } }, "match": "((?:[A-Z_a-z]\\w*|(?<=[])]))\\s*)(?:(\\.(?:\\*|))|(->(?:\\*|)))" } ] }, "5": { "name": "variable.other.member.c" } }, "match": "((?:[A-Z_a-z]\\w*|(?<=[])]))\\s*)(?:(\\.(?:\\*|))|(->(?:\\*|)))((?:[A-Z_a-z]\\w*\\s*(?:\\.(?:\\*|)|->(?:\\*|))\\s*)*)\\s*\\b((?!(?:atomic_uint_least64_t|atomic_uint_least16_t|atomic_uint_least32_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_fast64_t|atomic_uint_fast32_t|atomic_int_least64_t|atomic_int_least32_t|pthread_rwlockattr_t|atomic_uint_fast16_t|pthread_mutexattr_t|atomic_int_fast16_t|atomic_uint_fast8_t|atomic_int_fast64_t|atomic_int_least8_t|atomic_int_fast32_t|atomic_int_fast8_t|pthread_condattr_t|atomic_uintptr_t|atomic_ptrdiff_t|pthread_rwlock_t|atomic_uintmax_t|pthread_mutex_t|atomic_intmax_t|atomic_intptr_t|atomic_char32_t|atomic_char16_t|pthread_attr