ó
    –À¬b�J  ã                   ó‚   • S r SSKrSSKJr  SSKJr  SSKJr  SSKJr  SSKJr   " S S	\	5      r
\ " S
 S\	5      5       rg)a‹  Top down operator precedence parser.

This is an implementation of Vaughan R. Pratt's
"Top Down Operator Precedence" parser.
(http://dl.acm.org/citation.cfm?doid=512927.512931).

These are some additional resources that help explain the
general idea behind a Pratt parser:

* http://effbot.org/zone/simple-top-down-parsing.htm
* http://javascript.crockford.com/tdop/tdop.html

A few notes on the implementation.

* All the nud/led tokens are on the Parser class itself, and are dispatched
  using getattr().  This keeps all the parsing logic contained to a single
  class.
* We use two passes through the data.  One to create a list of token,
  then one pass through the tokens to create the AST.  While the lexer actually
  yields tokens, we convert it to a list so we can easily implement two tokens
  of lookahead.  A previous implementation used a fixed circular buffer, but it
  was significantly slower.  Also, the average jmespath expression typically
  does not have a large amount of token so this is not an issue.  And
  interestingly enough, creating a token list first is actually faster than
  consuming from the token iterator one token at a time.

é    N)Úlexer)Úwith_repr_method)Úast)Ú
exceptions)Úvisitorc                   óð  • \ rS rSr0 SS_SS_SS_SS_SS_SS_S	S_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SSSSSSSSSSSSS .ErS!r0 rS"rSXS# jrS$ r	S% r
S& rSYS' jrS( rS) rS* rS+ rS, rS- rS. rS/ rS0 rS1 rS2 rS3 rS4 rS5 rS6 rS7 rS8 rS9 rS: rS; r S< r!S= r"S> r#S? r$S@ r%SA r&SB r'SC r(SD r)SE r*SF r+SG r,SH r-SI r.SJ r/SK r0SZSM jr1SN r2SO r3SP r4SQ r5SR r6SS r7ST r8SU r9\:SV 5       r;SWr<gL)[ÚParseré%   Úeofr   Úunquoted_identifierÚquoted_identifierÚliteralÚrbracketÚrparenÚcommaÚrbraceÚnumberÚcurrentÚexprefÚcolonÚpipeé   Úoré   Úandé   Úeqé   Úgté	   é   é   é(   é-   é2   é7   é<   )ÚltÚgteÚlteÚneÚflattenÚstarÚfilterÚdotÚnotÚlbraceÚlbracketÚlparené
   é€   c                 óB   • S U l         S /U-  U l        Xl        SU l        g ©Nr   )Ú	tokenizerÚ_tokensÚ_buffer_sizeÚ_index)ÚselfÚ	lookaheads     Ú1/usr/lib/python3/dist-packages/jmespath/parser.pyÚ__init__ÚParser.__init__N   s$   € ØˆŒØ�v 	Ñ)ˆŒØ%ÔØˆ�ó    c                 óê   • U R                   R                  U5      nUb  U$ U R                  U5      nX0R                   U'   [        U R                   5      U R                  :”  a  U R                  5         U$ ©N)Ú_CACHEÚgetÚ	_do_parseÚlenÚ	_MAX_SIZEÚ_free_cache_entries)r<   Ú
expressionÚcachedÚparsed_results       r>   ÚparseÚParser.parseT   s`   € Ø—‘—‘ Ó,ˆØÑØˆMØŸ™ zÓ2ˆØ"/�‰�JÑÜˆt�{‰{Ó˜dŸn™nÓ,Ø×$Ñ$Ô&ØÐrA   c                 óú   •  U R                  U5      $ ! [        R                   a  nXl        e S nAf[        R                   a  nUR                  U5        e S nAf[        R                   a  nXl        e S nAff = frC   )Ú_parser   Ú
LexerErrorrJ   ÚIncompleteExpressionErrorÚset_expressionÚ
ParseError)r<   rJ   Úes      r>   rF   ÚParser._do_parse^   sk   € ð
	Ø—;‘;˜zÓ*Ð*øÜ×$Ñ$ó 	Ø%ŒLØûÜ×3Ñ3ó 	Ø×Ñ˜ZÔ(ØûÜ×$Ñ$ó 	Ø%ŒLØûð	ús*   ‚ “A:§.®A:ÁAÁA:Á.A5Á5A:c                 ód  • [         R                  " 5       R                  U5      U l        [	        U R                  5      U l        SU l        U R                  SS9nU R                  5       S:X  d9  U R                  S5      n[        R                  " US   US   US   SUS   -  5      e[        X5      $ )Nr   )Úbinding_powerr   ÚstartÚvalueÚtypezUnexpected token: %s)r   ÚLexerÚtokenizer8   Úlistr9   r;   Ú_expressionÚ_current_tokenÚ_lookahead_tokenr   rT   ÚParsedResult)r<   rJ   ÚparsedÚts       r>   rP   ÚParser._parsek   s£   € ÜŸš›×/Ñ/°
Ó;ˆŒÜ˜DŸN™NÓ+ˆŒØˆŒØ×!Ñ!°Ð!Ð2ˆØ×"Ñ"Ó$¨Ó-Ø×%Ñ% aÓ(ˆAÜ×'Ò'¨¨'©
°A°g±JÀÀ&Á	Ø(>ÀÀ7ÁÑ(KóMð Mä˜JÓ/Ð/rA   c                 óº  • U R                  S5      nU R                  5         [        U SUS   -  U R                  5      nU" U5      nU R	                  5       nXR
                  U   :  ar  [        U SU-  S 5      nUc#  U R                  S5      nU R                  U5        O(U R                  5         U" U5      nU R	                  5       nXR
                  U   :  a  Mr  U$ )Nr   z_token_nud_%sr[   z_token_led_%s)ra   Ú_advanceÚgetattrÚ_error_nud_tokenr`   ÚBINDING_POWERÚ_error_led_token)r<   rX   Ú
left_tokenÚnud_functionÚleftÚcurrent_tokenÚledÚerror_tokens           r>   r_   ÚParser._expressionv   sØ   € Ø×*Ñ*¨1Ó-ˆ
Ø�‰ŒÜØ�/ J¨vÑ$6Ñ6Ø×!Ñ!ó#ˆñ ˜JÓ'ˆØ×+Ñ+Ó-ˆØ×0Ñ0°Ñ?Ó?Ü˜$ °-Ñ ?ÀÓFˆCØ‰{Ø"×3Ñ3°AÓ6�Ø×%Ñ% kÕ2à—‘”Ù˜4“y�Ø $× 3Ñ 3Ó 5�ð ×0Ñ0°Ñ?Õ?ð ˆrA   c                 ó4   • [         R                  " US   5      $ ©NrZ   )r   r   ©r<   Útokens     r>   Ú_token_nud_literalÚParser._token_nud_literal‰   s   € Ü�{Š{˜5 ™>Ó*Ð*rA   c                 ó4   • [         R                  " US   5      $ rt   )r   Úfieldru   s     r>   Ú_token_nud_unquoted_identifierÚ%Parser._token_nud_unquoted_identifierŒ   s   € Ü�yŠy˜˜w™Ó(Ð(rA   c                 óÀ   • [         R                  " US   5      nU R                  5       S:X  a0  U R                  S5      n[        R
                  " SUS   US   S5      eU$ )NrZ   r3   r   r[   z1Quoted identifier not allowed for function names.)r   rz   r`   ra   r   rT   )r<   rv   rz   rd   s       r>   Ú_token_nud_quoted_identifierÚ#Parser._token_nud_quoted_identifier�   se   € Ü—	’	˜% ™.Ó)ˆð ×ÑÓ  HÓ,Ø×%Ñ% aÓ(ˆAÜ×'Ò'Ø�1�W‘:˜q ™yØCóEð Eð ˆrA   c                 óè   • [         R                  " 5       nU R                  5       S:X  a  [         R                  " 5       nOU R                  U R                  S   5      n[         R
                  " X#5      $ )Nr   r-   )r   Úidentityr`   Ú_parse_projection_rhsrj   Úvalue_projection©r<   rv   rn   Úrights       r>   Ú_token_nud_starÚParser._token_nud_starš   sU   € Ü�|Š|‹~ˆØ×ÑÓ  JÓ.Ü—L’L“N‰Eà×.Ñ.¨t×/AÑ/AÀ&Ñ/IÓJˆEÜ×#Ò# DÓ0Ð0rA   c                 óJ   • U R                  [        R                  " 5       5      $ rC   )Ú_token_led_filterr   r�   ru   s     r>   Ú_token_nud_filterÚParser._token_nud_filter¢   s   € Ø×%Ñ%¤c§l¢l£nÓ5Ð5rA   c                 ó"   • U R                  5       $ rC   )Ú_parse_multi_select_hashru   s     r>   Ú_token_nud_lbraceÚParser._token_nud_lbrace¥   s   € Ø×,Ñ,Ó.Ð.rA   c                 óH   • U R                  5       nU R                  S5        U$ )Nr   )r_   Ú_match©r<   rv   rJ   s      r>   Ú_token_nud_lparenÚParser._token_nud_lparen¨   s"   € Ø×%Ñ%Ó'ˆ
Ø�‰�HÔØÐrA   c                 ó¼   • [         R                  " [         R                  " 5       5      nU R                  U R                  S   5      n[         R
                  " X#5      $ ©Nr,   )r   r,   r�   r‚   rj   Ú
projectionr„   s       r>   Ú_token_nud_flattenÚParser._token_nud_flatten­   sC   € Ü�{Š{œ3Ÿ<š<›>Ó*ˆØ×*Ñ*Ø×Ñ˜yÑ)ó+ˆä�~Š~˜dÓ*Ð*rA   c                 ój   • U R                  U R                  S   5      n[        R                  " U5      $ )Nr0   )r_   rj   r   Únot_expression)r<   rv   Úexprs      r>   Ú_token_nud_notÚParser._token_nud_not³   s.   € Ø×Ñ × 2Ñ 2°5Ñ 9Ó:ˆÜ×!Ò! $Ó'Ð'rA   c                 óÖ  • U R                  5       S;   a5  U R                  5       nU R                  [        R                  " 5       U5      $ U R                  5       S:X  a}  U R                  S5      S:X  ah  U R                  5         U R                  5         U R                  U R                  S   5      n[        R                  " [        R                  " 5       U5      $ U R                  5       $ )N©r   r   r-   r   r   )r`   Ú_parse_index_expressionÚ_project_if_slicer   r�   Ú
_lookaheadrg   r‚   rj   r—   Ú_parse_multi_select_list)r<   rv   r…   s      r>   Ú_token_nud_lbracketÚParser._token_nud_lbracket·   s²   € Ø×ÑÓ Ð$7Ó7Ø×0Ñ0Ó2ˆEð
 ×)Ñ)¬#¯,ª,«.¸%Ó@Ð@Ø× Ñ Ó" fÓ,Ø—‘ Ó" jÓ0Ø�M‰MŒOØ�M‰MŒOØ×.Ñ.¨t×/AÑ/AÀ&Ñ/IÓJˆEÜ—>’>¤#§,¢,£.°%Ó8Ð8à×0Ñ0Ó2Ð2rA   c                 ó  • U R                  S5      S:X  d  U R                  S5      S:X  a  U R                  5       $ [        R                  " U R	                  S5      S   5      nU R                  5         U R                  S5        U$ )Nr   r   r   rZ   r   )r£   Ú_parse_slice_expressionr   Úindexra   rg   r‘   )r<   Únodes     r>   r¡   ÚParser._parse_index_expressionÈ   so   € ð
 �O‰O˜AÓ 'Ó)Ø—‘ Ó" gÓ-Ø×/Ñ/Ó1Ð1ô —9’9˜T×2Ñ2°1Ó5°gÑ>Ó?ˆDØ�M‰MŒOØ�K‰K˜
Ô#ØˆKrA   c                 óì  • / SQnSnU R                  5       nUS:X  dµ  US:  a¯  US:X  a=  US-  nUS:X  a!  U R                  U R                  S5      S5        U R                  5         ONUS:X  a'  U R                  S5      S	   X'   U R                  5         O!U R                  U R                  S5      S5        U R                  5       nUS:X  d  US:  a  M¯  U R	                  S5        [
        R                  " U6 $ )
N)NNNr   r   r   r   r   úsyntax errorr   rZ   )r`   Ú_raise_parse_error_for_tokenra   rg   r‘   r   Úslice)r<   Úpartsr©   ro   s       r>   r¨   ÚParser._parse_slice_expression×   së   € ò #ˆØˆØ×+Ñ+Ó-ˆØ :Ó-°%¸!³)Ø Ó'Ø˜‘
�Ø˜A“:Ø×5Ñ5Ø×-Ñ-¨aÓ0°.ôBà—‘•Ø (Ó*Ø#×4Ñ4°QÓ7¸Ñ@�‘Ø—‘•à×1Ñ1Ø×)Ñ)¨!Ó,¨nô>à ×/Ñ/Ó1ˆMð   :Ó-°%¸!µ)ð 	�‰�JÔÜ�yŠy˜%Ð Ð rA   c                 ó,   • [         R                  " 5       $ rC   )r   Úcurrent_noderu   s     r>   Ú_token_nud_currentÚParser._token_nud_currentï   s   € Ü×ÒÓ!Ð!rA   c                 ój   • U R                  U R                  S   5      n[        R                  " U5      $ )Nr   )r_   rj   r   r   r’   s      r>   Ú_token_nud_exprefÚParser._token_nud_exprefò   s,   € Ø×%Ñ% d×&8Ñ&8¸Ñ&BÓCˆ
Ü�zŠz˜*Ó%Ð%rA   c                 óZ  • U R                  5       S:X  dT  U R                  U R                  S   5      nUS   S:X  a  US   R                  U5        U$ [        R
                  " X/5      $ U R                  5         U R                  U R                  S   5      n[        R                  " X5      $ )Nr-   r/   r[   ÚsubexpressionÚchildren)	r`   Ú_parse_dot_rhsrj   Úappendr   rº   rg   r‚   rƒ   ©r<   rn   r…   s      r>   Ú_token_led_dotÚParser._token_led_dotö   sŸ   € Ø×"Ñ"Ó$¨Ó.Ø×'Ñ'¨×(:Ñ(:¸5Ñ(AÓBˆEØ�F‰|˜Ó.Ø�ZÑ ×'Ñ'¨Ô.Ø�ä×(Ò(¨$¨Ó7Ð7ð �M‰MŒOØ×.Ñ.Ø×"Ñ" 5Ñ)ó+ˆEä×'Ò'¨Ó4Ð4rA   c                 ój   • U R                  U R                  S   5      n[        R                  " X5      $ )Nr   )r_   rj   r   r   r¾   s      r>   Ú_token_led_pipeÚParser._token_led_pipe  s,   € Ø× Ñ  ×!3Ñ!3°FÑ!;Ó<ˆÜ�xŠx˜Ó$Ð$rA   c                 ój   • U R                  U R                  S   5      n[        R                  " X5      $ )Nr   )r_   rj   r   Úor_expressionr¾   s      r>   Ú_token_led_orÚParser._token_led_or	  s.   € Ø× Ñ  ×!3Ñ!3°DÑ!9Ó:ˆÜ× Ò  Ó-Ð-rA   c                 ój   • U R                  U R                  S   5      n[        R                  " X5      $ )Nr   )r_   rj   r   Úand_expressionr¾   s      r>   Ú_token_led_andÚParser._token_led_and  s.   € Ø× Ñ  ×!3Ñ!3°EÑ!:Ó;ˆÜ×!Ò! $Ó.Ð.rA   c                 óÆ  • US   S:w  a9  U R                  S5      n[        R                  " US   US   US   SUS   -  5      eUS   n/ nU R                  5       S:X  d\  U R	                  5       nU R                  5       S:X  a  U R                  S5        UR                  U5        U R                  5       S:X  d  M\  U R                  S5        [        R                  " X45      nU$ )	Nr[   rz   éþÿÿÿrY   rZ   zInvalid function name '%s'r   r   )	ra   r   rT   r`   r_   r‘   r½   r   Úfunction_expression)r<   rn   Úprev_tÚnameÚargsrJ   Úfunction_nodes          r>   Ú_token_led_lparenÚParser._token_led_lparen  sã   € Ø�‰<˜7Ó"ð ×*Ñ*¨2Ó.ˆFÜ×'Ò'Ø�w‘ ¨¡°&¸±.Ø,¨v°g©Ñ>ó@ð @ð �G‰}ˆØˆØ×%Ñ%Ó'¨8Ó3Ø×)Ñ)Ó+ˆJØ×"Ñ"Ó$¨Ó/Ø—‘˜GÔ$Ø�K‰K˜
Ô#ð	 ×%Ñ%Ó'¨8Õ3ð
 	�‰�HÔÜ×/Ò/°Ó;ˆØÐrA   c                 ó  • U R                  S5      nU R                  S5        U R                  5       S:X  a  [        R                  " 5       nOU R                  U R                  S   5      n[        R                  " XU5      $ )Nr   r   r,   r.   )r_   r‘   r`   r   r�   r‚   rj   Úfilter_projection)r<   rn   Ú	conditionr…   s       r>   r‰   ÚParser._token_led_filter%  sh   € à×$Ñ$ QÓ'ˆ	Ø�‰�JÔØ×ÑÓ  IÓ-Ü—L’L“N‰Eà×.Ñ.¨t×/AÑ/AÀ(Ñ/KÓLˆEÜ×$Ò$ T°)Ó<Ð<rA   c                 ó&   • U R                  US5      $ )Nr   ©Ú_parse_comparator©r<   rn   s     r>   Ú_token_led_eqÚParser._token_led_eq/  ó   € Ø×%Ñ% d¨DÓ1Ð1rA   c                 ó&   • U R                  US5      $ )Nr+   rÚ   rÜ   s     r>   Ú_token_led_neÚParser._token_led_ne2  rß   rA   c                 ó&   • U R                  US5      $ )Nr   rÚ   rÜ   s     r>   Ú_token_led_gtÚParser._token_led_gt5  rß   rA   c                 ó&   • U R                  US5      $ )Nr)   rÚ   rÜ   s     r>   Ú_token_led_gteÚParser._token_led_gte8  ó   € Ø×%Ñ% d¨EÓ2Ð2rA   c                 ó&   • U R                  US5      $ )Nr(   rÚ   rÜ   s     r>   Ú_token_led_ltÚParser._token_led_lt;  rß   rA   c                 ó&   • U R                  US5      $ )Nr*   rÚ   rÜ   s     r>   Ú_token_led_lteÚParser._token_led_lte>  ré   rA   c                 ó–   • [         R                  " U5      nU R                  U R                  S   5      n[         R                  " X5      $ r–   )r   r,   r‚   rj   r—   r¾   s      r>   Ú_token_led_flattenÚParser._token_led_flattenA  s=   € Ü�{Š{˜4Ó ˆØ×*Ñ*Ø×Ñ˜yÑ)ó+ˆä�~Š~˜dÓ*Ð*rA   c                 ób  • U R                  S5      nUS   S;   a@  U R                  5       nUS   S:X  a  US   R                  U5        U$ U R                  X5      $ U R	                  S5        U R	                  S5        U R                  U R                  S   5      n[        R                  " X5      $ )Nr   r[   r    Úindex_expressionr»   r-   r   )	ra   r¡   r½   r¢   r‘   r‚   rj   r   r—   )r<   rn   rv   r…   s       r>   Ú_token_led_lbracketÚParser._token_led_lbracketG  s©   € Ø×%Ñ% aÓ(ˆØ�‰=Ð/Ó/Ø×0Ñ0Ó2ˆEØ�F‰|Ð1Ó1ð �ZÑ ×'Ñ'¨Ô.Ø�à×-Ñ-¨dÓ:Ð:ð �K‰K˜ÔØ�K‰K˜
Ô#Ø×.Ñ.¨t×/AÑ/AÀ&Ñ/IÓJˆEÜ—>’> $Ó.Ð.rA   c                 ó¬   • [         R                  " X/5      nUS   S:X  a3  [         R                  " UU R                  U R                  S   5      5      $ U$ )Nr[   r¯   r-   )r   rô   r—   r‚   rj   )r<   rn   r…   Ú
index_exprs       r>   r¢   ÚParser._project_if_sliceZ  sW   € Ü×)Ò)¨4¨-Ó8ˆ
Ø�‰=˜GÓ#Ü—>’>ØØ×*Ñ*¨4×+=Ñ+=¸fÑ+EÓFóHð Hð ÐrA   c                 ól   • U R                  U R                  U   5      n[        R                  " X!U5      $ rC   )r_   rj   r   Ú
comparator)r<   rn   rû   r…   s       r>   rÛ   ÚParser._parse_comparatorc  s.   € Ø× Ñ  ×!3Ñ!3°JÑ!?Ó@ˆÜ�~Š~˜j°Ó6Ð6rA   c                 óè   • / n U R                  5       nUR                  U5        U R                  5       S:X  a  OU R                  S5        MI  U R                  S5        [        R
                  " U5      $ )Nr   r   )r_   r½   r`   r‘   r   Úmulti_select_list)r<   ÚexpressionsrJ   s      r>   r¤   ÚParser._parse_multi_select_listg  sj   € ØˆØØ×)Ñ)Ó+ˆJØ×Ñ˜zÔ*Ø×"Ñ"Ó$¨
Ó2Øà—‘˜GÔ$ñ ð 	�‰�JÔÜ×$Ò$ [Ó1Ð1rA   c                 ó¨  • / n U R                  S5      nU R                  SS/S9  US   nU R                  S5        U R                  S5      n[        R
                  " X4S9nUR                  U5        U R                  5       S:X  a  U R                  S5        O&U R                  5       S	:X  a  U R                  S	5        OM¼  [        R                  " US
9$ )Nr   r   r   )Útoken_typesrZ   r   )Úkey_namerª   r   r   )Únodes)	ra   Ú_match_multiple_tokensr‘   r_   r   Úkey_val_pairr½   r`   Úmulti_select_dict)r<   ÚpairsÚ	key_tokenr  rZ   rª   s         r>   r�   ÚParser._parse_multi_select_hashs  sÐ   € ØˆØØ×-Ñ-¨aÓ0ˆIð ×'Ñ'Ø0Ð2GÐHð (ñ Jà  Ñ)ˆHØ�K‰K˜Ô Ø×$Ñ$ QÓ'ˆEÜ×#Ò#¨XÑBˆDØ�L‰L˜ÔØ×"Ñ"Ó$¨Ó/Ø—‘˜GÕ$Ø×$Ñ$Ó&¨(Ó2Ø—‘˜HÔ%Øñ ô  ×$Ò$¨5Ñ1Ð1rA   c                 óØ  • U R                   U R                  5          U R                  :  a  [        R                  " 5       nU$ U R                  5       S:X  a  U R                  U5      nU$ U R                  5       S:X  a  U R                  U5      nU$ U R                  5       S:X  a$  U R                  S5        U R                  U5      nU$ U R                  U R                  S5      S5        W$ )Nr2   r.   r/   r   r­   )
rj   r`   Ú_PROJECTION_STOPr   r�   r_   r‘   r¼   r®   ra   )r<   rX   r…   s      r>   r‚   ÚParser._parse_projection_rhs‡  så   € à×Ñ˜d×1Ñ1Ó3Ñ4°t×7LÑ7LÓLä—L’L“NˆEð ˆð × Ñ Ó" jÓ0Ø×$Ñ$ ]Ó3ˆEð ˆð × Ñ Ó" hÓ.Ø×$Ñ$ ]Ó3ˆEð ˆð × Ñ Ó" eÓ+Ø�K‰K˜ÔØ×'Ñ'¨Ó6ˆEð ˆð ×-Ñ-¨d×.CÑ.CÀAÓ.FØ.<ô>àˆrA   c                 óT  • U R                  5       nUS;   a  U R                  U5      $ US:X  a!  U R                  S5        U R                  5       $ US:X  a!  U R                  S5        U R	                  5       $ U R                  S5      n/ SQnSU< SUS   < 3nU R                  X55        g )	N)r   r   r-   r2   r1   r   )r   r   r2   r1   úExpecting: ú, got: r[   )r`   r_   r‘   r¤   r�   ra   r®   )r<   rX   r=   rd   ÚallowedÚmsgs         r>   r¼   ÚParser._parse_dot_rhs˜  s¬   € ð ×'Ñ'Ó)ˆ	àÐLÓLØ×#Ñ# MÓ2Ð2Ø˜*Ó$Ø�K‰K˜
Ô#Ø×0Ñ0Ó2Ð2Ø˜(Ó"Ø�K‰K˜Ô!Ø×0Ñ0Ó2Ð2à×%Ñ% aÓ(ˆAò-‰Gó -4°Q°v³YÐ?ð ð ×-Ñ-¨aÕ5rA   c                 ó|   • US   S:X  a!  [         R                  " US   US   US   5      eU R                  US5        g )Nr[   r   rY   rZ   úinvalid token)r   rR   r®   ru   s     r>   ri   ÚParser._error_nud_token´  sD   € Ø�‰=˜EÓ!Ü×6Ò6Ø�g‘  g¡°°f±ó?ð ?à×)Ñ)¨%°ÕArA   c                 ó(   • U R                  US5        g )Nr  )r®   ru   s     r>   rk   ÚParser._error_led_tokenº  s   € Ø×)Ñ)¨%°ÕArA   Nc                 óŽ   • U R                  5       U:X  a  U R                  5         g U R                  XR                  S5      5        g r7   )r`   rg   Ú_raise_parse_error_maybe_eofra   )r<   Ú
token_types     r>   r‘   ÚParser._match½  s8   € à×ÑÓ  JÓ.à�M‰M�Oà×-Ñ-Ø×1Ñ1°!Ó4õ6rA   c                 óŒ   • U R                  5       U;  a   U R                  XR                  S5      5        U R                  5         g r7   )r`   r  ra   rg   )r<   r  s     r>   r  ÚParser._match_multiple_tokensÆ  s8   € Ø×ÑÓ ¨Ó3Ø×-Ñ-Ø×2Ñ2°1Ó5ô7à�‰�rA   c                 ó.   • U =R                   S-  sl         g )Nr   )r;   ©r<   s    r>   rg   ÚParser._advanceÌ  s   € Ø�Š�qÑŽrA   c                 ó:   • U R                   U R                     S   $ ©Nr[   ©r9   r;   r   s    r>   r`   ÚParser._current_tokenÏ  s   € Ø�|‰|˜DŸK™KÑ(¨Ñ0Ð0rA   c                 ó@   • U R                   U R                  U-      S   $ r#  r$  ©r<   r   s     r>   r£   ÚParser._lookaheadÒ  s   € Ø�|‰|˜DŸK™K¨&Ñ0Ñ1°&Ñ9Ð9rA   c                 ó:   • U R                   U R                  U-      $ rC   r$  r'  s     r>   ra   ÚParser._lookahead_tokenÕ  s   € Ø�|‰|˜DŸK™K¨&Ñ0Ñ1Ð1rA   c                 óN   • US   nUS   nUS   n[         R                  " X4XR5      e)NrY   rZ   r[   )r   rT   )r<   rv   ÚreasonÚlex_positionÚactual_valueÚactual_types         r>   r®   Ú#Parser._raise_parse_error_for_tokenØ  s5   € Ø˜W‘~ˆØ˜W‘~ˆØ˜F‘mˆÜ×#Ò# LØ$/ó9ð 	9rA   c                 óœ   • US   nUS   nUS   nUS:X  a  [         R                  " X4U5      eSU< SU< 3n[         R                  " X4XV5      e)NrY   rZ   r[   r   r  r  )r   rR   rT   )r<   Úexpected_typerv   r-  r.  r/  Úmessages          r>   r  Ú#Parser._raise_parse_error_maybe_eofß  si   € Ø˜W‘~ˆØ˜W‘~ˆØ˜F‘mˆØ˜%ÓÜ×6Ò6Ø¨Kó9ð 9ð  ó /<Ú.9ð;ˆä×#Ò#Ø¨ó>ð 	>rA   c                 óæ   • [         R                  " [        U R                  R	                  5       5      [        U R                  S-  5      5       H  nU R                  R                  US 5        M!     g )Nr   )ÚrandomÚsampler^   rD   ÚkeysÚintrH   Úpop)r<   Úkeys     r>   rI   ÚParser._free_cache_entriesë  sK   € Ü—=’=¤ d§k¡k×&6Ñ&6Ó&8Ó!9¼3¸t¿~¹~ÐPQÑ?QÓ;RÖSˆCØ�K‰K�O‰O˜C Ö&ò TrA   c                 ó8   • U R                   R                  5         g)z'Clear the expression compilation cache.N)rD   Úclear)Úclss    r>   ÚpurgeÚParser.purgeï  s   € ð 	�
‰
×ÑÕrA   )r:   r;   r9   r8   )r   )r   rC   )=Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rj   r  rD   rH   r?   rM   rF   rP   r_   rw   r{   r~   r†   rŠ   rŽ   r“   r˜   r�   r¥   r¡   r¨   r´   r·   r¿   rÂ   rÆ   rÊ   rÓ   r‰   rÝ   rá   rä   rç   rë   rî   rñ   rõ   r¢   rÛ   r¤   r�   r‚   r¼   ri   rk   r‘   r  rg   r`   r£   ra   r®   r  rI   Úclassmethodr@  Ú__static_attributes__© rA   r>   r	   r	   %   s!  † ðØˆqðà˜qðð 	˜Qðð 	�1ð	ð
 	�Aðð 	�!ðð 	�ðð 	�!ðð 	�!ðð 	�1ðð 	�!ðð 	�ðð 	�ðð 	ˆaðð 	ˆqðð  	ˆað!ð" 	ˆað#ð$ ØØØØàØØØØØØò=€MðD Ðð €FØ€Iôòòò	0ôò&+ò)ò	ò1ò6ò/òò
+ò(ò3ò"ò!ò0"ò&ò5ò%ò.ò/òò(=ò2ò2ò2ò3ò2ò3ò+ò/ò&ò7ò
2ò2ò(ò"6ò8BòBô6òòò1ò:ò2ò9ò
>ò'ð ñó órA   r	   c                   ó0   • \ rS rSrS rSS jrS rS rSrg)	rb   iõ  c                 ó   • Xl         X l        g rC   ©rJ   rc   )r<   rJ   rc   s      r>   r?   ÚParsedResult.__init__÷  s   € Ø$ŒØ�rA   Nc                 ój   • [         R                  " U5      nUR                  U R                  U5      nU$ rC   )r   ÚTreeInterpreterÚvisitrc   )r<   rZ   ÚoptionsÚinterpreterÚresults        r>   ÚsearchÚParsedResult.searchû  s-   € Ü×-Ò-¨gÓ6ˆØ×"Ñ" 4§;¡;°Ó6ˆØˆrA   c                 óf   • [         R                  " 5       nUR                  U R                  5      nU$ )a6  Render the parsed AST as a dot file.

Note that this is marked as an internal method because
the AST is an implementation detail and is subject
to change.  This method can be used to help troubleshoot
or for development purposes, but is not considered part
of the public supported API.  Use at your own risk.

)r   ÚGraphvizVisitorrO  rc   )r<   ÚrendererÚcontentss      r>   Ú_render_dot_fileÚParsedResult._render_dot_file   s)   € ô ×*Ò*Ó,ˆØ—>‘> $§+¡+Ó.ˆØˆrA   c                 ó,   • [        U R                  5      $ rC   )Úreprrc   r   s    r>   Ú__repr__ÚParsedResult.__repr__  s   € Ü�D—K‘KÓ Ð rA   rK  rC   )	rB  rC  rD  rE  r?   rS  rY  r]  rG  rH  rA   r>   rb   rb   õ  s   † òôò
õ!rA   rb   )Ú__doc__r6  Újmespathr   Újmespath.compatr   r   r   r   Úobjectr	   rb   rH  rA   r>   Ú<module>rc     sH   ðñó6 å Ý ,Ý Ý Ý ôMˆVô Mð` ô!�6ó !ó ñ!rA   