f,c@s(dZddlZddlZddlZddlmZddlmZdddgZGdddZ ddd dZ ej d ejjZd dZed kr$eejd kre Zn"ejd Ze eeeZx0ejZeredeeqPqndS(u8A lexical analyzer class for simple shell-like syntaxes.iN(udeque(uStringIOushlexusplituquotecBs|EeZdZdZdddddZddZdddZdd Z d d Z d d Z ddZ ddddZ ddZddZdS(ushlexu8A lexical analyzer class for simple shell-like syntaxes.cCsAt|trt|}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|jfndS(Nuu#u?abcdfeghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_u|ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞu u'"u\u"u iiushlex: reading from %s, line %dF(u isinstanceustruStringIOuNoneuinstreamuinfileusysustdinuposixueofu commentersu wordcharsu whitespaceuFalseuwhitespace_splituquotesuescapeu escapedquotesustateudequeupushbackulinenoudebugutokenu filestackusourceuprint(uselfuinstreamuinfileuposix((u*/opt/alt/python33/lib64/python3.3/shlex.pyu__init__s<                        ushlex.__init__cCs:|jdkr&tdt|n|jj|dS(u:Push a token onto the stack popped by the get_token methodiushlex: pushing token N(udebuguprintureprupushbacku appendleft(uselfutok((u*/opt/alt/python33/lib64/python3.3/shlex.pyu push_token8sushlex.push_tokencCst|trt|}n|jj|j|j|jf||_||_d|_|jr|dk rt d|jfqt d|jfndS(u9Push an input source onto the lexer's input source stack.iushlex: pushing to file %sushlex: pushing to stream %sN( u isinstanceustruStringIOu filestacku appendleftuinfileuinstreamulinenoudebuguNoneuprint(uselfu newstreamunewfile((u*/opt/alt/python33/lib64/python3.3/shlex.pyu push_source>s"     ushlex.push_sourcecCsa|jj|jj\|_|_|_|jrTtd|j|jfnd|_dS(uPop the input source stack.ushlex: popping to %s, line %du N( uinstreamucloseu filestackupopleftuinfileulinenoudebuguprintustate(uself((u*/opt/alt/python33/lib64/python3.3/shlex.pyu pop_sourceLs  ! ushlex.pop_sourcecCs>|jrB|jj}|jdkr>tdt|n|S|j}|jdk rx\||jkr|j|j}|r|\}}|j ||n|j }q`Wnx9||j kr|j s|j S|j |j }qW|jdkr:||j kr-tdt|q:tdn|S(uBGet a token from the input stream (or from stack if it's nonempty)iushlex: popping token u shlex: token=ushlex: token=EOFN(upushbackupopleftudebuguprinturepru read_tokenusourceuNoneu sourcehooku push_sourceu get_tokenueofu filestacku pop_source(uselfutokurawuspecunewfileu newstream((u*/opt/alt/python33/lib64/python3.3/shlex.pyu get_tokenUs.      ushlex.get_tokencCsd}d}x|jjd}|dkr@|jd|_n|jdkrttdt|jdt|n|jdkrd|_ Pq|jdkr|sd|_Pq||j kr|jdkrtd n|j s|j r|rPqqq||j kr.|jj |jd|_q|j rX||jkrXd }||_q||jkr|||_ d |_q||jkr|j s||_ n||_q|jr||_ d |_q||_ |j s|j r|rPqqq|j|jkrd}|s>|jdkr/td ntd n||jkr|j ss|j ||_ d|_Pqd |_q|j r||jkr|j|jkr|j}||_q|j ||_ q|j|jkrp|s|jdkrtd ntdn||jkrT||jkrT||krT|j |j|_ n|j ||_ ||_q|jd kr|sd|_Pq||j kr|jdkrtdnd|_|j s|j r|rPqqq||j krK|jj |jd|_|j rd|_|j s>|j r|rPqHqqq|j ro||jkro||_q|j r||jkrd }||_q||jks||jks|jr|j ||_ q|jj||jdkrtdnd|_|j rPqqqq|j }d|_ |j rU| rU|dkrUd}n|jdkr|rtdt|qtdn|S(Nu iu iushlex: in stateuI see character:uiu+shlex: I see whitespace in whitespace stateuau shlex: I see EOF in quotes stateuNo closing quotationu shlex: I see EOF in escape stateuNo escaped characteru%shlex: I see whitespace in word stateu&shlex: I see punctuation in word stateushlex: raw token=ushlex: raw token=EOFFT(uFalseuinstreamureadulinenoudebuguprintureprustateuNoneutokenu whitespaceuposixu commentersureadlineuescapeu wordcharsuquotesuwhitespace_splituTrueu ValueErroru escapedquotesupushbacku appendleft(uselfuquotedu escapedstateunextcharuresult((u*/opt/alt/python33/lib64/python3.3/shlex.pyu read_tokenus                                         ushlex.read_tokencCs|ddkr#|dd}nt|jtrotjj| rotjjtjj|j|}n|t|dfS(u(Hook called on a filename to be sourced.iu"iuri( u isinstanceuinfileustruosupathuisabsujoinudirnameuopen(uselfunewfile((u*/opt/alt/python33/lib64/python3.3/shlex.pyu sourcehooks %'ushlex.sourcehookcCs>|dkr|j}n|dkr0|j}nd||fS(u<Emit a C-compiler-like, Emacs-friendly error-message leader.u"%s", line %d: N(uNoneuinfileulineno(uselfuinfileulineno((u*/opt/alt/python33/lib64/python3.3/shlex.pyu error_leaders     ushlex.error_leadercCs|S(N((uself((u*/opt/alt/python33/lib64/python3.3/shlex.pyu__iter__sushlex.__iter__cCs(|j}||jkr$tn|S(N(u get_tokenueofu StopIteration(uselfutoken((u*/opt/alt/python33/lib64/python3.3/shlex.pyu__next__ s  ushlex.__next__NF(u__name__u __module__u __qualname__u__doc__uNoneuFalseu__init__u push_tokenu push_sourceu pop_sourceu get_tokenu read_tokenu sourcehooku error_leaderu__iter__u__next__(u __locals__((u*/opt/alt/python33/lib64/python3.3/shlex.pyushlexs$   cCs7t|d|}d|_|s-d|_nt|S(NuposixuT(ushlexuTrueuwhitespace_splitu commentersulist(usucommentsuposixulex((u*/opt/alt/python33/lib64/python3.3/shlex.pyusplits   u[^\w@%+=:,./-]cCs8|s dSt|dkr |Sd|jdddS(u1Return a shell-escaped version of the string *s*.u''u'u'"'"'N(u _find_unsafeuNoneureplace(us((u*/opt/alt/python33/lib64/python3.3/shlex.pyuquotes u__main__iuToken: FT(u__doc__uosureusysu collectionsudequeuiouStringIOu__all__ushlexuFalseuTrueusplitucompileuASCIIusearchu _find_unsafeuquoteu__name__ulenuargvulexerufileuopenu get_tokenuttuprinturepr(((u*/opt/alt/python33/lib64/python3.3/shlex.pyus(