Ë
    |í¼eð2  ã                   óÎ   — 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y)zÐ
    pygments.lexers.php
    ~~~~~~~~~~~~~~~~~~~

    Lexers for PHP and related languages.

    :copyright: Copyright 2006-2023 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                   ó0  — 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j2                  dfdej4                  fdej6                  fdej:                  fdej<                  fdej@                  fdejB                  fdejD                  fdejF                  fdej                   fgd œZ$y!)"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€OÚ+€Kà�I‰I˜Ÿ™Ñ$€Eð �TˆNØ˜Ÿ™Ð(Ø˜7×,Ñ,Ð-ð"
ñ Ð+Ó,ðØ%Ÿ|™|¨Vð5à�8˜VÐ$Ù�F‹Oð
ð �D˜&Ð!ð
ð ˜4Ð!3Ð4ÙÐ+Ó,ð4Ø5=Ð?QðSà˜+Ð'9Ð:Ø˜Ð%ðð "Ð#5ð7ð *¨7×+>Ñ+>Ð@RÐSð/ð 18×0@Ñ0@ðBð .¨w×/?Ñ/?Ð@ðàŸ<™<ð)ð " 4§:¡:Ð.Ø5°v·|±|ÐDØ §
¡
Ð+Ø˜Ÿ™Ð'Ø(¨&¯-©-Ð8Ø(¨&¯-©-Ð8ð3
ñ!+�FrK   r   c                   ó*   — e Zd ZdZdZdZdgZd„ Zd„ Zy)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                 ó:   — d|d<   t        j                  | fi |¤Ž y )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 �]  }|j	                  «       }|j                  d«      s|j                  d«      r:|j                  t        |«      dt        j                  |d d fgf«       ||dd  z  }Œp|j                  «       dk(  r7|j                  t        |«      dt        j                  dfgf«       ||dd  z  }Œº|r't        ||j                  |«      «      E d {  –—†  d}g }|j                  «       t        j                  |f–— �Œ |r$t        ||j                  |«      «      E d {  –—†  y y 7 ŒU7 Œ­w)	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   sn  è ø€ ÜÑ+˜dŸl™lÑ+ˆØˆØˆ
Ü×%Ñ% dÓ+ó 	:ˆEØ—;‘;“=ˆDØ�‰˜vÔ&¨$¯/©/¸&Ô*AØ×!Ñ!¤3 w£<Ø%&¬¯©¸¸R¸a¸Ð$AÐ#Bð#Dô Eà˜4  ˜8Ñ#‘Ø—‘“ %Ò'Ø×!Ñ!¤3 w£<Ø%&¬¯©¸Ð$>Ð#?ð#Aô Bà˜4  ˜8Ñ#‘áÜ,Ø" H×$CÑ$CÀGÓ$Ló N÷ Nð Nà �GØ!#�JØ—k‘k“m¤W§^¡^°TÐ9Ô9ð!	:ñ" Ü$ ZØ%-×%DÑ%DÀWÓ%MóO÷ Oñ Oð ðNøðOús%   ‚D	E%ÄE!ÄAE%ÅE#ÅE%Å#E%N)	r0   r1   r2   r3   r4   r5   r6   rQ   r_   rJ   rK   rL   r   r   X   s%   „ ñð +€DØ
€CØˆi€Gò(óOrK   r   c                   ó  — 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df‘dej0                  f‘dej0                  f‘dej2                  f‘dej4                  f‘dej2                  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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jB                  d)f‘d*e	z   ejB                  f‘e	ej$                  f‘d+e"jF                  f‘d,e"jF                  f‘d-e"jH                  f‘d.e"jJ                  f‘d/e"jL                  f‘d0e"jN                  f‘d1ej0                  f‘d2ejP                  f‘d3ejR                  d4f‘d5ejB                  df e d
«      g e*d6d7¬8«      ejV                  jX                  fg e*d9d7¬8«      ej>                  fge	ejZ                  dfg e d:«      e	ejV                  df e.d«      gd3ejR                  dfd;ejR                  fd<ej^                  fd=e
z   d>z   e
z   d?z   ej`                  fd@ eej`                   e1e2dA¬B«      ej`                  «      fdC eej`                   e1e2dA¬B«      ej`                  «      fdD eej`                  ejB                  ej`                  «      fdEejR                  fgdFedfdGedHfe	ejf                  f e d
«      gdIedf e d
«      gdJœ
Z4dK„ Z5dL„ Z6dM„ Z7yN)Or   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#\[Ú	attributez#.*?\nr(   z/\*\*/z/\*\*.*?\*/r)   z(->|::)(\s*)(ú)z[~!%^&*+=|:.<>/@-]+z\?z[\[\]{}();,]+z(new)(\s+)(class)\bz(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\$\{Úvariablevariablez\$+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&   z\})Ú__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[${\\]z\]z\(Úattributeparamsz\))
r/   rj   rt   rŽ   rs   rq   rr   r&   ro   r�   c                 ó˜  — t        |dd«      | _        t        |ddg«      | _        t        |dd«      | _        d|v r|j                  d«      | _        t        «       | _        | j                  rHdd	lm	} |j                  «       D ]/  \  }}|| j                  vsŒ| j                  j                  |«       Œ1 t        j                  | fi |¤Ž y )
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ˆÔ!ä+ØÐ&¨¨ó 5ˆÔä'¨°ÀÓFˆÔð ˜WÑ$Ø&Ÿ{™{¨>Ó:ˆDÔô ›%ˆŒØ×$Ò$Ý=Ø%Ÿm™m›oò 2‘
��UØ˜d×2Ñ2Ò2Ø—O‘O×*Ñ*¨5Õ1ð2ô 	×Ñ˜DÑ, GÓ,rK   c              #   ó  K  — dg}| j                   r|j                  d«       t        j                  | ||«      D ]C  \  }}}|t        j
                  u r$|| j                  v r|t        j                  |f–— Œ=|||f–— ŒE y ­w)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Ñ1°$¸¸eÓDò	&ÑˆE�5˜%àœŸ
™
Ñ"Ø˜DŸO™OÑ+Ø¤§¡¨uÐ4Ò4ØØ˜ Ð%Ó%ñ	&ùs   ‚A?Bc                 óZ   — t        | d«      ryd}t        j                  d| «      r|dz  }|S )Nrj   Tg        z
<\?(?!xml)g333333Ó?)r   r:   Úsearch)rb   Úrvs     rL   Úanalyse_textzPhpLexer.analyse_textI  s0   € Ü˜4 Ô(ØØˆÜ�9‰9�] DÔ)Ø�#‰IˆBØˆ	rK   N)8r0   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	   Ú	DecoratorrI   rQ   r_   r¥   rJ   rK   rL   r   r   ‰   sH  „ ñð@ €DØ
 €CÚ-€GÚ0€IØ�€Ið H€Là@€Kà�M‰M˜BŸI™IÑ%¨¯©Ñ4€Eð ˜7Ÿ?™?¨EÐ2Ø�uÐØ�5ˆMð
ð
3
Ø�W—_‘_ fÐ-ð3
à Ñ,Ð/MÑMÙ�f˜f f×&6Ñ&6¸À×@PÑ@PØ! 4ó)ð*ð3
ð
 �TˆNð3
ð �[ +Ð.ð3
ð ˜Ÿ™Ð'ð3
ð ˜Ÿ™Ð(ð3
ð ˜×)Ñ)Ð*ð3
ð ˜VŸZ™ZÐ(ð3
ð ˜7×,Ñ,Ð-ð3
ð  Ñ+¨cÑ1Ù�h  d§n¡nÓ5ð7ð3
ð  $ XÐ.ð!3
ð" �HÐð#3
ð$ ˜{Ð+ð%3
ð& $¡X¨g°t¸WÓ%EÐFð'3
ð( ™h w°Ó5°{ÐCð)3
ð* &¡x°¸Ó'>Ð?ð+3
ð, )Ù�g˜t X¨tÓ4°nðFð-3
ð0  Ñ,¨sÑ2Ù�g˜t T§]¡]Ó3ð5ð13
ð4
!ð #*ð
+ð53
ðJ $ W×%5Ñ%5Ð6ðK3
ñL Ð$Ó%ðM3
ðN �d—m‘mÐ%7Ð8ðO3
ðP �lÑ" D§M¡MÐ2ðQ3
ðR ˜4Ÿ:™:Ð&ðS3
ðT 3°F·L±LÐAðU3
ðV   §¡Ð.ðW3
ðX ˜Ÿ™Ð$ðY3
ðZ ˜VŸZ™ZÐ(ð[3
ð\ �V—^‘^Ð$ð]3
ð^ ˜Ÿ™Ð$ð_3
ð` +¨F¯M©MÐ:ða3
ðb +¨F¯O©OÐ<ðc3
ðd �6—=‘= (Ð+ðe3
ðj �D—M‘M 6Ð*Ù�E‹Nð
ñ ð :ð CHôIð �]‰]× Ñ ð	"ð
ñ ð =ð ôð �]‰]ð	ð
ð ˜4Ÿ:™: vÐ.ð
ñ �LÓ!Ø˜4Ÿ=™=¨&Ð1Ù�F‹Oð
ð �6—=‘= &Ð)Ø˜6Ÿ=™=Ð)Ø7¸¿¹ÐGØ�[Ñ  ?Ñ2°[Ñ@À4ÑGØ�_‰_ðà#Ù�f—o‘o¡u¨TÀÔ'EØ—o‘oó'ð(ð  Ù�f—o‘o¡u¨TÀÔ'EØ—o‘oó'ð(ð  Ù�f—o‘o t§}¡}°f·o±oÓFðHà˜Ÿ™Ð&ð
ð" �K Ð(Ø�KÐ!2Ð3Ø˜4Ÿ>™>Ð*Ù�E‹Nð	
ð �K Ð(Ù�E‹Nð
ñYp€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¼      sb   ðñó 
÷/÷ /÷ /÷(÷ (÷ (ç EÑ Eâ
:€ô?�*ô ?ôD.O˜ô .OôbFˆzõ FrK   