U ,a 4 @sddlZddlZddlZddlmZddlmZddddgZGdddZdd dZ d dZ e d ej j ZddZddZedkreejdkreen,ejdZeeZeeeeW5QRXdS)N)deque)StringIOshlexsplitquotejoinc@sneZdZdddZeddZddZdd d Zd d Zd dZ ddZ ddZ dddZ ddZ ddZdS)rNFcCst|trt|}|dk r(||_||_ntj|_d|_||_|rHd|_nd|_d|_ d|_ |jrn|j d7_ d|_ d|_ d|_ d|_d |_d |_t|_d |_d |_d|_t|_d|_|sd}n |d krd}||_|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/python38/lib64/python3.8/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|dk r\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|}|jdk rz||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|jdkrtd|_ qq|jdkr|sd|_qq||j kr|jdkrtd |j s|j r|rqnqn||j kr|j |jd7_n|j r ||jkr d }||_n||jkr&||_ d |_nr||jkr@||_ d |_nX||jkrb|j sZ||_ ||_n6|jrx||_ d |_n ||_ |j s|j r|rqnqq|j|jkrDd }|s|jdkrtd td||jkr|j s|j |7_ d|_qnd |_n>|j r4||jkr4|j|jkr4|j}||_n|j |7_ q|j|jkr|st|jdkrltdtd||jkr||jkr||kr|j |j7_ |j |7_ ||_q|jdkr|sd|_qq||j kr|jdkrtdd|_|j s|j r|rqnqq||j krh|j |jd7_|j rd|_|j s|j r|rqnqq|jd kr||jkr|j |7_ n"||j kr|j|d|_qq|j r||jkr||_q|j r||jkrd }||_q||jks||jks|jr,||jkr,|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(|dkr|j}|dkr|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 /     FTcCs$t||d}d|_|sd|_t|S)N)rTr)rrrlist)sZcommentsrZlexr-r-r.r1s  cCsddd|DS)Nr css|]}t|VqdSr0)r).0argr-r-r. <szjoin..)r)Z split_commandr-r-r.r:sz[^\w@%+=:,./-]cCs,|sdSt|dkr|Sd|dddS)Nz'''z'"'"') _find_unsafereplace)r]r-r-r.rAs  cCs$|}|sq tdt|qdS)NzToken: )r?r2r3)ZlexerZttr-r-r. _print_tokensMsrd__main__r )FT)rOrer collectionsrior__all__rrrcompileASCIIsearchrbrrdrXlenargvfnrSfr-r-r-r. s&