î
\á[\O  ã               @   sœ   d  Z  d d l Z i
 d d 6d d 6d d 6d	 d
 6d d 6d d 6d d 6d d 6d d 6d d 6Z d d „  Z d d „  Z d d „  Z e d k r˜ e ƒ  n  d S)z<Safely evaluate Python string literals without using eval().é    NúÚaúÚbúÚfÚ
ÚnúÚrú	ÚtúÚvú'ú"ú\c             C   s  |  j  d d ƒ \ } } | j d ƒ s- t ‚ t j | ƒ } | d  k	 rL | S| j d ƒ rË | d d  … } t | ƒ d k  r t d | ƒ ‚ n  y t | d ƒ } Wqt k
 rÇ t d | ƒ ‚ YqXn8 y t | d ƒ } Wn" t k
 rt d	 | ƒ ‚ Yn Xt | ƒ 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ÚtailÚescZhexesÚi© r&   ú,/usr/lib/python3.4/lib2to3/pgen2/literals.pyÚescape   s$    r(   c             C   sï   |  j  d ƒ s: |  j  d ƒ s: t t |  d  d … ƒ ƒ ‚ |  d } |  d  d … | d k rk | d } n  |  j | ƒ s t t |  t | ƒ d  … ƒ ƒ ‚ t |  ƒ d t | ƒ k s¿ t ‚ |  t | ƒ t | ƒ … }  t j 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    :
2"r0   c              C   sa   xZ t  d ƒ D]L }  t |  ƒ } t | ƒ } t | ƒ } | | k r t |  | | | ƒ q q Wd  S)Né   )Úranger    r*   r0   Úprint)r%   Úcr.   Úer&   r&   r'   Útest2   s    r6   Ú__main__)Ú__doc__r,   r   r(   r0   r6   Ú__name__r&   r&   r&   r'   Ú<module>   s    


	