B
    v9ac  ã               @   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¡\}}t |¡}|d k	r&|S | d¡rˆ|dd … }t|ƒdk rTtd| ƒ‚yt|dƒ}W qº tk
r„   td| ƒd ‚Y qºX n2yt|dƒ}W n" tk
r¸   td| ƒd ‚Y nX t|ƒS )	Nr   é   Úxé   z!invalid hex string escape ('\%s')é   é   z#invalid octal string escape ('\%s'))ÚgroupÚsimple_escapesÚgetÚ
startswithÚlenÚ
ValueErrorÚintÚchr)ÚmÚallÚtailZescZhexesÚi© r$   ú/usr/lib/python3.7/literals.pyÚescape   s"    

r&   c             C   sH   | d }| d d… |d kr$|d }| t |ƒt |ƒ … } t dt| ¡S )Nr   é   z)\\(\'|\"|\\|[abfnrtv]|x.{0,2}|[0-7]{1,3}))r   ÚreÚsubr&   )ÚsÚqr$   r$   r%   Ú
evalString(   s
    r,   c              C   sD   x>t dƒD ]2} t| ƒ}t|ƒ}t|ƒ}||kr
t| |||ƒ q
W d S )Né   )Úranger   Úreprr,   Úprint)r#   Úcr*   Úer$   r$   r%   Útest2   s    r3   Ú__main__)Ú__doc__r(   r   r&   r,   r3   Ú__name__r$   r$   r$   r%   Ú<module>   s    
	