3 D\~!@s@ddlZddlZddlmZddlmZmZGdddeZdS)N)loads) LexerErrorEmptyExpressionErrorc @seZdZeejdZeejejdZeejZ edZ ddddddd d d d d Z ddZ ddZ ddZddZddZddZddZddZddZd S)!Lexer_z dotZstarZrbracketcommacoloncurrentZlparenZrparenZlbracerbrace) .*],:@(){}ccsF|j|x |jdk r,|j|jkrR|j|j|j|j|jddV|jq|j|jkr|j}|j}x|j|jkr||j7}qlWd|||t|dVq|j|jkr|jq|jdkr6|j}|j}|dkr|jdd||ddVn<|d kr |jd d ||ddVnd d||ddVq|jd krN|j Vq|jdkrl|j dddVq|jdkr|j dddVq|jdkr|j Vq|j|j kr|j}|j }dt|||t|dVq|jdkr6|j}|j }t|dkr"dt|||t|dVnt||d|dq|jdkrN|jVq|jdkrl|j dddVq|jdkr|j ddd Vq|jd!kr|j dd"d#Vq|jdkr|jdkrd$d%|jd|jdV|jn,|jdkr|j}n |jd}t|dd&dqt|j|jd'|jdqWd(d)|j|jdVdS)*N)typevaluestartendZunquoted_identifier[rflattenz[]?filterz[?Zlbracket'|orpipe&andZexpref`number-zUnknown token '%s')lexer_position lexer_valuemessage"<=Zltelt>Zgtegt!nenoteqz==zUnknown token '='zUnknown token %seof)_initialize_for_expression_current SIMPLE_TOKENS _position_nextSTART_IDENTIFIERVALID_IDENTIFIERlen WHITESPACE_consume_raw_string_literal_match_or_else_consume_literal VALID_NUMBER_consume_numberintr_consume_quoted_identifier_length)self expressionrbuff next_charpositionrNh/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-install-emcbgzcf/jmespath/jmespath/lexer.pytokenizes                          zLexer.tokenizecCs.|j}|j}x|j|jkr(||j7}qW|S)N)r;r9r<rD)rIrrKrNrNrOrEqs zLexer._consume_numbercCs@|s td|_||_t|j|_|j|j|_t|j|_dS)Nr)rr; _expressionlist_charsr9r?rH)rIrJrNrNrOr8xs z Lexer._initialize_for_expressioncCs:|j|jdkrd|_n|jd7_|j|j|_|jS)Nr)r;rHr9rS)rIrNrNrOr<s z Lexer._nextcCs|j}d}|jx`|j|krr|jdkr8|d7}|j|jdkr^t||j|dd|d||j7}|jqW|j|S)Nr7\zUnclosed %s delimiter)r)r*r+)r;r<r9rrQ)rI delimiterrrKrNrNrO_consume_untils       zLexer._consume_untilcCs|j}|jdjdd}y t|}Wnftk ry td|j}tjdtWn0tk rt ||j |dd|dYnXYnX|j|}d|||dS) Nr&z\`z"%s"z deprecated string literal syntaxz Bad token %s)r)r*r+literal)rrrr) r;rVreplacer ValueErrorlstripwarningswarnPendingDeprecationWarningrrQ)rIrlexemeZ parsed_json token_lenrNrNrOrCs     zLexer._consume_literalcCs||j}d|jdd}y|j|}dt|||dStk rv}z&t|jdd}t|||dWYdd}~XnXdS)Nr,Zquoted_identifier)rrrrrr)r)r*r+)r;rVrrYstrsplitr)rIrr^r_e error_messagerNrNrOrGs  z Lexer._consume_quoted_identifiercCs0|j}|jdjdd}|j|}d|||dS)Nr z\'rW)rrrr)r;rVrX)rIrr^r_rNrNrOrAs  z!Lexer._consume_raw_string_literalcCsH|j}|j}|j}||kr:|j|||||ddS||||dS)Nr)rrrr)r;r9r<)rIexpectedZ match_typeZ else_typerr rLrNrNrOrBszLexer._match_or_elseN)__name__ __module__ __qualname__setstring ascii_lettersr=digitsr>rDr@r:rPrEr8r<rVrCrGrArBrNrNrNrOrs. W  r) rir[jsonrZjmespath.exceptionsrrobjectrrNrNrNrOs