<lexer> <config> <name>PHP</name> <alias>php</alias> <alias>php3</alias> <alias>php4</alias> <alias>php5</alias> <filename>*.php</filename> <filename>*.php[345]</filename> <filename>*.inc</filename> <mime_type>text/x-php</mime_type> <case_insensitive>true</case_insensitive> <dot_all>true</dot_all> <ensure_nl>true</ensure_nl> <priority>3</priority> </config> <rules> <state name="magicfuncs"> <rule pattern="(__callStatic|__set_state|__construct|__debugInfo|__toString|__destruct|__invoke|__wakeup|__clone|__sleep|__isset|__unset|__call|__get|__set)\b"> <token type="NameFunctionMagic"/> </rule> </state> <state name="magicconstants"> <rule pattern="(__NAMESPACE__|__FUNCTION__|__METHOD__|__CLASS__|__TRAIT__|__LINE__|__FILE__|__DIR__)\b"> <token type="NameConstant"/> </rule> </state> <state name="classname"> <rule pattern="(?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*"> <token type="NameClass"/> <pop depth="1"/> </rule> </state> <state name="functionname"> <rule> <include state="magicfuncs"/> </rule> <rule pattern="(?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*"> <token type="NameFunction"/> <pop depth="1"/> </rule> <rule> <pop depth="1"/> </rule> </state> <state name="string"> <rule pattern="""> <token type="LiteralStringDouble"/> <pop depth="1"/> </rule> <rule pattern="[^{$"\\]+"> <token type="LiteralStringDouble"/> </rule> <rule pattern="\\([nrt"$\\]|[0-7]{1,3}|x[0-9a-f]{1,2})"> <token type="LiteralStringEscape"/> </rule> <rule pattern="\$(?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*(\[\S+?\]|->(?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*)?"> <token type="LiteralStringInterpol"/> </rule> <rule pattern="(\{\$\{)(.*?)(\}\})"> <bygroups> <token type="LiteralStringInterpol"/> <usingself state="root"/> <token type="LiteralStringInterpol"/> </bygroups> </rule> <rule pattern="(\{)(\$.*?)(\})"> <bygroups> <token type="LiteralStringInterpol"/> <usingself state="root"/> <token type="LiteralStringInterpol"/> </bygroups> </rule> <rule pattern="(\$\{)(\S+)(\})"> <bygroups> <token type="LiteralStringInterpol"/> <token type="NameVariable"/> <token type="LiteralStringInterpol"/> </bygroups> </rule> <rule pattern="[${\\]"> <token type="LiteralStringDouble"/> </rule> </state> <state name="root"> <rule pattern="\?>"> <token type="CommentPreproc"/> <pop depth="1"/> </rule> <rule pattern="(<<<)([\'"]?)((?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*)(\2\n.*?\n\s*)(\3)(;?)(\n)"> <bygroups> <token type="LiteralString"/> <token type="LiteralString"/> <token type="LiteralStringDelimiter"/> <token type="LiteralString"/> <token type="LiteralStringDelimiter"/> <token type="Punctuation"/> <token type="Text"/> </bygroups> </rule> <rule pattern="\s+"> <token type="Text"/> </rule> <rule pattern="#.*?\n"> <token type="CommentSingle"/> </rule> <rule pattern="//.*?\n"> <token type="CommentSingle"/> </rule> <rule pattern="/\*\*/"> <token type="CommentMultiline"/> </rule> <rule pattern="/\*\*.*?\*/"> <token type="LiteralStringDoc"/> </rule> <rule pattern="/\*.*?\*/"> <token type="CommentMultiline"/> </rule> <rule pattern="(->|::)(\s*)((?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*)"> <bygroups> <token type="Operator"/> <token type="Text"/> <token type="NameAttribute"/> </bygroups> </rule> <rule pattern="[~!%^&*+=|:.<>/@-]+"> <token type="Operator"/> </rule> <rule pattern="\?"> <token type="Operator"/> </rule> <rule pattern="[\[\]{}();,]+"> <token type="Punctuation"/> </rule> <rule pattern="(class)(\s+)"> <bygroups> <token type="Keyword"/> <token type="Text"/> </bygroups> <push state="classname"/> </rule> <rule pattern="(function)(\s*)(?=\()"> <bygroups> <token type="Keyword"/> <token type="Text"/> </bygroups> </rule> <rule pattern="(function)(\s+)(&?)(\s*)"> <bygroups> <token type="Keyword"/> <token type="Text"/> <token type="Operator"/> <token type="Text"/> </bygroups> <push state="functionname"/> </rule> <rule pattern="(const)(\s+)((?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*)"> <bygroups> <token type="Keyword"/> <token type="Text"/> <token type="NameConstant"/> </bygroups> </rule> <rule pattern="(and|E_PARSE|old_function|E_ERROR|or|as|E_WARNING|parent|eval|PHP_OS|break|exit|case|extends|PHP_VERSION|cfunction|FALSE|print|for|require|continue|foreach|require_once|declare|return|default|static|do|switch|die|stdClass|echo|else|TRUE|elseif|var|empty|if|xor|enddeclare|include|virtual|endfor|include_once|while|endforeach|global|endif|list|endswitch|new|endwhile|not|array|E_ALL|NULL|final|php_user_filter|interface|implements|public|private|protected|abstract|clone|try|catch|throw|this|use|namespace|trait|yield|finally)\b"> <token type="Keyword"/> </rule> <rule pattern="(true|false|null)\b"> <token type="KeywordConstant"/> </rule> <rule> <include state="magicconstants"/> </rule> <rule pattern="\$\{\$+(?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*\}"> <token type="NameVariable"/> </rule> <rule pattern="\$+(?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*"> <token type="NameVariable"/> </rule> <rule pattern="(?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*"> <token type="NameOther"/> </rule> <rule pattern="(\d+\.\d*|\d*\.\d+)(e[+-]?[0-9]+)?"> <token type="LiteralNumberFloat"/> </rule> <rule pattern="\d+e[+-]?[0-9]+"> <token type="LiteralNumberFloat"/> </rule> <rule pattern="0[0-7]+"> <token type="LiteralNumberOct"/> </rule> <rule pattern="0x[a-f0-9_]+"> <token type="LiteralNumberHex"/> </rule> <rule pattern="\d[\d_]*"> <token type="LiteralNumberInteger"/> </rule> <rule pattern="0b[01]+"> <token type="LiteralNumberBin"/> </rule> <rule pattern="'([^'\\]*(?:\\.[^'\\]*)*)'"> <token type="LiteralStringSingle"/> </rule> <rule pattern="`([^`\\]*(?:\\.[^`\\]*)*)`"> <token type="LiteralStringBacktick"/> </rule> <rule pattern="""> <token type="LiteralStringDouble"/> <push state="string"/> </rule> </state> </rules> </lexer>