o d~!@s@ddlZddlZddlmZddlmZmZGdddeZdS)N)loads) LexerErrorEmptyExpressionErrorc @seZdZeejdZeejejdZeejZ edZ ddddddd d d d d Z ddZ ddZ ddZddZddZddZddZddZddZd S)!Lexer_z dotstarZrbracketcommacoloncurrentZlparenZrparenZlbracerbrace) .*],:@(){}ccsH|||jdur|j|jvr)|j|j|j|j|jddV|nj|j|jvrV|j}|j}||jvrH||j7}||jvsZgtegt!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_charpositionrOi/private/var/folders/v1/_jykv66s6qd26_69j1njbrl80000gr/T/pip-target-p1gutpg6/lib/python/jmespath/lexer.pytokenizes                                    R zLexer.tokenizecCs6|j}|j}||jvr||j7}||jvs |S)N)r<r:r=rE)rJrrLrOrOrPrFqs  zLexer._consume_numbercCs@|std|_||_t|j|_|j|j|_t|j|_dS)Nr)rr< _expressionlist_charsr:r@rI)rJrKrOrOrPr9xs z Lexer._initialize_for_expressioncCs>|j|jdkrd|_|jS|jd7_|j|j|_|jS)Nr)r<rIr:rT)rJrOrOrPr=s z Lexer._nextcCs|j}d}||j|kr<|jdkr|d7}||jdur.t||j|dd|d||j7}||j|ks||S)Nr8\zUnclosed %s delimiterr+)r<r=r:rrR)rJ delimiterrrLrOrOrP_consume_untils"       zLexer._consume_untilc Cs|j}|ddd}zt|}Wn/tyAztd|}tdtWnty>t ||j |dd|dwYnw|j|}d|||dS) Nr(z\`z"%s"z deprecated string literal syntaxz Bad token %sr+literalr) r<rWreplacer ValueErrorlstripwarningswarnPendingDeprecationWarningrrR)rJrlexemeZ parsed_json token_lenrOrOrPrDs,     zLexer._consume_literalc Csp|j}d|dd}z|j|}dt|||dWSty7}zt|dd}t|||dd}~ww)Nr-Zquoted_identifierrrrr+)r<rWrrZstrsplitr)rJrr_r`e error_messagerOrOrPrHs z Lexer._consume_quoted_identifiercCs0|j}|ddd}|j|}d|||dS)Nr"z\'rXr)r<rWrY)rJrr_r`rOrOrPrBs  z!Lexer._consume_raw_string_literalcCsH|j}|j}|}||kr||||||ddS||||dS)Nrr)r<r:r=)rJexpectedZ match_typeZ else_typerr rMrOrOrPrCszLexer._match_or_elseN)__name__ __module__ __qualname__setstring ascii_lettersr>digitsr?rErAr;rQrFr9r=rWrDrHrBrCrOrOrOrPrs2  W  r) rjr\jsonrZjmespath.exceptionsrrobjectrrOrOrOrPs