grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026 ”qc¸,ã @sdZddlZddlZddlZddlmZddlmZdddgZGdd„dƒZ d d d d„Z ej d ej ƒj Zd d„Zdd„Zedkreejƒdkrßee ƒƒn6ejdZeeƒ�Zee eeƒƒWdQRXdS)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.NFcCst|tƒrt|ƒ}|dk r<||_||_ntj|_d|_||_|rld|_n d|_d|_ d|_ |jrŸ|j d7_ d|_ d|_ d|_ d|_d |_d |_tƒ|_d |_d |_d|_tƒ|_d|_dS) NÚú#Z?abcdfeghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_u|ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿÀÃ�ÂÃÄÅÆÇÈÉÊËÌÃ�ÃŽÃ�Ã�ÑÒÓÔÕÖØÙÚÛÜÃ�Þz Fz'"ú\ú"ú ér)Ú isinstanceÚstrrÚinstreamÚinfileÚsysÚstdinÚposixÚeofÚ commentersÚ wordcharsÚ whitespaceÚwhitespace_splitÚquotesÚescapeÚ escapedquotesÚstaterÚpushbackÚlinenoÚdebugÚtokenÚ filestackÚsource)Úselfrrr©r$ú*/opt/alt/python35/lib64/python3.5/shlex.pyÚ__init__s6                       zshlex.__init__cCs7|jdkr#tdt|ƒƒ|jj|ƒdS)z:Push a token onto the stack popped by the get_token methodr zshlex: pushing token N)rÚprintÚreprrÚ appendleft)r#Útokr$r$r%Ú push_token5szshlex.push_tokencCsœt|tƒrt|ƒ}|jj|j|j|jfƒ||_||_d|_|jr˜|dk r„t d|jfƒnt d|jfƒdS)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_sourcecCs^|jjƒ|jjƒ\|_|_|_|jrQtd|j|jfƒd|_dS)zPop the input source stack.zshlex: popping to %s, line %dr N) rÚcloser!Úpopleftrrrr'r)r#r$r$r%Ú pop_sourceIs  ! zshlex.pop_sourcecCs2|jr?|jjƒ}|jdkr;tdt|ƒƒ|S|jƒ}|jdk r³xV||jkr²|j|jƒƒ}|r£|\}}|j||ƒ|j ƒ}q]Wx9||j krî|j sÕ|j S|j ƒ|j ƒ}q¶W|jdkr.||j kr$tdt|ƒƒn tdƒ|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%r4Rs.      zshlex.get_tokencCsud}d}xø|jjdƒ}|dkr=|jd|_|jdkrntdt|jƒdt|ƒƒ|jdkrŠd|_Pq|jdkré|s¬d|_Pq||jkrö|jd krÔtd ƒ|jsì|j r|rPqæqq||j kr%|jj ƒ|jd|_q|j rO||j krOd }||_q||j krs||_d |_q||jkr |j s”||_||_q|jr¾||_d |_q||_|jsß|j r|rPqqq|j|jkr¿d }|s,|jd kr td ƒtdƒ‚||jkrm|j sa|j||_d|_Pq¼d |_q|j r¬||j kr¬|j|jkr¬|j}||_q|j||_q|j|j krU|sü|jd krðtdƒtdƒ‚||jkr9||jkr9||kr9|j|j|_|j||_||_q|jd kr|swd|_Pq||jkrÊ|jd krŸtdƒd|_|jsÀ|j r|rPqqq||j kr*|jj ƒ|jd|_|j rd|_|js |j r|rPqqq|j rN||jkrN||_q|j rx||j krxd }||_q||j ksŸ||jksŸ|jr²|j||_q|jj|ƒ|jd krÛtdƒd|_|jsü|j r|rPqqqW|j}d|_|j r;| r;|dkr;d}|jdkrq|rgtdt|ƒƒn tdƒ|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%r2rsà                                       zshlex.read_tokencCs||ddkr |dd…}t|jtƒritjj|ƒ ritjjtjj|jƒ|ƒ}|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.sourcehookcCs8|dkr|j}|dkr*|j}d||fS)zs"   ú