
    vdx                        d dl mZmZ d dlmZ d dlmZmZmZ d dl	m
Z
mZmZ ereZ G d d          Z eej        ej        ej        ej        ej        ej        ej        ej        ej        g	          Zi dej        dej        d	ej        d
ej        dej        dej         dej!        dej"        dej#        dej$        dej%        dej&        dej'        dej(        dej)        dej*        dej+        ej,        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej-        ej.        ej/        dZ0 G d d          Z1d Z2d Z3d Z4d Z5d Z6d  Z7d! Z8d" Z9 G d# d$          Z:d)d&Z;d' Z<d(S )*   )STRING_TYPESPY3)Scalar)ColumnIdentifierDocumentPathItemExpr)ColumnOrder
Projectionc                      e 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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+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9d8Z:d9Z;d:Z<d;Z=d<Z>d=Z?d>Z@d?ZAd@ZBdAZCdBS )C	TokenTyper                        	   
                                                                      !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?   @   A   N)D__name__
__module____qualname__NOTANDORXORISLPARENRPAREN
LSQBRACKET
RSQBRACKETBETWEENTRUENULLFALSEINLIKEINTERVALREGEXPESCAPEIDENTLSTRINGLNUMDOTDOLLARCOMMAEQNEGTGELTLEBITANDBITORBITXORLSHIFTRSHIFTPLUSMINUSMULDIVHEXBINNEGBANGMICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEAREROTEME
DOUBLESTARMODCOLONORORANDANDLCURLYRCURLYCASTDOTSTARORDERBY_ASCORDERBY_DESCAS     G/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/mysqlx/expr.pyr   r   "   sS       
C
C	
B
C	
BFFJJGDDE	BDHFFEGD
CFE	B	B	B	B	B	BFEFFFDE
C
C
C
C
CDKFFD
CDEGDGJ
CEDFFFDGKL	BBBr   r   andorxorisnotlikeinregexpbetweenintervalescapecastdivhexbintruefalse)nullsecondminutehourdayweekmonthquarteryearmicrosecondascdescasc                   "    e Zd ZddZd Zd ZdS )Tokenr   c                 0    || _         || _        || _        d S N)typevallen)selfr   r   r   s       r   __init__zToken.__init__   s    	r   c                 *    |                                  S r   )__str__r   s    r   __repr__zToken.__repr__       ||~~r   c                     | j         t          j        k    s*| j         t          j        k    s| j         t          j        k    r"t          | j                   dz   | j        z   dz   S t          | j                   S )N())r   r   rc   re   rd   strr   r   s    r   r   zToken.__str__   s\    9	''49	+F+F9	)))ty>>C'$(2S88ty>>!r   N)r   )rN   rO   rP   r   r   r   r   r   r   r   r      sF           
  " " " " "r   r   c                  6    t          t           j                  S )Nr   )r   V_NULLr   r   r   build_null_scalarr      s    v}%%%%r   c                 8    t          t           j        |           S )N)r   v_double)r   V_DOUBLE)ds    r   build_double_scalarr      s    v3333r   c                 8    t          t           j        |           S )N)r   v_signed_int)r   V_SINT)is    r   build_int_scalarr      s    v}15555r   c                     t          | t                    rt          t          | d                    } t	          t          j        t	          j        |                     S )Nzutf-8)value)r   v_string)
isinstancer   bytes	bytearrayr   V_STRINGString)ss    r   build_string_scalarr      sM    !\"" ))Aw''((vQ1G1G1GHHHHr   c                 R    t                      }t           j        |_        | |_        |S r   )r   V_BOOLr   v_bool)br   s     r   build_bool_scalarr      s     A]AFAHHr   c                 x    t                      }t           j        |_        |j                            |            |S r   )r   LITERALr   literalCopyFrom)anyvales     r   build_literal_exprr      s/    A\AFIvHr   c                     t                      }t           j        |_        | |j        _        |j        j                                                            |           |S r   )r   OPERATORr   operatornameparamaddr   )r   r   r   s      r   build_unary_opr      sG    A]AFAJOJ##E***Hr   c                 .    |                      dd          S )N"z"")replace)strings    r   escape_literalr      s    >>#t$$$r   c                       e 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 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 ))
ExprParserc                     || _         g | _        d| _        || _        i | _        d| _        |                                  d S )N    )r   tokenspos_allowRelationalColumnsplaceholder_name_to_positionpositional_placeholder_countlex)r   r   allowRelationals      r   r   zExprParser.__init__   s@    '6$,.),-)




r   c                 `    |dz   t          | j                  k     o| j        |dz            |k    S Nr   )r   r   )r   r   cs      r   next_char_iszExprParser.next_char_is   s0    1us4;'''CDKA,>!,CCr   c                    |}d}|t          | j                  k     r| j        |                                         s| j        |         dk    rs| j        |         dk    r|du rt          d          d}|dz   }|t          | j                  k     r0| j        |                                         b| j        |         dk    s| j        ||         }t	          t
          j        |t          |                    }|S )NF.Tz"Invalid number. Found multiple '.'r   )r   r   isdigit
ValueErrorr   r   re   )r   r   start	found_dotr   ts         r   
lex_numberzExprParser.lex_number   s    	C$$$$$+c*:*B*B*D*D$*.+c*:c*A*A{33&&$$$%IJJJ 	 'C C$$$$$+c*:*B*B*D*D$*.+c*:c*A*A k%)$).#s3xx00r   c                 `   |}|t          | j                  k     r}| j        |                                         s| j        |         dk    rM|dz   }|t          | j                  k     r0| j        |                                         <| j        |         dk    M| j        ||         }	 t          t          |                                         |                                t          |                    }n8# t          $ r+ t          t          j	        |t          |                    }Y nw xY w|S )N_r   )
r   r   isalnumr   reservedWordslowerupperKeyErrorr   rc   )r   r   r  r   tokens        r   	lex_alphazExprParser.lex_alpha   s   #dk""""A(>(>(@(@"(,A#(=(=AA #dk""""A(>(>(@(@"(,A#(=(=k%'"	:-		4ciikk3s88LLEE 	: 	: 	:)/3C99EEE	:s   (AC6 62D+*D+c                    | j         |         }d}|dz  }|}|t          | j                   k     r| j         |         }||k    r0|dz   t          | j                   k     r| j         |dz            |k    rn`||k    s|dk    r2|dz   t          | j                   k    rn8|dz   }|| j         |         z   }n||z   }|dz   }|t          | j                   k     |t          | j                   k    s| j         |         |k    r"t          d                    |                    |dk    r+t	          t
          j        |t          |          dz             S t	          t
          j        |t          |          dz             S )N r   \z*Unterminated quoted string starting at {0}`r   )r   r   r  formatr   r   rc   rd   )r   r   
quote_charr   r  r  s         r   lex_quoted_tokenzExprParser.lex_quoted_token   s|   [^
	Q#dk""""AAJ1q53t{+;+;#;#;{1q5!Z//jAIIq5C,,,,EDKN*AgAA #dk"""" DK    DKNj$@$@   &u/ / /#s3xxz:::*CS!<<<r   c                    d}|t          | j                  k     r`| j        |         }|                                r|dz  }@|                                r|                     |          }n|                                s|dk    r|                     |          }n|dk    rt          t          j	        |          }n||dk    rt          t          j
        |          }nZ|dk    rt          t          j        |          }n8|dk    rt          t          j        |          }n|dk    rt          t          j        |          }n|d	k    rt          t          j        |           n|d
k    rN|                     |d
          rt          t          j        d          }nt          t          j        |          }n~|dk    rt          t          j        |          }n\|dk    rt          t          j        |          }n:|dk    rt          t          j        |          }n|dk    rP|                     |d          rt          t          j        dd          }nt          t          j        dd          }n|dk    rN|                     |d          rt          t          j        |          }nt          t          j        |          }nn|dk    rN|                     |d          rt          t          j        d          }n6t          t          j        |          }n|dk    rt          t          j        |          }n|dk    rt          t          j        |          }n|dk    rt          t          j        |          }n|dk    rt          t          j        |          }n|dk    rt          t          j        |          }np|dk    rt          t          j        |          }nN|dk    rN|                     |d          rt          t          j         d          }nt          t          j!        |          }n|dk    r|                     |d          rt          t          j"        d          }n|                     |d          rt          t          j#        d          }nt          t          j$        |          }nt|d k    r|                     |d           rt          t          j%        d!          }n<|                     |d          rt          t          j&        d"          }n
t          t          j'        |          }n|d#k    r|                     |d
          rt          t          j(        d$          }n|dz   t          | j                  k     r8| j        |dz                                            r|                     |          }net          t          j)        |          }nJ|d%k    s|d&k    s|d'k    r| *                    |          }n"tW          d(,                    |                    | j-        .                    |           ||j         z  }|t          | j                  k     ^d S d S ))Nr   r   r  ?:{}+-*z**/$%=z==r   &|z||r   r   []~,!z!=<z<<z<=>z>>z>=r  z.*r   'r  zUnknown character at {0})/r   r   isspacer  r  isalphar  r   r   r   r   r   r   rt   ru   r  r   rv   rw   rg   r   ri   r   ro   r   rp   rV   rW   rX   rY   rz   rh   rj   r{   rr   rn   rm   rs   rl   rk   r   rf   r  r  r  r   append)r   r   r  r  s       r   r   zExprParser.lex  s   #dk""""AAyy{{ VGQ SG** QGSq))ci/33cioq11ci.22ci.22cina00cioq))))c$$Q,, 4!)"6==EE!)-33EEcimQ//ci.22cimQ//c$$Q,, 9!),a88EE!),a88EEc$$Q,, 7!)"2A66EE!)"2A66EEc$$Q,, 6!).$77EE!)/155EEci.22ci.22ci2A66ci2A66cimQ//cioq11c$$Q,, 5!),55EE!).!44EEc$$Q,, 3!)"2D99EE&&q#.. 3!),55EE!),22EEc$$Q,, 3!)"2D99EE&&q#.. 3!),55EE!),22EEc$$Q,, 4!)"3T::EEUS----$+a!e2D2L2L2N2N- OOA..EE!)-33EEcQ#XXc--a00 !;!B!B1!E!EFFFKu%%%NAu #dk""""""""r   c                 8   | j         t          | j                  k    r(t          d                    || j                             | j        | j                  j        |k    r9t          d                    || j         | j        | j                                      d S )Nz5Expected token type {0} at pos {1} but no tokens leftz5Expected token type {0} at pos {1} but found type {2})r   r   r   r  r  r   r   r   s     r   assert_cur_tokenzExprParser.assert_cur_tokenw  s    8s4;'''' ++16$+A+AC C C;tx %-- ((.tTX/3{48/D)F )FG G G .-r   c                 8    |                      | j        |          S r   pos_token_type_isr   r6  s     r   cur_token_type_iszExprParser.cur_token_type_is  s    %%dh555r   c                 >    |                      | j        dz   |          S r  r9  r6  s     r   next_token_type_iszExprParser.next_token_type_is  s    %%dhlD999r   c                 ^    |t          | j                  k     o| j        |         j        |k    S r   )r   r   r   )r   r   r   s      r   r:  zExprParser.pos_token_type_is  s+    S%%%G$+c*:*?4*GGr   c                 |    |                      |           | j        | j                 j        }| j        dz   | _        |S r  )r7  r   r   r   )r   r   vs      r   consume_tokenzExprParser.consume_token  s9    d###K!%8a<r   c                    g }|                      t          j                   |                     t          j                  s|                    |                                            |                     t          j                  rU| j        dz   | _        |                    |                                            |                     t          j                  U|                      t          j                   |S )z{Parse a paren-bounded expression list for function arguments or IN
        list and return a list of Expr objects.
        r   )	rA  r   rV   r;  rW   r4  exprrh   r   )r   exprss     r   paren_expr_listzExprParser.paren_expr_list  s     9+,,,%%i&677 	*LL%%%((99 *8a<TYY[[))) ((99 * 	9+,,,r   c                 z   |                      t          j                   t                      }|                     t          j                  rC|                     t          j                  |_        |                     t          j                   | j        | j	                 j
        |_        | j	        dz   | _	        |S r  )r7  r   rc   
Identifierr=  rf   rA  schema_namer   r   r   r   )r   ids     r   
identifierzExprParser.identifier  s    io...\\""9=11 	.!//	@@BNy}---+dh'+8a<	r   c                    t                      }t           j        |_        |j        j                            |                                            |j        j                            | 	                                           |S r   )
r   	FUNC_CALLr   function_callr   r   rJ  r   extendrE  )r   r   s     r   rM  zExprParser.function_call  sa    FF	%%doo&7&7888	$$T%9%9%;%;<<<r   c                    |                      t          j                   | j        | j                 }|j        t          j        k    r|j                            d          rA|j        	                    d          r't          d                    |j                            |                      t          j                   |j        }nh| j        j        t          j        k    r'|                      t          j                   |j        }n't          d                    | j                            t          t          j        |          }|S )Nr  z-{0} is not a valid JSON/ECMAScript identifierzBExpected token type IDENT or LSTRING in JSON path at token pos {0}r   r   )rA  r   rf   r   r   r   rc   r   
startswithendswithr  r  r   r  rd   r   MEMBER)r   r  
memberNameitems       r   docpath_memberzExprParser.docpath_member  s$   9=)))DH%:((y##C(( CUY-?-?-D-D C  "..4fU[.A.AC C Cy///JJZ_	 111y0111JJ 55;VDH5E5EG G G%5%<JOOOr   c                    |                      t          j                   |                     t          j                  r9|                      t          j                   t          t          j                  S |                     t          j                  rt          |                      t          j                            }|dk     r't          d                    | j                            |                      t          j                   t          t          j        |          S t          d                    | j                            )Nr   r   z%Array index cannot be negative at {0})r   indexzJException token type MUL or LNUM in JSON path array index at token pos {0})rA  r   rX   r;  rv   rY   r   ARRAY_INDEX_ASTERISKre   int
IndexErrorr  r   ARRAY_INDEXr  )r   r@  s     r   docpath_array_loczExprParser.docpath_array_loc  s   9/000!!)-00 	2y3444#)9)NOOOO##IN33 
	2D&&y~6677A1uu  "$$*F48$4$46 6 6y3444#)9)EQOOOO   &tx 0 02 2 2r   c                    t                      }|                     t          j                  rQ|j                            t          t          j        |                     t          j                            g           |j                            |                                            t          t          j        |          S )NrP  )r   rJ  )
r   r;  r   rc   document_pathrN  r   rS  rA  r   )r   cols     r   document_fieldzExprParser.document_field  s      !!)/22 	N$$ &6&='+'9'9)/'J'JL L L&M N N N 	  !3!3!5!56664444r   c                    g }	 |                      t          j                  r)|                    |                                            n |                      t          j                  rM|                     t          j                   |                    t          t          j                             n|                      t          j	                  r(|                    | 
                                           nm|                      t          j                  rM|                     t          j                   |                    t          t          j                             nnjt          |          }|dk    rE||dz
           j        t          j        k    r't          d                    | j                            |S )zParse a JSON-style document path, like WL#7909, but prefix by @.
        instead of $. We parse this as a string because the protocol doesn't
        support it. (yet)
        Tr   r   r   z$JSON path may not end in '**' at {0})r;  r   rf   r4  rV  r   rA  r   MEMBER_ASTERISKrX   r]  r   DOUBLE_ASTERISKr   r   r  r  r   )r   docpathitemss      r   r_  zExprParser.document_path  s   
 	%%im44 t22445555''	(9:: ""9#4555/)9 ;  ;  ; < < < <''	(<== t55778888''	(<== ""9#7888/)9 ;  ;  ; < < < < 	 G199q).+, ,   &tx 0 02 2 2r   c                    g }|                     |                     t          j                             |                     t          j                  rp|                     t          j                   |                     |                     t          j                             |                     t          j                  pt          |          dk    r't          d                    | j	                            |
                                 t                      }t          dt          |                    D ]=}|dk    r|d         |_        |dk    r|d         |_        *|dk    r|d         |_        >|                     t          j                  r8|                     t          j                   |                                 |_        t%                      }t$          j        |_        |j                            |           |S )Nr   z#Too many parts to identifier at {0}r   r   r   )r4  rA  r   rc   r;  rf   r   r  r  r   reverser   xranger   
table_namerH  rg   r_  r   r   rJ  r   )r   partscolidr   r   s        r   column_identifierzExprParser.column_identifier  s   T''	88999$$Y]33 	>y}---LL++IO<<=== $$Y]33 	> u::>>   &tx 0 02 2 2 ""3u::&& 	- 	-AAvv"1X

a#(8  a$)!H!!!)"233 	7y/000"&"4"4"6"6EFF	e$$$r   c                     | j         t          | j                  k    rt          d          | j        | j                  }| xj         dz  c_         |S )NzUnexpected end of token streamr   )r   r   r   r  )r   r
  s     r   
next_tokenzExprParser.next_token  sJ    HDK((((=>>>K!Ar   c                     |                                  }|j        |k    r"t          d                    |                    d S )NzExpected token type {0})ro  r   r  r  )r   
token_typer
  s      r   expect_tokenzExprParser.expect_token  sC    OO6Z6==jIIJJJ  r   c                 "    t                      }d S r   )Object)r   os     r   parse_json_doczExprParser.parse_json_doc  s    HHr   c                    d}|                      t          j                  r |                     t          j                  }n|                      t          j                  r |                     t          j                  }nQ|j        t          j        k    rt          | j	                  }n't          d                    | j                            |                                }t          t          j                  }|| j        v r| j        |         |_        n+| j	        |_        | j	        | j        |<   | xj	        dz  c_	        |S )Nr  z)Invalid placeholder name at token pos {0}r   r   )r;  r   re   rA  LNUM_INTrc   r   r   r   r   r  r  r   r  r   PLACEHOLDERr   position)r   r  place_holder_namerC  s       r   parse_place_holderzExprParser.parse_place_holder!  s8   !!).11 	2 $ 2 293E F F##IO44 	2 $ 2 29? C CZ9,,, #D$E F F   &tx 0 02 2 2 .3355)*** AAA12CD MM !=DM1 -.?@--2--r   c                 	   |                                  }|j        t          j        t          j        fv r|                     |          S |j        t          j        k    r|                                 S |j        t          j        k    rn|j        t          j	        k    r5| 
                                }|                     t          j                   |S |j        t          j        t          j        fv rnm|j        t          j        t          j        fv r|                                 }|j        t          j        k    r8|j        |j        z   | j        | j                 _        |                                 S t+          |j        |                                           S |j        t          j        t          j        t          j        fv r't+          |j        |                                           S |j        t          j        k    r!t5          t7          |j                            S |j        t          j        k    rt5          t;                                S |j        t          j        k    red|j        v r.t5          t=          t?          |j                                      S t5          tA          tC          |j                                      S |j        t          j"        t          j#        fv r/t5          tI          |j        t          j"        k                        S |j        t          j%        k    r| &                                S |j        t          j'        k    r| (                                S |j        t          j)        k    r| j        dz
  | _        | *                    t          j	                  so| *                    t          j+                  rd| ,                    | j        dz   t          j)                  r<| ,                    | j        dz   t          j	                  r| -                                S | j.        s| &                                n| /                                S ta          d1                    |j        | j                            )z<Parse an atomic expression and return a protobuf Expr objectr  r   r   r   zAUnknown token type = {0}  when expecting atomic expression at {1})2ro  r   r   r   r   r|  r   rv  r   rV   rC  rr  rW   rt   ru   
peek_tokenre   r   r   r   atomic_exprr   rQ   rz   r{   rd   r   r   r\   r   r   floatr   rZ  r[   r]   r   rg   ra  rv   starOperatorrc   r=  rf   r:  rM  r   rm  r  r  )r   r  r   peeks       r   r  zExprParser.atomic_expr9  s   !!:)+Y_===**5111Z9+++&&(((Z9>))Z9+++		Ai.///HZINIO<<<ZINIO<<<??$$DyIN**,1I,@DH%)'')))!%)T-=-=-?-?@@@ZIM9=).III!%)T-=-=-?-?@@@Z9,,,%&9%)&D&DEEEZ9>))%&7&9&9:::Z9>))ei)'ei(8(899; ; ; **:3uy>>*J*JKKKZINIO<<<%!%*	">??A A AZ9+++&&(((Z9=(($$&&&Z9?**x!|DH&&y'788 	7''	66	7%%dhlIODD	7 %%dhlI4DEE	7
 ))+++  $;6++---!33557&  --3VEJ-I-IK K 	Kr   c                 j    |            }| j         t          | j                  k     r
| j        | j                  j        |v rt	                      }t          j        |_        | j        | j                  j        |j        _        |j        j	        
                                                    |           | j         dz   | _         |j        j	        
                                                     |                       |}| j         t          | j                  k     r| j        | j                  j        |v |S )z}Given a `set' of types and an Expr-returning inner parser function,
        parse a left associate binary operator expressionr   )r   r   r   r   r   r   r   r   r   r   r   r   )r   typesinner_parserlhsr   s        r   parse_left_assoc_binary_op_exprz*ExprParser.parse_left_assoc_binary_op_expr  s     lnnx#dk****{48$)U22A]AF"k$(37AJOJ  ""++C000x!|DHJ  ""++LLNN;;;C x#dk****{48$)U22 
r   c                     |                      t          t          j        t          j        t          j        g          | j                  S r   )r  setr   rv   rw   r   r  r   s    r   mul_div_exprzExprParser.mul_div_expr  s8    33	y}=>>  	r   c                 ~    |                      t          t          j        t          j        g          | j                  S r   )r  r  r   rt   ru   r  r   s    r   add_sub_exprzExprParser.add_sub_expr  s6    33122D4EG G 	Gr   c                 ~    |                      t          t          j        t          j        g          | j                  S r   )r  r  r   rr   rs   r  r   s    r   
shift_exprzExprParser.shift_expr  s8    33!9#3455t7HJ J 	Jr   c                     |                      t          t          j        t          j        t          j        g          | j                  S r   )r  r  r   ro   rp   rq   r  r   s    r   bit_exprzExprParser.bit_expr  s9    33!9?I4DEFFO  	r   c           
          |                      t          t          j        t          j        t          j        t          j        t          j        t          j        g          | j	                  S r   )
r  r  r   rl   rk   rn   rm   ri   rj   r  r   s    r   	comp_exprzExprParser.comp_expr  sJ    33y|Y\9<y|- . ./3}> > 	>r   c                    |                                  }d}|                     t          j                  r!d}|                     t          j                   | j        t          | j                  k     r|g}| j        | j                 j        }|                     t          j	                  r|                     t          j	                   |                     t          j                  r!d}|                     t          j                   |
                    |                                             np|                     t          j                  rH|                     t          j                   |                    |                                            n	|                     t          j                  r|                     t          j                   |
                    |                                             |                     t          j                  rF|                     t          j                   |
                    |                                             n=|                     t          j                  r|                     t          j                   |
                    |                                             |                     t          j                   |
                    |                                             n|                     t          j                  rG|                     t          j                   |
                    |                                             n+|r't'          d                    | j                            d }|r^t+                      }t*          j        |_        ||j        _        |j        j                            |           |rt7          d|          }|}|S )NFTz"Unknown token after NOT as pos {0}rQ   )r  r;  r   rQ   rA  r   r   r   r   rU   r4  r^   rN  rE  r_   rb   rZ   rR   ra   r  r  r   r   r   r   r   r   r   )r   r  is_notparamsop_namer   s         r   	ilri_exprzExprParser.ilri_expr  s>   nn!!)-00 	.Fy}---8c$+&&&&UFk$(+/G%%il33 ""9<000)))-88 6!F&&y}555dnn..////''	55 ""9<000d22445555''	77 ""9>222dnn..///)))*:;; 4&&y'7888MM$.."2"2333''	(9:: ""9#4555dnn..///""9=111dnn..////''	(899 ""9#3444dnn..//// :$ &((.tx(8(8: : : FF")

 ''/// 1&ua00A
r   c                 ~    |                      t          t          j        t          j        g          | j                  S r   )r  r  r   rR   r   r  r   s    r   and_exprzExprParser.and_expr  s6    33	 0122DND D 	Dr   c                 ~    |                      t          t          j        t          j        g          | j                  S r   )r  r  r   rS   r   r  r   s    r   or_exprzExprParser.or_expr  s5    33y~.//@ @ 	@r   c                 *    |                                  S r   )r  r   s    r   rC  zExprParser.expr  r   r   c                 \    t          |                     t          j                            S )N)r   )r	   rA  r   rc   r   s    r   parse_table_insert_fieldz#ExprParser.parse_table_insert_field  s#    4--io>>????r   c                 4    |                                  j        S r   )rm  rJ  r   s    r   parse_table_update_fieldz#ExprParser.parse_table_update_field  s    %%''22r   c                 h   g }d}| j         t          | j                  k     r|s|                     t          j                   d}t          |                                           }|                     t          j	                  rD|                     t          j	                   |                     t          j
                  |_        n4| xj         dz  c_         |                     t          j
                  |_        |                    |           | j         t          | j                  k     |S )NTF)sourcer   )r   r   r   rA  r   rh   r   rC  r;  r   rc   aliasr4  )r   project_exprfirst
projections       r   parse_table_select_projectionz(ExprParser.parse_table_select_projection  s   hT[)))) 4""9?333E#499;;777J%%il33 G""9<000#'#5#5io#F#F
  A#'#5#5io#F#F
 
+++ hT[)))) r   c                 x   g }d}| j         t          | j                  k     r|s|                     t          j                   d}t          |                                           }|                     t          j	                  r1t          j
        |_        |                     t          j	                   nO|                     t          j                  r0t          j        |_        |                     t          j                   |                    |           | j         t          | j                  k     |S )NTF)rC  )r   r   r   rA  r   rh   r
   rC  r;  r   ASC	directionr   DESCr4  )r   order_specsr  orders       r   parse_order_speczExprParser.parse_order_spec  s   hT[)))) 4""9?333Etyy{{+++E%%i&;<< ;"')""9#89999''	(>?? ;"'*""9#9:::u%%% hT[)))) r   c                    g }d}| j         t          | j                  k     rg|s|                     t          j                   d}|                    |                                            | j         t          | j                  k     g|S )NTF)r   r   r   rA  r   rh   r4  rC  )r   	expr_listr  s      r   parse_expr_listzExprParser.parse_expr_list  s    	hT[)))) 4""9?333ETYY[[)))	 hT[))))
 r   N)*rN   rO   rP   r   r  r  r  r  r   r7  r;  r=  r:  rA  rE  rJ  rM  rV  r]  ra  r_  rm  ro  rr  rv  r|  r  r  r  r  r  r  r  r  r  r  rC  r  r  r  r  r  r   r   r   r   r      s         D D D  "
 
 
= = =8\ \ \|G G G6 6 6: : :H H H          &2 2 2"5 5 5  8  6  K K K
    0GK GK GKR     
G G GJ J J  
> > >
/ / /bD D D@ @ @  @ @ @3 3 3  "  "    r   r   Tc                     t          d                    |                      t          | |          }t          |j                   |                                }t          |           d S )Nz>>>>>>> parsing:  {0})printr  r   r   rC  )expr_stringr   pr   s       r   parseAndPrintExprr    sW    	
!
(
(
5
5666;00A	!(OOO	A	!HHHHHr   c                  $    t          d           d S )Nzname like :name)r  r   r   r   x_testr     s    '(((
Fr   N)T)=compatr   r   protobuf.mysqlx_datatypes_pb2r   protobuf.mysqlx_expr_pb2r   r   r   protobuf.mysqlx_crud_pb2r	   r
   r   rangeri  r   r  r|   r}   r~   r   r   r   r   r   r   interval_unitsrR   rS   rT   rU   rQ   r_   r^   ra   rZ   r`   rb   r   rw   rx   ry   r[   r]   r\   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r  r  r   r   r   <module>r     sE  0 & % % % % % % % 1 1 1 1 1 1 N N N N N N N N N N ? ? ? ? ? ? ? ? ? ?  FA A A A A A A AF NMNON	 	 				 
	 			
 
	 	 		 	  	! 	" 	  	 
	 
	 
	  	!" 	#$   !(%&=  D" " " " " " " "&& & &4 4 46 6 6I I I      % % %C	 C	 C	 C	 C	 C	 C	 C	L   .* .* .* .* .*r   