§
    £E±cÙ0  ã                   óâ   — d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
mZmZ ddlmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZ g d¢Z G d„ de¦  «        Z G d	„ d
e¦  «        Z G d„ de¦  «        ZdS )zÐ
    pygments.lexers.php
    ~~~~~~~~~~~~~~~~~~~

    Lexers for PHP and related languages.

    :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)
ÚLexerÚ
RegexLexerÚincludeÚbygroupsÚdefaultÚusingÚthisÚwordsÚdo_insertionsÚline_re)
ÚTextÚCommentÚOperatorÚKeywordÚNameÚStringÚNumberÚPunctuationÚOtherÚGeneric)Úget_bool_optÚget_list_optÚshebang_matches)ÚZephirLexerÚPsyshConsoleLexerÚPhpLexerc                   ó®  — e Zd ZdZdZdZdgZdgZg d¢Zg d¢Z	e
j        e
j        z  Zdefd	ej        fd
ej        fg ed¦  «        dej        dfdedf ed¦  «        gdedfgdedf ed¦  «        dedfdedfdefdedfdej        dfdej        fdej        fdej        fdej        fdej         fdej!        fdej"        fdej#        fdej        fgd œZ$d!S )"r   z¦
    For Zephir language source code.

    Zephir is a compiled high level language aimed
    to the creation of C-extensions for PHP.

    .. versionadded:: 2.0
    ÚZephirzhttp://zephir-lang.com/Úzephirz*.zep)ÚfetchÚechoÚissetÚempty)ÚbitÚbitsÚstringú\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|readonly)\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]?z0x[0-9a-fA-F]+z[0-9]+z"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*')r*   r-   ÚbadregexÚrootN)%Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚurlÚaliasesÚ	filenamesÚzephir_keywordsÚzephir_typeÚreÚDOTALLÚ	MULTILINEÚflagsr   r   ÚSingleÚ	Multiliner   r   ÚRegexr   r   r   r   ÚDeclarationÚReservedÚConstantr   ÚBuiltinr   r   ÚFloatÚHexÚIntegerÚDoubleÚtokens© ó    ú5/usr/lib/python3/dist-packages/pygments/lexers/php.pyr   r      s¤  € € € € € ðð ð €DØ
#€CØˆj€GØ�	€Ià9Ð9Ð9€OØ+Ð+Ð+€KàŒI˜œÑ$€Eð �TˆNØ˜œÐ(Ø˜7Ô,Ð-ð"
ð ˆGÐ+Ñ,Ô,ðØ%œ|¨Vð5à�8˜VÐ$ØˆG�F‰OŒOð
ð �D˜&Ð!ð
ð ˜4Ð!3Ð4ØˆGÐ+Ñ,Ô,ð4Ø5=Ð?QðSà˜+Ð'9Ð:Ø˜Ð%ðð "Ð#5ð7ð *¨7Ô+>Ð@RÐSð/ð 18Ô0@ðBð .¨wÔ/?Ð@ðàœ<ð)ð " 4¤:Ð.Ø5°v´|ÐDØ ¤
Ð+Ø˜œÐ'Ø(¨&¬-Ð8Ø(¨&¬-Ð8ð3
ð!+ð +€F€F€FrK   r   c                   ó,   — e Zd ZdZdZdZdgZd„ Zd„ ZdS )r   u5  
    For PsySH console output, such as:

    .. sourcecode:: psysh

        >>> $greeting = function($name): string {
        ...     return "Hello, {$name}";
        ... };
        => Closure($name): string {#2371 â€¦3}
        >>> $greeting('World')
        => "Hello, World"

    .. versionadded:: 2.7
    zPsySH console session for PHPzhttps://psysh.org/Úpsyshc                 ó4   — d|d<   t          j        | fi |¤Ž d S )NTÚstartinline)r   Ú__init__)ÚselfÚoptionss     rL   rQ   zPsyshConsoleLexer.__init__k   s*   € Ø!%ˆ�ÑÝŒ�tÐ'Ð'˜wÐ'Ð'Ð'Ð'Ð'rK   c           	   #   ó   K  — t          di | j        ¤Ž}d}g }t          j        |¦  «        D �]3}|                     ¦   «         }|                     d¦  «        s|                     d¦  «        rH|                     t          |¦  «        dt          j	        |d d…         fgf¦  «         ||dd …         z  }Œ‰| 
                    ¦   «         dk    r@|                     t          |¦  «        dt          j	        dfgf¦  «         ||dd …         z  }Œá|r-t          ||                     |¦  «        ¦  «        E d {V —† d}g }|                     ¦   «         t          j        |fV — �Œ5|r+t          ||                     |¦  «        ¦  «        E d {V —† d S d S )	NÚ z>>> z... r   é   z...é   rJ   )r   rS   r   ÚfinditerÚgroupÚ
startswithÚappendÚlenr   ÚPromptÚrstripr   Úget_tokens_unprocessedÚstartÚOutput)rR   ÚtextÚphplexerÚcurcodeÚ
insertionsÚmatchÚlines          rL   r_   z(PsyshConsoleLexer.get_tokens_unprocessedo   s  è è € ÝÐ+Ð+˜dœlÐ+Ð+ˆØˆØˆ
ÝÔ% dÑ+Ô+ð 	:ñ 	:ˆEØ—;’;‘=”=ˆDØ�Š˜vÑ&Ô&ð :¨$¯/ª/¸&Ñ*AÔ*Að :Ø×!Ò!¥3 w¡<¤<Ø%&­¬¸¸R¸a¸R¼Ð$AÐ#Bð#Dñ Eô Eð Eà˜4   œ8Ñ#��Ø—’‘” %Ò'Ð'Ø×!Ò!¥3 w¡<¤<Ø%&­¬¸Ð$>Ð#?ð#Añ Bô Bð Bà˜4   œ8Ñ#��àð $Ý,Ø" H×$CÒ$CÀGÑ$LÔ$Lñ Nô  Nð Nð Nð Nð Nð Nð Nð Nà �GØ!#�JØ—k’k‘m”m¥W¤^°TÐ9Ð9Ð9Ð9Ñ9Øð 	OÝ$ ZØ%-×%DÒ%DÀWÑ%MÔ%MñOô Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð	Oð 	OrK   N)	r0   r1   r2   r3   r4   r5   r6   rQ   r_   rJ   rK   rL   r   r   X   sT   € € € € € ðð ð +€DØ
€CØˆi€Gð(ð (ð (ðOð Oð Oð Oð OrK   r   c                   ó0  — e Zd ZdZdZdZg d¢Zg d¢ZdgZdZ	dZ
ej        ej        z  ej        z  Zd	ej        d
fdefdefgg dej        df‘de
z   dz    eeeej        eej        ee¦  «        f‘def‘dej        f‘dej        f‘dej        f‘dej        f‘dej        f‘de
z   dz    eeeej        ¦  «        f‘def‘def‘def‘d eee¦  «        df‘d eee¦  «        f‘d eeeee¦  «        d f‘d!e	z   dz    eeeej        ¦  «        f‘d"ef‘d#ej        f‘ e d$¦  «        ‘d%e	z   d&z   ej!        f‘d'e	z   ej!        f‘e	ej        f‘d(e"j#        f‘d)e"j#        f‘d*e"j$        f‘d+e"j%        f‘d,e"j&        f‘d-e"j'        f‘d.ej        f‘d/ej(        f‘d0ej)        d1f‘ e*d2d3¬4¦  «        ej+        j,        fg e*d5d3¬4¦  «        ej        fge	ej-        dfg e d6¦  «        e	ej+        df e.d¦  «        gd0ej)        dfd7ej)        fd8ej/        fd9e
z   d:z   e
z   d;z   ej0        fd< eej0         e1e2d=¬>¦  «        ej0        ¦  «        fd? eej0         e1e2d=¬>¦  «        ej0        ¦  «        fd@ eej0        ej!        ej0        ¦  «        fdAej)        fgdBœZ3dC„ Z4dD„ Z5dE„ Z6dFS )Gr   a;  
    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 ``<?php`` required).  The default
        is ``False``.
    `funcnamehighlighting`
        If given and ``True``, highlight builtin function names
        (default: ``True``).
    `disabledmodules`
        If given, must be a list of module names whose function names
        should not be highlighted. By default all modules are highlighted
        except the special ``'unknown'`` module that includes functions
        that are known to php but are undocumented.

        To get a list of allowed modules have a look into the
        `_php_builtins` module:

        .. sourcecode:: pycon

            >>> 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.
    ÚPHPzhttps://www.php.net/)ÚphpÚphp3Úphp4Úphp5)z*.phpz
*.php[345]z*.incz
text/x-phpz1(?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*z+(?:[_a-z]|[^\x00-\x7f])(?:\w|[^\x00-\x7f])*z	<\?(php)?rj   z[^<]+ú<z\?>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|match)\bz(true|false|null)\bÚmagicconstantsz\$\{\$+z\}z\$+z"(\d+\.\d*|\d*\.\d+)(e[+-]?[0-9]+)?z\d+e[+-]?[0-9]+z0[0-7]+z0x[a-f0-9]+z\d+z0b[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/   rj   rŒ   rr   rp   rq   r&   c                 ó¦  — t          |dd¦  «        | _        t          |ddg¦  «        | _        t          |dd¦  «        | _        d|v r|                     d¦  «        | _        t          ¦   «         | _        | j        rCdd	lm	} | 
                    ¦   «         D ](\  }}|| j        vr| j                             |¦  «         Œ)t          j        | fi |¤Ž d S )
NÚfuncnamehighlightingTÚdisabledmodulesÚunknownrP   Fr�   r   )ÚMODULES)r   r�   r   r�   rP   ÚpopÚsetÚ
_functionsÚpygments.lexers._php_builtinsr’   ÚitemsÚupdater   rQ   )rR   rS   r’   ÚkeyÚvalues        rL   rQ   zPhpLexer.__init__  sö   € Ý$0ØÐ+¨Tñ%3ô %3ˆÔ!å+ØÐ&¨¨ñ 5ô  5ˆÔå'¨°ÀÑFÔFˆÔð ˜WÐ$Ð$Ø&Ÿ{š{¨>Ñ:Ô:ˆDÔõ ™%œ%ˆŒØÔ$ð 	2Ø=Ð=Ð=Ð=Ð=Ð=Ø%Ÿmšm™oœoð 2ð 2‘
��UØ˜dÔ2Ð2Ð2Ø”O×*Ò*¨5Ñ1Ô1Ð1øÝÔ˜DÐ,Ð, GÐ,Ð,Ð,Ð,Ð,rK   c              #   óâ   K  — dg}| j         r|                     d¦  «         t          j        | ||¦  «        D ]6\  }}}|t          j        u r|| j        v r|t          j        |fV — Œ/|||fV — Œ7d S )Nr/   rj   )rP   r[   r   r_   r   r   r•   rD   )rR   rb   ÚstackÚindexÚtokenrš   s         rL   r_   zPhpLexer.get_tokens_unprocessed-  s¡   è è € Ø�ˆØÔð 	 Ø�LŠL˜ÑÔÐåÔ1°$¸¸eÑDÔDð	&ð 	&ÑˆE�5˜%à�œ
Ð"Ð"Ø˜DœOÐ+Ð+Ø¥¤¨uÐ4Ð4Ð4Ð4ØØ˜ Ð%Ð%Ð%Ð%Ð%ð	&ð 	&rK   c                 ób   — t          | d¦  «        rdS d}t          j        d| ¦  «        r|dz  }|S )Nrj   Tg        z
<\?(?!xml)g333333Ó?)r   r:   Úsearch)rb   Úrvs     rL   Úanalyse_textzPhpLexer.analyse_text9  s@   € Ý˜4 Ñ(Ô(ð 	Ø�4ØˆÝŒ9�] DÑ)Ô)ð 	Ø�#‰IˆBØˆ	rK   N)7r0   r1   r2   r3   r4   r5   r6   r7   Ú	mimetypesÚ_ident_innerÚ_ident_nonsr:   Ú
IGNORECASEr;   r<   r=   r   ÚPreprocr   r   r   Ú	Delimiterr   r   r>   r?   ÚDocr   r   Ú	Attributer   rC   r   ÚVariabler   rE   ÚOctrF   rG   ÚBinÚBacktickrH   r
   ÚFunctionÚMagicÚClassr   ÚEscapeÚInterpolr   r	   rI   rQ   r_   r¢   rJ   rK   rL   r   r   ‰   s  € € € € € ðð ð@ €DØ
 €CØ-Ð-Ð-€GØ0Ð0Ð0€IØ�€Ið H€Là@€KàŒM˜BœIÑ%¨¬Ñ4€Eð ˜7œ?¨EÐ2Ø�uÐØ�5ˆMð
ð
1
Ø�W”_ fÐ-ð1
à Ñ,Ð/MÑMØˆX�f˜f fÔ&6¸ÀÔ@PØ! 4ñ)ô )ð*ð1
ð
 �TˆNð1
ð ˜œÐ'ð1
ð ˜œÐ(ð1
ð ˜Ô)Ð*ð1
ð ˜VœZÐ(ð1
ð ˜7Ô,Ð-ð1
ð  Ñ+¨cÑ1ØˆX�h  d¤nÑ5Ô5ð7ð1
ð $ XÐ.ð1
ð  �HÐð!1
ð" ˜{Ð+ð#1
ð$ ˜h˜h w°Ñ5Ô5°{ÐCð%1
ð& & x x°¸Ñ'>Ô'>Ð?ð'1
ð( )ØˆX�g˜t X¨tÑ4Ô4°nðFð)1
ð,  Ñ,¨sÑ2ØˆX�g˜t T¤]Ñ3Ô3ð5ð-1
ð0
!ð #*ð
+ð11
ðF $ WÔ%5Ð6ðG1
ðH ˆGÐ$Ñ%Ô%ðI1
ðJ ˜,Ñ&¨Ñ.°´Ð>ðK1
ðL �lÑ" D¤MÐ2ðM1
ðN ˜4œ:Ð&ðO1
ðP 3°F´LÐAðQ1
ðR   ¤Ð.ðS1
ðT ˜œÐ$ðU1
ðV ˜VœZÐ(ðW1
ðX �V”^Ð$ðY1
ðZ ˜œÐ$ð[1
ð\ +¨F¬MÐ:ð]1
ð^ +¨F¬OÐ<ð_1
ð` �6”= (Ð+ða1
ðh ˆUð :ð CHðIñ Iô Ið Œ]Ô ð	"ð
ð ˆUð =ð ðñ ô ð Œ]ð	ð
ð ˜4œ: vÐ.ð
ð ˆG�LÑ!Ô!Ø˜4œ=¨&Ð1ØˆG�F‰OŒOð
ð �6”= &Ð)Ø˜6œ=Ð)Ø7¸¼ÐGØ�[Ñ  ?Ñ2°[Ñ@À4ÑGØŒ_ðà#ØˆX�f”o u u¨TÀÐ'EÑ'EÔ'EØ”oñ'ô 'ð(ð  ØˆX�f”o u u¨TÀÐ'EÑ'EÔ'EØ”oñ'ô 'ð(ð  ØˆX�f”o t¤}°f´oÑFÔFðHà˜œÐ&ð
ða`ð `€FðD-ð -ð -ð(
&ð 
&ð 
&ðð ð ð ð rK   r   ) r3   r:   Úpygments.lexerr   r   r   r   r   r   r	   r
   r   r   Úpygments.tokenr   r   r   r   r   r   r   r   r   r   Úpygments.utilr   r   r   Ú__all__r   r   r   rJ   rK   rL   ú<module>r¸      sÏ  ððð ð 
€	€	€	ð/ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð(ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (à EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eà
:Ð
:Ð
:€ð?ð ?ð ?ð ?ð ?�*ñ ?ô ?ð ?ðD.Oð .Oð .Oð .Oð .O˜ñ .Oô .Oð .Oðbvð vð vð vð vˆzñ vô vð vð vð vrK   