File: //lib/python3.6/site-packages/jmespath/__pycache__/lexer.cpython-36.opt-1.pyc
3
g�V9 � @ s@ d dl Z d dlZd dlmZ d dlmZmZ G dd� de�ZdS )� N)�loads)�
LexerError�EmptyExpressionErrorc @ s� e Zd Zeejd �Zeejej d �Zeejd �Z eej�Z
ed�Zdddddd d
ddd
d�
Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� ZdS ) �Lexer�_�-z
�dotZstarZrbracketZcommaZcolon�currentZlparenZrparenZlbraceZrbrace)
�.�*�]�,�:�@�(�)�{�}c c s� | j |� �x�| jd k �r�| j| jkrR| j| j | j| j| jd d�V | j� q| j| jkr�| j}| j}x| j� | jkr�|| j7 }qlW d|||t|� d�V q| j| jkr�| j� q| jdk�r6| j}| j� }|dkr�| j� dd||d d�V n<|d k�r | j� d
d||d d�V ndd||d d�V q| jd
k�rN| j � V q| jdk�rl| j
ddd�V q| jdk�r�| j
ddd�V q| jdk�r�| j� V q| j| jk�r�| j}| j}x | j� | j
k�r�|| j7 }�q�W dt|�||t|� d�V q| jdk�r| j� V q| jdk�r2| j
ddd�V q| jdk�rP| j
ddd�V q| jdk�rn| j
ddd �V q| jdk�r�| j
dd!d"�V qt| j| jd#| j d$��qW d%d&| j| jd�V d S )'N� )�type�value�start�endZunquoted_identifier�[r Zflattenz[]� �?�filterz[?Zlbracket�'�|�or�pipe�&�andZexpref�`Znumber�"�<�=Zlte�lt�>Zgte�gt�!�ne�not�eq�unknownzUnknown token %s)�lexer_position�lexer_value�message�eof� )�_initialize_for_expression�_current�
SIMPLE_TOKENS� _position�_next�START_IDENTIFIER�VALID_IDENTIFIER�len�
WHITESPACE�_consume_raw_string_literal�_match_or_else�_consume_literal�START_NUMBER�VALID_NUMBER�int�_consume_quoted_identifierr �_length)�self�
expressionr �buff� next_char� rI �/usr/lib/python3.6/lexer.py�tokenize sv
zLexer.tokenizec C s@ |s
t � �d| _|| _t| j�| _| j| j | _t| j�| _d S )Nr )r r7 �_expression�list�_charsr5 r; rD )rE rF rI rI rJ r4 Z s z Lexer._initialize_for_expressionc C s: | j | jd krd | _n| j d7 _ | j| j | _| jS )Nr )r7 rD r5 rN )rE rI rI rJ r8 c s
zLexer._nextc C sx | j }d}| j� xX| j|krj| jdkr8|d7 }| j� | jd krVt|| jd| d��|| j7 }| j� qW | j� |S )Nr3 �\zUnclosed %s delimiter)r/ r0 r1 )r7 r8 r5 r rL )rE Z delimiterr rG rI rI rJ �_consume_untilk s
zLexer._consume_untilc C s� | j }| jd�jdd�}yt|�}W n^ tk
r� y td|j� �}tjdt� W n( tk
r| t || j
d| d��Y nX Y nX | j | }d|||d�S ) Nr# z\`z"%s"z deprecated string literal syntaxzBad token %s)r/ r0 r1 �literal)r r r r )r7 rP �replacer �
ValueError�lstrip�warnings�warn�PendingDeprecationWarningr rL )rE r �lexemeZparsed_json� token_lenrI rI rJ r? s
zLexer._consume_literalc C s| | j }d| jd� d }y| j | }dt|�||d�S tk
rv } z&t|�jd�d }t|||d��W Y d d }~X nX d S )Nr$ Zquoted_identifier)r r r r r r )r/ r0 r1 )r7 rP r rS �str�splitr )rE r rX rY �eZ
error_messagerI rI rJ rC � s
z Lexer._consume_quoted_identifierc C s0 | j }| jd�jdd�}| j | }d|||d�S )Nr z\'rQ )r r r r )r7 rP rR )rE r rX rY rI rI rJ r= � s
z!Lexer._consume_raw_string_literalc C sH | j }| j}| j� }||kr:| j� ||| ||d d�S ||||d�S )Nr )r r r r )r7 r5 r8 )rE ZexpectedZ
match_typeZ else_typer r rH rI rI rJ r>