
    ,
iG                     P   d dl Z d dlZd dlZd dlZd dlmZ d dlT d dl	m
Z
  e j        e          Zd Z G d d          Z G d d	          Zed
k    rR e j                      ed          Z ee                    ej                                                             dS dS )    N)JsonPathParserError)*)JsonPathLexerc                 D    t                                          |           S N)JsonPathParserparse)strings    C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\jsonpath_ng/parser.pyr	   r	      s    !!&)))    c                       e Zd ZdZej        ZddZddefdZd Z	g dZ
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS ) r   z%
    An LALR-parser for JsonPath
    FNc           	         | j         t          d          || _        |pt          | _        t
          j                            t                    }	 t
          j        	                    t
          j        
                    t                    d                   d         }n#  t          }Y nxY wd}d                    ||dg          }t          j        j                            | | j        ||d|t                     | _        d S )NzDocstrings have been removed! By design of PLY, jsonpath-rw requires docstrings. You must not use PYTHONOPTIMIZE=2 or python -OO.   r   jsonpath_parsetab)moduledebug	tabmodule	outputdirwrite_tablesstarterrorlog)__doc__r   r   r   lexer_classospathdirname__file__splitextsplit__name__joinjsonpath_ng_plyyaccloggerparser)selfr   r   output_directorymodule_namestart_symbolparsing_table_modules          r   __init__zJsonPathParser.__init__   s    <%2   
&7- 7??844	#'**27==+B+B1+EFFqIKK	#"KKK!"xxlJ(OPP "&+00*.*0D0@12,8/5 1 7 7s   AB 	B*returnc                 ~    |p|                                  }|                     |                    |                    S r   )r   parse_token_streamtokenize)r)   r
   lexers      r   r	   zJsonPathParser.parse8   s8    +))++&&u~~f'='=>>>r   c                 R    | j                             t          |                    S )N)r3   )r(   r	   IteratorToTokenStream)r)   token_iterators     r   r1   z!JsonPathParser.parse_token_stream<   s$    {  )>~)N)N OOOr   ))left,)r7   	DOUBLEDOT)r7   .)r7   |)r7   &)r7   WHERE)r7   WHERENOTc                     |t          d          t          d|j        d|j        d|j        d|j        d	          )Nz#Parse error near the end of string!zParse error at :z near token z ())r   linenocolvaluetype)r)   ts     r   p_errorzJsonPathParser.p_errorK   sU    9%&KLLL!!%&XXXquuuagggqvvv#G H H 	Hr   c                    |d         }|dk    r!t          |d         |d                   |d<   dS |dk    r!t          |d         |d                   |d<   dS |dk    r!t          |d         |d                   |d<   dS |dk    r!t          |d         |d                   |d<   dS |d	k    r!t	          |d         |d                   |d<   dS |d
k    r!t          |d         |d                   |d<   dS dS )a	  jsonpath : jsonpath '.' jsonpath
                    | jsonpath DOUBLEDOT jsonpath
                    | jsonpath WHERE jsonpath
                    | jsonpath WHERENOT jsonpath
                    | jsonpath '|' jsonpath
                    | jsonpath '&' jsonpath   r:   r      r   z..wherewherenotr;   r<   N)ChildDescendantsWhereWhereNotUnion	Intersect)r)   pops      r   p_jsonpath_binopzJsonPathParser.p_jsonpath_binopQ   s    qT991qt$$AaDDD4ZZqtQqT**AaDDD7]]1qt$$AaDDD:AaD!A$''AaDDD3YY1qt$$AaDDD3YYQqT1Q4((AaDDD Yr   c                 *    t          |d          |d<   dS )zjsonpath : fields_or_anyr   r   NFieldsr)   rS   s     r   p_jsonpath_fieldsz JsonPathParser.p_jsonpath_fieldsg       qt}!r   c           
         |d         dk    rt                      |d<   dS |d         dk    rt                      |d<   dS t          d|d         d|                    d          d|                    d                    )	zjsonpath : NAMED_OPERATORr   thisr   parentzUnknown named operator `z` at r@   N)ThisParentr   rB   lexposrY   s     r   p_jsonpath_named_operatorz(JsonPathParser.p_jsonpath_named_operatork   s    Q46>>66AaDDDqTX88AaDDD%%)*1qxx{{{{AHHQKKK'I J J Jr   c                 (    t                      |d<   dS )zjsonpath : '$'r   N)RootrY   s     r   p_jsonpath_rootzJsonPathParser.p_jsonpath_rootu   s    vv!r   c                 *    t          |d          |d<   dS )zjsonpath : '[' idx ']'rI   r   N)IndexrY   s     r   p_jsonpath_idxzJsonPathParser.p_jsonpath_idxy   s    ad|!r   c                     |d         |d<   dS )zjsonpath : '[' slice ']'rI   r   N rY   s     r   p_jsonpath_slicezJsonPathParser.p_jsonpath_slice}       t!r   c                 *    t          |d          |d<   dS )zjsonpath : '[' fields ']'rI   r   NrW   rY   s     r   p_jsonpath_fieldbracketsz'JsonPathParser.p_jsonpath_fieldbrackets   r[   r   c                 R    t          |d         t          |d                    |d<   dS )z"jsonpath : jsonpath '[' fields ']'r   rJ   r   N)rM   rX   rY   s     r   p_jsonpath_child_fieldbracketsz-JsonPathParser.p_jsonpath_child_fieldbrackets   s%    QqT61Q4=))!r   c                 R    t          |d         t          |d                    |d<   dS )zjsonpath : jsonpath '[' idx ']'r   rJ   r   N)rM   rg   rY   s     r   p_jsonpath_child_idxbracketsz+JsonPathParser.p_jsonpath_child_idxbrackets   s%    QqT5!A$<((!r   c                 D    t          |d         |d                   |d<   dS )z!jsonpath : jsonpath '[' slice ']'r   rJ   r   N)rM   rY   s     r   p_jsonpath_child_slicebracketsz-JsonPathParser.p_jsonpath_child_slicebrackets   s!    QqT1Q4  !r   c                     |d         |d<   dS )zjsonpath : '(' jsonpath ')'rI   r   Nrj   rY   s     r   p_jsonpath_parensz JsonPathParser.p_jsonpath_parens   rl   r   c                     |d         dk    rdg|d<   dS t          |d         t                    rt          |d                   g|d<   dS |d         |d<   dS )zWfields_or_any : fields
                         | '*'
                         | NUMBERr   r   r   N)
isinstanceintstrrY   s     r   p_fields_or_anyzJsonPathParser.p_fields_or_any   s`     Q43;;5AaDDD!c"" 	!II;AaDDDQ4AaDDDr   c                     |d         g|d<   dS )zfields : IDr   r   Nrj   rY   s     r   p_fields_idzJsonPathParser.p_fields_id       !v!r   c                 .    |d         |d         z   |d<   dS )zfields : fields ',' fieldsr   rJ   r   Nrj   rY   s     r   p_fields_commazJsonPathParser.p_fields_comma       tad{!r   c                     |d         g|d<   dS )zidx : NUMBERr   r   Nrj   rY   s     r   p_idxzJsonPathParser.p_idx   r~   r   c                 .    |d         |d         z   |d<   dS )zidx : idx ',' idx r   rJ   r   Nrj   rY   s     r   p_idx_commazJsonPathParser.p_idx_comma   r   r   c                 (    t                      |d<   dS )zslice : '*'r   NSlicerY   s     r   p_slice_anyzJsonPathParser.p_slice_any   s    ww!r   c                 0    t          |ddd          |d<   dS )zYslice : maybe_int ':' maybe_int
                 | maybe_int ':' maybe_int ':' maybe_int r   NrI   r   r   rY   s     r   p_slicezJsonPathParser.p_slice   s     a1g!r   c                     |d         |d<   dS )z/maybe_int : NUMBER
                     | emptyr   r   Nrj   rY   s     r   p_maybe_intzJsonPathParser.p_maybe_int   s     t!r   c                     d|d<   dS )zempty :Nr   rj   rY   s     r   p_emptyzJsonPathParser.p_empty   s    !r   )FNr   ) r"   
__module____qualname__r   r   tokensr.   JSONPathr	   r1   
precedencerG   rU   rZ   rb   re   rh   rk   rn   rp   rr   rt   rv   r{   r}   r   r   r   r   r   r   r   rj   r   r   r   r      s         !F7 7 7 7>? ?X ? ? ? ?P P P
  JH H H) ) ),  J J J        * * *) ) )! ! !  
	 	 	            
  
    r   r   c                       e Zd Zd Zd ZdS )r5   c                     || _         d S r   )iterator)r)   r   s     r   r.   zIteratorToTokenStream.__init__   s     r   c                 N    	 t          | j                  S # t          $ r Y d S w xY wr   )nextr   StopIteration)r)   s    r   tokenzIteratorToTokenStream.token   s9    	&&& 	 	 	44	s    
$$N)r"   r   r   r.   r   rj   r   r   r5   r5      s2        ! ! !    r   r5   __main__T)r   )loggingsysos.pathr   jsonpath_ng._ply.yaccr$   jsonpath_ng.exceptionsr   jsonpath_ng.jsonpathjsonpath_ng.lexerr   	getLoggerr"   r'   r	   r   r5   basicConfigr(   printstdinreadrj   r   r   <module>r      s<    



      6 6 6 6 6 6 " " " " + + + + + +		8	$	$* * *o o o o o o o ob        zG^$'''F	E&,,sy~~''
(
())))) r   