File: //lib/python3/dist-packages/jmespath/__pycache__/lexer.cpython-38.pyc
U
�!s\~! � @ s@ d dl Z d dlZd dlmZ d dlmZmZ G dd� de�ZdS )� N)�loads)�
LexerError�EmptyExpressionErrorc @ s� e Zd Zeejd �Zeejej d �Zeej�Z ed�Z
ddddddd d
ddd
�
Zdd� Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zd S )!�Lexer�_z
�dotZstarZrbracketZcommaZcolon�currentZlparenZrparenZlbraceZrbrace)
�.�*�]�,�:�@�(�)�{�}c c s< | � |� | jd k �r$| j| jkrN| j| j | j| j| jd d�V | �� q
| j| jkr�| j}| j}| �� | jkr�|| j7 }qfd|||t|� d�V q
| j| jkr�| �� q
| jdk�r.| j}| �� }|dkr�| �� dd||d d�V n<|d k�r| �� d
d||d d�V ndd||d d�V q
| jd
k�rF| � � V q
| jdk�rd| �
ddd�V q
| jdk�r�| �
ddd�V q
| jdk�r�| �� V q
| j| jk�r�| j}| �
� }dt|�||t|� d�V q
| jdk�r.| j}| �
� }t|�dk�rdt|�||t|� d�V nt||d| d��q
| jdk�rF| �� V q
| jdk�rd| �
ddd�V q
| jdk�r�| �
ddd �V q
| jd!k�r�| �
dd"d#�V q
| jdk�r
| �� dk�r�d$d%| jd | jd�V | �� n,| jd k�r�| j}n
| jd }t|dd&d��q
t| j| jd'| j d��q
d(d)| j| jd�V d S )*N� ��type�value�start�endZunquoted_identifier�[r Zflattenz[]� �?�filterz[?Zlbracket�'�|�or�pipe�&�andZexpref�`Znumber�-zUnknown token '%s'�Zlexer_positionZlexer_value�message�"�<�=Zlte�lt�>Zgte�gt�!�ne�not�eqz==zUnknown token '='zUnknown 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_charZposition� rH �0/usr/lib/python3/dist-packages/jmespath/lexer.py�tokenize s�
�
�
�
�
�
�
�
� �
�� �zLexer.tokenizec C s* | j }| j}| �� | jkr&|| j7 }q|S )N)r6 r4 r7 r? )rD r rF rH rH rI r@ q s
zLexer._consume_numberc C s@ |s
t � �d| _|| _t| j�| _| j| j | _t| j�| _d S )Nr )r r6 �_expression�list�_charsr4 r: rC )rD rE rH rH rI r3 x s z Lexer._initialize_for_expressionc C s: | j | jd krd | _n| j d7 _ | j| j | _| jS )Nr )r6 rC r4 rM )rD rH rH rI r7 � s
zLexer._nextc C s| | j }d}| �� | j|krp| jdkr6|d7 }| �� | jd kr\t|| j|d � d| d��|| j7 }| �� q| �� |S )Nr2 �\zUnclosed %s delimiterr% )r6 r7 r4 r rK )rD Z delimiterr rF rH rH rI �_consume_until� s
�
zLexer._consume_untilc C s� | j }| �d��dd�}zt|�}W nf tk
r� z td|�� �}t�dt� W n0 tk
r� t || j
|d � d| d��Y nX Y nX | j | }d|||d�S ) Nr# z\`z"%s"z deprecated string literal syntaxzBad token %sr% �literalr )r6 rO �replacer �
ValueError�lstrip�warnings�warn�PendingDeprecationWarningr rK )rD r �lexemeZparsed_json� token_lenrH rH rI r>