o a1@sdZddlZddlmZmZmZmZmZmZm Z m Z m Z ddl m Z mZmZmZmZmZmZmZmZmZddlmZmZmZgdZedZGdd d eZGd d d eZGd d d eZ dS)z pygments.lexers.php ~~~~~~~~~~~~~~~~~~~ Lexers for PHP and related languages. :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. N) Lexer RegexLexerincludebygroupsdefaultusingthiswords do_insertions) TextCommentOperatorKeywordNameStringNumber PunctuationOtherGeneric) get_bool_opt get_list_optshebang_matches) ZephirLexerPsyshConsoleLexerPhpLexerz.*? c@seZdZdZdZdgZdgZgdZgdZe j e j BZ de fdejfd ejfged d ejd fd ed fed gde d fgde dfed dedfdedfdefdedfdejdfdejfdejfdejfdejfdejfdej fdej!fdej"fdejfgdZ#d S)!rz For `Zephir language `_ source code. Zephir is a compiled high level language aimed to the creation of C-extensions for PHP. .. versionadded:: 2.0 Zephirzephirz*.zep)fetchechoissetempty)bitbitsstring\s+//.*?\n /\*.*?\*/commentsandwhitespacez3/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/([gim]+\b|\B)#pop/z\nz ^(?=\s|/)slashstartsregexzC\+\+|--|~|&&|\?|:|\|\||\\(?=\n)|(<<|>>>?|==?|!=?|->|[-<>+*%&|^/])=?z[{(\[;,]z[})\].]z(for|in|while|do|break|return|continue|switch|case|default|if|else|loop|require|inline|throw|try|catch|finally|new|delete|typeof|instanceof|void|namespace|use|extends|this|fetch|isset|unset|echo|fetch|likely|unlikely|empty)\bz(var|let|with|function)\bz(abstract|boolean|bool|char|class|const|double|enum|export|extends|final|native|goto|implements|import|int|string|interface|long|ulong|char|uchar|float|unsigned|private|protected|public|short|static|self|throws|reverse|transient|volatile)\bz(true|false|null|undefined)\bzm(Array|Boolean|Date|_REQUEST|_COOKIE|_SESSION|_GET|_POST|_SERVER|this|stdClass|range|count|iterator|window)\bz[$a-zA-Z_][\w\\]*z%[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?z0x[0-9a-fA-F]+z[0-9]+z"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*')r'r*badregexrootN)$__name__ __module__ __qualname____doc__namealiases filenameszephir_keywords zephir_typereDOTALL MULTILINEflagsr r Single MultilinerrRegexr rrr DeclarationReservedConstantrBuiltinrrFloatHexIntegerDoubletokensrFrF5/usr/lib/python3/dist-packages/pygments/lexers/php.pyrs^    rc@s*eZdZdZdZdgZddZddZdS) ruZ For `PsySH`_ console output, such as: .. sourcecode:: psysh >>> $greeting = function($name): string { ... return "Hello, {$name}"; ... }; => Closure($name): string {#2371 …3} >>> $greeting('World') => "Hello, World" .. _PsySH: https://psysh.org/ .. versionadded:: 2.7 zPsySH console session for PHPpsyshcKsd|d<tj|fi|dS)NT startinline)r__init__)selfoptionsrFrFrGrJlszPsyshConsoleLexer.__init__c cs tdi|j}d}g}t|D]b}|}|ds"|dr=|t|dtj |ddfgf||dd7}q| dkrZ|t|dtj dfgf||dd7}q|rkt || |EdHd}g}| tj|fVq|rt || |EdHdSdS) Nz>>> z... rz...rF)rrLline_refinditergroup startswithappendlenrPromptrstripr get_tokens_unprocessedstartOutput)rKtextphplexercurcode insertionsmatchlinerFrFrGrXps8      z(PsyshConsoleLexer.get_tokens_unprocessedN)r-r.r/r0r1r2rJrXrFrFrFrGrYs  rc@seZdZdZdZgdZgdZdgZdZdZ ded Z e e Z e j e jBe jBZd ejd fd efd efggdejdfde deeeejeejeefdefdejfdejfdejfdejfdejfde deeeejfdefdefdefdeeedfdeeefd eeeeed!fd"e deeeej fd#efd$ej fe!d%d&e d'ej"fd(e ej"fe ejfd)e#j$fd*e#j$fd+e#j%fd,e#j&fd-e#j'fd.e#j(fd/ejfd0ej)fd1ej*d2fe+d3d4d5ej,j-fge+d6d4d5ej fge ej.dfge!d7e ej,dfe/dgd1ej*dfd8ej*fd9ej0fd:e d;e d<ej1fd=eej1e2e3d>d?ej1fd@eej1e2e3d>d?ej1fdAeej1ej"ej1fdBej*fgdCZ4dDdEZ5dFdGZ6dHdIZ7dJS)KraT For `PHP `_ source code. For PHP embedded in HTML, use the `HtmlPhpLexer`. Additional options accepted: `startinline` If given and ``True`` the lexer starts highlighting with php code (i.e.: no starting ``>> from pygments.lexers._php_builtins import MODULES >>> MODULES.keys() ['PHP Options/Info', 'Zip', 'dba', ...] In fact the names of those modules match the module names from the php documentation. PHP)phpphp3php4php5)z*.phpz *.php[345]z*.incz text/x-phpz[\\\w]|[^\x00-\x7f]z(?:[\\_a-z]|[^\x00-\x7f])z(?:z)*z <\?(php)?rbz[^<]+r(z(<<<)([\'"]?)(z)(\2\n.*?\n\s*)(\3)(;?)(\n)r$z#.*?\nr%z/\*\*/z /\*\*.*?\*/r&z (->|::)(\s*)()z[~!%^&*+=|:.<>/@-]+z\?z [\[\]{}();,]+z (class)(\s+) classnamez(function)(\s*)(?=\()z(function)(\s+)(&?)(\s*) functionnamez (const)(\s+)(a(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)\bz(true|false|null)\bmagicconstantsz\$\{\$+z\}z\$+z"(\d+\.\d*|\d*\.\d+)(e[+-]?[0-9]+)?z\d+e[+-]?[0-9]+z0[0-7]+z 0x[a-f0-9]+z\d+z0b[01]+z'([^'\\]*(?:\\.[^'\\]*)*)'z`([^`\\]*(?:\\.[^`\\]*)*)`"r#) __construct __destruct__call __callStatic__get__set__isset__unset__sleep__wakeup __toString__invoke __set_state__clone __debugInfoz\b)suffix)__LINE____FILE____DIR__ __FUNCTION__ __CLASS__ __TRAIT__ __METHOD__ __NAMESPACE__ magicfuncsz [^{$"\\]+z'\\([nrt"$\\]|[0-7]{1,3}|x[0-9a-f]{1,2})z\$z (\[\S+?\]|->z)?z(\{\$\{)(.*?)(\}\})T) _startinlinez(\{)(\$.*?)(\})z(\$\{)(\S+)(\})z[${\\])r,rbrrjrhrir#cKst|dd|_t|ddg|_t|dd|_d|vr |d|_t|_|jrAdd lm }| D]\}}||jvr@|j |q1t j |fi|dS) NfuncnamehighlightingTdisabledmodulesunknownrIFrr)MODULES)rrrrrIpopset _functionspygments.lexers._php_builtinsritemsupdaterrJ)rKrLrkeyvaluerFrFrGrJs"    zPhpLexer.__init__ccsfdg}|jr |dt|||D]\}}}|tjur*||jvr*|tj|fVq|||fVqdS)Nr,rb)rIrTrrXrrrr@)rKr[stackindextokenrrFrFrGrX.s    zPhpLexer.get_tokens_unprocessedcCs*t|drdSd}td|r|d7}|S)NrbTgz <\?(?!xml)g333333?)rr6search)r[rvrFrFrG analyse_text:s  zPhpLexer.analyse_textN)8r-r.r/r0r1r2r3 mimetypes _ident_char _ident_begin _ident_end _ident_innerr6 IGNORECASEr7r8r9r Preprocrrr Delimiterrr r:r;Docr r Attributerr?rVariablerrAOctrBrCBinBacktickrDr FunctionMagicClassrEscapeInterpolrrrErJrXrrFrFrFrGrs              #$% &'()*+,-./ 04    b r)!r0r6pygments.lexerrrrrrrrr r pygments.tokenr r r rrrrrrr pygments.utilrrr__all__compilerPrrrrFrFrFrGs ,0 A1