3
tY]o	                 @   sj   d Z ddlZyddlmZ W n ek
r4   dZY nX dgZejdejej	B ej
B Zdd ZepdeZdS )zJSON token scanner
    N)make_scannerr   z)(-?(?:0|[1-9]\d*))(\.\d+)?([eE][-+]?\d+)?c                sv   | j 	| j| j
tj| j| j| j| j| j	| j
| j 	
fdd  fdd}|S )Nc                s  y| | }W n t k
r(   t|Y nX |dkrB
| |d S |dkrd	| |d f S |dkr~| |d f S |dkr| ||d  dkrd |d fS |dkr| ||d  d	krd
|d fS |dko| ||d  dk rd|d fS | |}|d k	rX|j \}}}|s&|rD||p2d |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r| ||d  dkrd|d fS t|d S )N"   {[n   ZnullttrueTf   ZfalseF N   ZNaNI   ZInfinity-	   z	-Infinity)
IndexErrorStopIterationgroupsend)stringidxZnextcharmZintegerZfracZexpres)
_scan_oncematch_numbermemoobject_hookobject_pairs_hookparse_arrayparse_constantparse_float	parse_intparse_objectparse_stringstrict lib/python3.6/json/scanner.pyr      s>    

   z#py_make_scanner.<locals>._scan_oncec          
      s   z
 | |S j   X d 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    "%r/   )__doc__reZ_jsonr   Zc_make_scannerImportError__all__compileVERBOSE	MULTILINEDOTALLr,   r/   r(   r(   r(   r)   <module>   s   
: