î
\á[\p	  ã               @   s‰   d  Z  d d l Z y d d l m Z Wn e k
 r@ d Z Yn Xd g Z e j d e j e j	 Be j
 Bƒ Z d d „  Z e p‚ e Z d S)zJSON token scanner
é    N)Úmake_scannerr   z)(-?(?:0|[1-9]\d*))(\.\d+)?([eE][-+]?\d+)?c                s¯   |  j  ‰	 |  j ‰ |  j ‰
 t j ‰ |  j ‰ |  j ‰ |  j ‰ |  j ‰ |  j	 ‰ |  j
 ‰ |  j ‰ ‡  ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡	 ‡
 ‡ f d d †  ‰  ‡  ‡ f d d †  } ˆ  S)Nc                sv  y |  | } Wn t  k
 r. t | ƒ ‚ Yn X| d k rO ˆ
 |  | d ˆ ƒ S| d k r~ ˆ	 |  | d f ˆ ˆ  ˆ ˆ ˆ ƒ S| d k r¡ ˆ |  | d f ˆ  ƒ S| d k rÕ |  | | d … d k rÕ d  | d f S| d k r	|  | | d … d	 k r	d
 | d f S| d k r=|  | | d … d k r=d | d f Sˆ |  | ƒ } | d  k	 r¸| j ƒ  \ } } } | sy| rœˆ | | pˆd | p’d ƒ } n ˆ | ƒ } | | j ƒ  f S| d k rò|  | | d … d k ròˆ d ƒ | d f S| d k r,|  | | d … d k r,ˆ d ƒ | d f S| d k rf|  | | d … d k rfˆ d ƒ | d f St | ƒ ‚ d  S)Nú"é   ú{ú[Úné   ZnullÚtZtrueTÚfé   ZfalseFÚ ÚNé   ZNaNÚIé   ZInfinityú-é	   z	-Infinity)Ú
IndexErrorÚStopIterationÚgroupsÚend)ÚstringÚidxZnextcharÚmZintegerZfracZexpZres)Ú
_scan_onceÚmatch_numberÚmemoÚobject_hookÚobject_pairs_hookÚparse_arrayÚparse_constantÚparse_floatÚ	parse_intÚparse_objectÚparse_stringÚstrict© ú"/usr/lib/python3.4/json/scanner.pyr      s>    &&&#&&&z#py_make_scanner.<locals>._scan_oncec          
      s#   z ˆ  |  | ƒ SWd  ˆ j  ƒ  Xd  S)N)Úclear)r   r   )r   r   r&   r'   Ú	scan_onceA   s    z"py_make_scanner.<locals>.scan_once)r#   r   r$   Ú	NUMBER_REÚmatchr%   r!   r"   r    r   r   r   )Úcontextr)   r&   )r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r'   Úpy_make_scanner   s    											3%r-   )Ú__doc__ÚreZ_jsonr   Zc_make_scannerÚImportErrorÚ__all__ÚcompileÚVERBOSEÚ	MULTILINEÚDOTALLr*   r-   r&   r&   r&   r'   Ú<module>   s   	: