
    ,h3                         d Z ddlZddlZddlmZ 	 ddlmZ 	 e  G d d      Zy# e$ r	 ddlmZ Y w xY w# e	$ r e
ZY %w xY w)8A lexical analyzer class for simple shell-like syntaxes.    N)deque)StringIOc                   Z    e Zd ZdZ	 	 ddZd ZddZd Zd Zd Z	d	 Z
dd
Zd Zd ZeZy)shlexr   Nc                    t        |t              rt        |      }||| _        || _        nt
        j                  | _        d | _        || _        |rd | _        nd| _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d	| _        t#               | _        d
| _        d| _        d| _        t#               | _        d | _        |sd}n|du rd}|| _        |rrt#               | _        | xj                  dz  c_
        | j                  j5                  t6        j9                  |            }| j                  j;                  |      | _
        d | _        d| _        y )N #?abcdfeghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_z 	
Fz'"\"    r   Tz();<>|&z~-./*?=) 
isinstance
basestringr   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last_wordbreak_pos
wordbreaks)selfr   r   r   r&   ts         V/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/argcomplete/my_shlex.py__init__zshlex.__init__"   sB    h
+)H$DM DKIIDMDK
DHDHB $ % 


  "$& )!2#(7D NNi'N((7H)IJA!^^55a8DN #'    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     r0   
push_tokenzshlex.push_tokenW   s1    ::?)DI56  %r2   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$   r6   r   r   r!   r"   r4   )r.   	newstreamnewfiles      r0   push_sourcezshlex.push_source]   s     i, +I!!4;;t{{"KL!::"T[[BCt}}FG	 r2   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"   r4   r   r.   s    r0   
pop_sourcezshlex.pop_sourcel   s_    48NN4J4J4L1dmT[::1]]DKK01 2
r2   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    r?   r"   r4   r5   
read_tokenr%   
sourcehookr<   	get_tokenr   r$   rA   )r.   r7   rawspecr;   r:   s         r0   rE   zshlex.get_tokenu   s+   ==--'')CzzQ-S	9:Joo;;"$t'89+/(Wi$$Y8nn& $ TXXo>>xx!nn& TXXo ::?dhhoS	12 
 ()
r2   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	| _	        nZ| 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}|| _        n|| j                  v r|| _	        d| _        nu|| j                   v r|| _	        d| _        nW|| j                   v r| j                  s|| _	        || _        n-| 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(  r3| j                  s| xj                  |z  c_	        d| _        ntd| _        ni| 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_	        || _        nm| j                  dv r^|s	d | _        nU|| 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                  rd| _        | j                  s| j                  r|rni| j                  r|| j                   v r	|| _        nt| j                  r|| j                  v rd}|| _        nO| j                  dk(  rV|| j                   v r| xj                  |z  c_	        n|| j                  vr| j                  j)                  |       d| _        n|| j                  v s|| j                   v s| j"                  rA| xj                  |z  c_	        || j*                  v rt-        | j                        dz
  | _        n| j                   r| j                  j)                  |       n| j0                  j3                  |       | 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t5        |      z          nt        d       | j                  dk(  r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)rL   rM   z%shlex: I see whitespace in word statez&shlex: I see punctuation in word statezshlex: raw token=zshlex: raw token=EOF)r&   r'   popr   readr!   r"   r4   r   r#   r   r   r   readliner   r   r   r   
ValueErrorr   appendr-   lenr,   r    r6   r5   )r.   quotedescapedstatenextcharresults        r0   rC   zshlex.read_token   s'   %%$*>*>//335==--a04q zzQ$**BJL Mzz!
s"!%DJ0zzQKLzzdjjV 0MM**,KK1$KZZH$;#&L!)DJ/!)DJ!$DJ!7!77!)DJ!$DJ,::%-
!)DJ**!)DJ!$DJ!)DJzzdjjV t{{*zzQ@A$%;<<tzz)::

h.
%(
%(
jjX%<++B,#'::L!)DJJJ(*Jt{{*zzQ@A$%;<< !DKK/ DJJ.8|3KJJ$**,J

h&
)
z)!%DJ0zzQEF!$DJzzdjjV 0MM**,KK1$Kzz%(
::$**!$ZZH$;!)DJZZH$;#&L!)DJZZ3&4#9#99

h.
#4??: 0077A%(
$..0H4K..JJ(*J4??225djj/A2E/--,,33H=00:zzQFG!$DJzzdjjV K L 
::f2F::>)DL89,-::&*D#r2   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isabsjoindirnameopen)r.   r;   s     r0   rD   zshlex.sourcehook,  so    1:amG dkk:.rww}}W7Mggll277??4;;#?IGgs+,,r2   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      r0   error_leaderzshlex.error_leader6  s.    >[[F>[[F"ff%555r2   c                     | S N r@   s    r0   __iter__zshlex.__iter__>  s    r2   c                 P    | j                         }|| j                  k(  rt        |S rd   )rE   r   StopIteration)r.   r#   s     r0   __next__zshlex.__next__A  s%     DHHr2   )NNFFrd   )NN)__name__
__module____qualname____doc__r1   r8   r<   rA   rE   rC   rD   rb   rf   ri   nextre   r2   r0   r   r       sI    >9>#(3j&H@Un-6 Dr2   r   )rm   r[   r   collectionsr   r   ImportErrorior   	NameErrorstrr   re   r2   r0   <module>rt      sZ    ? 
 
 !
h h    Js   & 7 44A A