tm-grammars
Version:
Collecton of TextMate grammars in JSON
1,413 lines • 155 kB
JSON
{
"displayName": "PHP",
"name": "php",
"patterns": [
{
"include": "#attribute"
},
{
"include": "#comments"
},
{
"captures": {
"1": {
"name": "keyword.other.namespace.php"
},
"2": {
"name": "entity.name.type.namespace.php",
"patterns": [
{
"match": "\\\\",
"name": "punctuation.separator.inheritance.php"
}
]
}
},
"match": "(?i)(?:^|(?<=<\\?php))\\s*(namespace)\\s+([0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)(?=\\s*;)",
"name": "meta.namespace.php"
},
{
"begin": "(?i)(?:^|(?<=<\\?php))\\s*(namespace)\\s+",
"beginCaptures": {
"1": {
"name": "keyword.other.namespace.php"
}
},
"end": "(?<=})|(?=\\?>)",
"name": "meta.namespace.php",
"patterns": [
{
"include": "#comments"
},
{
"captures": {
"0": {
"patterns": [
{
"match": "\\\\",
"name": "punctuation.separator.inheritance.php"
}
]
}
},
"match": "(?i)[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+",
"name": "entity.name.type.namespace.php"
},
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.namespace.begin.bracket.curly.php"
}
},
"end": "}|(?=\\?>)",
"endCaptures": {
"0": {
"name": "punctuation.definition.namespace.end.bracket.curly.php"
}
},
"patterns": [
{
"include": "$self"
}
]
},
{
"match": "\\S+",
"name": "invalid.illegal.identifier.php"
}
]
},
{
"match": "\\s+(?=use\\b)"
},
{
"begin": "(?i)\\buse\\b",
"beginCaptures": {
"0": {
"name": "keyword.other.use.php"
}
},
"end": "(?<=})|(?=;)|(?=\\?>)",
"name": "meta.use.php",
"patterns": [
{
"match": "\\b(const|function)\\b",
"name": "storage.type.${1:/downcase}.php"
},
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.use.begin.bracket.curly.php"
}
},
"end": "}",
"endCaptures": {
"0": {
"name": "punctuation.definition.use.end.bracket.curly.php"
}
},
"patterns": [
{
"include": "#scope-resolution"
},
{
"captures": {
"1": {
"name": "keyword.other.use-as.php"
},
"2": {
"name": "storage.modifier.php"
},
"3": {
"name": "entity.other.alias.php"
}
},
"match": "(?i)\\b(as)\\s+(final|abstract|public|private|protected|static)\\s+([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)"
},
{
"captures": {
"1": {
"name": "keyword.other.use-as.php"
},
"2": {
"patterns": [
{
"match": "^(?:final|abstract|public|private|protected|static)$",
"name": "storage.modifier.php"
},
{
"match": ".+",
"name": "entity.other.alias.php"
}
]
}
},
"match": "(?i)\\b(as)\\s+([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)"
},
{
"captures": {
"1": {
"name": "keyword.other.use-insteadof.php"
},
"2": {
"name": "support.class.php"
}
},
"match": "(?i)\\b(insteadof)\\s+([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)"
},
{
"match": ";",
"name": "punctuation.terminator.expression.php"
},
{
"include": "#use-inner"
}
]
},
{
"include": "#use-inner"
}
]
},
{
"begin": "(?i)\\b(trait)\\s+([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)",
"beginCaptures": {
"1": {
"name": "storage.type.trait.php"
},
"2": {
"name": "entity.name.type.trait.php"
}
},
"end": "}|(?=\\?>)",
"endCaptures": {
"0": {
"name": "punctuation.definition.trait.end.bracket.curly.php"
}
},
"name": "meta.trait.php",
"patterns": [
{
"include": "#comments"
},
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.trait.begin.bracket.curly.php"
}
},
"contentName": "meta.trait.body.php",
"end": "(?=}|\\?>)",
"patterns": [
{
"include": "$self"
}
]
}
]
},
{
"begin": "(?i)\\b(interface)\\s+([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)",
"beginCaptures": {
"1": {
"name": "storage.type.interface.php"
},
"2": {
"name": "entity.name.type.interface.php"
}
},
"end": "}|(?=\\?>)",
"endCaptures": {
"0": {
"name": "punctuation.definition.interface.end.bracket.curly.php"
}
},
"name": "meta.interface.php",
"patterns": [
{
"include": "#comments"
},
{
"include": "#interface-extends"
},
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.interface.begin.bracket.curly.php"
}
},
"contentName": "meta.interface.body.php",
"end": "(?=}|\\?>)",
"patterns": [
{
"include": "#class-constant"
},
{
"include": "$self"
}
]
}
]
},
{
"begin": "(?i)\\b(enum)\\s+([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)(?:\\s*(:)\\s*(int|string)\\b)?",
"beginCaptures": {
"1": {
"name": "storage.type.enum.php"
},
"2": {
"name": "entity.name.type.enum.php"
},
"3": {
"name": "keyword.operator.return-value.php"
},
"4": {
"name": "keyword.other.type.php"
}
},
"end": "}|(?=\\?>)",
"endCaptures": {
"0": {
"name": "punctuation.definition.enum.end.bracket.curly.php"
}
},
"name": "meta.enum.php",
"patterns": [
{
"include": "#comments"
},
{
"include": "#class-implements"
},
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.enum.begin.bracket.curly.php"
}
},
"contentName": "meta.enum.body.php",
"end": "(?=}|\\?>)",
"patterns": [
{
"captures": {
"1": {
"name": "storage.modifier.php"
},
"2": {
"name": "constant.enum.php"
}
},
"match": "(?i)\\b(case)\\s*([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)"
},
{
"include": "#class-constant"
},
{
"include": "$self"
}
]
}
]
},
{
"begin": "(?i)\\b(?:((?:(?:final|abstract|readonly)\\s+)*)(class)\\s+([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)|(new)\\b\\s*(#\\[.*])?\\s*(?:(readonly)\\s+)?\\b(class)\\b)",
"beginCaptures": {
"1": {
"patterns": [
{
"match": "final|abstract",
"name": "storage.modifier.${0:/downcase}.php"
},
{
"match": "readonly",
"name": "storage.modifier.php"
}
]
},
"2": {
"name": "storage.type.class.php"
},
"3": {
"name": "entity.name.type.class.php"
},
"4": {
"name": "keyword.other.new.php"
},
"5": {
"patterns": [
{
"include": "#attribute"
}
]
},
"6": {
"name": "storage.modifier.php"
},
"7": {
"name": "storage.type.class.php"
}
},
"end": "}|(?=\\?>)",
"endCaptures": {
"0": {
"name": "punctuation.definition.class.end.bracket.curly.php"
}
},
"name": "meta.class.php",
"patterns": [
{
"begin": "(?<=class)\\s*(\\()",
"beginCaptures": {
"1": {
"name": "punctuation.definition.arguments.begin.bracket.round.php"
}
},
"end": "\\)|(?=\\?>)",
"endCaptures": {
"0": {
"name": "punctuation.definition.arguments.end.bracket.round.php"
}
},
"name": "meta.function-call.php",
"patterns": [
{
"include": "#named-arguments"
},
{
"include": "$self"
}
]
},
{
"include": "#comments"
},
{
"include": "#class-extends"
},
{
"include": "#class-implements"
},
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.class.begin.bracket.curly.php"
}
},
"contentName": "meta.class.body.php",
"end": "(?=}|\\?>)",
"patterns": [
{
"include": "#class-constant"
},
{
"include": "$self"
}
]
}
]
},
{
"include": "#match_statement"
},
{
"include": "#switch_statement"
},
{
"captures": {
"1": {
"name": "keyword.control.yield-from.php"
}
},
"match": "\\s*\\b(yield\\s+from)\\b"
},
{
"captures": {
"1": {
"name": "keyword.control.${1:/downcase}.php"
}
},
"match": "\\b(break|case|continue|declare|default|die|do|else(if)?|end(declare|for(each)?|if|switch|while)|exit|for(each)?|if|return|switch|use|while|yield)\\b"
},
{
"begin": "(?i)\\b((?:require|include)(?:_once)?)(\\s+|(?=\\())",
"beginCaptures": {
"1": {
"name": "keyword.control.import.include.php"
}
},
"end": "(?=[;\\s]|$|\\?>)",
"name": "meta.include.php",
"patterns": [
{
"include": "$self"
}
]
},
{
"begin": "\\b(catch)\\s*(\\()",
"beginCaptures": {
"1": {
"name": "keyword.control.exception.catch.php"
},
"2": {
"name": "punctuation.definition.parameters.begin.bracket.round.php"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.parameters.end.bracket.round.php"
}
},
"name": "meta.catch.php",
"patterns": [
{
"captures": {
"1": {
"patterns": [
{
"match": "\\|",
"name": "punctuation.separator.delimiter.php"
},
{
"begin": "(?i)(?=[\\\\_a-z\\x7F-\\x{10FFFF}])",
"end": "(?i)([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)(?![0-9\\\\_a-z\\x7F-\\x{10FFFF}])",
"endCaptures": {
"1": {
"name": "support.class.exception.php"
}
},
"patterns": [
{
"include": "#namespace"
}
]
}
]
},
"2": {
"name": "variable.other.php"
},
"3": {
"name": "punctuation.definition.variable.php"
}
},
"match": "(?i)([0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*\\|\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)*)\\s*((\\$+)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)?"
}
]
},
{
"match": "\\b(catch|try|throw|exception|finally)\\b",
"name": "keyword.control.exception.php"
},
{
"begin": "(?i)\\b(function)\\s*(?=&?\\s*\\()",
"beginCaptures": {
"1": {
"name": "storage.type.function.php"
}
},
"end": "(?=\\s*\\{)",
"name": "meta.function.closure.php",
"patterns": [
{
"include": "#comments"
},
{
"begin": "(&)?\\s*(\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.reference.php"
},
"2": {
"name": "punctuation.definition.parameters.begin.bracket.round.php"
}
},
"contentName": "meta.function.parameters.php",
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.parameters.end.bracket.round.php"
}
},
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"begin": "(?i)(use)\\s*(\\()",
"beginCaptures": {
"1": {
"name": "keyword.other.function.use.php"
},
"2": {
"name": "punctuation.definition.parameters.begin.bracket.round.php"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.parameters.end.bracket.round.php"
}
},
"name": "meta.function.closure.use.php",
"patterns": [
{
"match": ",",
"name": "punctuation.separator.delimiter.php"
},
{
"captures": {
"1": {
"name": "variable.other.php"
},
"2": {
"name": "storage.modifier.reference.php"
},
"3": {
"name": "punctuation.definition.variable.php"
}
},
"match": "(?i)((?:(&)\\s*)?(\\$+)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)\\s*(?=[),])"
}
]
},
{
"captures": {
"1": {
"name": "keyword.operator.return-value.php"
},
"2": {
"patterns": [
{
"include": "#php-types"
}
]
}
},
"match": "(?i)(:)\\s*((?:\\?\\s*)?[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\))(?:\\s*[\\&|]\\s*(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\)))+)(?=\\s*(?:\\{|/[*/]|#|$))"
}
]
},
{
"begin": "(?i)\\b(fn)\\s*(?=&?\\s*\\()",
"beginCaptures": {
"1": {
"name": "storage.type.function.php"
}
},
"end": "=>",
"endCaptures": {
"0": {
"name": "punctuation.definition.arrow.php"
}
},
"name": "meta.function.closure.php",
"patterns": [
{
"begin": "(?:(&)\\s*)?(\\()",
"beginCaptures": {
"1": {
"name": "storage.modifier.reference.php"
},
"2": {
"name": "punctuation.definition.parameters.begin.bracket.round.php"
}
},
"contentName": "meta.function.parameters.php",
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.parameters.end.bracket.round.php"
}
},
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"captures": {
"1": {
"name": "keyword.operator.return-value.php"
},
"2": {
"patterns": [
{
"include": "#php-types"
}
]
}
},
"match": "(?i)(:)\\s*((?:\\?\\s*)?[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\))(?:\\s*[\\&|]\\s*(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\)))+)(?=\\s*(?:=>|/[*/]|#|$))"
}
]
},
{
"begin": "((?:(?:final|abstract|public|private|protected)\\s+)*)(function)\\s+(__construct)\\s*(\\()",
"beginCaptures": {
"1": {
"patterns": [
{
"match": "final|abstract|public|private|protected",
"name": "storage.modifier.php"
}
]
},
"2": {
"name": "storage.type.function.php"
},
"3": {
"name": "support.function.constructor.php"
},
"4": {
"name": "punctuation.definition.parameters.begin.bracket.round.php"
}
},
"contentName": "meta.function.parameters.php",
"end": "(?i)(\\))\\s*(:\\s*(?:\\?\\s*)?(?!\\s)[\\&()0-9\\\\_a-z|\\x7F-\\x{10FFFF}\\s]+(?<!\\s))?(?=\\s*(?:\\{|/[*/]|#|$|;))",
"endCaptures": {
"1": {
"name": "punctuation.definition.parameters.end.bracket.round.php"
},
"2": {
"name": "invalid.illegal.return-type.php"
}
},
"name": "meta.function.php",
"patterns": [
{
"include": "#comments"
},
{
"match": ",",
"name": "punctuation.separator.delimiter.php"
},
{
"begin": "(?i)((?:(?:p(?:ublic|rivate|rotected)(?:\\(set\\))?|readonly)(?:\\s+|(?=\\?)))++)(?:((?:\\?\\s*)?[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\))(?:\\s*[\\&|]\\s*(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\)))+)\\s+)?((?:(&)\\s*)?(\\$)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)",
"beginCaptures": {
"1": {
"patterns": [
{
"match": "p(?:ublic|rivate|rotected)(?:\\(set\\))?|readonly",
"name": "storage.modifier.php"
}
]
},
"2": {
"patterns": [
{
"include": "#php-types"
}
]
},
"3": {
"name": "variable.other.php"
},
"4": {
"name": "storage.modifier.reference.php"
},
"5": {
"name": "punctuation.definition.variable.php"
}
},
"end": "(?=\\s*(?:[),]|/[*/]|#))",
"name": "meta.function.parameter.promoted-property.php",
"patterns": [
{
"begin": "=",
"beginCaptures": {
"0": {
"name": "keyword.operator.assignment.php"
}
},
"end": "(?=\\s*(?:[),]|/[*/]|#))",
"patterns": [
{
"include": "#parameter-default-types"
}
]
}
]
},
{
"include": "#function-parameters"
}
]
},
{
"begin": "((?:(?:final|abstract|public|private|protected|static)\\s+)*)(function)\\s+(?i:(__(?:call|construct|debugInfo|destruct|get|set|isset|unset|toString|clone|set_state|sleep|wakeup|autoload|invoke|callStatic|serialize|unserialize))|(&)?\\s*([A-Z_a-z\\x7F-\\x{10FFFF}][0-9A-Z_a-z\\x7F-\\x{10FFFF}]*))\\s*(\\()",
"beginCaptures": {
"1": {
"patterns": [
{
"match": "final|abstract|public|private|protected|static",
"name": "storage.modifier.php"
}
]
},
"2": {
"name": "storage.type.function.php"
},
"3": {
"name": "support.function.magic.php"
},
"4": {
"name": "storage.modifier.reference.php"
},
"5": {
"name": "entity.name.function.php"
},
"6": {
"name": "punctuation.definition.parameters.begin.bracket.round.php"
}
},
"contentName": "meta.function.parameters.php",
"end": "(?i)(\\))(?:\\s*(:)\\s*((?:\\?\\s*)?[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\))(?:\\s*[\\&|]\\s*(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\)))+))?(?=\\s*(?:\\{|/[*/]|#|$|;))",
"endCaptures": {
"1": {
"name": "punctuation.definition.parameters.end.bracket.round.php"
},
"2": {
"name": "keyword.operator.return-value.php"
},
"3": {
"patterns": [
{
"match": "\\b(static)\\b",
"name": "storage.type.php"
},
{
"match": "\\b(never)\\b",
"name": "keyword.other.type.never.php"
},
{
"include": "#php-types"
}
]
}
},
"name": "meta.function.php",
"patterns": [
{
"include": "#function-parameters"
}
]
},
{
"captures": {
"1": {
"patterns": [
{
"match": "p(?:ublic|rivate|rotected)(?:\\(set\\))?|static|readonly",
"name": "storage.modifier.php"
}
]
},
"2": {
"patterns": [
{
"include": "#php-types"
}
]
},
"3": {
"name": "variable.other.php"
},
"4": {
"name": "punctuation.definition.variable.php"
}
},
"match": "(?i)((?:(?:p(?:ublic|rivate|rotected)(?:\\(set\\))?|static|readonly)(?:\\s+|(?=\\?)))++)((?:\\?\\s*)?[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\))(?:\\s*[\\&|]\\s*(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\)))+)?\\s+((\\$)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)"
},
{
"include": "#invoke-call"
},
{
"include": "#scope-resolution"
},
{
"include": "#variables"
},
{
"include": "#strings"
},
{
"captures": {
"1": {
"name": "support.function.construct.php"
},
"2": {
"name": "punctuation.definition.array.begin.bracket.round.php"
},
"3": {
"name": "punctuation.definition.array.end.bracket.round.php"
}
},
"match": "(array)(\\()(\\))",
"name": "meta.array.empty.php"
},
{
"begin": "(array)\\s*(\\()",
"beginCaptures": {
"1": {
"name": "support.function.construct.php"
},
"2": {
"name": "punctuation.definition.array.begin.bracket.round.php"
}
},
"end": "\\)|(?=\\?>)",
"endCaptures": {
"0": {
"name": "punctuation.definition.array.end.bracket.round.php"
}
},
"name": "meta.array.php",
"patterns": [
{
"include": "$self"
}
]
},
{
"captures": {
"1": {
"name": "punctuation.definition.storage-type.begin.bracket.round.php"
},
"2": {
"name": "storage.type.php"
},
"3": {
"name": "punctuation.definition.storage-type.end.bracket.round.php"
}
},
"match": "(?i)(\\()\\s*(array|real|double|float|int(?:eger)?|bool(?:ean)?|string|object|binary|unset)\\s*(\\))"
},
{
"match": "(?i)\\b(array|real|double|float|int(eger)?|bool(ean)?|string|class|var|function|interface|trait|parent|self|object|mixed)\\b",
"name": "storage.type.php"
},
{
"match": "(?i)\\bconst\\b",
"name": "storage.type.const.php"
},
{
"match": "(?i)\\b(global|abstract|final|private|protected|public|static)\\b",
"name": "storage.modifier.php"
},
{
"include": "#object"
},
{
"match": ";",
"name": "punctuation.terminator.expression.php"
},
{
"match": ":",
"name": "punctuation.terminator.statement.php"
},
{
"include": "#heredoc"
},
{
"include": "#numbers"
},
{
"match": "(?i)\\bclone\\b",
"name": "keyword.other.clone.php"
},
{
"match": "\\.\\.\\.",
"name": "keyword.operator.spread.php"
},
{
"match": "\\.=?",
"name": "keyword.operator.string.php"
},
{
"match": "=>",
"name": "keyword.operator.key.php"
},
{
"captures": {
"1": {
"name": "keyword.operator.assignment.php"
},
"2": {
"name": "storage.modifier.reference.php"
},
"3": {
"name": "storage.modifier.reference.php"
}
},
"match": "(?i)(=)(&)|(&)(?=[$_a-z])"
},
{
"match": "@",
"name": "keyword.operator.error-control.php"
},
{
"match": "===?|!==?|<>",
"name": "keyword.operator.comparison.php"
},
{
"match": "(?:|[-+]|\\*\\*?|[%\\&/^|]|<<|>>|\\?\\?)=",
"name": "keyword.operator.assignment.php"
},
{
"match": "<=>?|>=|[<>]",
"name": "keyword.operator.comparison.php"
},
{
"match": "--|\\+\\+",
"name": "keyword.operator.increment-decrement.php"
},
{
"match": "[-+]|\\*\\*?|[%/]",
"name": "keyword.operator.arithmetic.php"
},
{
"match": "(?i)(!|&&|\\|\\|)|\\b(and|or|xor|as)\\b",
"name": "keyword.operator.logical.php"
},
{
"include": "#function-call"
},
{
"match": "<<|>>|[\\&^|~]",
"name": "keyword.operator.bitwise.php"
},
{
"begin": "(?i)\\b(instanceof)\\s+(?=[$\\\\_a-z])",
"beginCaptures": {
"1": {
"name": "keyword.operator.type.php"
}
},
"end": "(?i)(?=[^$0-9\\\\_a-z\\x7F-\\x{10FFFF}])",
"patterns": [
{
"include": "#class-name"
},
{
"include": "#variable-name"
}
]
},
{
"include": "#instantiation"
},
{
"captures": {
"1": {
"name": "keyword.control.goto.php"
},
"2": {
"name": "support.other.php"
}
},
"match": "(?i)(goto)\\s+([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)"
},
{
"captures": {
"1": {
"name": "entity.name.goto-label.php"
}
},
"match": "(?i)^\\s*([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*(?<!default|else))\\s*:(?!:)"
},
{
"include": "#string-backtick"
},
{
"include": "#ternary_shorthand"
},
{
"include": "#null_coalescing"
},
{
"include": "#ternary_expression"
},
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.begin.bracket.curly.php"
}
},
"end": "}|(?=\\?>)",
"endCaptures": {
"0": {
"name": "punctuation.definition.end.bracket.curly.php"
}
},
"patterns": [
{
"include": "$self"
}
]
},
{
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "punctuation.section.array.begin.php"
}
},
"end": "]|(?=\\?>)",
"endCaptures": {
"0": {
"name": "punctuation.section.array.end.php"
}
},
"patterns": [
{
"include": "$self"
}
]
},
{
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "punctuation.definition.begin.bracket.round.php"
}
},
"end": "\\)|(?=\\?>)",
"endCaptures": {
"0": {
"name": "punctuation.definition.end.bracket.round.php"
}
},
"patterns": [
{
"include": "$self"
}
]
},
{
"include": "#constants"
},
{
"match": ",",
"name": "punctuation.separator.delimiter.php"
}
],
"repository": {
"attribute": {
"begin": "#\\[",
"end": "]",
"name": "meta.attribute.php",
"patterns": [
{
"match": ",",
"name": "punctuation.separator.delimiter.php"
},
{
"begin": "([0-9A-Z\\\\_a-z\\x7F-\\x{10FFFF}]+)\\s*(\\()",
"beginCaptures": {
"1": {
"patterns": [
{
"include": "#attribute-name"
}
]
},
"2": {
"name": "punctuation.definition.arguments.begin.bracket.round.php"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.arguments.end.bracket.round.php"
}
},
"patterns": [
{
"include": "#named-arguments"
},
{
"include": "$self"
}
]
},
{
"include": "#attribute-name"
}
]
},
"attribute-name": {
"patterns": [
{
"begin": "(?i)(?=\\\\?[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*\\\\)",
"end": "(?i)([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)?(?![0-9\\\\_a-z\\x7F-\\x{10FFFF}])",
"endCaptures": {
"1": {
"name": "support.attribute.php"
}
},
"patterns": [
{
"include": "#namespace"
}
]
},
{
"captures": {
"1": {
"name": "punctuation.separator.inheritance.php"
}
},
"match": "(?i)(\\\\)?\\b(Attribute|SensitiveParameter|AllowDynamicProperties|ReturnTypeWillChange|Override|Deprecated)\\b",
"name": "support.attribute.builtin.php"
},
{
"begin": "(?i)(?=[\\\\_a-z\\x7F-\\x{10FFFF}])",
"end": "(?i)([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)?(?![0-9\\\\_a-z\\x7F-\\x{10FFFF}])",
"endCaptures": {
"1": {
"name": "support.attribute.php"
}
},
"patterns": [
{
"include": "#namespace"
}
]
}
]
},
"class-builtin": {
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.separator.inheritance.php"
}
},
"match": "(?i)(\\\\)?\\b(Attribute|(A(?:PC|ppend))Iterator|Array(Access|Iterator|Object)|Bad(Function|Method)CallException|(Ca(?:ching|llbackFilter))Iterator|Collator|Collectable|Cond|Countable|CURLFile|Date(Interval|Period|Time(Interface|Immutable|Zone)?)?|Directory(Iterator)?|DomainException|DOM(Attr|CdataSection|CharacterData|Comment|Document(Fragment)?|Element|EntityReference|Implementation|NamedNodeMap|Node(list)?|ProcessingInstruction|Text|XPath)|(Error)?Exception|EmptyIterator|finfo|Ev(Check|Child|Embed|Fork|Idle|Io|Loop|Periodic|Prepare|Signal|Stat|Timer|Watcher)?|Event(Base|Buffer(Event)?|SslContext|Http(Request|Connection)?|Config|DnsBase|Util|Listener)?|FANNConnection|(Fil(?:ter|esystem))Iterator|Gender\\\\Gender|GlobIterator|Gmagick(Draw|Pixel)?|Haru(Annotation|Destination|Doc|Encoder|Font|Image|Outline|Page)|Http(((?:In|De)flate)?Stream|Message|Request(Pool)?|Response|QueryString)|HRTime\\\\(PerformanceCounter|StopWatch)|Intl(Calendar|((CodePoint|RuleBased)?Break|Parts)?Iterator|DateFormatter|TimeZone)|Imagick(Draw|Pixel(Iterator)?)?|InfiniteIterator|InvalidArgumentException|Iterator(Aggregate|Iterator)?|JsonSerializable|KTaglib_(MPEG_(File|AudioProperties)|Tag|ID3v2_(Tag|(AttachedPicture)?Frame))|Lapack|(L(?:ength|ocale|ogic))Exception|LimitIterator|Lua(Closure)?|Mongo(BinData|Client|Code|Collection|CommandCursor|Cursor(Exception)?|Date|DB(Ref)?|DeleteBatch|Grid(FS(Cursor|File)?)|Id|InsertBatch|Int(32|64)|Log|Pool|Regex|ResultException|Timestamp|UpdateBatch|Write(Batch|ConcernException))?|Memcache(d)?|MessageFormatter|MultipleIterator|Mutex|mysqli(_(driver|stmt|warning|result))?|MysqlndUh(Connection|PreparedStatement)|NoRewindIterator|Normalizer|NumberFormatter|OCI-(Collection|Lob)|OuterIterator|(O(?:utOf(Bounds|Range)|verflow))Exception|ParentIterator|PDO(Statement)?|Phar(Data|FileInfo)?|php_user_filter|Pool|QuickHash(Int(S(?:et|tringHash))|StringIntHash)|Recursive(Array|Caching|Directory|Fallback|Filter|Iterator|Regex|Tree)?Iterator|Reflection(Attribute|Class(Constant)?|Constant|Enum((?:Unit|Backed)Case)?|Fiber|Function(Abstract)?|Generator|(Named|Union|Intersection)?Type|Method|Object|Parameter|Property|Reference|(Zend)?Extension)?|RangeException|Reflector|RegexIterator|ResourceBundle|RuntimeException|RRD(Creator|Graph|Updater)|SAM(Connection|Message)|SCA(_((?:Soap|Local)Proxy))?|SDO_(DAS_(ChangeSummary|Data(Factory|Object)|Relational|Setting|XML(_Document)?)|Data(Factory|Object)|Exception|List|Model_(Property|ReflectionDataObject|Type)|Sequence)|SeekableIterator|Serializable|SessionHandler(Interface)?|SimpleXML(Iterator|Element)|SNMP|Soap(Client|Fault|Header|Param|Server|Var)|SphinxClient|Spoofchecker|Spl(DoublyLinkedList|Enum|File(Info|Object)|FixedArray|(M(?:ax|in))?Heap|Observer|ObjectStorage|(Priority)?Queue|Stack|Subject|Type|TempFileObject)|SQLite(3(Result|Stmt)?|Database|Result|Unbuffered)|stdClass|streamWrapper|SVM(Model)?|Swish(Result(s)?|Search)?|Sync(Event|Mutex|ReaderWriter|Semaphore)|Thread(ed)?|tidy(Node)?|TokyoTyrant(Table|Iterator|Query)?|Transliterator|Traversable|UConverter|(Un(?:derflow|expectedValue))Exception|V8Js(Exception)?|Varnish(Admin|Log|Stat)|Worker|Weak(Map|Ref)|XML(Diff\\\\(Base|DOM|File|Memory)|Reader|Writer)|XsltProcessor|Yaf_(Route_(Interface|Map|Regex|Rewrite|Simple|Supervar)|Action_Abstract|Application|Config_(Simple|Ini|Abstract)|Controller_Abstract|Dispatcher|Exception|Loader|Plugin_Abstract|Registry|Request_(Abstract|Simple|Http)|Response_Abstract|Router|Session|View_(Simple|Interface))|Yar_(Client(_Exception)?|Concurrent_Client|Server(_Exception)?)|ZipArchive|ZMQ(Context|Device|Poll|Socket)?)\\b",
"name": "support.class.builtin.php"
}
]
},
"class-constant": {
"patterns": [
{
"captures": {
"1": {
"name": "storage.type.const.php"
},
"2": {
"patterns": [
{
"include": "#php-types"
}
]
},
"3": {
"name": "constant.other.php"
}
},
"match": "(?i)\\b(const)\\s+(?:((?:\\?\\s*)?[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\))(?:\\s*[\\&|]\\s*(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\)))+)\\s+)?([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)"
}
]
},
"class-extends": {
"patterns": [
{
"begin": "(?i)(extends)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.extends.php"
}
},
"end": "(?i)(?=[^0-9A-Z\\\\_a-z\\x7F-\\x{10FFFF}])",
"patterns": [
{
"include": "#comments"
},
{
"include": "#inheritance-single"
}
]
}
]
},
"class-implements": {
"patterns": [
{
"begin": "(?i)(implements)\\s+",
"beginCaptures": {
"1": {
"name": "storage.modifier.implements.php"
}
},
"end": "(?i)(?=\\{)",
"patterns": [
{
"include": "#comments"
},
{
"match": ",",
"name": "punctuation.separator.classes.php"
},
{
"include": "#inheritance-single"
}
]
}
]
},
"class-name": {
"patterns": [
{
"begin": "(?i)(?=\\\\?[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*\\\\)",
"end": "(?i)([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)?(?![0-9\\\\_a-z\\x7F-\\x{10FFFF}])",
"endCaptures": {
"1": {
"name": "support.class.php"
}
},
"patterns": [
{
"include": "#namespace"
}
]
},
{
"include": "#class-builtin"
},
{
"begin": "(?i)(?=[\\\\_a-z\\x7F-\\x{10FFFF}])",
"end": "(?i)([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)?(?![0-9\\\\_a-z\\x7F-\\x{10FFFF}])",
"endCaptures": {
"1": {
"name": "support.class.php"
}
},
"patterns": [
{
"include": "#namespace"
}
]
}
]
},
"comments": {
"patterns": [
{
"begin": "/\\*\\*(?=\\s)",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.php"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.php"
}
},
"name": "comment.block.documentation.phpdoc.php",
"patterns": [
{
"include": "#php_doc"
}
]
},
{
"begin": "/\\*",
"captures": {
"0": {
"name": "punctuation.definition.comment.php"
}
},
"end": "\\*/",
"name": "comment.block.php"
},
{
"begin": "(^\\s+)?(?=//)",
"beginCaptures": {
"1": {
"name": "punctuation.whitespace.comment.leading.php"
}
},
"end": "(?!\\G)",
"patterns": [
{
"begin": "//",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.php"
}
},
"end": "\\n|(?=\\?>)",
"name": "comment.line.double-slash.php"
}
]
},
{
"begin": "(^\\s+)?(?=#)(?!#\\[)",
"beginCaptures": {
"1": {
"name": "punctuation.whitespace.comment.leading.php"
}
},
"end": "(?!\\G)",
"patterns": [
{
"begin": "#",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.php"
}
},
"end": "\\n|(?=\\?>)",
"name": "comment.line.number-sign.php"
}
]
}
]
},
"constants": {
"patterns": [
{
"match": "(?i)\\b(TRUE|FALSE|NULL|__(FILE|DIR|FUNCTION|CLASS|METHOD|LINE|NAMESPACE)__|ON|OFF|YES|NO|NL|BR|TAB)\\b",
"name": "constant.language.php"
},
{
"captures": {
"1": {
"name": "punctuation.separator.inheritance.php"
}
},
"match": "(\\\\)?\\b(DEFAULT_INCLUDE_PATH|EAR_(INSTALL|EXTENSION)_DIR|E_(ALL|COMPILE_(ERROR|WARNING)|CORE_(ERROR|WARNING)|DEPRECATED|ERROR|NOTICE|PARSE|RECOVERABLE_ERROR|STRICT|USER_(DEPRECATED|ERROR|NOTICE|WARNING)|WARNING)|PHP_(ROUND_HALF_(DOWN|EVEN|ODD|UP)|(MAJOR|MINOR|RELEASE)_VERSION|MAXPATHLEN|BINDIR|SHLIB_SUFFIX|SYSCONFDIR|SAPI|CONFIG_FILE_(PATH|SCAN_DIR)|INT_(MAX|SIZE)|ZTS|OS|OUTPUT_HANDLER_(START|CONT|END)|DEBUG|DATADIR|URL_(SCHEME|HOST|USER|PORT|PASS|PATH|QUERY|FRAGMENT)|PREFIX|EXTRA_VERSION|EXTENSION_DIR|EOL|VERSION(_ID)?|WINDOWS_(NT_(SERVER|DOMAIN_CONTROLLER|WORKSTATION)|VERSION_(M(?:AJOR|INOR))|BUILD|SUITEMASK|SP_(M(?:AJOR|INOR))|PRODUCTTYPE|PLATFORM)|LIBDIR|LOCALSTATEDIR)|STD(ERR|IN|OUT)|ZEND_(DEBUG_BUILD|THREAD_SAFE))\\b",
"name": "support.constant.core.php"
},
{
"captures": {
"1": {
"name": "punctuation.separator.inheritance.php"
}
},
"match": "(\\\\)?\\b(__COMPILER_HALT_OFFSET__|AB(MON_([1-9]|10|11|12)|DAY[1-7])|AM_STR|ASSERT_(ACTIVE|BAIL|CALLBACK_QUIET_EVAL|WARNING)|ALT_DIGITS|CASE_(UPPER|LOWER)|CHAR_MAX|CONNECTION_(ABORTED|NORMAL|TIMEOUT)|CODESET|COUNT_(NORMAL|RECURSIVE)|CREDITS_(ALL|DOCS|FULLPAGE|GENERAL|GROUP|MODULES|QA|SAPI)|CRYPT_(BLOWFISH|EXT_DES|MD5|SHA(256|512)|SALT_LENGTH|STD_DES)|CURRENCY_SYMBOL|D_(T_)?FMT|DATE_(ATOM|COOKIE|ISO8601|RFC(822|850|1036|1123|2822|3339)|RSS|W3C)|DAY_[1-7]|DECIMAL_POINT|DIRECTORY_SEPARATOR|ENT_(COMPAT|IGNORE|(NO)?QUOTES)|EXTR_(IF_EXISTS|OVERWRITE|PREFIX_(ALL|IF_EXISTS|INVALID|SAME)|REFS|SKIP)|ERA(_(D_(T_)?FMT)|T_FMT|YEAR)?|FRAC_DIGITS|GROUPING|HASH_HMAC|HTML_(ENTITIES|SPECIALCHARS)|INF|INFO_(ALL|CREDITS|CONFIGURATION|ENVIRONMENT|GENERAL|LICENSEMODULES|VARIABLES)|INI_(ALL|CANNER_(NORMAL|RAW)|PERDIR|SYSTEM|USER)|INT_(CURR_SYMBOL|FRAC_DIGITS)|LC_(ALL|COLLATE|CTYPE|MESSAGES|MONETARY|NUMERIC|TIME)|LOCK_(EX|NB|SH|UN)|LOG_(ALERT|AUTH(PRIV)?|CRIT|CRON|CONS|DAEMON|DEBUG|EMERG|ERR|INFO|LOCAL[1-7]|LPR|KERN|MAIL|NEWS|NODELAY|NOTICE|NOWAIT|ODELAY|PID|PERROR|WARNING|SYSLOG|UCP|USER)|M_(1_PI|SQRT(1_2|[23]|PI)|2_(SQRT)?PI|PI(_([24]))?|E(ULER)?|LN(10|2|PI)|LOG(10|2)E)|MON_([1-9]|10|11|12|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|N_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|NAN|NEGATIVE_SIGN|NO(EXPR|STR)|P_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|PM_STR|POSITIVE_SIGN|PATH(_SEPARATOR|INFO_(EXTENSION|(BASE|DIR|FILE)NAME))|RADIXCHAR|SEEK_(CUR|END|SET)|SORT_(ASC|DESC|LOCALE_STRING|REGULAR|STRING)|STR_PAD_(BOTH|LEFT|RIGHT)|T_FMT(_AMPM)?|THOUSEP|THOUSANDS_SEP|UPLOAD_ERR_(CANT_WRITE|EXTENSION|(FORM|INI)_SIZE|NO_(FILE|TMP_DIR)|OK|PARTIAL)|YES(EXPR|STR))\\b",
"name": "support.constant.std.php"
},
{
"captures": {
"1": {
"name": "punctuation.separator.inheritance.php"
}
},
"match": "(\\\\)?\\b(GLOB_(MARK|BRACE|NO(SORT|CHECK|ESCAPE)|ONLYDIR|ERR|AVAILABLE_FLAGS)|XML_(SAX_IMPL|(DTD|DOCUMENT(_(FRAG|TYPE))?|HTML_DOCUMENT|NOTATION|NAMESPACE_DECL|PI|COMMENT|DATA_SECTION|TEXT)_NODE|OPTION_(SKIP_(TAGSTART|WHITE)|CASE_FOLDING|TARGET_ENCODING)|ERROR_((BAD_CHAR|(ATTRIBUTE_EXTERNAL|BINARY|PARAM|RECURSIVE)_ENTITY)_REF|MISPLACED_XML_PI|SYNTAX|NONE|NO_(MEMORY|ELEMENTS)|TAG_MISMATCH|INCORRECT_ENCODING|INVALID_TOKEN|DUPLICATE_ATTRIBUTE|UNCLOSED_(CDATA_SECTION|TOKEN)|UNDEFINED_ENTITY|UNKNOWN_ENCODING|JUNK_AFTER_DOC_ELEMENT|PARTIAL_CHAR|EXTERNAL_ENTITY_HANDLING|ASYNC_ENTITY)|ENTITY_(((REF|DECL)_)?NODE)|ELEMENT(_DECL)?_NODE|LOCAL_NAMESPACE|ATTRIBUTE_(N(?:MTOKEN(S)?|OTATION|ODE))|CDATA|ID(REF(S)?)?|DECL_NODE|ENTITY|ENUMERATION)|MHASH_(RIPEMD(128|160|256|320)|GOST|MD([245])|SHA(1|224|256|384|512)|SNEFRU256|HAVAL(128|160|192|224|256)|CRC23(B)?|TIGER(1(?:28|60))?|WHIRLPOOL|ADLER32)|MYSQL_(BOTH|NUM|CLIENT_(SSL|COMPRESS|IGNORE_SPACE|INTERACTIVE|ASSOC))|MYSQLI_(REPORT_(STRICT|INDEX|OFF|ERROR|ALL)|REFRESH_(GRANT|MASTER|BACKUP_LOG|STATUS|SLAVE|HOSTS|THREADS|TABLES|LOG)|READ_DEFAULT_(FILE|GROUP)|(GROUP|MULTIPLE_KEY|BINARY|BLOB)_FLAG|BOTH|STMT_ATTR_(CURSOR_TYPE|UPDATE_MAX_LENGTH|PREFETCH_ROWS)|STORE_RESULT|SERVER_QUERY_(NO_((GOOD_)?INDEX_USED)|WAS_SLOW)|SET_(CHARSET_NAME|FLAG)|NO_(D(?:EFAULT_VALUE_FLAG|ATA))|NOT_NULL_FLAG|NUM(_FLAG)?|CURSOR_TYPE_(READ_ONLY|SCROLLABLE|NO_CURSOR|FOR_UPDATE)|CLIENT_(SSL|NO_SCHEMA|COMPRESS|IGNORE_SPACE|INTERACTIVE|FOUND_ROWS)|TYPE_(GEOMETRY|((MEDIUM|LONG|TINY)_)?BLOB|BIT|SHORT|STRING|SET|YEAR|NULL|NEWDECIMAL|NEWDATE|CHAR|TIME(STAMP)?|TINY|INT24|INTERVAL|DOUBLE|DECIMAL|DATE(TIME)?|ENUM|VAR_STRING|FLOAT|LONG(LONG)?)|TIME_STAMP_FLAG|INIT_COMMAND|ZEROFILL_FLAG|ON_UPDATE_NOW_FLAG|OPT_(NET_((CMD|READ)_BUFFER_SIZE)|CONNECT_TIMEOUT|INT_AND_FLOAT_NATIVE|LOCAL_INFILE)|DEBUG_TRACE_ENABLED|DATA_TRUNCATED|USE_RESULT|(ENUM|(PART|PRI|UNIQUE)_KEY|UNSIGNED)_FLAG|ASSOC|ASYNC|AUTO_INCREMENT_FLAG)|MCRYPT_(RC([26])|RIJNDAEL_(128|192|256)|RAND|GOST|XTEA|MODE_(STREAM|NOFB|CBC|CFB|OFB|ECB)|MARS|BLOWFISH(_COMPAT)?|SERPENT|SKIPJACK|SAFER(64|128|PLUS)|CRYPT|CAST_(128|256)|TRIPLEDES|THREEWAY|TWOFISH|IDEA|(3)?DES|DECRYPT|DEV_(U)?RANDOM|PANAMA|ENCRYPT|ENIGNA|WAKE|LOKI97|ARCFOUR(_IV)?)|STREAM_(REPORT_ERRORS|MUST_SEEK|MKDIR_RECURSIVE|BUFFER_(NONE|FULL|LINE)|SHUT_(RD)?WR|SOCK_(RDM|RAW|STREAM|SEQPACKET|DGRAM)|SERVER_(BIND|LISTEN)|NOTIFY_(REDIRECTED|RESOLVE|MIME_TYPE_IS|SEVERITY_(INFO|ERR|WARN)|COMPLETED|CONNECT|PROGRESS|FILE_SIZE_IS|FAILURE|AUTH_(RE(?:QUIRED|SULT)))|CRYPTO_METHOD_((SSLv2(3)?|SSLv3|TLS)_(CLIENT|SERVER))|CLIENT_((ASYNC_)?CONNECT|PERSISTENT)|CAST_(AS_STREAM|FOR_SELECT)|(I(?:GNORE|S))_URL|IPPROTO_(RAW|TCP|ICMP|IP|UDP)|OOB|OPTION_(READ_(BUFFER|TIMEOUT)|BLOCKING|WRITE_BUFFER)|URL_STAT_(LINK|QUIET)|USE_PATH|PEEK|PF_(INET(6)?|UNIX)|ENFORCE_SAFE_MODE|FILTER_(ALL|READ|WRITE))|SUNFUNCS_RET_(DOUBLE|STRING|TIMESTAMP)|SQLITE_(READONLY|ROW|MISMATCH|MISUSE|BOTH|BUSY|SCHEMA|NOMEM|NOTFOUND|NOTADB|NOLFS|NUM|CORRUPT|CONSTRAINT|CANTOPEN|TOOBIG|INTERRUPT|INTERNAL|IOERR|OK|DONE|PROTOCOL|PERM|ERROR|EMPTY|FORMAT|FULL|LOCKED|ABORT|ASSOC|AUTH)|SQLITE3_(BOTH|BLOB|NUM|NULL|TEXT|INTEGER|OPEN_(READ(ONLY|WRITE)|CREATE)|FLOAT_ASSOC)|CURL(M_(BAD_((EASY)?HANDLE)|CALL_MULTI_PERFORM|INTERNAL_ERROR|OUT_OF_MEMORY|OK)|MSG_DONE|SSH_AUTH_(HOST|NONE|DEFAULT|PUBLICKEY|PASSWORD|KEYBOARD)|CLOSEPOLICY_(SLOWEST|CALLBACK|OLDEST|LEAST_(RECENTLY_USED|TRAFFIC)|INFO_(REDIRECT_(COUNT|TIME)|REQUEST_SIZE|SSL_VERIFYRESULT|STARTTRANSFER_TIME|(S(?:IZE|PEED))_((?:DOWN|UP)LOAD)|HTTP_CODE|HEADER_(OUT|SIZE)|NAMELOOKUP_TIME|CONNECT_TIME|CONTENT_(TYPE|LENGTH_((?:DOWN|UP)LOAD))|CERTINFO|TOTAL_TIME|PRIVATE|PRETRANSFER_TIME|EFFECTIVE_URL|FILETIME)|OPT_(RESUME_FROM|RETURNTRANSFER|REDIR_PROTOCOLS|REFERER|READ(DATA|FUNCTION)|RANGE|RANDOM_FILE|MAX(CONNECTS|REDIRS)|BINARYTRANSFER|BUFFERSIZE|SSH_(HOST_PUBLIC_KEY_MD5|(P(?:RIVATE|UBLIC))_KEYFILE)|AUTH_TYPES)|SSL(CERT(TYPE|PASSWD)?|ENGINE(_DEFAULT)?|VERSION|KEY(TYPE|PASSWD)?)|SSL_(CIPHER_LIST|VERIFY(HOST|PEER))|STDERR|HTTP(GET|HEADER|200ALIASES|_VERSION|PROXYTUNNEL|AUTH)|HEADER(FUNCTION)?|NO(BODY|SIGNAL|PROGRESS)|NETRC|CRLF|CONNECTTIMEOUT(_MS)?|COOKIE(SESSION|JAR|FILE)?|CUSTOMREQUEST|CERTINFO|CLOSEPOLICY|CA(INFO|PATH)|TRANSFERTEXT|TCP_NODELAY|TIME(CONDITION|OUT(_MS)?|VALUE)|INTERFACE|INFILE(SIZE)?|IPRESOLVE|DNS_(CACHE_TIMEOUT|USE_GLOBAL_CACHE)|URL|USER(AGENT|PWD)|UNRESTRICTED_AUTH|UPLOAD|PRIVATE|PROGRESSFUNCTION|PROXY(TYPE|USERPWD|PORT|AUTH)?|PROTOCOLS|PORT|POST(REDIR|QUOTE|FIELDS)?|PUT|EGDSOCKET|ENCODING|VERBOSE|KRB4LEVEL|KEYPASSWD|QUOTE|FRESH_CONNECT|FTP(APPEND|LISTONLY|PORT|SSLAUTH)|FTP_(SSL|SKIP_PASV_IP|CREATE_MISSING_DIRS|USE_EP(RT|SV)|FILEMETHOD)|FILE(TIME)?|FORBID_REUSE|FOLLOWLOCATION|FAILONERROR|WRITE(FUNCTION|HEADER)|LOW_SPEED_(LIMIT|TIME)|AUTOREFERER)|PROXY_(HTTP|SOCKS([45]))|PROTO_(SCP|SFTP|HTTP(S)?|TELNET|TFTP|DICT|FTP(S)?|FILE|LDAP(S)?|ALL)|E_((RE(?:CV|AD))_ERROR|GOT_NOTHING|MALFORMAT_USER|BAD_(CONTENT_ENCODING|CALLING_ORDER|PASSWORD_ENTERED|FUNCTION_ARGUMENT)|SSH|SSL_(CIPHER|CONNECT_ERROR|CERTPROBLEM|CACERT|PEER_CERTIFICATE|ENGINE_(NOTFOUND|SETFAILED))|SHARE_IN_USE|SEND_ERROR|HTTP_(RANGE_ERROR|NOT_FOUND|PORT_FAILED|POST_ERROR)|COULDNT_(RESOLVE_(HOST|PROXY)|CONNECT)|TOO_MANY_REDIRECTS|TELNET_OPTION_SYNTAX|OBSOLETE|OUT_OF_MEMORY|OPERATION|TIMEOUTED|OK|URL_MALFORMAT(_USER)?|UNSUPPORTED_PROTOCOL|UNKNOWN_TELNET_OPTION|PARTIAL_FILE|FTP_(BAD_DOWNLOAD_RESUME|SSL_FAILED|COULDNT_(RETR_FILE|GET_SIZE|STOR_FILE|SET_(BINARY|ASCII)|USE_REST)|CANT_(GET_HOST|RECONNECT)|USER_PASSWORD_INCORRECT|PORT_FAILED|QUOTE_ERROR|WRITE_ERROR|WEIRD_((PASS|PASV|SERVER|USER)_REPLY|227_FORMAT)|ACCESS_DENIED)|FILESIZE_EXCEEDED|FILE_COULDNT_READ_FILE|FUNCTION_NOT_FOUND|FAILED_INIT|WRITE_ERROR|LIBRARY_NOT_FOUND|LDAP_(SEARCH_FAILED|CANNOT_BIND|INVALID_URL)|ABORTED_BY_CALLBACK)|VERSION_NOW|