File: //usr/lib64/python3.8/__pycache__/shlex.cpython-38.pyc
U
    e5d
4  �                	   @   s�   d Z ddlZddlZddlZddlmZ ddlmZ ddddgZG d	d� d�Z	ddd�Z
d
d� Ze�dej
�jZdd� Zdd� Zedkr�eej�dkr�ee	� � n,ejd Zee��Zee	ee�� W 5 Q R X 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 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
�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.8/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|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#   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 | �� }| jdk	rz|| 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<