Skip to content

Instantly share code, notes, and snippets.

@k-gun

k-gun/PHP.tmLanguage

Last active Dec 15, 2015
Embed
What would you like to do?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>comment</key>
<string>TODO:
• Try to improve parameters list syntax – scope numbers, ‘=’, ‘,’ and possibly be intelligent about entity ordering
• Is meta.function-call the correct scope? I've added it to my theme but by default it's not highlighted</string>
<key>fileTypes</key>
<array>
<!-- .php files are actually opened with HTML.tmLanguage, this is just a bit of trickery to make it look like PHP.tmLanguage is used to open them -->
<string>php</string>
</array>
<key>firstLineMatch</key>
<string>^#!.*(?&lt;!-)php[0-9]{0,1}\b</string>
<key>foldingStartMarker</key>
<string>(/\*|\{\s*$|&lt;&lt;&lt;HTML)</string>
<key>foldingStopMarker</key>
<string>(\*/|^\s*\}|^HTML;)</string>
<key>name</key>
<string>PHP</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.whitespace.embedded.leading.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>source.php.embedded.line.empty.html</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.section.embedded.begin.php</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>meta.consecutive-tags.php</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>source.php</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.section.embedded.end.php</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>source.php</string>
</dict>
<key>8</key>
<dict>
<key>name</key>
<string>punctuation.whitespace.embedded.trailing.php</string>
</dict>
</dict>
<key>comment</key>
<string>Matches empty tags.</string>
<key>match</key>
<string>(?x)
(^\s*)? # 1 - Leading whitespace
( # 2 - meta.embedded.line.empty.php
( # 3 - Open Tag
(?:
((?&lt;=\?&gt;)&lt;) # 4 - Consecutive tags
| &lt;
)
\?(?i:php|=)?
)
(\s*) # 5 - Loneliness
((\?)&gt;) # 6 - Close Tag
# 7 - Scope ? as scope.php
)
(
\1 # Match nothing if there was no
# leading whitespace...
| (\s*$\n)? # or match trailing whitespace.
)
</string>
</dict>
<dict>
<key>begin</key>
<string>^\s*(?=&lt;\?)</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.whitespace.embedded.leading.php</string>
</dict>
</dict>
<key>comment</key>
<string>Catches tags with preceeding whitespace.</string>
<key>end</key>
<string>(?&lt;=\?&gt;)(\s*$\n)?</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.whitespace.embedded.trailing.php</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>&lt;\?(?i:php|=)?</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.embedded.begin.php</string>
</dict>
</dict>
<key>end</key>
<string>(\?)&gt;</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.embedded.end.php</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>source.php</string>
</dict>
</dict>
<key>name</key>
<string>source.php.embedded.block.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#language</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(((?&lt;=\?&gt;)&lt;)|&lt;)\?(?i:php|=)?</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.embedded.begin.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.consecutive-tags.php</string>
</dict>
</dict>
<key>comment</key>
<string>Catches the remainder.</string>
<key>end</key>
<string>(\?)&gt;</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.embedded.end.php</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>source.php</string>
</dict>
</dict>
<key>name</key>
<string>source.php.embedded.line.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#language</string>
</dict>
</array>
</dict>
</array>
<key>repository</key>
<dict>
<key>constants</key>
<dict>
<key>patterns</key>
<array>
<!-- kerem -->
<dict>
<key>match</key>
<string>\b((n|N)il|(n|N)one|(v|V)oid|True|False)\b</string>
<key>name</key>
<string>constant.language-add.php</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<!-- <string>return-type.php</string> -->
<string>storage.typecast.php</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>return-type-other.php</string>
</dict>
</dict>
<key>match</key>
<string>:\s+((int|float|string|bool|array|callable|self)|\\?(\w+))\s+\{</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control-declare.php</string>
</dict>
</dict>
<key>match</key>
<string>\((strict_types)=</string>
</dict>
<dict>
<!-- bu RegExp.$0 gibi -->
<!-- <key>match</key>
<string>\(\s*(array|object|int|integer|float|double|real|string|binary|unset)\s*\)</string>
<key>name</key>
<string>storage.typecast.php</string> -->
<!-- bu RegExp.$N gibi -->
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.typecast.php</string><!-- bunu kendin belirliyorsun -->
</dict>
</dict>
<key>match</key>
<string>(?i)\(\s*(array|object|int|integer|float|double|real|string|binary|unset)\s*\)</string>
</dict>
<dict>
<key>match</key>
<!-- <string>(?i)\b(TRUE|FALSE|NULL|__(FILE|DIR|CLASS|FUNCTION|METHOD|LINE)__|ON|OFF|YES|NO|NL|BR|TAB)\b</string> -->
<string>(?i)\b(TRUE|FALSE|NULL|__(DIR|FILE|LINE|CLASS|FUNCTION|METHOD|TRAIT|NAMESPACE)__)\b</string>
<key>name</key>
<string>constant.language.php</string>
</dict>
<dict>
<key>match</key>
<string>\b(DEFAULT_INCLUDE_PATH|E_(ALL|COMPILE_(ERROR|WARNING)|CORE_(ERROR|WARNING)|(RECOVERABLE_)?ERROR|NOTICE|PARSE|STRICT|USER_(ERROR|NOTICE|WARNING)|WARNING)|PEAR_(EXTENSION_DIR|INSTALL_DIR)|PHP_(BINDIR|CONFIG_FILE_PATH|DATADIR|E(OL|XTENSION_DIR)|L(IBDIR|OCALSTATEDIR)|O(S|UTPUT_HANDLER_CONT|UTPUT_HANDLER_END|UTPUT_HANDLER_START)|SYSCONFDIR|VERSION))\b</string>
<key>name</key>
<string>support.constant.core.php</string>
</dict>
<dict>
<key>match</key>
<string>\b(A(B(DAY_([1-7])|MON_([0-9]{1,2}))|LT_DIGITS|M_STR|SSERT_(ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(ASE_(LOWER|UPPER)|HAR_MAX|O(DESET|NNECTION_(ABORTED|NORMAL|TIMEOUT)|UNT_(NORMAL|RECURSIVE))|REDITS_(ALL|DOCS|FULLPAGE|GENERAL|GROUP|MODULES|QA|SAPI)|RNCYSTR|RYPT_(BLOWFISH|EXT_DES|MD5|SALT_LENGTH|STD_DES)|URRENCY_SYMBOL)|D(AY_([1-7])|ECIMAL_POINT|IRECTORY_SEPARATOR|_(FMT|T_FMT))|E(NT_(COMPAT|NOQUOTES|QUOTES)|RA(|_D_FMT|_D_T_FMT|_T_FMT|_YEAR)|XTR_(IF_EXISTS|OVERWRITE|PREFIX_(ALL|IF_EXISTS|INVALID|SAME)|SKIP))|FRAC_DIGITS|GROUPING|HTML_(ENTITIES|SPECIALCHARS)|IN(FO_(ALL|CONFIGURATION|CREDITS|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|I_(ALL|PERDIR|SYSTEM|USER)|T_(CURR_SYMBOL|FRAC_DIGITS))|L(C_(ALL|COLLATE|CTYPE|MESSAGES|MONETARY|NUMERIC|TIME)|O(CK_(EX|NB|SH|UN)|G_(ALERT|AUTH(|PRIV)|CONS|CRIT|CRON|DAEMON|DEBUG|EMERG|ERR|INFO|KERN|LOCAL([0-7])|LPR|MAIL|NDELAY|NEWS|NOTICE|NOWAIT|ODELAY|PERROR|PID|SYSLOG|USER|UUCP|WARNING)))|M(ON_([0-9]{1,2}|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|YSQL_(ASSOC|BOTH|NUM)|_(1_PI|2_(PI|SQRTPI)|E|L(N10|N2|OG(10E|2E))|PI(|_2|_4)|SQRT1_2|SQRT2))|N(EGATIVE_SIGN|O(EXPR|STR)|_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN))|P(ATH(INFO_(BASENAME|DIRNAME|EXTENSION|FILENAME)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN))|RADIXCHAR|S(EEK_(CUR|END|SET)|ORT_(ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(BOTH|LEFT|RIGHT))|T(HOUS(ANDS_SEP|EP)|_(FMT(|_AMPM)))|YES(EXPR|STR))\b</string>
<key>name</key>
<string>support.constant.std.php</string>
</dict>
<dict>
<key>comment</key>
<string>In PHP, any identifier which is not a variable is taken to be a constant.
However, if there is no constant defined with the given name then a notice
is generated and the constant is assumed to have the value of its name.</string>
<key>match</key>
<string>[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*</string>
<key>name</key>
<string>constant.other.php</string>
</dict>
</array>
</dict>
<key>function-call</key>
<dict>
<key>match</key>
<string>[A-Za-z_][A-Za-z_0-9]*(?=\s*\()</string>
<key>name</key>
<string>meta.function-call.php</string>
</dict>
<key>instantiation</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.new.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.other.php</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>support.class.php</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>support.class.php</string>
</dict>
</dict>
<key>match</key>
<string>(?i)\b(new)\s+(?:(\$[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)|(\w+))|(\w+)(?=::)</string>
<!-- tum italic yaziyi kaldir -->
<!-- <string>(?i)\b(new)\s+(?:(\$[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)|(\w+))</string> -->
</dict>
<key>interpolation</key>
<dict>
<key>comment</key>
<string>http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\[0-7]{1,3}</string>
<key>name</key>
<string>constant.numeric.octal.php</string>
</dict>
<dict>
<key>match</key>
<string>\\x[0-9A-Fa-f]{1,2}</string>
<key>name</key>
<string>constant.numeric.hex.php</string>
</dict>
<dict>
<key>match</key>
<string>\\[nrt\\\$\"]</string>
<key>name</key>
<string>constant.character.escape.php</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.other.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.variable.php</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.variable.php</string>
</dict>
</dict>
<key>comment</key>
<string>Simple syntax with braces: "foo${bar}baz"</string>
<key>match</key>
<string>(?x)
((\$\{)(?&lt;name&gt;[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(\}))
</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.other.php</string>
</dict>
<key>10</key>
<dict>
<key>name</key>
<string>punctuation.definition.variable.php</string>
</dict>
<key>11</key>
<dict>
<key>name</key>
<string>string.unquoted.index.php</string>
</dict>
<key>12</key>
<dict>
<key>name</key>
<string>invalid.illegal.invalid-simple-array-index.php</string>
</dict>
<key>13</key>
<dict>
<key>name</key>
<string>keyword.operator.index-end.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.variable.php</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>keyword.operator.class.php</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>variable.other.property.php</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>invalid.illegal.php</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>keyword.operator.index-start.php</string>
</dict>
<key>8</key>
<dict>
<key>name</key>
<string>constant.numeric.index.php</string>
</dict>
<key>9</key>
<dict>
<key>name</key>
<string>variable.other.index.php</string>
</dict>
</dict>
<key>comment</key>
<string>Simple syntax: $foo, $foo[0], $foo[$bar], $foo-&gt;bar</string>
<key>match</key>
<string>(?x)
((\$)(?&lt;name&gt;[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*))
(?:
(-&gt;)
(?:
(\g&lt;name&gt;)
|
(\$\g&lt;name&gt;)
)
|
(\[)
(?:(\d+)|((\$)\g&lt;name&gt;)|(\w+)|(.*?))
(\])
)?
</string>
</dict>
<dict>
<key>begin</key>
<string>(?=(?&lt;regex&gt;(?#simple syntax)\$(?&lt;name&gt;[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?:\[(?&lt;index&gt;[a-zA-Z0-9_\x{7f}-\x{ff}]+|\$\g&lt;name&gt;)\]|-&gt;\g&lt;name&gt;(\(.*?\))?)?|(?#simple syntax with braces)\$\{(?:\g&lt;name&gt;(?&lt;indices&gt;\[(?:\g&lt;index&gt;|'(?:\\.|[^'\\])*'|"(?:\g&lt;regex&gt;|\\.|[^"\\])*")\])?|\g&lt;complex&gt;|\$\{\g&lt;complex&gt;\})\}|(?#complex syntax)\{(?&lt;complex&gt;\$(?&lt;segment&gt;\g&lt;name&gt;(\g&lt;indices&gt;*|\(.*?\))?)(?:-&gt;\g&lt;segment&gt;)*|\$\g&lt;complex&gt;|\$\{\g&lt;complex&gt;\})\}))\{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.variable.php</string>
</dict>
</dict>
<key>comment</key>
<string>Complex syntax. It seems this now supports complex method calls, as of PHP5.
I've put wildcards into the function call parameter lists to handle this, but this may break the pattern.
It also might be better to disable it as I shouldn't imagine it's used often (hopefully) and it may confuse PHP4 users.</string>
<key>end</key>
<string>\}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.variable.php</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#function-call</string>
</dict>
<dict>
<key>include</key>
<string>#var_basic</string>
</dict>
<dict>
<key>include</key>
<string>#object</string>
</dict>
<dict>
<key>include</key>
<string>#numbers</string>
</dict>
<dict>
<key>match</key>
<string>\[</string>
<key>name</key>
<string>keyword.operator.index-start.php</string>
</dict>
<dict>
<key>match</key>
<string>\]</string>
<key>name</key>
<string>keyword.operator.index-end.php</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>language</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=&lt;&lt;&lt;\s*(HTML|XML|SQL|JAVASCRIPT)\s*$)</string>
<key>end</key>
<string>(?!&lt;?&lt;&lt;\s*(HTML|XML|SQL|JAVASCRIPT)\s*$)</string>
<key>name</key>
<string>string.unquoted.heredoc.php</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(&lt;&lt;&lt;)\s*(HTML)\s*$\n?</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.embedded.begin.php</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.heredoc.php</string>
</dict>
</dict>
<key>contentName</key>
<string>text.html</string>
<key>end</key>
<string>^(HTML)(;?)$\n?</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.embedded.end.php</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.heredoc.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.php</string>
</dict>
</dict>
<key>name</key>
<string>meta.embedded.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>text.html.basic</string>
</dict>
<dict>
<key>include</key>
<string>#interpolation</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(&lt;&lt;&lt;)\s*(XML)\s*$\n?</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.embedded.begin.php</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.heredoc.php</string>
</dict>
</dict>
<key>contentName</key>
<string>text.xml</string>
<key>end</key>
<string>^(XML)(;?)$\n?</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.embedded.end.php</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.heredoc.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.php</string>
</dict>
</dict>
<key>name</key>
<string>meta.embedded.xml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>text.xml</string>
</dict>
<dict>
<key>include</key>
<string>#interpolation</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(&lt;&lt;&lt;)\s*(SQL)\s*$\n?</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.embedded.begin.php</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.heredoc.php</string>
</dict>
</dict>
<key>contentName</key>
<string>source.sql</string>
<key>end</key>
<string>^(SQL)(;?)$\n?</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.embedded.end.php</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.heredoc.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.php</string>
</dict>
</dict>
<key>name</key>
<string>meta.embedded.sql</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>source.sql</string>
</dict>
<dict>
<key>include</key>
<string>#interpolation</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(&lt;&lt;&lt;)\s*(JAVASCRIPT)\s*$\n?</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.embedded.begin.php</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.heredoc.php</string>
</dict>
</dict>
<key>contentName</key>
<string>source.js</string>
<key>end</key>
<string>^(JAVASCRIPT)(;?)$\n?</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.embedded.end.php</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.heredoc.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.php</string>
</dict>
</dict>
<key>name</key>
<string>meta.embedded.js</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>source.js</string>
</dict>
<dict>
<key>include</key>
<string>#interpolation</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>/\*\*(?:#@\+)?\s*$</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.php</string>
</dict>
</dict>
<key>comment</key>
<string>This now only highlights a docblock if the first line contains only /**
- this is to stop highlighting everything as invalid when people do comment banners with /******** ...
- Now matches /**#@+ too - used for docblock templates: http://manual.phpdoc.org/HTMLframesConverter/default/phpDocumentor/tutorial_phpDocumentor.howto.pkg.html#basics.docblocktemplate</string>
<key>end</key>
<string>\*/</string>
<key>name</key>
<string>comment.block.documentation.phpdoc.php</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#php_doc</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>/\*</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.php</string>
</dict>
</dict>
<key>end</key>
<string>\*/</string>
<key>name</key>
<string>comment.block.php</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.php</string>
</dict>
</dict>
<key>match</key>
<string>(//).*?($\n?|(?=\?&gt;))</string>
<key>name</key>
<string>comment.line.double-slash.php</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.php</string>
</dict>
</dict>
<key>match</key>
<string>(#).*?($\n?|(?=\?&gt;))</string>
<key>name</key>
<string>comment.line.number-sign.php</string>
</dict>
<dict>
<key>begin</key>
<string>^(?i)\s*(interface)\s+([a-z0-9_]+)\s*(extends)?\s*</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.interface.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.type.interface.php</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.modifier.extends.php</string>
</dict>
</dict>
<key>end</key>
<string>$</string>
<key>name</key>
<string>meta.interface.php</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>[a-zA-Z0-9_]+</string>
<key>name</key>
<string>entity.other.inherited-class.php</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?i)^\s*(abstract|final)?\s*(class)\s+([a-z0-9_]+)\s*</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.abstract.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.class.php</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<!-- <string>entity.name.type.class.php</string> -->
<string>kerem.class.php</string>
</dict>
</dict>
<key>end</key>
<string>$</string>
<key>name</key>
<string>meta.class.php</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.extends.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.other.inherited-class.php</string>
</dict>
</dict>
<key>match</key>
<string>(?i:(extends))\s+(\\?[a-zA-Z0-9_]+)\s*</string>
</dict>
<dict>
<key>begin</key>
<string>(?i:(implements))\s+(\\?[a-zA-Z0-9_]+)\s*</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.implements.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>support.class.implements.php</string>
</dict>
</dict>
<key>end</key>
<string>(?=\s*\b(?i:(extends)))|$</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.class.implements.php</string>
</dict>
</dict>
<key>match</key>
<string>,\s*([a-zA-Z0-9_]+)\s*</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>(?i)(break|c(ase|ontinue)|d(e(clare|fault)|ie|o)|e(lse(if)?|nd(for(each)?|if|switch|while)|xit)|for(each)?|if|return|yield(\s+from)?|switch|use|while|goto)\b</string>
<key>name</key>
<string>keyword.control.php</string>
</dict>
<dict>
<key>begin</key>
<string>(?i)\b((?:require|include)(?:_once)?)\b\s*</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.import.include.php</string>
</dict>
</dict>
<key>end</key>
<string>(?=\s|;|$)</string>
<key>name</key>
<string>meta.include.php</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#language</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.exception.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>support.class.php</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>variable.other.php</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.variable.php</string>
</dict>
</dict>
<key>match</key>
<string>\b(catch)\b\s*\(\s*([A-Za-z_][A-Za-z_0-9]*)\s*((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)\s*\)</string>
<key>name</key>
<string>meta.catch.php</string>
</dict>
<dict>
<key>match</key>
<string>\b(catch|try|throw|exception|finally)\b</string>
<key>name</key>
<string>keyword.control.exception.php</string>
</dict>
<dict>
<key>begin</key>
<string>(?:^\s*)((?:(?:final|abstract|public|private|protected|static)\s+)*)(function)(?:\s+|(\s*&amp;\s*))(?:(__(?:call|(?:con|de)struct|get|(?:is|un)?set|tostring|clone|set_state|sleep|wakeup|autoload))|([a-zA-Z0-9_]+))\s*(\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.function.php</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.modifier.reference.php</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>support.function.magic.php</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>entity.name.function.php</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.parameters.begin.php</string>
</dict>
</dict>
<key>contentName</key>
<string>meta.function.arguments.php</string>
<key>end</key>
<string>\)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.parameters.end.php</string>
</dict>
</dict>
<key>name</key>
<string>meta.function.php</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x)
\s*(array) # Typehint
\s*(&amp;)? # Reference
\s*((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*) # The variable name
\s*(=) # A default value
\s*(array)\s*(\()
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.modifier.php</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>variable.other.php</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.variable.php</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>keyword.operator.assignment.php</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>support.function.construct.php</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.array.begin.php</string>
</dict>
</dict>
<key>contentName</key>
<string>meta.array.php</string>
<key>end</key>
<string>\)</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.array.end.php</string>
</dict>
</dict>
<key>name</key>
<string>meta.function.argument.array.php</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#strings</string>
</dict>
<dict>
<key>include</key>
<string>#numbers</string>
</dict>
</array>
</dict>
<!--<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.modifier.php</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>variable.other.php</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.variable.php</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>keyword.operator.assignment.php</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>constant.language.php</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>invalid.illegal.non-null-typehinted.php</string>
</dict>
</dict>
<key>match</key>
<string>(?x)
\s*(array) # Typehint
\s*(&amp;)? # Reference
\s*((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*) # The variable name
(?:
\s*(=) # A default value
\s*(?i:
(NULL)
|
(\S.*?)
)?
)?
\s*(?=,|\)) # A closing parentheses (end of argument list) or a comma
</string>
<key>name</key>
<string>meta.function.argument.array.php</string>
</dict>-->
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<!-- kerem -->
<!-- <string>storage.type.php</string> -->
<!-- Github.tmTheme icine de koyuyorsun <string>storage.typehint</string> diye -->
<string>storage.typehint.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.modifier.php</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>variable.other.php</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.variable.php</string>
</dict>
<!-- <key>5</key>
<dict>
<key>name</key>
<string>keyword.operator.assignment.php</string>
</dict> -->
<!-- kerem -->
<key>6</key>
<dict>
<key>name</key>
<string>constant.language.php</string><!-- null etc //kerem -->
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>constant.numeric.php</string>
</dict>
<key>8</key>
<dict>
<key>name</key>
<string>string.quoted.single.php</string>
</dict>
<!-- <key>9</key>
<dict>
<key>name</key>
<string>constant.language-add</string>
</dict> -->
<key>10</key>
<dict>
<key>name</key>
<string>invalid.illegal.non-null-typehinted.php</string>
</dict>
<!-- kerem -->
</dict>
<key>match</key>
<!-- kerem mmm -->
<string>(?x) # (?ix) //iptal
\s*(array|int|integer|real|double|float|bool|boolean|string|object|resource|callable|any|mix|mixed|num|number|numeric|iter|iterable) # Typehint
\s*(&amp;)? # Reference
\s*(?:\.{3})?((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*) # The variable name
(?:
\s*(=) # A default value
\s*(?i:
(null|NULL)
|([0-9]+) #kerem
|(['].*[']) #kerem
# |(nil|Nil|None|True|False) #kerem
|(\S.*?)
)?
)?
\s*(?=,|\)) # A closing parentheses (end of argument list) or a comma
</string>
<key>name</key>
<string>meta.function.argument.typehint.php</string>
</dict>
<!--<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.class.php</string>
</dict>
</dict>
<key>match</key>
<string>(?x)
\s*([A-Za-z_][A-Za-z_0-9]*) # Typehinted class name
\s*(&amp;)? # Reference
\s*((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*) # The variable name
(?:
\s*(=) # A default value
\s*(?i:
(NULL)
|
(\S.*?)
)?
)?
\s*(?=,|\)) # A closing parentheses (end of argument list) or a comma
</string>
<key>name</key>
<string>meta.function.argument.typehinted-colored.php</string>
</dict>-->
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.class.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.modifier.php</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>variable.other.php</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.variable.php</string>
</dict>
<!-- <key>5</key>
<dict>
<key>name</key>
<string>keyword.operator.assignment.php</string>
</dict> -->
<key>6</key>
<dict>
<key>name</key>
<string>constant.language.php</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>invalid.illegal.non-null-typehinted.php</string>
</dict>
</dict>
<key>match</key>
<string>(?x)
\s*([A-Za-z_][A-Za-z_0-9]*) # Typehinted class name
\s*(&amp;)? # Reference
\s*((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*) # The variable name
(?:
\s*(=) # A default value
\s*(?i:
(NULL)
|
(\S.*?)
)?
)?
\s*(?=,|\)) # A closing parentheses (end of argument list) or a comma
</string>
<key>name</key>
<string>meta.function.argument.typehinted.php</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.other.php</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.variable.php</string>
</dict>
</dict>
<key>match</key>
<string>(\s*&amp;)?\s*((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)\s*(?=,|\))</string>
<key>name</key>
<string>meta.function.argument.no-default.php</string>
</dict>
<dict>
<key>begin</key>
<string>(\s*&amp;)?\s*((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?:\s*(=)\s*)\s*</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.other.php</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.variable.php</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>keyword.operator.assignment.php</string>
</dict>
</dict>
<key>end</key>
<string>(?=,|\))</string>
<key>name</key>
<string>meta.function.argument.default.php</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#parameter-default-types</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>/\*</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.php</string>
</dict>
</dict>
<key>end</key>
<string>\*/</string>
<key>name</key>
<string>comment.block.php</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>(?i)\b(real|double|float|int(eger)?|bool(ean)?|string|class|trait|clone|var|function|interface|parent|self|object|namespace|new|null|callable)\b</string>
<key>name</key>
<string>storage.type.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\b(global|abstract|const|extends|implements|final|p(r(ivate|otected)|ublic)|static)\b</string>
<key>name</key>
<string>storage.modifier.php</string>
</dict>
<dict>
<key>include</key>
<string>#object</string>
</dict>
<!-- <dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.class.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.function-call.static.php</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>variable.other.class.php</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.variable.php</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>constant.other.class.php</string>
</dict>
</dict>
<key>match</key>
<string>(?x)(::)
(?:
([A-Za-z_][A-Za-z_0-9]*)\s*\(
|
((\$+)[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)
|
([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)
)?</string>
</dict> -->
<dict>
<key>include</key>
<string>#support</string>
</dict>
<dict>
<key>begin</key>
<string>(&lt;&lt;&lt;)\s*([a-zA-Z_]+[a-zA-Z0-9_]*)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.heredoc.php</string>
</dict>
</dict>
<key>end</key>
<string>^(\2)(;?)$</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.heredoc.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.php</string>
</dict>
</dict>
<key>name</key>
<string>string.unquoted.heredoc.php</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#interpolation</string>
</dict>
</array>
</dict>
<!-- <dict>
<key>match</key>
<string>=&gt;</string>
<key>name</key>
<string>keyword.operator.key.php</string>
</dict>
<dict>
<key>match</key>
<string>&amp;(?=\s*(\$|new|[A-Za-z_][A-Za-z_0-9]+(?=\s*\()))</string>
<key>name</key>
<string>storage.modifier.reference.php</string>
</dict>
<dict>
<key>match</key>
<string>;</string>
<key>name</key>
<string>punctuation.terminator.expression.php</string>
</dict>
<dict>
<key>match</key>
<string>(@)</string>
<key>name</key>
<string>keyword.operator.error-control.php</string>
</dict>
<dict>
<key>match</key>
<string>(\-\-|\+\+)</string>
<key>name</key>
<string>keyword.operator.increment-decrement.php</string>
</dict>
<dict>
<key>match</key>
<string>(\-|\+|\*|/|%)</string>
<key>name</key>
<string>keyword.operator.arithmetic.php</string>
</dict> -->
<dict>
<key>match</key>
<!-- <string>(?i)(!|&amp;&amp;|\|\|)|\b(and|or|xor|as)\b</string> -->
<string>(?i)\b(and|or|xor|as)\b</string>
<key>name</key>
<string>keyword.operator.logical.php</string>
</dict>
<!-- <dict>
<key>match</key>
<string>&lt;&lt;|&gt;&gt;|~|\^|&amp;|\|</string>
<key>name</key>
<string>keyword.operator.bitwise.php</string>
</dict>
<dict>
<key>match</key>
<string>(===|==|!==|!=|&lt;=|&gt;=|&lt;&gt;|&lt;|&gt;)</string>
<key>name</key>
<string>keyword.operator.comparison.php</string>
</dict>
<dict>
<key>match</key>
<string>(\.=|\.)</string>
<key>name</key>
<string>keyword.operator.string.php</string>
</dict>
<dict>
<key>match</key>
<string>=</string>
<key>name</key>
<string>keyword.operator.assignment.php</string>
</dict> -->
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.type.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>support.class.php</string>
</dict>
</dict>
<key>match</key>
<string>(?i)\b(instanceof)\b(?:\s+(\w+))?</string>
</dict>
<dict>
<key>include</key>
<string>#numbers</string>
</dict>
<dict>
<key>include</key>
<string>#strings</string>
</dict>
<dict>
<key>include</key>
<string>#string-backtick</string>
</dict>
<dict>
<key>include</key>
<string>#function-call</string>
</dict>
<dict>
<key>include</key>
<string>#variables</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.other.property.php</string>
</dict>
</dict>
<key>match</key>
<string>(?&lt;=[a-zA-Z0-9_\x{7f}-\x{ff}])(-&gt;)([a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*?)\b</string>
</dict>
<dict>
<key>include</key>
<string>#instantiation</string>
</dict>
<dict>
<key>include</key>
<string>#constants</string>
</dict>
</array>
</dict>
<key>numbers</key>
<dict>
<key>match</key>
<string>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b</string>
<key>name</key>
<string>constant.numeric.php</string>
</dict>
<key>object</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.class.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.function-call.object.php</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>variable.other.property.php</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.variable.php</string>
</dict>
</dict>
<key>match</key>
<string>(?x)(-&gt;)
(?:
([A-Za-z_][A-Za-z_0-9]*)\s*\(
|
((\$+)?[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)
)?</string>
</dict>
<key>parameter-default-types</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#strings</string>
</dict>
<dict>
<key>include</key>
<string>#numbers</string>
</dict>
<dict>
<key>include</key>
<string>#string-backtick</string>
</dict>
<dict>
<key>include</key>
<string>#variables</string>
</dict>
<dict>
<key>match</key>
<string>=&gt;</string>
<key>name</key>
<string>keyword.operator.key.php</string>
</dict>
<dict>
<key>match</key>
<string>=</string>
<key>name</key>
<string>keyword.operator.assignment.php</string>
</dict>
<dict>
<key>match</key>
<string>&amp;(?=\s*\$)</string>
<key>name</key>
<string>storage.modifier.reference.php</string>
</dict>
<dict>
<key>begin</key>
<string>(array)\s*(\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.function.construct.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.array.begin.php</string>
</dict>
</dict>
<key>end</key>
<string>\)</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.array.end.php</string>
</dict>
</dict>
<key>name</key>
<string>meta.array.php</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#parameter-default-types</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#instantiation</string>
</dict>
<dict>
<key>include</key>
<string>#constants</string>
</dict>
</array>
</dict>
<!-- php doc seysi burda // kerem -->
<key>php_doc</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>comment</key>
<string>PHPDocumentor only recognises lines with an asterisk as the first non-whitespaces character</string>
<key>match</key>
<string>^(?!\s*\*).*$\n?</string>
<key>name</key>
<string>invalid.illegal.missing-asterisk.phpdoc.php</string>
</dict>
<!--<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.phpdoc.php</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.modifier.php</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>invalid.illegal.wrong-access-type.phpdoc.php</string>
</dict>
</dict>
<key>match</key>
<string>^\s*\*\s*(@access)\s+((public|private|protected)|(.+))\s*$</string>
</dict>-->
<dict>
<key>match</key>
<string>((https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt)://|mailto:)[-:@a-zA-Z0-9_.~%+/?=&amp;#]+(?&lt;![.?:])</string>
<key>name</key>
<string>markup.underline.link.php</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.phpdoc.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>markup.underline.link.php</string>
</dict>
</dict>
<key>match</key>
<string>(@xlink)\s+(.+)\s*$</string>
</dict>
<!--<dict>
<key>match</key>
<string>\@(a(bstract|uthor)|c(ategory|opyright)|example|global|internal|li(cense|nk)|pa(ckage|ram)|return|s(ee|ince|tatic|ubpackage)|t(hrows|odo)|v(ar|ersion)|uses|deprecated|final)\b</string>
<key>name</key>
<string>keyword.other.phpdoc.php</string>
</dict>-->
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.phpdoc.php</string>
</dict>
</dict>
<key>match</key>
<string>\{(@(link)).+?\}</string>
<key>name</key>
<string>meta.tag.inline.phpdoc.php</string>
</dict>
</array>
</dict>
<key>regex-double-quoted</key>
<dict>
<key>begin</key>
<string>(?x)"/ (?= (\\.|[^"/])++/[imsxeADSUXu]*" )</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.php</string>
</dict>
</dict>
<key>end</key>
<string>(/)([imsxeADSUXu]*)(")</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.php</string>
</dict>
</dict>
<key>name</key>
<string>string.regexp.double-quoted.php</string>
<key>patterns</key>
<array>
<dict>
<key>comment</key>
<string>Escaped from the regexp – there can also be 2 backslashes (since 1 will escape the first)</string>
<key>match</key>
<string>(\\){1,2}[.$^\[\]{}]</string>
<key>name</key>
<string>constant.character.escape.regex.php</string>
</dict>
<dict>
<key>include</key>
<string>#interpolation</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.arbitrary-repitition.php</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.arbitrary-repitition.php</string>
</dict>
</dict>
<key>match</key>
<string>(\{)\d+(,\d+)?(\})</string>
<key>name</key>
<string>string.regexp.arbitrary-repitition.php</string>
</dict>
<dict>
<key>begin</key>
<string>\[(?:\^?\])?</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.character-class.php</string>
</dict>
</dict>
<key>end</key>
<string>\]</string>
<key>name</key>
<string>string.regexp.character-class.php</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#interpolation</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>[$^+*]</string>
<key>name</key>
<string>keyword.operator.regexp.php</string>
</dict>
</array>
</dict>
<key>regex-single-quoted</key>
<dict>
<key>begin</key>
<string>(?x)'/ (?= (\\.|[^'/])++/[imsxeADSUXu]*' )</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.php</string>
</dict>
</dict>
<key>end</key>
<string>(/)([imsxeADSUXu]*)(')</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.php</string>
</dict>
</dict>
<key>name</key>
<string>string.regexp.single-quoted.php</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.arbitrary-repitition.php</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.arbitrary-repitition.php</string>
</dict>
</dict>
<key>match</key>
<string>(\{)\d+(,\d+)?(\})</string>
<key>name</key>
<string>string.regexp.arbitrary-repitition.php</string>
</dict>
<dict>
<key>comment</key>
<string>Escaped from the regexp – there can also be 2 backslashes (since 1 will escape the first)</string>
<key>match</key>
<string>(\\){1,2}[.$^\[\]{}]</string>
<key>name</key>
<string>constant.character.escape.regex.php</string>
</dict>
<dict>
<key>comment</key>
<string>Escaped from the PHP string – there can also be 2 backslashes (since 1 will escape the first)</string>
<key>match</key>
<string>\\{1,2}[\\']</string>
<key>name</key>
<string>constant.character.escape.php</string>
</dict>
<dict>
<key>begin</key>
<string>\[(?:\^?\])?</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.character-class.php</string>
</dict>
</dict>
<key>end</key>
<string>\]</string>
<key>name</key>
<string>string.regexp.character-class.php</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\[\\'\[\]]</string>
<key>name</key>
<string>constant.character.escape.php</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>[$^+*]</string>
<key>name</key>
<string>keyword.operator.regexp.php</string>
</dict>
</array>
</dict>
<key>sql-string-double-quoted</key>
<dict>
<key>begin</key>
<string>"\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER)\b)</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.php</string>
</dict>
</dict>
<key>contentName</key>
<string>source.sql.embedded.php</string>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.php</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.sql.php</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>#(\\"|[^"])*(?="|$\n?)</string>
<key>name</key>
<string>comment.line.number-sign.sql</string>
</dict>
<dict>
<key>match</key>
<string>--(\\"|[^"])*(?="|$\n?)</string>
<key>name</key>
<string>comment.line.double-dash.sql</string>
</dict>
<dict>
<key>begin</key>
<string>'(?=[^']*?")</string>
<key>comment</key>
<string>Unclosed strings must be captured to avoid them eating the remainder of the PHP script
Sample case: $sql = "SELECT * FROM bar WHERE foo = '" . $variable . "'"</string>
<key>end</key>
<string>(?=")</string>
<key>name</key>
<string>string.quoted.single.unclosed.sql</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\[\\']</string>
<key>name</key>
<string>constant.character.escape.php</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>`(?=[^`]*?")</string>
<key>comment</key>
<string>Unclosed strings must be captured to avoid them eating the remainder of the PHP script
Sample case: $sql = "SELECT * FROM bar WHERE foo = '" . $variable . "'"</string>
<key>end</key>
<string>(?=")</string>
<key>name</key>
<string>string.quoted.other.backtick.unclosed.sql</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\[\\']</string>
<key>name</key>
<string>constant.character.escape.php</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\\"(?!([^\\"]|\\[^"])*\\")(?=(\\[^"]|.)*?")</string>
<key>comment</key>
<string>Unclosed strings must be captured to avoid them eating the remainder of the PHP script
Sample case: $sql = "SELECT * FROM bar WHERE foo = '" . $variable . "'"</string>
<key>end</key>
<string>(?=")</string>
<key>name</key>
<string>string.quoted.double.unclosed.sql</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\[\\']</string>
<key>name</key>
<string>constant.character.escape.php</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\\"</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>constant.character.escape.php</string>
</dict>
</dict>
<key>end</key>
<string>\\"</string>
<key>name</key>
<string>string.quoted.double.sql</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#interpolation</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>`</string>
<key>end</key>
<string>`</string>
<key>name</key>
<string>string.quoted.other.backtick.sql</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#interpolation</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>'</string>
<key>end</key>
<string>'</string>
<key>name</key>
<string>string.quoted.single.sql</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#interpolation</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\\.</string>
<key>name</key>
<string>constant.character.escape.php</string>
</dict>
<dict>
<key>include</key>
<string>#interpolation</string>
</dict>
<dict>
<key>include</key>
<string>source.sql</string>
</dict>
</array>
</dict>
<key>sql-string-single-quoted</key>
<dict>
<key>begin</key>
<string>'\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER)\b)</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.php</string>
</dict>
</dict>
<key>contentName</key>
<string>source.sql.embedded.php</string>
<key>end</key>
<string>'</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.php</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.sql.php</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>#(\\'|[^'])*(?='|$\n?)</string>
<key>name</key>
<string>comment.line.number-sign.sql</string>
</dict>
<dict>
<key>match</key>
<string>--(\\'|[^'])*(?='|$\n?)</string>
<key>name</key>
<string>comment.line.double-dash.sql</string>
</dict>
<dict>
<key>begin</key>
<string>\\'(?!([^\\']|\\[^'])*\\')(?=(\\[^']|.)*?')</string>
<key>comment</key>
<string>Unclosed strings must be captured to avoid them eating the remainder of the PHP script
Sample case: $sql = "SELECT * FROM bar WHERE foo = '" . $variable . "'"</string>
<key>end</key>
<string>(?=')</string>
<key>name</key>
<string>string.quoted.single.unclosed.sql</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\[\\']</string>
<key>name</key>
<string>constant.character.escape.php</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>`(?=[^`]*?')</string>
<key>comment</key>
<string>Unclosed strings must be captured to avoid them eating the remainder of the PHP script
Sample case: $sql = "SELECT * FROM bar WHERE foo = '" . $variable . "'"</string>
<key>end</key>
<string>(?=')</string>
<key>name</key>
<string>string.quoted.other.backtick.unclosed.sql</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\[\\']</string>
<key>name</key>
<string>constant.character.escape.php</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>"(?=[^"]*?')</string>
<key>comment</key>
<string>Unclosed strings must be captured to avoid them eating the remainder of the PHP script
Sample case: $sql = "SELECT * FROM bar WHERE foo = '" . $variable . "'"</string>
<key>end</key>
<string>(?=')</string>
<key>name</key>
<string>string.quoted.double.unclosed.sql</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\[\\']</string>
<key>name</key>
<string>constant.character.escape.php</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\\'</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>constant.character.escape.php</string>
</dict>
</dict>
<key>end</key>
<string>\\'</string>
<key>name</key>
<string>string.quoted.single.sql</string>
</dict>
<dict>
<key>match</key>
<string>\\[\\']</string>
<key>name</key>
<string>constant.character.escape.php</string>
</dict>
<dict>
<key>include</key>
<string>source.sql</string>
</dict>
</array>
</dict>
<key>string-backtick</key>
<dict>
<key>begin</key>
<string>`</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.php</string>
</dict>
</dict>
<key>end</key>
<string>`</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.php</string>
</dict>
</dict>
<key>name</key>
<string>string.interpolated.php</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\.</string>
<key>name</key>
<string>constant.character.escape.php</string>
</dict>
<dict>
<key>include</key>
<string>#interpolation</string>
</dict>
</array>
</dict>
<key>string-double-quoted</key>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.php</string>
</dict>
</dict>
<key>comment</key>
<string>This contentName is just to allow the usage of “select scope” to select the string contents first, then the string with quotes</string>
<key>contentName</key>
<string>meta.string-contents.quoted.double.php</string>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.php</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.php</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#interpolation</string>
</dict>
</array>
</dict>
<key>string-single-quoted</key>
<dict>
<key>begin</key>
<string>'</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.php</string>
</dict>
</dict>
<key>contentName</key>
<string>meta.string-contents.quoted.single.php</string>
<key>end</key>
<string>'</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.php</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.php</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\[\\']</string>
<key>name</key>
<string>constant.character.escape.php</string>
</dict>
</array>
</dict>
<key>strings</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#regex-double-quoted</string>
</dict>
<dict>
<key>include</key>
<string>#sql-string-double-quoted</string>
</dict>
<dict>
<key>include</key>
<string>#string-double-quoted</string>
</dict>
<dict>
<key>include</key>
<string>#regex-single-quoted</string>
</dict>
<dict>
<key>include</key>
<string>#sql-string-single-quoted</string>
</dict>
<dict>
<key>include</key>
<string>#string-single-quoted</string>
</dict>
</array>
</dict>
<key>support</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(array)(\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.function.construct.php</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.array.begin.php</string>
</dict>
</dict>
<key>end</key>
<string>\)</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.array.end.php</string>
</dict>
</dict>
<key>name</key>
<string>meta.array.php</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#language</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>(?i)\b(s(huffle|ort)|n(ext|at(sort|casesort))|c(o(unt|mpact)|urrent)|in_array|u(sort|ksort|asort)|prev|e(nd|xtract)|k(sort|ey|rsort)|a(sort|r(sort|ray_(s(hift|um|plice|earch|lice)|c(h(unk|ange_key_case)|o(unt_values|mbine))|intersect(_(u(key|assoc)|key|assoc))?|diff(_(u(key|assoc)|key|assoc))?|u(n(shift|ique)|intersect(_(uassoc|assoc))?|diff(_(uassoc|assoc))?)|p(op|ush|ad|roduct)|values|key(s|_exists)|f(il(ter|l(_keys)?)|lip)|walk(_recursive)?|r(e(duce|verse)|and)|m(ultisort|erge(_recursive)?|ap))))|r(sort|eset|ange)|m(in|ax))(?=\s*\()</string>
<key>name</key>
<string>support.function.array.php</string>
</dict>
<!-- <dict>
<key>match</key>
<string>(?i)\bassert(_options)?(?=\s*\()</string>
<key>name</key>
<string>support.function.assert.php</string>
</dict> -->
<dict>
<key>match</key>
<string>(?i)\bdom_attr_is_id(?=\s*\()</string>
<key>name</key>
<string>support.function.attr.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\bbase64_(decode|encode)(?=\s*\()</string>
<key>name</key>
<string>support.function.base64.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\b(highlight_(string|file)|s(ys_getloadavg|et_(include_path|magic_quotes_runtime)|leep)|c(on(stant|nection_(status|aborted))|all_user_(func(_array)?|method(_array)?))|time_(sleep_until|nanosleep)|i(s_uploaded_file|n(i_(set|restore|get(_all)?)|et_(ntop|pton))|p2long|gnore_user_abort|mport_request_variables)|u(sleep|nregister_tick_function)|error_(log|get_last)|p(hp_strip_whitespace|utenv|arse_ini_file|rint_r)|flush|long2ip|re(store_include_path|gister_(shutdown_function|tick_function))|get(servby(name|port)|opt|_(c(urrent_user|fg_var)|include_path|magic_quotes_(gpc|runtime))|protobyn(umber|ame)|env)|move_uploaded_file)(?=\s*\()</string>
<key>name</key>
<string>support.function.basic_functions.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\bbc(s(cale|ub|qrt)|comp|div|pow(mod)?|add|m(od|ul))(?=\s*\()</string>
<key>name</key>
<string>support.function.bcmath.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\bbirdstep_(c(o(nnect|mmit)|lose)|off_autocommit|exec|f(ieldn(um|ame)|etch|reeresult)|autocommit|r(ollback|esult))(?=\s*\()</string>
<key>name</key>
<string>support.function.birdstep.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\bget_browser(?=\s*\()</string>
<key>name</key>
<string>support.function.browscap.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\b(s(tr(nc(asecmp|mp)|c(asecmp|mp)|len)|et_e(rror_handler|xception_handler))|c(lass_exists|reate_function)|trigger_error|i(s_(subclass_of|a)|nterface_exists)|de(fine(d)?|bug_(print_backtrace|backtrace))|zend_version|property_exists|e(ach|rror_reporting|xtension_loaded)|func(tion_exists|_(num_args|get_arg(s)?))|leak|restore_e(rror_handler|xception_handler)|get_(class(_(vars|methods))?|included_files|de(clared_(classes|interfaces)|fined_(constants|vars|functions))|object_vars|extension_funcs|parent_class|loaded_extensions|resource_type)|method_exists)(?=\s*\()</string>
<key>name</key>
<string>support.function.builtin_functions.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\bbz(compress|decompress|open|err(str|no|or)|read)(?=\s*\()</string>
<key>name</key>
<string>support.function.bz2.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\b(jdtounix|unixtojd)(?=\s*\()</string>
<key>name</key>
<string>support.function.cal_unix.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\b(cal_(to_jd|info|days_in_month|from_jd)|j(d(to(j(ulian|ewish)|french|gregorian)|dayofweek|monthname)|uliantojd|ewishtojd)|frenchtojd|gregoriantojd)(?=\s*\()</string>
<key>name</key>
<string>support.function.calendar.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\bdom_characterdata_(substring_data|insert_data|delete_data|append_data|replace_data)(?=\s*\()</string>
<key>name</key>
<string>support.function.characterdata.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\bcom_(create_guid|print_typeinfo|event_sink|load_typelib|get_active_object|message_pump)(?=\s*\()</string>
<key>name</key>
<string>support.function.com_com.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\bvariant_(s(ub|et(_type)?)|n(ot|eg)|c(a(st|t)|mp)|i(nt|div|mp)|or|d(iv|ate_(to_timestamp|from_timestamp))|pow|eqv|fix|a(nd|dd|bs)|get_type|round|xor|m(od|ul))(?=\s*\()</string>
<key>name</key>
<string>support.function.com_variant.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\bcrc32(?=\s*\()</string>
<key>name</key>
<string>support.function.crc32.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\bcrypt(?=\s*\()</string>
<key>name</key>
<string>support.function.crypt.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\bctype_(space|cntrl|digit|upper|p(unct|rint)|lower|al(num|pha)|graph|xdigit)(?=\s*\()</string>
<key>name</key>
<string>support.function.ctype.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\bconvert_cyr_string(?=\s*\()</string>
<key>name</key>
<string>support.function.cyr_convert.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\bstrptime(?=\s*\()</string>
<key>name</key>
<string>support.function.datetime.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\bdba_(handlers|sync|nextkey|close|insert|delete|op(timize|en)|exists|popen|key_split|f(irstkey|etch)|list|replace)(?=\s*\()</string>
<key>name</key>
<string>support.function.dba.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\bdbase_(num(fields|records)|c(lose|reate)|delete_record|open|pack|add_record|get_(header_info|record(_with_names)?)|replace_record)(?=\s*\()</string>
<key>name</key>
<string>support.function.dbase.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\b(scandir|c(h(dir|root)|losedir)|dir|opendir|re(addir|winddir)|g(etcwd|lob))(?=\s*\()</string>
<key>name</key>
<string>support.function.dir.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\bdl(?=\s*\()</string>
<key>name</key>
<string>support.function.dl.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\b(dns_(check_record|get_(record|mx))|gethostby(name(l)?|addr))(?=\s*\()</string>
<key>name</key>
<string>su