a
´i½4 ã @ sâ d Z ddlZddlZddlZddlmZ ddlmZ g d¢ZG dd„ dƒZ dd
d„Z
dd
„ Ze dej
¡jZdd„ Zdd„ ZedkrÞeejƒdkržee ƒ ƒ n@ejd Zeeƒ�Zee eeƒƒ W d ƒ n1 sÔ0 Y dS )ú8A lexical analyzer class for simple shell-like syntaxes.é N)Údeque)ÚStringIO)ÚshlexÚsplitÚquoteÚjoinc @ sr e Zd ZdZddd„Zedd„ ƒZdd „ Zdd
d„Zdd
„ Z dd„ Z
dd„ Zdd„ Zddd„Z
dd„ Zdd„ ZdS )r r NFc C s t |tƒrt|ƒ}|d ur(|| _|| _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
u rÐd}|| _|�rtƒ | _| j
d7 _
| j
t |¡¡}| j
|¡| _
d S )NÚ ú#Z?abcdfeghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_u| ßà áâãäåæçèéêëìÃîïðñòóôõöøùúûüýþÿÀÃ�ÂÃÄÅÆÇÈÉÊËÌÃ�ÃŽÃ�Ã�ÑÒÓÔÕÖØÙÚÛÜÃ�Þz
Fz'"ú\ú"ú é r Tz();<>|&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)Úselfr r r Úpunctuation_charsÚt© r. ú/usr/lib64/python3.9/shlex.pyÚ__init__ sJ
zshlex.__init__c C s | j S ©N)r% ©r+ r. r. r/ r, D s zshlex.punctuation_charsc C s* | j dkrtdt|ƒ ƒ | j |¡ 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_tokenH s
zshlex.push_tokenc C sp t |tƒrt|ƒ}| j | j| j| jf¡ || _|| _d| _| jrl|dur\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 r r r# r5 r r r r! r3 )r+ Ú newstreamÚnewfiler. r. r/ Úpush_sourceN s
zshlex.push_sourcec C sD | j ¡ | j ¡ \| _| _ | _| jr:td| j | jf ƒ d| _dS )zPop the input source stack.zshlex: popping to %s, line %dr
N) r Úcloser# Úpopleftr r r! r3 r r2 r. r. r/ Ú
pop_source\ s
ÿzshlex.pop_sourcec C sÔ | j r.| j ¡ }| jdkr*tdt|ƒ ƒ |S | ¡ }| jdurz|| jkrz| | ¡ ¡}|rp|\}}| ||¡ | ¡ }q@|| j
kr¢| js�| j
S | ¡ | ¡ }qz| jdkrÐ|| j
krÈtdt|ƒ ƒ ntdƒ |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)
r r<