Ë
    òT•j)4  ã                   ó„  — d Z ddlZddlZddlZddlmZ ddlmZ g d¢Z G d„ d«      Z	dd„Z
d	„ Z ej                  d
ej                  «      j                  Zd„ Zd„ Zedk(  rS eej(                  «      dk(  r e e	«       «       yej(                  d   Z ee«      5 Z e e	ee«      «       ddd«       yy# 1 sw Y   yxY w)ú8A lexical analyzer class for simple shell-like syntaxes.é    N)Údeque)ÚStringIO)ÚshlexÚsplitÚquoteÚjoinc                   óf   — e Zd ZdZ	 	 dd„Zed„ «       Zd„ Zdd„Zd„ Z	d„ Z
d	„ Zd
„ Zdd„Zd„ Zd„ Zy)r   r   Nc                 óø  — t        |t        «      rt        |«      }|�|| _        || _        nt
        j                  | _        d | _        || _        |rd | _        nd| _        d| _	        d| _
        | j                  r| xj                  dz  c_
        d| _        d| _        d| _        d| _        d	| _        d
| _        t#        «       | _        d| _        d| _        d| _        t#        «       | _        d | _        |sd}n|du rd}|| _        |rst#        «       | _        | xj                  dz  c_
        | j                  j5                  t6        j9                  |«      «      }| j                  j;                  |«      | _
        y y )NÚ ú#Ú?abcdfeghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_u|   ÃŸÃ Ã¡Ã¢Ã£Ã¤Ã¥Ã¦Ã§Ã¨Ã©ÃªÃ«Ã¬Ã­Ã®Ã¯Ã°Ã±Ã²Ã³Ã´ÃµÃ¶Ã¸Ã¹ÃºÃ»Ã¼Ã½Ã¾Ã¿Ã€Ã�Ã‚ÃƒÃ„Ã…Ã†Ã‡ÃˆÃ‰ÃŠÃ‹ÃŒÃ�ÃŽÃ�Ã�Ã‘Ã’Ã“Ã”Ã•Ã–Ã˜Ã™ÃšÃ›ÃœÃ�Ãžz 	
Fz'"ú\ú"ú é   r   Tz();<>|&z~-./*?=)Ú
isinstanceÚstrr   ÚinstreamÚinfileÚsysÚstdinÚposixÚeofÚ
commentersÚ	wordcharsÚ
whitespaceÚwhitespace_splitÚquotesÚescapeÚescapedquotesÚstater   ÚpushbackÚlinenoÚdebugÚtokenÚ	filestackÚsourceÚ_punctuation_charsÚ_pushback_charsÚ	maketransÚdictÚfromkeysÚ	translate)Úselfr   r   r   Úpunctuation_charsÚts         ú/usr/lib/python3.12/shlex.pyÚ__init__zshlex.__init__   sN  € ä�h¤Ô$Ü Ó)ˆHØÐØ$ˆDŒMØ ˆD�KäŸI™IˆDŒMØˆDŒKØˆŒ
ÙØˆD�HàˆDŒHØˆŒðBˆŒà�:Š:Ø�NŠNð  ^ñ _�Nà#ˆŒØ %ˆÔØˆŒØˆŒØ ˆÔØˆŒ
Ü›ˆŒØˆŒØˆŒ
ØˆŒ
Ü›ˆŒØˆŒÙ Ø "ÑØ $Ñ&Ø )ÐØ"3ˆÔÙä#(£7ˆDÔ à�NŠN˜iÑ'�Nà—‘×(Ñ(¬¯©Ð7HÓ)IÓJˆAØ!Ÿ^™^×5Ñ5°aÓ8ˆD�Nð ó    c                 ó   — | j                   S ©N)r)   ©r/   s    r2   r0   zshlex.punctuation_charsD   s   € à×&Ñ&Ð&r4   c                 ó†   — | j                   dk\  rt        dt        |«      z   «       | j                  j	                  |«       y)z:Push a token onto the stack popped by the get_token methodr   zshlex: pushing token N)r%   ÚprintÚreprr#   Ú
appendleft)r/   Útoks     r2   Ú
push_tokenzshlex.push_tokenH   s1   € à�:‰:˜Š?ÜÐ)¬D°«IÑ5Ô6Ø�‰× Ñ  Õ%r4   c                 ó\  — t        |t        «      rt        |«      }| j                  j	                  | j
                  | j                  | j                  f«       || _        || _        d| _        | j                  r4|�t        d| j
                  ›�«       yt        d| j                  ›�«       yy)z9Push an input source onto the lexer's input source stack.r   Nzshlex: pushing to file zshlex: pushing to stream )
r   r   r   r'   r;   r   r   r$   r%   r9   )r/   Ú	newstreamÚnewfiles      r2   Úpush_sourcezshlex.push_sourceN   s€   € ä�i¤Ô%Ü  Ó+ˆIØ�‰×!Ñ! 4§;¡;°·±¸t¿{¹{Ð"KÔLØˆŒØ!ˆŒØˆŒØ�:Š:ØÐ"Ý°T·[²[ÐBÕCå°t·}²}ÐFÕGð	 r4   c                 ó   — | j                   j                  «        | j                  j                  «       \  | _        | _         | _        | j                  r$t        d| j                   | j
                  fz  «       d| _        y)zPop the input source stack.zshlex: popping to %s, line %dr   N)	r   Úcloser'   Úpopleftr   r$   r%   r9   r"   r7   s    r2   Ú
pop_sourcezshlex.pop_source\   s_   € à�‰×ÑÔØ48·N±N×4JÑ4JÓ4LÑ1ˆŒ�d”m T¤[Ø�:Š:ÜÐ1Ø—]‘] D§K¡KÐ0ñ1ô 2àˆ�
r4   c                 óÚ  — | j                   rB| j                   j                  «       }| j                  dk\  rt        dt	        |«      z   «       |S | j                  «       }| j                  �g|| j                  k(  rX| j                  | j                  «       «      }|r|\  }}| j                  ||«       | j                  «       }|| j                  k(  rŒX|| j                  k(  rH| j                  s| j                  S | j                  «        | j                  «       }|| j                  k(  rŒH| j                  dk\  r3|| j                  k7  rt        dt	        |«      z   «       |S t        d«       |S )zBGet a token from the input stream (or from stack if it's nonempty)r   zshlex: popping token zshlex: token=zshlex: token=EOF)r#   rD   r%   r9   r:   Ú
read_tokenr(   Ú
sourcehookrA   Ú	get_tokenr   r'   rE   )r/   r<   ÚrawÚspecr@   r?   s         r2   rI   zshlex.get_tokene   s+  € à�=Š=Ø—-‘-×'Ñ'Ó)ˆCØ�z‰z˜QŠÜÐ-´°S³	Ñ9Ô:ØˆJà�o‰oÓˆà�;‰;Ð"Ø˜Ÿ™Ò$Ø—‘ t§¡Ó'8Ó9�ÙØ+/Ñ(�W˜iØ×$Ñ$ Y°Ô8Ø—n‘nÓ&�ð ˜Ÿ™Ó$ð �T—X‘XŠoØ—>’>Ø—x‘x�à—‘Ô!Ø—n‘nÓ&�ð �T—X‘X‹oð �:‰:˜Š?Ø�d—h‘hŠÜ�o¬¨S«	Ñ1Ô2ð ˆ
ô Ð(Ô)Øˆ
r4   c                 ó�  — d}d}	 | j                   r'| j                  r| j                  j                  «       }n| j                  j	                  d«      }|dk(  r| xj
                  dz  c_        | j                  dk\  rt        d| j                  ›d|›�«       | j                  €	d	| _	        �n<| j                  dk(  �r\|s	d | _        �n!|| j                  v r8| j                  d
k\  rt        d«       | j                  s| j                  r|r�nÝ�Œ	|| j                  v r1| j                  j                  «        | xj
                  dz  c_        �nš| j                  r|| j                  v rd}|| _        �nu|| j                  v r|| _	        d| _        �nW|| j                   v r|| _	        d| _        �n9|| j                   v r| j                  s|| _	        || _        �n| j"                  r|| _	        d| _        �nó|| _	        | j                  s| j                  r|r�nÒ�Œ| j                  | j                   v rÉd}|s%| j                  d
k\  rt        d«       t%        d«      ‚|| j                  k(  r3| j                  s| xj                  |z  c_	        d| _        �nVd| _        �nK| j                  r;|| j                  v r-| j                  | j&                  v r| j                  }|| _        �n| xj                  |z  c_	        �ní| j                  | j                  v r†|s%| j                  d
k\  rt        d«       t%        d«      ‚|| j                   v r3|| j                  k7  r$||k7  r| xj                  | j                  z  c_	        | xj                  |z  c_	        || _        �nO| j                  dv �r@|s	d | _        �n7|| j                  v r?| j                  d
k\  rt        d«       d| _        | j                  s| j                  r|r�nì�Œú|| j                  v ra| j                  j                  «        | xj
                  dz  c_        | j                  �ržd| _        | j                  s| j                  r|r�n}�Œi| j                  dk(  rW|| j                   v r| xj                  |z  c_	        �nE|| j                  vr| j                  j)                  |«       d| _        �n| j                  r|| j                   v r|| _        nñ| j                  r|| j                  v r
d}|| _        nÍ|| j                  v s(|| j                   v s| j"                  r$|| j                   vr| xj                  |z  c_	        n�| j                   r| j                  j)                  |«       n| j*                  j-                  |«       | j                  d
k\  rt        d«       d| _        | j                  s| j                  r|rn�Œâ�Œã| j                  }d	| _	        | j                  r	|s|d	k(  rd }| j                  dkD  r&|rt        dt/        |«      z   «       |S t        d«       |S )NFr   Tr   ú
é   zshlex: in state z I see character: r   é   z+shlex: I see whitespace in whitespace stateÚaÚcz shlex: I see EOF in quotes statezNo closing quotationz shlex: I see EOF in escape statezNo escaped character)rP   rQ   z%shlex: I see whitespace in word statez&shlex: I see punctuation in word statezshlex: raw token=zshlex: raw token=EOF)r0   r*   Úpopr   Úreadr$   r%   r9   r"   r&   r   r   r   Úreadliner    r   r   r   Ú
ValueErrorr!   Úappendr#   r;   r:   )r/   ÚquotedÚescapedstateÚnextcharÚresults        r2   rG   zshlex.read_token…   s	  € ØˆØˆØØ×%Ò%¨$×*>Ò*>Ø×/Ñ/×3Ñ3Ó5‘àŸ=™=×-Ñ-¨aÓ0�Ø˜4ÒØ—’˜qÑ •Ø�z‰z˜QŠÝÀ$Ç*Ã*ÙBJðLô Mà�z‰zÐ!Ø�”
ÙØ—‘˜sÓ"ÙØ!%�D”JÙØ §¡Ñ0Ø—z‘z Q’ÜÐKÔLØ—z’z d§j¢j±VÙá Ø §¡Ñ0Ø—M‘M×*Ñ*Ô,Ø—K’K 1Ñ$—KØ—Z’Z H°·±Ñ$;Ø#&�LØ!)�D–JØ §¡Ñ/Ø!)�D”JØ!$�D–JØ ×!7Ñ!7Ñ7Ø!)�D”JØ!$�D–JØ §¡Ñ,ØŸ:š:Ø%-˜œ
Ø!)�D–JØ×*Ò*Ø!)�D”JØ!$�D–Jà!)�D”JØ—z’z d§j¢j±VÙá Ø—‘˜tŸ{™{Ñ*Ø�ÙØ—z‘z Q’ÜÐ@ÔAä$Ð%;Ó<Ð<Ø˜tŸz™zÒ)ØŸ:š:ØŸ
š
 hÑ.�
Ø%(˜œ
Ùà%(˜ž
Ø—j’j X°·±Ñ%<ÀÇÁØ×+Ñ+ñB,à#'§:¡:�LØ!)�D–Jà—J’J (Ñ*—JØ—‘˜tŸ{™{Ñ*ÙØ—z‘z Q’ÜÐ@ÔAä$Ð%;Ó<Ð<ð ! D§K¡KÑ/Ø  D§J¡JÒ.°8¸|Ò3KØ—J’J $§*¡*Ñ,•JØ—
’
˜hÑ&•
Ø)�–
Ø—‘˜zÒ)ÙØ!%�D”JÙØ §¡Ñ0Ø—z‘z Q’ÜÐEÔFØ!$�D”JØ—z’z d§j¢j±VÙá Ø §¡Ñ0Ø—M‘M×*Ñ*Ô,Ø—K’K 1Ñ$•KØ—z“zØ%(˜œ
ØŸ:š:¨$¯*ª*¹Ù!á$Ø—Z‘Z 3Ò&Ø 4×#9Ñ#9Ñ9ØŸ
š
 hÑ.Ÿ
à#¨4¯?©?Ñ:Ø ×0Ñ0×7Ñ7¸ÔAØ%(˜œ
ÙØ—Z’Z H°·±Ñ$;Ø!)�D•JØ—Z’Z H°·±Ñ$;Ø#&�LØ!)�D•JØ $§.¡.Ñ0°HÀÇÁÑ4KØ×/Ò/Ø"¨$×*@Ñ*@Ñ@Ø—J’J (Ñ*–Jà×-Ò-Ø×,Ñ,×3Ñ3°HÕ=àŸ™×0Ñ0°Ô:Ø—z‘z Q’ÜÐFÔGØ!$�D”JØ—z’z d§j¢j±VØá ñG ðH —‘ˆØˆŒ
Ø�:Š:™f¨°2ªØˆFØ�:‰:˜Š>ÙÜÐ)¬D°«LÑ8Ô9ð ˆô Ð,Ô-Øˆr4   c                 ó8  — |d   dk(  r|dd }t        | j                  t        «      rft        j                  j                  |«      sGt        j                  j                  t        j                  j                  | j                  «      |«      }|t        |d«      fS )z(Hook called on a filename to be sourced.r   r   r   éÿÿÿÿÚr)	r   r   r   ÚosÚpathÚisabsr	   ÚdirnameÚopen)r/   r@   s     r2   rH   zshlex.sourcehook  sm   € à�1‰:˜ÒØ˜a �mˆGä�d—k‘k¤3Ô'´·±·±¸gÔ0FÜ—g‘g—l‘l¤2§7¡7§?¡?°4·;±;Ó#?ÀÓIˆGØœ˜g sÓ+Ð,Ð,r4   c                 óH   — |€| j                   }|€| j                  }d||fz  S )z<Emit a C-compiler-like, Emacs-friendly error-message leader.z"%s", line %d: )r   r$   )r/   r   r$   s      r2   Úerror_leaderzshlex.error_leader   s.   € àˆ>Ø—[‘[ˆFØˆ>Ø—[‘[ˆFØ" f¨fÐ%5Ñ5Ð5r4   c                 ó   — | S r6   © r7   s    r2   Ú__iter__zshlex.__iter__(  s   € Øˆr4   c                 óP   — | j                  «       }|| j                  k(  rt        ‚|S r6   )rI   r   ÚStopIteration)r/   r&   s     r2   Ú__next__zshlex.__next__+  s%   € Ø—‘Ó ˆØ�D—H‘HÒÜÐØˆr4   )NNFFr6   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r3   Úpropertyr0   r=   rA   rE   rI   rG   rH   rd   rg   rj   rf   r4   r2   r   r      sV   „ Ù>Ø9>Ø#(ó-9ð^ ñ'ó ð'ò&óHòòò@Pòd-ó6òór4   r   c                 ól   — | €t        d«      ‚t        | |¬«      }d|_        |sd|_        t	        |«      S )z-Split the string *s* using shell-like syntax.zs argument must not be None)r   Tr   )rU   r   r   r   Úlist)ÚsÚcommentsr   Úlexs       r2   r   r   1  s;   € à€yÜÐ6Ó7Ð7Ü
�˜Ô
€CØ€CÔÙØˆŒÜ�‹9Ðr4   c                 ó2   — dj                  d„ | D «       «      S )z3Return a shell-escaped string from *split_command*.r   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr6   )r   )Ú.0Úargs     r2   ú	<genexpr>zjoin.<locals>.<genexpr>>  s   è ø€ Ò8 3”E˜#—JÑ8ùs   ‚)r	   )Úsplit_commands    r2   r	   r	   <  s   € à�8‰8Ñ8¨-Ô8Ó8Ð8r4   z[^\w@%+=:,./-]c                 óR   — | syt        | «      €| S d| j                  dd«      z   dz   S )z1Return a shell-escaped version of the string *s*.z''ú'z'"'"')Ú_find_unsafeÚreplace)rr   s    r2   r   r   C  s4   € áØÜ�AƒÐØˆð �—‘˜3 	Ó*Ñ*¨SÑ0Ð0r4   c                 ó~   — | j                  «       x}r+t        dt        |«      z   «       | j                  «       x}rŒ*y y )NzToken: )rI   r9   r:   )ÚlexerÚtts     r2   Ú_print_tokensr‚   O  s9   € Ø—‘Ó!Ð
!ˆ"Ð
!Üˆiœ$˜r›(Ñ"Ô#ð —‘Ó!Ð
!ˆ"Ó
!r4   Ú__main__r   )FT)rn   r^   Úrer   Úcollectionsr   Úior   Ú__all__r   r   r	   ÚcompileÚASCIIÚsearchr}   r   r‚   rk   ÚlenÚargvÚfnrb   Úfrf   r4   r2   ú<module>r�      sÅ   ðÙ >ó 
Û 	Û 
Ý å â
-€÷\ñ \ó|ò9ð
 ˆr�z‰zÐ+¨R¯X©XÓ6×=Ñ=€ò	1ò$ð ˆzÒÙ
ˆ3�8‰8ƒ}˜ÒÙ‘e“gÕà�X‰X�a‰[ˆÙ�"‹Xð 	(˜Ù™%  2›,Ô'÷	(ð 	(ð ÷
	(ð 	(ús   ÂB6Â6B?