o
    YRh~!                     @   s@   d dl Z d dlZd dlmZ d dlmZmZ G dd deZdS )    N)loads)
LexerErrorEmptyExpressionErrorc                   @   s   e Zd Zeejd Zeejej d ZeejZ	edZ
ddddddd	d
ddd
Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd S )!Lexer_z 	
dotstarrbracketcommacoloncurrentlparenrparenlbracerbrace)
.*],:@(){}c                 c   sH   |  | | jd ur| j| jv r)| j| j | j| j| jd dV  |   nj| j| jv rV| j}| j}|  | jv rH|| j7 }|  | jv s<d|||t| dV  n=| j| jv rb|   n1| jdkr| j}|  }|dkr|   dd||d dV  n|d	kr|   d
d||d dV  ndd||d dV  n| jdkr| 	 V  n| jdkr| 
dddV  n| jdkr| 
dddV  n| jdkr|  V  n| j| jv r| j}|  }dt|||t| dV  n| jdkr| j}|  }t|dkrdt|||t| dV  nt||d| d| jdkr&|  V  nm| jdkr5| 
dddV  n^| jdkrD| 
ddd V  nO| jd!krS| 
dd"d#V  n@| jdkr|  dkrqd$d%| jd | jdV  |   n"| jd u r{| j}n| jd }t|dd&dt| j| jd'| j d| jd usd(d)| j| jdV  d S )*N   typevaluestartendunquoted_identifier[r   flattenz[]   ?filterz[?lbracket'|orpipe&andexpref`number-zUnknown token '%s'lexer_positionlexer_valuemessage"<=ltelt>gtegt!nenoteqz==zUnknown token '='zUnknown token %seof )_initialize_for_expression_currentSIMPLE_TOKENS	_position_nextSTART_IDENTIFIERVALID_IDENTIFIERlen
WHITESPACE_consume_raw_string_literal_match_or_else_consume_literalVALID_NUMBER_consume_numberintr   _consume_quoted_identifier_length)self
expressionr   buff	next_charposition rZ   P/home/air/sanwanet/backup_V2/venv/lib/python3.10/site-packages/jmespath/lexer.pytokenize   s   














RzLexer.tokenizec                 C   s6   | j }| j}|  | jv r|| j7 }|  | jv s|S )N)rG   rE   rH   rP   )rU   r   rW   rZ   rZ   r[   rQ   q   s   
zLexer._consume_numberc                 C   s@   |st  d| _|| _t| j| _| j| j | _t| j| _d S )Nr   )r   rG   _expressionlist_charsrE   rK   rT   )rU   rV   rZ   rZ   r[   rD   x   s   z Lexer._initialize_for_expressionc                 C   s>   | j | jd krd | _| jS |  j d7  _ | j| j  | _| jS )Nr   )rG   rT   rE   r_   )rU   rZ   rZ   r[   rH      s   zLexer._nextc                 C   s   | j }d}|   | j|kr<| jdkr|d7 }|   | jd u r.t|| j|d  d| d|| j7 }|   | j|ks|   |S )NrC   \zUnclosed %s delimiterr2   )rG   rH   rE   r   r]   )rU   	delimiterr   rW   rZ   rZ   r[   _consume_until   s"   




zLexer._consume_untilc                 C   s   | j }| ddd}zt|}W n/ tyA   ztd|  }tdt W n ty>   t	|| j
|d  d| dw Y nw | j | }d|||dS )	Nr/   z\`z"%s"z deprecated string literal syntaxzBad token %sr2   literalr   )rG   rb   replacer   
ValueErrorlstripwarningswarnPendingDeprecationWarningr   r]   )rU   r   lexemeparsed_json	token_lenrZ   rZ   r[   rO      s,   
zLexer._consume_literalc              
   C   sp   | j }d| d d }z| j | }dt|||dW S  ty7 } zt|dd }t|||dd }~ww )Nr6   quoted_identifierr   r   r   r2   )rG   rb   r   re   strsplitr   )rU   r   rj   rl   eerror_messagerZ   rZ   r[   rS      s   
z Lexer._consume_quoted_identifierc                 C   s0   | j }| ddd}| j | }d|||dS )Nr(   z\'rc   r   )rG   rb   rd   )rU   r   rj   rl   rZ   rZ   r[   rM      s   
z!Lexer._consume_raw_string_literalc                 C   sH   | j }| j}|  }||kr|   ||| ||d dS ||||dS )Nr   r   )rG   rE   rH   )rU   expected
match_type	else_typer   r   rX   rZ   rZ   r[   rN      s   zLexer._match_or_elseN)__name__
__module____qualname__setstringascii_lettersrI   digitsrJ   rP   rL   rF   r\   rQ   rD   rH   rb   rO   rS   rM   rN   rZ   rZ   rZ   r[   r      s2    
W	r   )	ry   rg   jsonr   jmespath.exceptionsr   r   objectr   rZ   rZ   rZ   r[   <module>   s
    