File: //usr/lib64/python3.6/__pycache__/shlex.cpython-36.pyc
3
  \�2  �               @   s�   d Z ddlZddlZddlZddlmZ ddlmZ dddgZG dd� d�Z	ddd�Z
ejdej�j
Zd
d� Zdd� Zedkr�eej�dkr�ee	� � n,ejd Zee��Zee	ee�� W dQ R X dS )z8A lexical analyzer class for simple shell-like syntaxes.�    N)�deque)�StringIO�shlex�split�quotec               @   sf   e Zd ZdZddd�Zdd� Zddd	�Zd
d� Zdd
� Zdd� Z	dd� Z
ddd�Zdd� Zdd� Z
dS )r   z8A lexical analyzer class for simple shell-like syntaxes.NFc             C   s  t |t�rt|�}|d k	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
jtj|��}| j
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   r#   �t� r+   �/usr/lib64/python3.6/shlex.py�__init__   sJ    
zshlex.__init__c             C   s*   | j dkrtdt|� � | 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_tokenD   s    
zshlex.push_tokenc             C   sp   t |t�rt|�}| jj| j| j| jf� || _|| _d| _| jrl|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
   r   r   r!   r0   r   r   r   r   r.   )r)   �	newstream�newfiler+   r+   r,   �push_sourceJ   s    
zshlex.push_sourcec             C   sD   | j j�  | jj� \| _| _ | _| jr:td| j | jf � d| _dS )zPop the input source stack.zshlex: popping to %s, line %dr   N)	r   �closer!   �popleftr   r   r   r.   r   )r)   r+   r+   r,   �
pop_sourceX   s    
zshlex.pop_sourcec             C   s�   | j r.| j j� }| jdkr*tdt|� � |S | j� }| jdk	r~x<|| jkr|| j| j� �}|rr|\}}| j||� | j	� }qBW x*|| j
kr�| js�| j
S | j�  | j	� }q�W | 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   r7   r   r.   r/   �
read_tokenr"