U
    O5[                     @   s\   d Z ddlZddlmZ dd Ze ZddgZed	ejej	B ej
B Zd
d ZepVeZdS )zJSON token scanner
    N   )JSONDecodeErrorc                  C   s.   zddl m}  | W S  tk
r(   Y d S X d S )Nr   make_scanner)Z	_speedupsr   ImportErrorr    r   4/usr/lib/python3/dist-packages/simplejson/scanner.py_import_c_make_scanner   s
    r	   r   r   z)(-?(?:0|[1-9]\d*))(\.\d+)?([eE][-+]?\d+)?c                    s~   | j 
| j| jtj| j| j| j| j	| j	| j
| j| j 	
fdd  fdd}|S )Nc           	         s  d}z| | }W n  t k
r0   t|| |Y nX |dkrL| |d S |dkrp
| |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r| ||d  dkrd|d fS | |}|d k	rf| \}}}|s4|rR||p@d |pJd }n	|}|| 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Expecting value"r   {[n   ZnullttrueTf   ZfalseF N   ZNaNI   ZInfinity-	   z	-Infinity)
IndexErrorr   groupsend)	stringidxerrmsgZnextcharmZintegerZfracZexpres
_scan_onceencodingZmatch_numbermemoobject_hookobject_pairs_hookparse_arrayparse_constantparse_float	parse_intparse_objectparse_stringstrictr   r   r$   "   sH        

   z#py_make_scanner.<locals>._scan_oncec                    s2   |dk rt d| |z | |W S   X d S )Nr   r
   )r   clear)r   r   )r$   r&   r   r   	scan_onceH   s
    z"py_make_scanner.<locals>.scan_once)r-   r)   r.   	NUMBER_REmatchr%   r/   r+   r,   r*   r'   r(   r&   )contextr1   r   r#   r   py_make_scanner   s    $&r5   )__doc__reerrorsr   r	   Zc_make_scanner__all__compileVERBOSE	MULTILINEDOTALLr2   r5   r   r   r   r   r   <module>   s   A