a DOg4@sddlZddlZddlZddlmZddlmZgdZGdddZdd d Z d d Z e d ej j ZddZddZedkreejdkreen@ejdZeeZeeeeWdn1s0YdS)N)deque)StringIO)shlexsplitquotejoinc@sneZdZdddZeddZddZdd d Zd d Zd dZ ddZ ddZ dddZ ddZ ddZdS)rNFcCst|trt|}|dur(||_||_ntj|_d|_||_|rHd|_nd|_d|_ d|_ |jrn|j d7_ d|_ d|_ d|_ d|_d |_d |_t|_d |_d |_d|_t|_d|_|sd}n |d urd}||_|rt|_|j d7_ |j t|}|j ||_ dS)N#Z?abcdfeghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_u|ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞz Fz'"\" rTz();<>|&z~-./*?=) isinstancestrrinstreaminfilesysstdinposixeof commenters wordchars whitespacewhitespace_splitquotesescape escapedquotesstaterpushbacklinenodebugtoken filestacksource_punctuation_chars_pushback_chars maketransdictfromkeys translate)selfrrrpunctuation_charstr-*/opt/alt/python39/lib64/python3.9/shlex.py__init__sJ zshlex.__init__cCs|jSN)r$r*r-r-r.r+Dszshlex.punctuation_charscCs*|jdkrtdt||j|dS)Nr zshlex: pushing token )r printreprr appendleft)r*tokr-r-r. push_tokenHs zshlex.push_tokencCspt|trt|}|j|j|j|jf||_||_d|_|jrl|dur\t d|jfnt d|jfdS)Nr zshlex: pushing to file %szshlex: pushing to stream %s) rrrr"r4rrrr r2)r* newstreamnewfiler-r-r. push_sourceNs zshlex.push_sourcecCsD|j|j\|_|_|_|jr:td|j|jfd|_dS)Nzshlex: popping to %s, line %dr ) rcloser"popleftrrr r2rr1r-r-r. pop_source\s  zshlex.pop_sourcecCs|jr.|j}|jdkr*tdt||S|}|jdurz||jkrz||}|rp|\}}|||| }q@||j kr|j s|j S| | }qz|jdkr||j krtdt|ntd|S)Nr zshlex: popping token z shlex: token=zshlex: token=EOF) rr;r r2r3 read_tokenr# sourcehookr9 get_tokenrr"r<)r*r5rawspecr8r7r-r-r.r?es.          zshlex.get_tokencCsd}d}|jr |jr |j}n |jd}|dkrB|jd7_|jdkr^td|j|f|jdurtd|_ qq|jdkr|sd|_qq||j vr|jdkrtd |j s|j r|rqnqn||j vr|j |jd7_n|j r ||jvr d }||_n||jvr&||_ d |_nr||jvr@||_ d |_nX||jvrb|j sZ||_ ||_n6|jrx||_ d |_n ||_ |j s|j r|rqnqq|j|jvrDd }|s|jdkrtd td||jkr|j s|j |7_ d|_qnd |_n>|j r4||jvr4|j|jvr4|j}||_n|j |7_ q|j|jvr|st|jdkrltdtd||jvr||jkr||kr|j |j7_ |j |7_ ||_q|jdvr|sd|_qq||j vr|jdkrtdd|_|j s|j r|rqnqq||j vrh|j |jd7_|j rd|_|j s|j r|rqnqq|jd kr||jvr|j |7_ n"||j vr|j|d|_qq|j r||jvr||_q|j r||jvrd }||_q||jvs||jvs|jr,||jvr,|j |7_ q|jrB|j|n |j||jdkrbtdd|_|j s|j r|rqqqq|j }d|_ |j r|s|dkrd}|jdkr|rtdt|ntd|S)NFr r  z&shlex: in state %r I see character: %rrz+shlex: I see whitespace in whitespace stateacTz shlex: I see EOF in quotes statezNo closing quotationz shlex: I see EOF in escape statezNo escaped character)rErFz%shlex: I see whitespace in word statez&shlex: I see punctuation in word statezshlex: raw token=zshlex: raw token=EOF)r+r%poprreadrr r2rr!rrrreadlinerrrr ValueErrorrappendrr4r3)r*ZquotedZ escapedstateZnextcharresultr-r-r.r=s                              zshlex.read_tokencCsV|ddkr|dd}t|jtrHtj|sHtjtj|j|}|t|dfS)Nrr r r) rrrospathisabsrdirnameopen)r*r8r-r-r.r>s   zshlex.sourcehookcCs(|dur|j}|dur|j}d||fS)Nz"%s", line %d: )rr)r*rrr-r-r. error_leader s zshlex.error_leadercCs|Sr0r-r1r-r-r.__iter__(szshlex.__iter__cCs|}||jkrt|Sr0)r?r StopIteration)r*r!r-r-r.__next__+s zshlex.__next__)NNFF)N)NN)__name__ __module__ __qualname__r/propertyr+r6r9r<r?r=r>rTrUrWr-r-r-r.rs /     rFTcCsD|dur ddl}|jdtddt||d}d|_|s@zjoin..)r)Z split_commandr-r-r.r>srz[^\w@%+=:,./-]cCs,|sdSt|dur|Sd|dddS)Nz'''z'"'"') _find_unsafereplace)rar-r-r.rEs  rcCs$|}|sq tdt|qdS)NzToken: )r?r2r3)ZlexerZttr-r-r. _print_tokensQsri__main__r )FT)rOrer collectionsrior__all__rrrcompileASCIIsearchrgrrirXlenargvfnrSfr-r-r-r. s&