o ^~!@s@ddlZddlZddlmZddlmZmZGdddeZdS)N)loads) LexerErrorEmptyExpressionErrorc @seZdZeejdZeejejdZeejZ edZ ddddddd d d d d Z ddZ ddZ ddZddZddZddZddZddZddZd S)!Lexer_z dotstarrbracketcommacoloncurrentlparenrparenlbracerbrace) .*],:@(){}ccsH|||jdur|j|jvr)|j|j|j|j|jddV|nj|j|jvrV|j}|j}||jvrH||j7}||jvsgtegt!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_charpositionrZ0/usr/lib/python3/dist-packages/jmespath/lexer.pytokenizes                                    R zLexer.tokenizecCs6|j}|j}||jvr||j7}||jvs |S)N)rGrErHrP)rUrrWrZrZr[rQqs  zLexer._consume_numbercCs@|std|_||_t|j|_|j|j|_t|j|_dS)Nr)rrG _expressionlist_charsrErKrT)rUrVrZrZr[rDxs z Lexer._initialize_for_expressioncCs>|j|jdkrd|_|jS|jd7_|j|j|_|jS)Nr)rGrTrEr_)rUrZrZr[rHs z Lexer._nextcCs|j}d}||j|kr<|jdkr|d7}||jdur.t||j|dd|d||j7}||j|ks||S)NrC\zUnclosed %s delimiterr2)rGrHrErr])rU delimiterrrWrZrZr[_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 %sr2literalr) rGrbreplacer ValueErrorlstripwarningswarnPendingDeprecationWarningrr])rUrlexeme parsed_json token_lenrZrZr[rOs,     zLexer._consume_literalc Csp|j}d|dd}z|j|}dt|||dWSty7}zt|dd}t|||dd}~ww)Nr6quoted_identifierrrrr2)rGrbrrestrsplitr)rUrrjrle error_messagerZrZr[rSs z Lexer._consume_quoted_identifiercCs0|j}|ddd}|j|}d|||dS)Nr(z\'rcr)rGrbrd)rUrrjrlrZrZr[rMs  z!Lexer._consume_raw_string_literalcCsH|j}|j}|}||kr||||||ddS||||dS)Nrr)rGrErH)rUexpected match_type else_typerr rXrZrZr[rNszLexer._match_or_elseN)__name__ __module__ __qualname__setstring ascii_lettersrIdigitsrJrPrLrFr\rQrDrHrbrOrSrMrNrZrZrZr[rs2  W  r) ryrgjsonrjmespath.exceptionsrrobjectrrZrZrZr[s