
    d4                        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    rq eej                  dk    r e e	                       dS ej        d         Z ee          5 Z e e	ee                     ddd           dS # 1 swxY w Y   dS dS )8A lexical analyzer class for simple shell-like syntaxes.    N)deque)StringIO)shlexsplitquotejoinc                   n    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dS )r   r   NFc                    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}|| _        |rvt#                      | _        | xj
        dz  c_
        | j
                            t6                              |                    }| j
                            |          | _
        d S d S )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           /croot/python-split_1694437901252/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/python3.11/shlex.py__init__zshlex.__init__   s   h$$ 	*))H$DM DKKIDMDK
 	DHHDHB: 	_NN  ^ _NN# % 


  	* "$&& )"3 	9#(77D NNi'NN((7H)I)IJJA!^55a88DNNN	9 	9    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                            |           dS )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   sC    :??)DII5666  %%%%%r4   c                 F   t          |t                    rt          |          }| j                            | j        | j        | j        f           || _        || _        d| _        | j        r4|t          d| j                   dS t          d| j                   dS dS )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LL!: 	H"T[[BCCCCCt}}FGGGGG		H 	Hr4   c                     | j                                          | j                                        \  | _        | _         | _        | j        rt          d| j         | j        fz             d| _        dS )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\   sq    48N4J4J4L4L1dmT[: 	21]DK01 2 2 2


r4   c                    | j         rE| j                                         }| j        dk    rt          dt	          |          z              |S |                                 }| j        n|| j        k    rc|                     |                                           }|r|\  }}|                     ||           | 	                                }|| j        k    c|| j
        k    rA| j        s| j
        S |                                  | 	                                }|| j
        k    A| j        dk    r:|| j
        k    r t          dt	          |          z              nt          d           |S )zBGet a token from the input stream (or from stack if it's nonempty)r   zshlex: popping token Nz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zQ-S		9:::Joo;"$$t'8'899 9+/(Wi$$Y888nn&& $$ TXoo> 'x!!!nn&& TXoo :??dhoS		12222()))
r4   c                 "
   d}d}	 | j         r!| j        r| j                                        }n| 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 r-| j        d
k    rt          d           | j	        s	| j        r|rnՌ|| j        v r+| j                                         | xj        dz  c_        n| j        r|| j        v rd}|| _        n|| j        v r|| _	        d| _        nj|| j         v r|| _	        d| _        nQ|| j        v r| j        s|| _	        || _        n1| j        r|| _	        d| _        n|| _	        | j	        s	| j        r|rn| j        | j        v rd}|s)| j        d
k    rt          d           t%          d          || j        k    r)| j        s| xj	        |z  c_	        d| _        nd| _        n| j        r'|| j        v r| j        | j        v r| j        }|| _        nb| xj	        |z  c_	        nP| j        | j        v rs|s)| j        d
k    rt          d           t%          d          || j        v r&|| j        k    r||k    r| xj	        | j        z  c_	        | xj	        |z  c_	        || _        n| j        dv r|s	d | _        n|| j
        v r5| j        d
k    rt          d           d| _        | j	        s	| j        r|rn1|| j        v rM| j                                         | xj        dz  c_        | j        rd| _        | j	        s	| j        r|rn,n&| j        dk    rF|| j         v r| xj	        |z  c_	        n || j
        vr| 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_	        np| j         r| j                            |           n| 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k    r1|r t          dt/          |          z              n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"   C	!% 1$*> 1/3355=--a004q zQ$***BJ(L M M Mz!
s"" "!!%DJ00zQKLLLz !dj !V ! 00M**,,,KK1$KKKZ !H$;$;#&L!)DJJ//!)DJ!$DJJ!777!)DJ!$DJJ,,: .%-
!)DJJ* !!)DJ!$DJJ!)DJz !dj !V ! t{** =zQ@AAA$%;<<<tz)): )

h.

%(
%(

j +X%<%<+B, B,#':L!)DJJJJ(*JJJt{** =zQ@AAA$%;<<< !DK// DJ..8|3K3KJJ$*,JJ

h&

)

z)) 0!!%DJ00zQEFFF!$DJz !dj !V ! 00M**,,,KK1$KKz %%(
: %$* % %!$% Z3&&4#999

h.


#4?:: 077AAA%(
Z !H$;$;!)DJJZ !H$;$;#&L!)DJJ$.00H4K4K/ 5L"$*@@@JJ(*JJJ- ;,33H====00:::zQFGGG!$DJz !dj !V ! GC	!H 
: 	f 	2F:>> .)DLL89999,---r4   c                 H   |d         dk    r
|dd         }t          | j        t                    rat          j                            |          sBt          j                            t          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  s    1:admGdk3'' 	Jg0F0F 	Jgll27??4;#?#?IIGgs++,,r4   c                 4    || j         }|| j        }d||fz  S )z<Emit a C-compiler-like, Emacs-friendly error-message leader.Nz"%s", line %d: )r   r$   )r/   r   r$   s      r2   error_leaderzshlex.error_leader   s*    >[F>[F"ff%555r4   c                     | S r6    r7   s    r2   __iter__zshlex.__iter__(  s    r4   c                 R    |                                  }|| j        k    rt          |S r6   )rI   r   StopIteration)r/   r&   s     r2   __next__zshlex.__next__+  s)      DHr4   )NNFFr6   )NN)__name__
__module____qualname____doc__r3   propertyr0   r=   rA   rE   rI   rG   rH   rd   rg   rj   rf   r4   r2   r   r      s        >>9>#(-9 -9 -9 -9^ ' ' X'& & &H H H H    @P P Pd- - -6 6 6 6      r4   r   FTc                     | !ddl }|                    dt          d           t          | |          }d|_        |sd|_        t          |          S )	z-Split the string *s* using shell-like syntax.Nr   z4Passing None for 's' to shlex.split() is deprecated.rO   )
stacklevel)r   Tr   )warningswarnDeprecationWarningr   r   r   list)scommentsr   rr   lexs        r2   r   r   1  sh    yL(Q 	 	8 	8 	8



CC 99r4   c                 @    d                     d | D                       S )z3Return a shell-escaped string from *split_command*.r   c              3   4   K   | ]}t          |          V  d S r6   )r   ).0args     r2   	<genexpr>zjoin.<locals>.<genexpr>@  s(      883E#JJ888888r4   )r	   )split_commands    r2   r	   r	   >  s#    8888-888888r4   z[^\w@%+=:,./-]c                 d    | sdS t          |           | S d|                     dd          z   dz   S )z1Return a shell-escaped version of the string *s*.z''N'z'"'"')_find_unsafereplace)rv   s    r2   r   r   E  s@     tA 3	***S00r4   c                 t    	 |                                  }|sd S t          dt          |          z              8)Nr   zToken: )rI   r9   r:   )lexertts     r2   _print_tokensr   Q  sA    $__ 	E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 9 9
 rz+RX66=	1 	1 	1$ $ $ z
s38}}eeggXa[T"XX 	(M%%2,,'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( s   B>>CC