grammars/source.c.json in github-linguist-7.11.1 vs grammars/source.c.json in github-linguist-7.12.0

- old
+ new

@@ -1,712 +2 @@ -{ - "name": "C", - "scopeName": "source.c", - "patterns": [ - { - "include": "#preprocessor-rule-enabled" - }, - { - "include": "#preprocessor-rule-disabled" - }, - { - "include": "#preprocessor-rule-other" - }, - { - "include": "#comments" - }, - { - "include": "source.c.platform" - }, - { - "name": "keyword.control.c", - "match": "\\b(break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while)\\b" - }, - { - "name": "storage.type.c", - "match": "\\b(asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\b" - }, - { - "name": "storage.modifier.c", - "match": "\\b(const|extern|register|restrict|static|volatile|inline)\\b" - }, - { - "name": "constant.other.variable.mac-classic.c", - "match": "\\bk[A-Z]\\w*\\b" - }, - { - "name": "variable.other.readwrite.global.mac-classic.c", - "match": "\\bg[A-Z]\\w*\\b" - }, - { - "name": "variable.other.readwrite.static.mac-classic.c", - "match": "\\bs[A-Z]\\w*\\b" - }, - { - "name": "constant.language.c", - "match": "\\b(NULL|true|false|TRUE|FALSE)\\b" - }, - { - "include": "#sizeof" - }, - { - "name": "constant.numeric.c", - "match": "(?x)\\b\n\t\t\t( (?i:\n\t\t\t 0x ( [0-9A-Fa-f]+ ( ' [0-9A-Fa-f]+ )* )? # Hexadecimal\n\t\t\t | 0b ( [0-1]+ ( ' [0-1]+ )* )? # Binary\n\t\t\t | 0 ( [0-7]+ ( ' [0-7]+ )* ) # Octal\n\t\t\t | ( [0-9]+ ( ' [0-9]+ )* ) # Decimal\n\t\t\t )\n\t\t\t ( ([uUfF] | u?ll? | U?LL?)\\b | (?\u003cinc\u003e') | \\b )\n\t\t\t| ( [0-9]+ ( ' [0-9]+ )* )?\n\t\t\t (?i:\n\t\t\t \\. ( [0-9]+ ( ' [0-9]+ )* ) E(\\+|-)? ( [0-9]+ ( ' [0-9]+ )* )\n\t\t\t | \\. ( [0-9]+ ( ' [0-9]+ )* )\n\t\t\t | E(\\+|-)? ( [0-9]+ ( ' [0-9]+ )* )\n\t\t\t )\n\t\t\t ( (?\u003cinc\u003e') | \\b )\n\t\t\t)", - "captures": { - "inc": { - "name": "invalid.illegal.digit-separator-should-not-be-last.c++" - } - } - }, - { - "name": "string.quoted.double.c", - "begin": "\"", - "end": "\"", - "patterns": [ - { - "include": "#string_escaped_char" - }, - { - "include": "#string_placeholder" - } - ], - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.c" - } - }, - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.c" - } - } - }, - { - "name": "string.quoted.single.c", - "begin": "'", - "end": "'", - "patterns": [ - { - "include": "#string_escaped_char" - } - ], - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.c" - } - }, - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.c" - } - } - }, - { - "name": "meta.preprocessor.macro.c", - "begin": "(?x)\n \t\t^\\s*\\#\\s*(define)\\s+ # define\n \t\t((?\u003cid\u003e[a-zA-Z_][a-zA-Z0-9_]*)) # macro name\n \t\t(?: # and optionally:\n \t\t (\\() # an open parenthesis\n \t\t (\n \t\t \\s* \\g\u003cid\u003e \\s* # first argument\n \t\t ((,) \\s* \\g\u003cid\u003e \\s*)* # additional arguments\n \t\t (?:\\.\\.\\.)? # varargs ellipsis?\n \t\t )\n \t\t (\\)) # a close parenthesis\n \t\t)?\n \t", - "end": "(?=(?://|/\\*))|$", - "patterns": [ - { - "name": "punctuation.separator.continuation.c", - "match": "(?\u003e\\\\\\s*\\n)" - }, - { - "include": "$base" - } - ], - "beginCaptures": { - "1": { - "name": "keyword.control.import.define.c" - }, - "2": { - "name": "entity.name.function.preprocessor.c" - }, - "4": { - "name": "punctuation.definition.parameters.begin.c" - }, - "5": { - "name": "variable.parameter.preprocessor.c" - }, - "7": { - "name": "punctuation.separator.parameters.c" - }, - "8": { - "name": "punctuation.definition.parameters.end.c" - } - } - }, - { - "name": "meta.preprocessor.diagnostic.c", - "begin": "^\\s*#\\s*(error|warning)\\b", - "end": "$", - "patterns": [ - { - "name": "punctuation.separator.continuation.c", - "match": "(?\u003e\\\\\\s*\\n)" - } - ], - "captures": { - "1": { - "name": "keyword.control.import.error.c" - } - } - }, - { - "name": "meta.preprocessor.c.include", - "begin": "^\\s*#\\s*(include|import)\\b", - "end": "(?=(?://|/\\*))|$", - "patterns": [ - { - "name": "punctuation.separator.continuation.c", - "match": "(?\u003e\\\\\\s*\\n)" - }, - { - "name": "string.quoted.double.include.c", - "begin": "\"", - "end": "\"", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.c" - } - }, - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.c" - } - } - }, - { - "name": "string.quoted.other.lt-gt.include.c", - "begin": "\u003c", - "end": "\u003e", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.c" - } - }, - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.c" - } - } - } - ], - "captures": { - "1": { - "name": "keyword.control.import.include.c" - } - } - }, - { - "include": "#pragma-mark" - }, - { - "name": "meta.preprocessor.c", - "begin": "^\\s*#\\s*(define|defined|elif|else|if|ifdef|ifndef|line|pragma|undef)\\b", - "end": "(?=(?://|/\\*))|$", - "patterns": [ - { - "name": "punctuation.separator.continuation.c", - "match": "(?\u003e\\\\\\s*\\n)" - } - ], - "captures": { - "1": { - "name": "keyword.control.import.c" - } - } - }, - { - "name": "support.type.posix-reserved.c", - "match": "\\b([a-z0-9_]+_t)\\b" - }, - { - "include": "#block" - }, - { - "name": "meta.function.c", - "begin": "(?x)\n \t\t(?: ^ # begin-of-line\n \t\t | \n \t\t (?: (?= \\s ) (?\u003c!else|new|return) (?\u003c=\\w) # or word + space before name\n \t\t | (?= \\s*[A-Za-z_] ) (?\u003c!\u0026\u0026) (?\u003c=[*\u0026\u003e]) # or type modifier before name\n \t\t )\n \t\t)\n \t\t(\\s*) (?!(while|for|do|if|else|switch|catch|enumerate|return|sizeof|[cr]?iterate|(?:::)?new|(?:::)?delete)\\s*\\()\n \t\t(\n \t\t\t(?: [A-Za-z_][A-Za-z0-9_]*+ | :: )++ | # actual name\n \t\t\t(?: (?\u003c=operator) (?: [-*\u0026\u003c\u003e=+!]+ | \\(\\) | \\[\\] ) ) # if it is a C++ operator\n \t\t)\n \t\t \\s*(?=\\()", - "end": "(?\u003c=\\})|(?=#)|(;)", - "patterns": [ - { - "include": "#comments" - }, - { - "include": "#parens" - }, - { - "name": "storage.modifier.$1.c++", - "match": "\\b(const|final|override|noexcept)\\b" - }, - { - "include": "#block" - } - ], - "beginCaptures": { - "1": { - "name": "punctuation.whitespace.function.leading.c" - }, - "3": { - "name": "entity.name.function.c" - }, - "4": { - "name": "punctuation.definition.parameters.c" - } - } - } - ], - "repository": { - "access": { - "match": "(\\.|\\-\u003e)(?:\\s*(template)\\s+)?([a-zA-Z_][a-zA-Z_0-9]*)\\b(?!\\s*\\()", - "captures": { - "1": { - "name": "punctuation.separator.variable-access.c" - }, - "2": { - "name": "storage.modifier.template.c++" - }, - "3": { - "name": "variable.other.dot-access.c" - } - } - }, - "block": { - "patterns": [ - { - "name": "meta.block.c", - "begin": "\\{", - "end": "\\}", - "patterns": [ - { - "include": "#block_innards" - } - ], - "beginCaptures": { - "0": { - "name": "punctuation.section.block.begin.c" - } - }, - "endCaptures": { - "0": { - "name": "punctuation.section.block.end.c" - } - } - } - ] - }, - "block_innards": { - "patterns": [ - { - "include": "#preprocessor-rule-enabled-block" - }, - { - "include": "#preprocessor-rule-disabled-block" - }, - { - "include": "#preprocessor-rule-other-block" - }, - { - "include": "#sizeof" - }, - { - "include": "#access" - }, - { - "include": "source.c.platform#functions" - }, - { - "include": "#c_function_call" - }, - { - "name": "meta.initialization.c", - "match": "(?x)\n\t\t\t (?x)\n\t\t\t(?: \n\t\t\t (?: (?= \\s ) (?\u003c!else|new|return) (?\u003c=\\w)\\s+ # or word + space before name\n\t\t\t )\n\t\t\t)\n\t\t\t(\n\t\t\t\t(?: [A-Za-z_][A-Za-z0-9_]*+ | :: )++ | # actual name\n\t\t\t\t(?: (?\u003c=operator) (?: [-*\u0026\u003c\u003e=+!]+ | \\(\\) | \\[\\] ) )? # if it is a C++ operator\n\t\t\t)\n\t\t\t \\s*(\\()", - "captures": { - "1": { - "name": "variable.other.c" - }, - "2": { - "name": "punctuation.definition.parameters.c" - } - } - }, - { - "include": "#block" - }, - { - "include": "$base" - } - ] - }, - "c_function_call": { - "name": "meta.function-call.c", - "match": "(?x) (?: (?= \\s ) (?:(?\u003c=else|new|return) | (?\u003c!\\w)) (\\s+))?\n\t\t\t(\\b \n\t\t\t\t(?!(while|for|do|if|else|switch|catch|enumerate|return|sizeof|[cr]?iterate|(?:::)?new|(?:::)?delete)\\s*\\()(?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\\b | :: )++ # actual name\n\t\t\t)\n\t\t\t \\s*(\\()", - "captures": { - "1": { - "name": "punctuation.whitespace.function-call.leading.c" - }, - "2": { - "name": "support.function.any-method.c" - }, - "3": { - "name": "punctuation.definition.parameters.c" - } - } - }, - "comments": { - "patterns": [ - { - "name": "comment.block.c", - "match": "^/\\* =(\\s*.*?)\\s*= \\*/$\\n?", - "captures": { - "1": { - "name": "meta.toc-list.banner.block.c" - } - } - }, - { - "name": "comment.block.c", - "begin": "/\\*", - "end": "\\*/", - "beginCaptures": { - "0": { - "name": "punctuation.definition.comment.begin.c" - } - }, - "endCaptures": { - "0": { - "name": "punctuation.definition.comment.end.c" - } - } - }, - { - "name": "invalid.illegal.stray-comment-end.c", - "match": "\\*/.*\\n" - }, - { - "name": "comment.line.banner.c++", - "match": "^// =(\\s*.*?)\\s*=\\s*$\\n?", - "captures": { - "1": { - "name": "meta.toc-list.banner.line.c" - } - } - }, - { - "begin": "(^[ \\t]+)?(?=//)", - "end": "(?!\\G)", - "patterns": [ - { - "name": "comment.line.double-slash.c++", - "begin": "//", - "end": "\\n", - "patterns": [ - { - "name": "punctuation.separator.continuation.c++", - "match": "(?\u003e\\\\\\s*\\n)" - } - ], - "beginCaptures": { - "0": { - "name": "punctuation.definition.comment.c++" - } - } - } - ], - "beginCaptures": { - "1": { - "name": "punctuation.whitespace.comment.leading.c++" - } - } - } - ] - }, - "disabled": { - "begin": "^\\s*#\\s*if(n?def)?\\b.*$", - "end": "^\\s*#\\s*endif\\b", - "patterns": [ - { - "include": "#disabled" - }, - { - "include": "#pragma-mark" - } - ] - }, - "parens": { - "name": "meta.parens.c", - "begin": "\\(", - "end": "\\)", - "patterns": [ - { - "include": "$base" - } - ], - "beginCaptures": { - "0": { - "name": "punctuation.section.parens.begin.c" - } - }, - "endCaptures": { - "0": { - "name": "punctuation.section.parens.end.c" - } - } - }, - "pragma-mark": { - "name": "meta.section", - "match": "^\\s*(#\\s*(pragma\\s+mark)\\s+(.*))", - "captures": { - "1": { - "name": "meta.preprocessor.c" - }, - "2": { - "name": "keyword.control.import.pragma.c" - }, - "3": { - "name": "meta.toc-list.pragma-mark.c" - } - } - }, - "preprocessor-rule-disabled": { - "begin": "^\\s*(#(if)\\s+(0)\\b).*", - "end": "^\\s*(#\\s*(endif)\\b)", - "patterns": [ - { - "begin": "^\\s*(#\\s*(else)\\b)", - "end": "(?=^\\s*#\\s*endif\\b)", - "patterns": [ - { - "include": "$base" - } - ], - "captures": { - "1": { - "name": "meta.preprocessor.c" - }, - "2": { - "name": "keyword.control.import.else.c" - } - } - }, - { - "name": "comment.block.preprocessor.if-branch", - "end": "(?=^\\s*#\\s*(else|endif)\\b)", - "patterns": [ - { - "include": "#disabled" - }, - { - "include": "#pragma-mark" - } - ] - } - ], - "captures": { - "1": { - "name": "meta.preprocessor.c" - }, - "2": { - "name": "keyword.control.import.if.c" - }, - "3": { - "name": "constant.numeric.preprocessor.c" - } - } - }, - "preprocessor-rule-disabled-block": { - "begin": "^\\s*(#(if)\\s+(0)\\b).*", - "end": "^\\s*(#\\s*(endif)\\b)", - "patterns": [ - { - "begin": "^\\s*(#\\s*(else)\\b)", - "end": "(?=^\\s*#\\s*endif\\b)", - "patterns": [ - { - "include": "#block_innards" - } - ], - "captures": { - "1": { - "name": "meta.preprocessor.c" - }, - "2": { - "name": "keyword.control.import.else.c" - } - } - }, - { - "name": "comment.block.preprocessor.if-branch.in-block", - "end": "(?=^\\s*#\\s*(else|endif)\\b)", - "patterns": [ - { - "include": "#disabled" - }, - { - "include": "#pragma-mark" - } - ] - } - ], - "captures": { - "1": { - "name": "meta.preprocessor.c" - }, - "2": { - "name": "keyword.control.import.if.c" - }, - "3": { - "name": "constant.numeric.preprocessor.c" - } - } - }, - "preprocessor-rule-enabled": { - "begin": "^\\s*(#(if)\\s+(0*1)\\b)", - "end": "^\\s*(#\\s*(endif)\\b)", - "patterns": [ - { - "contentName": "comment.block.preprocessor.else-branch", - "begin": "^\\s*(#\\s*(else)\\b).*", - "end": "(?=^\\s*#\\s*endif\\b)", - "patterns": [ - { - "include": "#disabled" - }, - { - "include": "#pragma-mark" - } - ], - "captures": { - "1": { - "name": "meta.preprocessor.c" - }, - "2": { - "name": "keyword.control.import.else.c" - } - } - }, - { - "end": "(?=^\\s*#\\s*(else|endif)\\b)", - "patterns": [ - { - "include": "$base" - } - ] - } - ], - "captures": { - "1": { - "name": "meta.preprocessor.c" - }, - "2": { - "name": "keyword.control.import.if.c" - }, - "3": { - "name": "constant.numeric.preprocessor.c" - } - } - }, - "preprocessor-rule-enabled-block": { - "begin": "^\\s*(#(if)\\s+(0*1)\\b)", - "end": "^\\s*(#\\s*(endif)\\b)", - "patterns": [ - { - "contentName": "comment.block.preprocessor.else-branch.in-block", - "begin": "^\\s*(#\\s*(else)\\b).*", - "end": "(?=^\\s*#\\s*endif\\b)", - "patterns": [ - { - "include": "#disabled" - }, - { - "include": "#pragma-mark" - } - ], - "captures": { - "1": { - "name": "meta.preprocessor.c" - }, - "2": { - "name": "keyword.control.import.else.c" - } - } - }, - { - "end": "(?=^\\s*#\\s*(else|endif)\\b)", - "patterns": [ - { - "include": "#block_innards" - } - ] - } - ], - "captures": { - "1": { - "name": "meta.preprocessor.c" - }, - "2": { - "name": "keyword.control.import.if.c" - }, - "3": { - "name": "constant.numeric.preprocessor.c" - } - } - }, - "preprocessor-rule-other": { - "begin": "^\\s*(#\\s*(if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))", - "end": "^\\s*(#\\s*(endif)\\b)", - "patterns": [ - { - "include": "$base" - } - ], - "captures": { - "1": { - "name": "meta.preprocessor.c" - }, - "2": { - "name": "keyword.control.import.c" - } - } - }, - "preprocessor-rule-other-block": { - "begin": "^\\s*(#\\s*(if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))", - "end": "^\\s*(#\\s*(endif)\\b)", - "patterns": [ - { - "include": "#block_innards" - } - ], - "captures": { - "1": { - "name": "meta.preprocessor.c" - }, - "2": { - "name": "keyword.control.import.c" - } - } - }, - "sizeof": { - "name": "keyword.operator.sizeof.c", - "match": "\\b(sizeof)\\b" - }, - "string_escaped_char": { - "patterns": [ - { - "name": "constant.character.escape.c", - "match": "\\\\(\\\\|[abefnprtv'\"?]|[0-3]\\d{0,2}|[4-7]\\d?|x[a-fA-F0-9]{0,2}|u[a-fA-F0-9]{0,4}|U[a-fA-F0-9]{0,8})" - }, - { - "name": "invalid.illegal.unknown-escape.c", - "match": "\\\\." - } - ] - }, - "string_placeholder": { - "patterns": [ - { - "name": "constant.other.placeholder.c", - "match": "(?x)%\n \t\t\t\t\t\t(\\d+\\$)? # field (argument #)\n \t\t\t\t\t\t[#0\\- +']* # flags\n \t\t\t\t\t\t[,;:_]? # separator character (AltiVec)\n \t\t\t\t\t\t((-?\\d+)|\\*(-?\\d+\\$)?)? # minimum field width\n \t\t\t\t\t\t(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? # precision\n \t\t\t\t\t\t(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\n \t\t\t\t\t\t[diouxXDOUeEfFgGaACcSspn%] # conversion type\n \t\t\t\t\t" - } - ] - } - } -} +{"name":"C","scopeName":"source.c","patterns":[{"include":"#preprocessor-rule-enabled"},{"include":"#preprocessor-rule-disabled"},{"include":"#preprocessor-rule-other"},{"include":"#comments"},{"include":"source.c.platform"},{"name":"keyword.control.c","match":"\\b(break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while)\\b"},{"name":"storage.type.c","match":"\\b(asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\b"},{"name":"storage.modifier.c","match":"\\b(const|extern|register|restrict|static|volatile|inline)\\b"},{"name":"constant.other.variable.mac-classic.c","match":"\\bk[A-Z]\\w*\\b"},{"name":"variable.other.readwrite.global.mac-classic.c","match":"\\bg[A-Z]\\w*\\b"},{"name":"variable.other.readwrite.static.mac-classic.c","match":"\\bs[A-Z]\\w*\\b"},{"name":"constant.language.c","match":"\\b(NULL|true|false|TRUE|FALSE)\\b"},{"include":"#sizeof"},{"name":"constant.numeric.c","match":"(?x)\\b\n\t\t\t( (?i:\n\t\t\t 0x ( [0-9A-Fa-f]+ ( ' [0-9A-Fa-f]+ )* )? # Hexadecimal\n\t\t\t | 0b ( [0-1]+ ( ' [0-1]+ )* )? # Binary\n\t\t\t | 0 ( [0-7]+ ( ' [0-7]+ )* ) # Octal\n\t\t\t | ( [0-9]+ ( ' [0-9]+ )* ) # Decimal\n\t\t\t )\n\t\t\t ( ([uUfF] | u?ll? | U?LL?)\\b | (?\u003cinc\u003e') | \\b )\n\t\t\t| ( [0-9]+ ( ' [0-9]+ )* )?\n\t\t\t (?i:\n\t\t\t \\. ( [0-9]+ ( ' [0-9]+ )* ) E(\\+|-)? ( [0-9]+ ( ' [0-9]+ )* )\n\t\t\t | \\. ( [0-9]+ ( ' [0-9]+ )* )\n\t\t\t | E(\\+|-)? ( [0-9]+ ( ' [0-9]+ )* )\n\t\t\t )\n\t\t\t ( (?\u003cinc\u003e') | \\b )\n\t\t\t)","captures":{"inc":{"name":"invalid.illegal.digit-separator-should-not-be-last.c++"}}},{"name":"string.quoted.double.c","begin":"\"","end":"\"","patterns":[{"include":"#string_escaped_char"},{"include":"#string_placeholder"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.c"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.c"}}},{"name":"string.quoted.single.c","begin":"'","end":"'","patterns":[{"include":"#string_escaped_char"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.c"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.c"}}},{"name":"meta.preprocessor.macro.c","begin":"(?x)\n \t\t^\\s*\\#\\s*(define)\\s+ # define\n \t\t((?\u003cid\u003e[a-zA-Z_][a-zA-Z0-9_]*)) # macro name\n \t\t(?: # and optionally:\n \t\t (\\() # an open parenthesis\n \t\t (\n \t\t \\s* \\g\u003cid\u003e \\s* # first argument\n \t\t ((,) \\s* \\g\u003cid\u003e \\s*)* # additional arguments\n \t\t (?:\\.\\.\\.)? # varargs ellipsis?\n \t\t )\n \t\t (\\)) # a close parenthesis\n \t\t)?\n \t","end":"(?=(?://|/\\*))|$","patterns":[{"name":"punctuation.separator.continuation.c","match":"(?\u003e\\\\\\s*\\n)"},{"include":"$base"}],"beginCaptures":{"1":{"name":"keyword.control.import.define.c"},"2":{"name":"entity.name.function.preprocessor.c"},"4":{"name":"punctuation.definition.parameters.begin.c"},"5":{"name":"variable.parameter.preprocessor.c"},"7":{"name":"punctuation.separator.parameters.c"},"8":{"name":"punctuation.definition.parameters.end.c"}}},{"name":"meta.preprocessor.diagnostic.c","begin":"^\\s*#\\s*(error|warning)\\b","end":"$","patterns":[{"name":"punctuation.separator.continuation.c","match":"(?\u003e\\\\\\s*\\n)"}],"captures":{"1":{"name":"keyword.control.import.error.c"}}},{"name":"meta.preprocessor.c.include","begin":"^\\s*#\\s*(include|import)\\b","end":"(?=(?://|/\\*))|$","patterns":[{"name":"punctuation.separator.continuation.c","match":"(?\u003e\\\\\\s*\\n)"},{"name":"string.quoted.double.include.c","begin":"\"","end":"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.c"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.c"}}},{"name":"string.quoted.other.lt-gt.include.c","begin":"\u003c","end":"\u003e","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.c"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.c"}}}],"captures":{"1":{"name":"keyword.control.import.include.c"}}},{"include":"#pragma-mark"},{"name":"meta.preprocessor.c","begin":"^\\s*#\\s*(define|defined|elif|else|if|ifdef|ifndef|line|pragma|undef)\\b","end":"(?=(?://|/\\*))|$","patterns":[{"name":"punctuation.separator.continuation.c","match":"(?\u003e\\\\\\s*\\n)"}],"captures":{"1":{"name":"keyword.control.import.c"}}},{"name":"support.type.posix-reserved.c","match":"\\b([a-z0-9_]+_t)\\b"},{"include":"#block"},{"name":"meta.function.c","begin":"(?x)\n \t\t(?: ^ # begin-of-line\n \t\t | \n \t\t (?: (?= \\s ) (?\u003c!else|new|return) (?\u003c=\\w) # or word + space before name\n \t\t | (?= \\s*[A-Za-z_] ) (?\u003c!\u0026\u0026) (?\u003c=[*\u0026\u003e]) # or type modifier before name\n \t\t )\n \t\t)\n \t\t(\\s*) (?!(while|for|do|if|else|switch|catch|enumerate|return|sizeof|[cr]?iterate|(?:::)?new|(?:::)?delete)\\s*\\()\n \t\t(\n \t\t\t(?: [A-Za-z_][A-Za-z0-9_]*+ | :: )++ | # actual name\n \t\t\t(?: (?\u003c=operator) (?: [-*\u0026\u003c\u003e=+!]+ | \\(\\) | \\[\\] ) ) # if it is a C++ operator\n \t\t)\n \t\t \\s*(?=\\()","end":"(?\u003c=\\})|(?=#)|(;)","patterns":[{"include":"#comments"},{"include":"#parens"},{"name":"storage.modifier.$1.c++","match":"\\b(const|final|override|noexcept)\\b"},{"include":"#block"}],"beginCaptures":{"1":{"name":"punctuation.whitespace.function.leading.c"},"3":{"name":"entity.name.function.c"},"4":{"name":"punctuation.definition.parameters.c"}}}],"repository":{"access":{"match":"(\\.|\\-\u003e)(?:\\s*(template)\\s+)?([a-zA-Z_][a-zA-Z_0-9]*)\\b(?!\\s*\\()","captures":{"1":{"name":"punctuation.separator.variable-access.c"},"2":{"name":"storage.modifier.template.c++"},"3":{"name":"variable.other.dot-access.c"}}},"block":{"patterns":[{"name":"meta.block.c","begin":"\\{","end":"\\}","patterns":[{"include":"#block_innards"}],"beginCaptures":{"0":{"name":"punctuation.section.block.begin.c"}},"endCaptures":{"0":{"name":"punctuation.section.block.end.c"}}}]},"block_innards":{"patterns":[{"include":"#preprocessor-rule-enabled-block"},{"include":"#preprocessor-rule-disabled-block"},{"include":"#preprocessor-rule-other-block"},{"include":"#sizeof"},{"include":"#access"},{"include":"source.c.platform#functions"},{"include":"#c_function_call"},{"name":"meta.initialization.c","match":"(?x)\n\t\t\t (?x)\n\t\t\t(?: \n\t\t\t (?: (?= \\s ) (?\u003c!else|new|return) (?\u003c=\\w)\\s+ # or word + space before name\n\t\t\t )\n\t\t\t)\n\t\t\t(\n\t\t\t\t(?: [A-Za-z_][A-Za-z0-9_]*+ | :: )++ | # actual name\n\t\t\t\t(?: (?\u003c=operator) (?: [-*\u0026\u003c\u003e=+!]+ | \\(\\) | \\[\\] ) )? # if it is a C++ operator\n\t\t\t)\n\t\t\t \\s*(\\()","captures":{"1":{"name":"variable.other.c"},"2":{"name":"punctuation.definition.parameters.c"}}},{"include":"#block"},{"include":"$base"}]},"c_function_call":{"name":"meta.function-call.c","match":"(?x) (?: (?= \\s ) (?:(?\u003c=else|new|return) | (?\u003c!\\w)) (\\s+))?\n\t\t\t(\\b \n\t\t\t\t(?!(while|for|do|if|else|switch|catch|enumerate|return|sizeof|[cr]?iterate|(?:::)?new|(?:::)?delete)\\s*\\()(?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\\b | :: )++ # actual name\n\t\t\t)\n\t\t\t \\s*(\\()","captures":{"1":{"name":"punctuation.whitespace.function-call.leading.c"},"2":{"name":"support.function.any-method.c"},"3":{"name":"punctuation.definition.parameters.c"}}},"comments":{"patterns":[{"name":"comment.block.c","match":"^/\\* =(\\s*.*?)\\s*= \\*/$\\n?","captures":{"1":{"name":"meta.toc-list.banner.block.c"}}},{"name":"comment.block.c","begin":"/\\*","end":"\\*/","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.c"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end.c"}}},{"name":"invalid.illegal.stray-comment-end.c","match":"\\*/.*\\n"},{"name":"comment.line.banner.c++","match":"^// =(\\s*.*?)\\s*=\\s*$\\n?","captures":{"1":{"name":"meta.toc-list.banner.line.c"}}},{"begin":"(^[ \\t]+)?(?=//)","end":"(?!\\G)","patterns":[{"name":"comment.line.double-slash.c++","begin":"//","end":"\\n","patterns":[{"name":"punctuation.separator.continuation.c++","match":"(?\u003e\\\\\\s*\\n)"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.c++"}}}],"beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.c++"}}}]},"disabled":{"begin":"^\\s*#\\s*if(n?def)?\\b.*$","end":"^\\s*#\\s*endif\\b","patterns":[{"include":"#disabled"},{"include":"#pragma-mark"}]},"parens":{"name":"meta.parens.c","begin":"\\(","end":"\\)","patterns":[{"include":"$base"}],"beginCaptures":{"0":{"name":"punctuation.section.parens.begin.c"}},"endCaptures":{"0":{"name":"punctuation.section.parens.end.c"}}},"pragma-mark":{"name":"meta.section","match":"^\\s*(#\\s*(pragma\\s+mark)\\s+(.*))","captures":{"1":{"name":"meta.preprocessor.c"},"2":{"name":"keyword.control.import.pragma.c"},"3":{"name":"meta.toc-list.pragma-mark.c"}}},"preprocessor-rule-disabled":{"begin":"^\\s*(#(if)\\s+(0)\\b).*","end":"^\\s*(#\\s*(endif)\\b)","patterns":[{"begin":"^\\s*(#\\s*(else)\\b)","end":"(?=^\\s*#\\s*endif\\b)","patterns":[{"include":"$base"}],"captures":{"1":{"name":"meta.preprocessor.c"},"2":{"name":"keyword.control.import.else.c"}}},{"name":"comment.block.preprocessor.if-branch","end":"(?=^\\s*#\\s*(else|endif)\\b)","patterns":[{"include":"#disabled"},{"include":"#pragma-mark"}]}],"captures":{"1":{"name":"meta.preprocessor.c"},"2":{"name":"keyword.control.import.if.c"},"3":{"name":"constant.numeric.preprocessor.c"}}},"preprocessor-rule-disabled-block":{"begin":"^\\s*(#(if)\\s+(0)\\b).*","end":"^\\s*(#\\s*(endif)\\b)","patterns":[{"begin":"^\\s*(#\\s*(else)\\b)","end":"(?=^\\s*#\\s*endif\\b)","patterns":[{"include":"#block_innards"}],"captures":{"1":{"name":"meta.preprocessor.c"},"2":{"name":"keyword.control.import.else.c"}}},{"name":"comment.block.preprocessor.if-branch.in-block","end":"(?=^\\s*#\\s*(else|endif)\\b)","patterns":[{"include":"#disabled"},{"include":"#pragma-mark"}]}],"captures":{"1":{"name":"meta.preprocessor.c"},"2":{"name":"keyword.control.import.if.c"},"3":{"name":"constant.numeric.preprocessor.c"}}},"preprocessor-rule-enabled":{"begin":"^\\s*(#(if)\\s+(0*1)\\b)","end":"^\\s*(#\\s*(endif)\\b)","patterns":[{"contentName":"comment.block.preprocessor.else-branch","begin":"^\\s*(#\\s*(else)\\b).*","end":"(?=^\\s*#\\s*endif\\b)","patterns":[{"include":"#disabled"},{"include":"#pragma-mark"}],"captures":{"1":{"name":"meta.preprocessor.c"},"2":{"name":"keyword.control.import.else.c"}}},{"end":"(?=^\\s*#\\s*(else|endif)\\b)","patterns":[{"include":"$base"}]}],"captures":{"1":{"name":"meta.preprocessor.c"},"2":{"name":"keyword.control.import.if.c"},"3":{"name":"constant.numeric.preprocessor.c"}}},"preprocessor-rule-enabled-block":{"begin":"^\\s*(#(if)\\s+(0*1)\\b)","end":"^\\s*(#\\s*(endif)\\b)","patterns":[{"contentName":"comment.block.preprocessor.else-branch.in-block","begin":"^\\s*(#\\s*(else)\\b).*","end":"(?=^\\s*#\\s*endif\\b)","patterns":[{"include":"#disabled"},{"include":"#pragma-mark"}],"captures":{"1":{"name":"meta.preprocessor.c"},"2":{"name":"keyword.control.import.else.c"}}},{"end":"(?=^\\s*#\\s*(else|endif)\\b)","patterns":[{"include":"#block_innards"}]}],"captures":{"1":{"name":"meta.preprocessor.c"},"2":{"name":"keyword.control.import.if.c"},"3":{"name":"constant.numeric.preprocessor.c"}}},"preprocessor-rule-other":{"begin":"^\\s*(#\\s*(if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))","end":"^\\s*(#\\s*(endif)\\b)","patterns":[{"include":"$base"}],"captures":{"1":{"name":"meta.preprocessor.c"},"2":{"name":"keyword.control.import.c"}}},"preprocessor-rule-other-block":{"begin":"^\\s*(#\\s*(if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))","end":"^\\s*(#\\s*(endif)\\b)","patterns":[{"include":"#block_innards"}],"captures":{"1":{"name":"meta.preprocessor.c"},"2":{"name":"keyword.control.import.c"}}},"sizeof":{"name":"keyword.operator.sizeof.c","match":"\\b(sizeof)\\b"},"string_escaped_char":{"patterns":[{"name":"constant.character.escape.c","match":"\\\\(\\\\|[abefnprtv'\"?]|[0-3]\\d{0,2}|[4-7]\\d?|x[a-fA-F0-9]{0,2}|u[a-fA-F0-9]{0,4}|U[a-fA-F0-9]{0,8})"},{"name":"invalid.illegal.unknown-escape.c","match":"\\\\."}]},"string_placeholder":{"patterns":[{"name":"constant.other.placeholder.c","match":"(?x)%\n \t\t\t\t\t\t(\\d+\\$)? # field (argument #)\n \t\t\t\t\t\t[#0\\- +']* # flags\n \t\t\t\t\t\t[,;:_]? # separator character (AltiVec)\n \t\t\t\t\t\t((-?\\d+)|\\*(-?\\d+\\$)?)? # minimum field width\n \t\t\t\t\t\t(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? # precision\n \t\t\t\t\t\t(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\n \t\t\t\t\t\t[diouxXDOUeEfFgGaACcSspn%] # conversion type\n \t\t\t\t\t"}]}}}