o
     JAfc  ã                   @   sT   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r(eƒ  dS 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J ‚t |¡}|d ur|S | d¡rJ|dd … }t|ƒdk r1td| ƒ‚z
t|dƒ}W t|ƒS  tyI   td| ƒd ‚w z
t|dƒ}W t|ƒS  tyb   td	| ƒd ‚w )
Nr   é   r   Úxé   z!invalid hex string escape ('\%s')é   é   z#invalid octal string escape ('\%s'))ÚgroupÚ
startswithÚsimple_escapesÚgetÚlenÚ
ValueErrorÚintÚchr)ÚmÚallÚtailZescZhexesÚi© r$   ú-/usr/lib/python3.10/lib2to3/pgen2/literals.pyÚescape   s*   

ùÿþÿr&   c                 C   s¬   |   d¡s|   d¡sJ t| d d… ƒƒ‚| d }| d d… |d kr&|d }|  |¡s8J t| t|ƒ d … ƒƒ‚t| ƒdt|ƒ ksDJ ‚| t|ƒt|ƒ … } t dt| ¡S )Nr	   r
   r   r   é   r   z)\\(\'|\"|\\|[abfnrtv]|x.{0,2}|[0-7]{1,3}))r   ÚreprÚendswithr   ÚreÚsubr&   )ÚsÚqr$   r$   r%   Ú
evalString(   s   ($r.   c                  C   s@   t dƒD ]} t| ƒ}t|ƒ}t|ƒ}||krt| |||ƒ qd S )Né   )Úranger   r(   r.   Úprint)r#   Úcr,   Úer$   r$   r%   Útest2   s   €ûr4   Ú__main__)Ú__doc__r*   r   r&   r.   r4   Ú__name__r$   r$   r$   r%   Ú<module>   s&   ÷
	
ÿ