grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026î ¤ f-ã @sdZddlZddlZddlZddlmZddlmZdddgZGdd„dƒZ d d d d„Z ej d ej ƒj Zd d„Zdd„Zedkreejƒdkrßee ƒƒqejdZeeƒ�Zee eeƒƒWdQXndS)z8A lexical analyzer class for simple shell-like syntaxes.éN)Údeque)ÚStringIOÚshlexÚsplitÚquotec@s eZdZdZddddd„Zdd„Zddd „Zd d „Zd d „Zdd„Z dd„Z dddd„Z dd„Z dd„Z dS)rz8A lexical analyzer class for simple shell-like syntaxes.NFcCsAt|tƒrt|ƒ}n|dk r?||_||_ntj|_d|_||_|rod|_n d|_d|_ d|_ |jr¥|j d7_ nd|_ d|_ d|_ d|_d |_d |_tƒ|_d |_d |_d|_tƒ|_d|_|jr=td |j|jfƒndS)NÚú#Z?abcdfeghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_u|ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿÀÃ�ÂÃÄÅÆÇÈÉÊËÌÃ�ÃŽÃ�Ã�ÑÒÓÔÕÖØÙÚÛÜÃ�Þz Fz'"ú\ú"ú érzshlex: reading from %s, line %d)Ú isinstanceÚstrrÚinstreamÚinfileÚsysÚstdinÚposixÚeofÚ commentersÚ wordcharsÚ whitespaceÚwhitespace_splitÚquotesÚescapeÚ escapedquotesÚstaterÚpushbackÚlinenoÚdebugÚtokenÚ filestackÚsourceÚprint)Úselfrrr©r%ú*/opt/alt/python34/lib64/python3.4/shlex.pyÚ__init__s<                        zshlex.__init__cCs:|jdkr&tdt|ƒƒn|jj|ƒdS)z:Push a token onto the stack popped by the get_token methodr zshlex: pushing token N)rr#ÚreprrÚ appendleft)r$Útokr%r%r&Ú push_token8szshlex.push_tokencCs¢t|tƒrt|ƒ}n|jj|j|j|jfƒ||_||_d|_|jrž|dk r‡t d|jfƒqžt d|jfƒndS)z9Push an input source onto the lexer's input source stack.r Nzshlex: pushing to file %szshlex: pushing to stream %s) r rrr!r)rrrrr#)r$Ú newstreamÚnewfiler%r%r&Ú push_source>s"     zshlex.push_sourcecCsa|jjƒ|jjƒ\|_|_|_|jrTtd|j|jfƒnd|_dS)zPop the input source stack.zshlex: popping to %s, line %dr N) rÚcloser!Úpopleftrrrr#r)r$r%r%r&Ú pop_sourceLs  ! zshlex.pop_sourcecCs>|jrB|jjƒ}|jdkr>tdt|ƒƒn|S|jƒ}|jdk r¼x\||jkr¸|j|jƒƒ}|r©|\}}|j||ƒn|j ƒ}q`Wnx9||j kr÷|j sÞ|j S|j ƒ|j ƒ}q¿W|jdkr:||j kr-tdt|ƒƒq:tdƒn|S)zBGet a token from the input stream (or from stack if it's nonempty)r zshlex: popping token Nz shlex: token=zshlex: token=EOF) rr0rr#r(Ú read_tokenr"Ú sourcehookr.Ú get_tokenrr!r1)r$r*ÚrawÚspecr-r,r%r%r&r4Us.      zshlex.get_tokencCs“d}d}x|jjdƒ}|dkr@|jd|_n|jdkrttdt|jƒdt|ƒƒn|jdkr�d|_Pq|jdkrõ|s²d|_Pq||jkrÿ|jd krÝtd ƒn|jsõ|j r|rPqòqq||j kr.|jj ƒ|jd|_q|j rX||j krXd }||_q||j kr|||_d |_q||jkr¬|j s ||_n||_q|jrÊ||_d |_q||_|jsë|j r|rPqqq|j|jkrÑd }|s>|jd kr/td ƒntdƒ‚n||jkr|j ss|j||_d|_PqÎd |_q|j r¾||j kr¾|j|jkr¾|j}||_q|j||_q|j|j krp|s|jd krtdƒntdƒ‚n||jkrT||jkrT||krT|j|j|_n|j||_||_q|jd kr|s’d|_Pq||jkrè|jd kr½tdƒnd|_|jsÞ|j r|rPqqq||j krK|jj ƒ|jd|_|j rd|_|js>|j r|rPqHqqq|j ro||jkro||_q|j r™||j kr™d }||_q||j ksÀ||jksÀ|jrÓ|j||_q|jj|ƒ|jd krÿtdƒnd|_|jrPqqqqW|j}d|_|j rV| rV|dkrVd}n|jdkr�|r‚tdt|ƒƒq�tdƒn|S)NFr r Ú ézshlex: in statezI see character:réz+shlex: I see whitespace in whitespace stateÚaTz shlex: I see EOF in quotes statezNo closing quotationz shlex: I see EOF in escape statezNo escaped characterz%shlex: I see whitespace in word statez&shlex: I see punctuation in word statezshlex: raw token=zshlex: raw token=EOF)rÚreadrrr#r(rr rrrÚreadlinerrrrÚ ValueErrorrrr))r$ZquotedZ escapedstateZnextcharÚresultr%r%r&r2usà                                         zshlex.read_tokencCs‚|ddkr#|dd…}nt|jtƒrotjj|ƒ rotjjtjj|jƒ|ƒ}n|t|dƒfS)z(Hook called on a filename to be sourced.rr r Úréÿÿÿÿ) r rrÚosÚpathÚisabsÚjoinÚdirnameÚopen)r$r-r%r%r&r3õs %'zshlex.sourcehookcCs>|dkr|j}n|dkr0|j}nd||fS)zs"   ý