U
    |cc                     @   sP   d Z ddlZddddddd	d
ddd
Zdd Zdd Zdd ZedkrLe  dS )z<Safely evaluate Python string literals without using eval().    N
	'"\)
abfnrtvr	   r
   r   c                 C   s   |  dd\}}|dstt|}|d k	r4|S |dr|dd  }t|dk rbtd| zt|d}W q tk
r   td| d Y qX n2zt|d}W n" tk
r   td	| d Y nX t|S )
Nr      r   x   z!invalid hex string escape ('\%s')      z#invalid octal string escape ('\%s'))	group
startswithAssertionErrorsimple_escapesgetlen
ValueErrorintchr)malltailZescZhexesi r%   'lib/python3.8/lib2to3/pgen2/literals.pyescape   s$    

r'   c                 C   s   |  ds(|  ds(tt| d d | d }| d d |d krL|d }| |sptt| t| d  t| dt| kst| t|t|  } tdt| S )Nr	   r
   r   r      r   z)\\(\'|\"|\\|[abfnrtv]|x.{0,2}|[0-7]{1,3}))r   r   reprendswithr   resubr'   )sqr%   r%   r&   
evalString(   s    ($r/   c                  C   s@   t dD ]2} t| }t|}t|}||krt| ||| qd S )N   )ranger    r)   r/   print)r$   cr-   er%   r%   r&   test2   s    r5   __main__)__doc__r+   r   r'   r/   r5   __name__r%   r%   r%   r&   <module>   s"   
	