o
    éT•jy	  ã                   @   sh   d Z ddlZzddlmZ W n ey   dZY nw dgZe dejej	B ej
B ¡Zdd„ Zep1e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Ô  z| | }W n t y   t|ƒd ‚w |dkrˆ
| |d ˆƒS |dkr0ˆ	| |d fˆˆ ˆˆˆƒS |dkr=ˆ| |d fˆ ƒS |dkrQ| ||d … dkrQd |d fS |dkre| ||d … d	kred
|d fS |dkry| ||d … dkryd|d fS ˆ| |ƒ}|d ur¤| ¡ \}}}|s�|ršˆ||p’d |p–d ƒ}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|ƒ‚)Nú"é   ú{ú[Úné   ÚnullÚtÚtrueTÚfé   ÚfalseFÚ ÚNé   ÚNaNÚIé   ÚInfinityú-é	   z	-Infinity)Ú
IndexErrorÚStopIterationÚgroupsÚend)ÚstringÚidxÚnextcharÚmÚintegerÚfracÚ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© ú#/usr/lib/python3.10/json/scanner.pyr%      sB   
ÿÿ
z#py_make_scanner.<locals>._scan_oncec                    s    z
ˆ | |ƒW ˆ  ¡  S ˆ  ¡  w )N)Úclear)r   r   )r%   r'   r1   r2   Ú	scan_onceA   s   
z"py_make_scanner.<locals>.scan_once)r.   r*   r/   Ú	NUMBER_REÚmatchr0   r,   r-   r+   r(   r)   r'   )Úcontextr4   r1   r$   r2   Úpy_make_scanner   s   "%r8   )Ú__doc__ÚreÚ_jsonr   Úc_make_scannerÚImportErrorÚ__all__ÚcompileÚVERBOSEÚ	MULTILINEÚDOTALLr5   r8   r1   r1   r1   r2   Ú<module>   s    ÿþ: