
    g3                         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-2025 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                   4   e Zd ZdZdZdZdgZdgZd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j4                  dfdej6                  fdej8                  fdej<                  fdej>                  fde jB                  fde jD                  fde jF                  fdejH                  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.
    Zephirzhttp://zephir-lang.com/zephirz*.zepz2.0)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version_added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     H/var/www/openai/venv/lib/python3.12/site-packages/pygments/lexers/php.pyr   r      s    D
#CjG	IM9O+KII$E TN(7,,-"
 +,%||V58V$FO
 D&!
 4!34+,45=?QS+'9:% "#57 *7+>+>@RS/ 180@0@B .w/?/?@<<) "4::.5v||D

+'(&--8(&--83
!+FrL   r   c                   .    e Zd ZdZdZdZdgZdZd Zd Z	y)	r   u  
    For PsySH console output, such as:

    .. sourcecode:: psysh

        >>> $greeting = function($name): string {
        ...     return "Hello, {$name}";
        ... };
        => Closure($name): string {#2371 …3}
        >>> $greeting('World')
        => "Hello, World"
    zPsySH console session for PHPzhttps://psysh.org/psyshz2.7c                 :    d|d<   t        j                  | fi | y )NTstartinline)r   __init__)selfoptionss     rM   rR   zPsyshConsoleLexer.__init__i   s    !%t'w'rL   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...   rK   )r   rT   r   finditergroup
startswithappendlenr   Promptrstripr   get_tokens_unprocessedstartOutput)rS   textphplexercurcode
insertionsmatchlines          rM   r`   z(PsyshConsoleLexer.get_tokens_unprocessedm   si    +dll+
%%d+E;;=Dv&$//&*A!!3w<%&Ra$A#B#D E48#%'!!3w<%&$>#?#A B48#,"H$C$CG$L N N N G!#JkkmW^^T99! ," $Z%-%D%DW%MO O O NOs%   D	E%E!AE%E#E%#E%N)
r0   r1   r2   r3   r4   r5   r6   r8   rR   r`   rK   rL   rM   r   r   W   s*     +D
CiGM(OrL   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
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j2                  fdej2                  fdej4                  fdej6                  fdej4                  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jD                  d*fd+e
z   ejD                  fe
ej&                  fd,e#jH                  fd-e#jH                  fd.e#jJ                  fd/e#jL                  fd0e#jN                  fd1e#jP                  fd2ej2                  fd3ejR                  fd4ejT                  d5fd6ejD                  df e!d      g e+d7d89      ejX                  jZ                  fg e+d:d89      ej@                  fge
ej\                  dfg e!d;      e
ejX                  df e/d      gd4ejT                  dfd<ejT                  fd=ej`                  fd>ez   d?z   ez   d@z   ejb                  fdA eejb                   e2e3dBC      ejb                        fdD eejb                   e2e3dBC      ejb                        fdE eejb                  ejD                  ejb                        fdFejT                  fgdGedfdHedIfe
ejh                  f e!d      gdJedf e!d      gdK
Z5dL Z6dM Z7dN Z8yO)Pr   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-phprV   z1(?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*z+(?:[_a-z]|[^\x00-\x7f])(?:\w|[^\x00-\x7f])*z	<\?(php)?rk   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/   rk   ru   r   rt   rr   rs   r&   rp   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unknownrQ   Fr   r   )MODULES)r   r   r   r   rQ   popset
_functionspygments.lexers._php_builtinsr   itemsupdater   rR   )rS   rT   r   keyvalues        rM   rR   zPhpLexer.__init__(  s    $0+T%3!+& 5'F W$&{{>:D %$$=%mmo
Ud222OO**51 . 	D,G,rL   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/   rk   )rQ   r\   r   r`   r   r   r   rE   )rS   rc   stackindextokenr   s         rM   r`   zPhpLexer.get_tokens_unprocessed<  s~     LL11$eD  E5%

"DOO+u44%% Es   A?Bc                 Z    t        | d      ryd}t        j                  d|       r|dz  }|S )Nrk   Tg        z
<\?(?!xml)g333333?)r   r;   search)rc   rvs     rM   analyse_textzPhpLexer.analyse_textH  s0    4(99]D)#IB	rL   N)9r0   r1   r2   r3   r4   r5   r6   r7   	mimetypesr8   _ident_inner_ident_nonsr;   
IGNORECASEr<   r=   r>   r   Preprocr   r   r   	Delimiterr   r   r?   r@   Docr   r   	Attributer   rD   r   Variabler   rF   OctrG   rH   BinBacktickrI   r
   FunctionMagicClassr   EscapeInterpolr   r	   	DecoratorrJ   rR   r`   r   rK   rL   rM   r   r      sM   @ D
 C-G0IIM HL@KMMBII%4E 7??E2u5M

3
W__f-3
,/MMfff&6&6@P@P!4)*3

 TN3
 [+.3
 '3
 (3
 ))*3
 VZZ(3
 7,,-3
 +c1hdnn573
  $X.!3
" H#3
$ {+%3
& $XgtW%EF'3
( hw5{C)3
* &x'>?+3
, )gtXt4nF-3
0 ,s2gtT]]3513
4
! #*
+53
J $W%5%56K3
L $%M3
N dmm%78O3
P l"DMM2Q3
R 4::&S3
T 3FLLAU3
V  .W3
X $Y3
Z VZZ([3
\ V^^$]3
^ $_3
` +FMM:a3
b +FOO<c3
d 6==(+e3
j DMM6*EN
  : CHI ]]  	"
  =  ]]	
 4::v.
 L!4==&1FO
 6==&)6==)7G[ ?2[@4G__#foouT'Eoo'(  foouT'Eoo'(  foot}}fooFH&
" K(K!234>>*EN	
 K(EN
YpFd-(
&rL   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   rK   rL   rM   <module>r      sb    
/ / /( ( ( E E
:>* >B-O -O`Gz GrL   