U e5d 4ã @sÎddlZddlZddlZddlmZddlmZddddgZGdd„dƒZdd d„Z d d„Z e  d ej ¡j Zdd„Zdd„ZedkrÊeejƒdkržeeƒƒn,ejdZeeƒ�ZeeeeƒƒW5QRXdS)éN)Údeque)ÚStringIOÚshlexÚsplitÚquoteÚjoinc@sneZdZddd„Zedd„ƒZdd„Zdd d „Zd d „Zd d„Z dd„Z dd„Z ddd„Z dd„Z dd„ZdS)rNFcCst|tƒrt|ƒ}|dk r(||_||_ntj|_d|_||_|rHd|_nd|_d|_ d|_ |jrn|j d7_ d|_ d|_ d|_ d|_d |_d |_tƒ|_d |_d |_d|_tƒ|_d|_|sÄd}n |d krÐd}||_|�rtƒ|_|j d7_ |j  t |¡¡}|j  |¡|_ dS)NÚú#Z?abcdfeghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_u|ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿÀÃ�ÂÃÄÅÆÇÈÉÊËÌÃ�ÃŽÃ�Ã�ÑÒÓÔÕÖØÙÚÛÜÃ�Þz Fz'"ú\ú"ú érTz();<>|&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)ÚselfrrrÚpunctuation_charsÚt©r-ú/usr/lib64/python3.8/shlex.pyÚ__init__sJ zshlex.__init__cCs|jS©N)r$©r*r-r-r.r+Dszshlex.punctuation_charscCs*|jdkrtdt|ƒƒ|j |¡dS)Nr zshlex: pushing token )r ÚprintÚreprrÚ appendleft)r*Útokr-r-r.Ú push_tokenHs zshlex.push_tokencCspt|tƒrt|ƒ}|j |j|j|jf¡||_||_d|_|jrl|dk r\t d|jfƒnt d|jfƒdS)Nr zshlex: pushing to file %szshlex: pushing to stream %s) rrrr"r4rrrr r2)r*Ú newstreamÚnewfiler-r-r.Ú push_sourceNs zshlex.push_sourcecCsD|j ¡|j ¡\|_|_|_|jr:td|j|jfƒd|_dS)Nzshlex: popping to %s, line %dr ) rÚcloser"Ú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 krÈtdt|ƒƒntdƒ|S)Nr zshlex: popping token z shlex: token=zshlex: token=EOF) rr;r r2r3Ú read_tokenr#Ú sourcehookr9Ú get_tokenrr"r<)r*r5ÚrawÚspecr8r7r-r-r.r?es.          zshlex.get_tokencCsÜd}d}|jr |jr |j ¡}n |j d¡}|dkrB|jd7_|jdkr^td|j|fƒ|jdkrtd|_ �q„q|jdk�rš|s’d|_�q„�q‚||j krÈ|jdkr®td ƒ|j s¾|j r|r�q„nqnÐ||j krì|j  ¡|jd7_n¬|j �r ||jk�r d }||_nŒ||jk�r&||_ d |_nr||jk�r@||_ d |_nX||jk�rb|j �sZ||_ ||_n6|j�rx||_ d |_n ||_ |j �s„|j r|r�q„nqq|j|jk�rDd }|�sÎ|jdk�rÆtd ƒtdƒ‚||jk�r|j �sü|j |7_ d|_�q„nd |_n>|j �r4||jk�r4|j|jk�r4|j}||_n|j |7_ q|j|jk�r¼|�st|jdk�rltdƒtdƒ‚||jk�r¦||jk�r¦||k�r¦|j |j7_ |j |7_ ||_q|jdkr|�sØd|_�q„q||j k�r|jdk�røtdƒd|_|j �s„|j r|r�q„nqq||j k�rh|j  ¡|jd7_|j �r‚d|_|j �s„|j r|r�q„nqq|jd k�r´||jk�r�|j |7_ n"||j k�r¨|j |¡d|_�q„q|j �rÐ||jk�rÐ||_q|j �rð||jk�rðd }||_q||jk�s||jk�s|j�r,||jk�r,|j |7_ q|j�rB|j |¡n |j |¡|jdk�rbtdƒd|_|j �s„|j r|r�q„qqq|j }d|_ |j �r¬|�s¬|dk�r¬d}|jdk�rØ|�rÐtdt|ƒƒntdƒ|S)NFr r Ú éz&shlex: in state %r I see character: %rréz+shlex: I see whitespace in whitespace stateÚaÚcTz 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%ÚpoprÚreadrr r2rr!rrrÚreadlinerrrrÚ ValueErrorrÚappendrr4r3)r*ZquotedZ escapedstateZnextcharÚresultr-r-r.r=…s     ÿ           ÿ  ÿÿ         ÿþ   zshlex.read_tokencCsV|ddkr|dd…}t|jtƒrHtj |¡sHtj tj |j¡|¡}|t|dƒfS)Nrr r éÿÿÿÿÚr) rrrÚosÚpathÚisabsrÚdirnameÚopen)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)rrrÚlist)ÚsZcommentsrZlexr-r-r.r1s  cCsd dd„|Dƒ¡S)Nr css|]}t|ƒVqdSr0)r)Ú.0Úargr-r-r.Ú <szjoin..)r)Z split_commandr-r-r.r:sz[^\w@%+=:,./-]cCs,|sdSt|ƒdkr|Sd| dd¡dS)Nz''ú'z'"'"')Ú _find_unsafeÚreplace)r]r-r-r.rAs  cCs$| ¡}|sq tdt|ƒƒqdS)NzToken: )r?r2r3)ZlexerZttr-r-r.Ú _print_tokensMsrdÚ__main__r )FT)rOÚrerÚ collectionsrÚiorÚ__all__rrrÚcompileÚASCIIÚsearchrbrrdrXÚlenÚargvÚfnrSÚfr-r-r-r.Ú s&