
    i9e                     -   S SK r \ R                  " GS"0 S\_S\_S\_S\_S\_S\_S\_S	\_S
\_S\_S\_S\_S\_S\_S\_S\_S\_S\_S\_S\_S\_S\_S\_6  S SKJr  S SKrS SKJ	r
  S SKJrJr  SSKJrJrJ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#KJrJr  SS$KJr  SS%KJrJrJr  S&S'KJr  SS(KJ r   SS)KJ!r!  S*r"\ R                  " \#\#" S+5      5      r$ " S, S-5      r%\ RL                  GS#S.\4S/ jj5       r'\ RL                  S.\4S0 j5       r(\ RL                  S.\S1\4S2 j5       r)S.\4S3 jr*\ RL                  S.\4S4 j5       r+\ RL                  S.\4S5 j5       r,\ RL                  S.\4S6 j5       r-\ RL                  S.\4S7 j5       r.S8S9S:.r/\ RL                  S.\4S; j5       r0S.\4S< jr1\ RL                  S.\4S= j5       r2\ RL                  S.\4S> j5       r3\ RL                  S.\4S? j5       r4\ RL                  S.\4S@ j5       r5\ RL                  S.\4SA j5       r6\ RL                  S.\4SB j5       r7\ RL                  S.\4SC j5       r8\ RL                  S.\4SD j5       r9\ R                  " \#\#" SE5      5      r:\ RL                  S.\4SF j5       r;\ RL                  S.\4SG j5       r<\ RL                  S.\4SH j5       r=\ RL                  S.\4SI j5       r>\ RL                  S.\4SJ j5       r?\ RL                  S.\4SK j5       r@\ RL                  S.\4SL j5       rA\ RL                  S.\4SM j5       rB\ RL                  S.\4SN j5       rC\ RL                  S.\4SO j5       rD\ RL                  \$4S.\SP\#4SQ jj5       rE\ RL                  S.\4SR j5       rF\ RL                  S.\4SS j5       rG\ RL                  S.\4ST j5       rH\ RL                  S.\4SU j5       rI\ RL                  S.\4SV j5       rJ\ RL                  GS$S.\SX\ R                  S1\4SY jj5       rL\ RL                  S1\4SZ j5       rM\ RL                  S.\4S[ j5       rN\ RL                  S.\4S\ j5       rO\ RL                  S.\S1\4S] j5       rP\ RL                  S.\S1\Q4S^ j5       rR\ RL                  S.\4S_ j5       rS\ RL                  S.\4S` j5       rT\ RL                  S1\Q4Sa j5       rU\ R                  GS%Sb j5       rW\ RL                  S.\4Sc j5       rX\ RL                  S.\4Sd j5       rY\ RL                  S.\4Se j5       rZ\ RL                  S.\4Sf j5       r[\ RL                  S.\4Sg j5       r\\ RL                  Sh 5       r]\ RL                  S.\S1\4Si j5       r^\ RL                  GS&S.\Sj\_4Sk jj5       r`\ RL                  S1\ R                  4Sl j5       ra\ RL                  S.\Sm\ R                  4Sn j5       rb\ RL                  So\_S1\_4Sp j5       rc\ RL                  GS'S.\S1\4Sq jj5       rd\ RL                  S.\S1\_4Sr j5       re\ RL                  S.\Sm\ R                  Ss\ R                  St\ R                  S1\Q4
Su j5       rg\ RL                  S.\Sm\ R                  Ss\ R                  Sv\ R                  St\ R                  S1\Q4Sw j5       rh\ RL                  S.\S1\4Sx j5       ri\ RL                  Sy\_S.\4Sz j5       rj\ RL                  S.\4S{ j5       rk\ RL                  S.\4S| j5       rl\ RL                  S.\4S} j5       rm\ RL                  S.\4S~ j5       rn\ RL                  S.\4S j5       ro\ RL                  S.\4S j5       rp\ RL                  GS'S.\S1\Q4S jj5       rq\ RL                  GS'S.\S1\Q4S jj5       rr\ RL                  GS'S.\S1\Q4S jj5       rs\ RL                  S.\4S j5       rt\ RL                  S.\4S j5       ru\ RL                  S.\4S j5       rv\ RL                  S.\4S j5       rw\ R                  " \#\#" S5      5      rx\ RL                  S.\4S j5       ry\ RL                  S.\4S j5       rz\ RL                  S.\4S j5       r{\ RL                  S.\4S j5       r|\ RL                  S.\4S j5       r}\ RL                  S.\4S j5       r~\ RL                  GS(S.\S\ R                  4S jj5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  GS)S.\S\ R                  4S jj5       r\ RL                  S.\S1\4S j5       r\ RL                  S.\S\ R                  S1\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  GS(S.\S\ R                  4S jj5       r\ RL                  GS*S.\S\ R                  S\ R                  S1\4S jj5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ R                  " \#\#" S5      5      r\ RL                  S.\S\_4S j5       r\ RL                  S.\4S j5       r\ RL                  GS*S.\S\ R                  S\ R                  4S jj5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  GS(S.\S\ R                  4S jj5       r\ RL                  S.\S\ R                  S1\Q4S j5       r\ RL                  S.\S\ R                  S1\4S j5       r\ RL                  S.\4S j5       r\ RL                  GS)S.\S\ R                  4S jj5       r\ RL                  GS)S.\S\ R                  4S jj5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  GS(S.\S\ R                  4S jj5       r\ RL                  GS)S.\S\ R                  4S jj5       r\ RL                  \%" 5       4S.\4S jj5       r\ RL                  GS(S.\S\ R                  S1\4S jj5       r\ RL                  GS'S.\S1\4S jj5       r\ R                  GS+S.\S\ R                  4S jj5       r\ RL                  S.\4S j5       r\ R                  " \#\#" S5      5      r\ RL                  GS'S.\4S jj5       r\ RL                  GS'S.\S\ R                  4S jj5       r\ RL                  S.\4S j5       r\ RL                  S.\S1\ R                  4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\S1\ R                  4S j5       r\ RL                  S.\S1\ R                  4S j5       r\ RL                  S.\S1\ R                  4S j5       r\ RL                  S.\S1\ R                  4S j5       r\ R                  " \#\#" S5      5      r\ R                  " \SSSSSSSSS.5      r\ R                  " \#\#" S5      5      r\ R                  " \#\\-  \#" \5      -  5      r\ R                  " \#\#" S5      5      r\ RL                  S.\S1\4S j5       r\ RL                  S.\4S j5       r\ R                  \%" 5       SSSSSS4S.\S\ R                  S\ R                  S\ R                  S\ R                  S\ R                  S\ R                  4S jj5       r\ RL                  S.\4S j5       r\ RL                  S.\S\ R                  4S j5       r\ R                  " \#\#" S5      5      r\ RL                  S.\S\ R                  S\ R                  S\ R                  S\ R                  S\ R                  4S j5       r\ RL                  S.\S1\ R                  4S j5       r\ RL                  S.\S1\ R                  4S j5       r\ RL                  S.\S\ R                  S1\4S j5       r\ R                  " \#\#" S5      5      r\ R                  \%" 5       SSSSSW4S.\S\ R                  S\ R                  S\ R                  S\ R                  S\ R                  S1\Q4S jj5       r\ RL                  S.\S1\ R                  4S j5       r\ RL                     GS,S.\S\ R                  S\ R                  S\ R                  S\ R                  S\ R                  4S jj5       r\ RL                  S.\4S j5       r\ RL                  S.\S1\ R                  4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\S\Q4S j5       r\ RL                  S.\S\Q4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\S1\Q4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\4S j5       r\ RL                  S.\S1\Q4S j5       r\ RL                  S.\4S j5       r\ RL                  GS-S.\S\QS\ R                  4GS  jj5       r\ RL                  GS.S.\S\ R                  S\ R                  S1\4GS jj5       r\ RL                  GS$S.\S\ R                  4GS jj5       r\ RL                  S.\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\S1\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S1\4GS	 j5       r\ R                  S\%4S.\4GS
 jj5       r\ R                  " \\GR                  " GS5      GR                  5      r\ RL                  S.\S1\4GS j5       r\ R                  \%4S.\4GS jj5       r\ RL                  S.\S1\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\4GS j5       r\ RL                  S.\S1\4GS j5       r\ RL                  S.\4GS j5       r\ R                  GS'GS \ GR                  4GS! jj5       rg(/      NNodes	ExprNodesEncodedStringbytes_literalStringEncodingFileSourceDescriptorlookup_unicodecharFutureOptionserrorwarningBuiltin
ModuleNodeUtils_unicode_bytesre_parse_escape_sequences_parse_escape_sequences_rawpartialreduce_CDEF_MODIFIERSCOMMON_BINOP_MISTAKES)StringIO)lookup)r   r      )PyrexScannerr   tentatively_scan)r   )r   )MatchCaseNodes)r   )r   )r   r   )r   )r   r   CompileError   )r   )r
   )r   )inlinenogilapi);NEWLINEEOFc                   H    \ rS rSrSrSrSrSrSrSr	Sr
SrSrSrS rS rSrg)	Ctx)   otherprivateFNc                 :    U R                   R                  U5        g N)__dict__update)selfkwdss     W/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/Cython/Compiler/Parsing.py__init__Ctx.__init__6   s    T"    c                     [        5       nUR                  nUR                  U R                  5        UR                  U5        U$ r.   )r)   r/   r0   )r1   r2   ctxds       r3   __call__Ctx.__call__9   s2    eLL		
r6    )__name__
__module____qualname____firstlineno__level
visibility	cdef_flagtypedef_flagr$   overridabler#   	namespace	templatesallow_struct_enum_decoratorr4   r:   __static_attributes__r<   r6   r3   r)   r)   )   s?    EJIL
CKEII"'#r6   r)   sc                     U R                   S:X  a7  U R                  R                  U R                  5      nU R	                  5         U$ U R                  U5        g NIDENT)sycontextintern_ustringsystringnextr   )rJ   messagenames      r3   p_identrU   A   s?    ttwyy''

3		r6   c                    / nU R                   S:X  ay  UR                  U R                  R                  U R                  5      5        U R                  5         U R                   S:w  a   U$ U R                  5         U R                   S:X  a  My  U$ )NrM   ,)rN   appendrO   rP   rQ   rR   )rJ   namess     r3   p_ident_listrZ   K   sl    E
$$'/QYY--ajj9:	443;L 	
 $$'/ Lr6   returnc                 `    U R                  5       nU R                  nU R                  5         X!4$ r.   )positionrN   rR   )rJ   posops      r3   p_binop_operatorr`   \   s&    
**,C	
BFFH7Nr6   c                 ,   U" U 5      nU R                   U;   a{  [        U 5      u  pEU" U 5      n[        R                  " XTX65      nUS:X  a7  [        R
                  U R                  R                  ;   a  SUl        OS Ul        U R                   U;   a  M{  U$ )N/T)	rN   r`   r   
binop_noder
   divisionrO   future_directivestruedivision)rJ   ops
p_sub_exprn1r_   r^   n2s          r3   p_binop_exprrk   e   s|    	AB
$$#+"1%]!!#229!))"="=="&"& $$#+ Ir6   c                     U R                  5       nU R                  5         U R                  S:X  a  / nS =p4O[        U SSS9u  p#nU R	                  S5        [        U 5      n[        R                  " XX4US9$ )N:F)
terminator	annotated)argsstar_argstarstar_argresult_expr)r]   rR   rN   p_varargslistexpectp_testr   
LambdaNode)rJ   r^   rp   rq   rr   exprs         r3   	p_lambdefry   u   sx     **,CFFHtts{"&&<'4#(0$HHSM!9D r6   c                 ^    [        U 5      nU R                  S:X  a  U R                  S5        U$ )N:=zAinvalid syntax: assignment expression not allowed in this context)p_test_allow_walrus_afterrN   r   )rJ   rx   s     r3   rv   rv      s+     %Q'Dttt|	STKr6   c                 *   U R                   S:X  a  [        U 5      $ U R                  5       n[        U 5      nU R                   S:X  aL  U R	                  5         [        U 5      nU R                  S5        [        U 5      n[        R                  " XX$S9$ U$ )Nlambdaifelse)testtrue_val	false_val)	rN   ry   r]   	p_or_testrR   ru   rv   r   CondExprNode)rJ   r^   rx   r   r+   s        r3   r|   r|      sv    ttx|
**,CQ<Dttt|	|	q	%%ctUUr6   c                     [        U 5      nU R                  S:X  aa  U R                  5       nUR                  (       d  U R	                  SSS9  U R                  5         [        U 5      n[        R                  " X!US9$ U$ )Nr{   z=Left-hand side of assignment expression must be an identifierFfatallhsrhs)	r|   rN   r]   is_namer   rR   rv   r   AssignmentExpressionNode)rJ   r   r]   r   s       r3   p_namedexpr_testr      sg     $A
&Cttt|::<{{GGS[`Ga	Qi11(MMJr6   orand)z||&&c                 $    [        U S[        5      $ )Nr   )p_rassoc_binop_expr
p_and_testrJ   s    r3   r   r      s    q$
33r6   c                    U" U 5      nU R                   U:X  aQ  U R                  5       nU R                   nU R                  5         [        XU5      n[        R
                  " XAX55      nU$ U R                   [        ;   aC  [        U R                      U:X  a,  [        U R                  5       SU R                   < SU< S3SS9  U$ )NzFound the C operator 'z%', did you mean the Python operator 'z'?r   rA   )rN   r]   rR   r   r   rc   r   r   )rJ   r_   	p_subexprri   r^   rj   s         r3   r   r      s    	1BttrzjjlTT	 	2!!#22 I 
&	&+@+F"+L

WXW[W[]_`	 Ir6   c                 $    [        U S[        5      $ )Nr   )r   
p_not_testr   s    r3   r   r      s     q%44r6   c                     U R                   S:X  a>  U R                  5       nU R                  5         [        R                  " U[        U 5      S9$ [        U 5      $ )Nnotoperand)rN   r]   rR   r   NotNoder   p_comparisonrJ   r^   s     r3   r   r      sB    ttu}jjl	  
1>>Ar6   c                    [        U 5      nU R                  [        ;   a`  U R                  5       n[	        U 5      n[        U 5      n[
        R                  " UX1US9nU R                  [        ;   a  [        U 5      Ul        U$ )N)operatoroperand1operand2)	p_starred_exprrN   comparison_opsr]   p_cmp_opr   PrimaryCmpNodep_cascaded_cmpcascade)rJ   ri   r^   r_   rj   s        r3   r   r      sj    		Btt~jjla[A%%cR944>!'*BJIr6   c                 N    U R                   S:X  a  [        U 5      $ [        U 5      $ N*)rN   r   rv   r   s    r3   p_test_or_starred_exprr      s"    tts{a  ayr6   c                 N    U R                   S:X  a  [        U 5      $ [        U 5      $ r   )rN   r   r   r   s    r3    p_namedexpr_test_or_starred_exprr     s#    tts{a  ""r6   c                     U R                  5       nU R                  S:X  a  SnU R                  5         OSn[        U 5      nU(       a  [        R
                  " X5      nU$ )Nr   TF)r]   rN   rR   
p_bit_exprr   StarredUnpackingNode)rJ   r^   starredrx   s       r3   r   r     sL    
**,Ctts{	a=D--c8Kr6   c                     U R                  5       n[        U 5      n[        U 5      n[        R                  " UX#S9nU R
                  [        ;   a  [        U 5      Ul        U$ )N)r   r   )	r]   r   r   r   CascadedCmpNoderN   r   r   r   )rJ   r^   r_   rj   results        r3   r   r     sR    
**,C	!B		B&&s&Ftt~'*Mr6   c                 B   U R                   S:X  a$  U R                  5         U R                  S5        SnObU R                   S:X  a6  U R                  5         U R                   S:X  a  U R                  5         SnOSnOU R                   nU R                  5         US:X  a  SnU$ )Nr   innot_inisis_not<>!=)rN   rR   ru   rJ   r_   s     r3   r   r   %  s{    ttu}			
	445=FFHBBTT		TzIr6   )
<>==>=<=r   r   r   r   r   c                 $    [        U S[        5      $ )N)|)rk   
p_xor_exprr   s    r3   r   r   B      6:..r6   c                 $    [        U S[        5      $ )N)^)rk   
p_and_exprr   s    r3   r   r   I  r   r6   c                 $    [        U S[        5      $ )N)&)rk   p_shift_exprr   s    r3   r   r   P  s    6<00r6   c                 $    [        U S[        5      $ )N)<<>>)rk   p_arith_exprr   s    r3   r   r   W  s    <66r6   c                 $    [        U S[        5      $ )N+-)rk   p_termr   s    r3   r   r   ^  s    :v..r6   c                 $    [        U S[        5      $ )N)r   @rb   %z//)rk   p_factorr   s    r3   r   r   e  s    5x@@r6   c                     [        U 5      $ r.   )	_p_factorr   s    r3   r   r   l  s     Q<r6   c                    U R                   nUS;   aL  U R                   nU R                  5       nU R                  5         [        R                  " X2[        U 5      5      $ U R                  (       dw  US:X  a?  U R                  5       nU R                  5         [        U 5      n[        R                  " X4S9$ US:X  a  [        U 5      $ US:X  a  U R                  S:X  a  [        U 5      $ [        U 5      $ )N)r   r   ~r   r   r   rM   sizeof)rN   r]   rR   r   	unop_noder   in_python_fileAmpersandNode
p_typecastrQ   p_sizeofp_power)rJ   rN   r_   r^   args        r3   r   r   r  s    	
B	_TTjjl	""3HQK889**,CFFH1+C**3>>3Ya= 7]qzzX5A;1:r6   c                 T   U R                  5       nU R                  5         [        U 5      n[        U[        R
                  5      n[        U[        R                  [        R                  [        R                  45      nU(       d%  U(       d  UR                  c  U R                  S5        [        U SS9nU R                  S:X  a  U R                  5         SnOSnU R                  S5        [        U 5      nU(       a  [        R                   " XUS9$ [        R"                  " UUUUUS9$ )	NzUnknown typeTempty?Fr   )base_type_noder   )	base_type
declaratorr   	typecheck)r]   rR   p_c_base_type
isinstancer   MemoryViewSliceTypeNodeTemplatedTypeNodeCConstOrVolatileTypeNodeCTupleBaseTypeNoderT   r   p_c_declaratorrN   ru   r   r   CythonArrayNodeTypecastNode)rJ   r^   r   is_memsliceis_other_unnamed_typer   r   r   s           r3   r   r     s     **,CFFHa IY(E(EFK&y&&  3 
 0inn6L	.Jtts{			HHSMqkG((PWXX!!#	 r6   c                 >   U R                  5       nU R                  5         U R                  S5        [        U 5      (       a   [	        U 5      n[
        R                  " XS9nO*[        U 5      n[        U SS9n[
        R                  " UXES9nU R                  S5        U$ )N(r   Tr   r   r   ))
r]   rR   ru   looking_at_exprrv   r   SizeofVarNoder   r   SizeofTypeNode)rJ   r^   r   noder   r   s         r3   r   r     s     **,CFFHHHSM q)&&s>!!$	#AT2
''!<HHSMKr6   statement_terminatorsc                    U R                  5       nU R                  5         SnU R                  S:X  a  SnU R                  5         U R                  S:w  a.  U R                  U;  a  U(       a  [        U 5      O
[	        U 5      nOU(       a  U R                  SUSS9  S nU(       a  [        R                  " X$S9$ [        R                  " X$S9$ )NFfromTr   z''yield from' requires a source argumentr^   r   r   )	r]   rR   rN   rv   
p_testlistr   r   YieldFromExprNodeYieldExprNode)rJ   r  r^   is_yield_fromr   s        r3   p_yield_expressionr    s     **,CFFHMttv~	tts{qtt#88(fQijmGG=5  ***388&&s44r6   c                 V    [        U 5      n[        R                  " UR                  US9$ )Nrx   )r  r   ExprStatNoder^   )rJ   
yield_exprs     r3   p_yield_statementr    s%     $A&Jjnn:>>r6   c                 x   U R                   S:X  a<  SUR                  ;   a  U R                  S5        UR                  U l        [        XSS9$ U(       a  U R                  S5        g U R                   S:X  a
  [	        U SS9$ U R                   S	:X  a  U R                  5         [        U SS9$ U R                  S
5        g )Ndefpxddef statement not allowed hereT)is_async_def7Decorators can only be followed by functions or classesforis_asyncwithz2expected one of 'def', 'for', 'with' after 'async')rN   rA   r   p_def_statementp_for_statementrR   p_with_items)rJ   r8   
decoratorss      r3   p_async_statementr!    s     	ttu}CIIGG45))q4@@		IJ	
q400	
	A--	DEr6   c                    U R                   S:X  a"  U R                  5       S   S:X  a  [        U 5      $ S nU R                  S:X  a   U R	                  5       nU R                  5         [        U 5      nU R                  S;   a  [        X5      nU R                  S;   a  M  U(       a  [        R                  " XS9nU R                  S:X  aC  U R	                  5       nU R                  5         [        U 5      n[        R                  " USX$5      nU$ )Nnewr   rM   await)r   [.r  **)rQ   peek
p_new_exprrN   r]   rR   p_atom	p_trailerr   AwaitExprNoder   rc   )rJ   	await_posri   r^   rj   s        r3   r   r     s    zzUqvvx{g5!}IttwJJL			B
$$/
!q $$/
!$$Y7ttt|jjl	a[!!#tR4Ir6   c                     U R                  5       nU R                  5         [        U 5      n[        U [        R
                  " XS95      $ )N)cppclass)r]   rR   r   p_callr   NewExprNode)rJ   r^   r/  s      r3   r)  r)    s:     **,CFFHQH!Y**3DEEr6   c                     U R                  5       nU R                  S:X  a  [        X5      $ U R                  S:X  a  [        X5      $ U R	                  5         [        U 5      n[        R                  " UXS9$ )Nr   r%  obj	attribute)r]   rN   r0  p_indexrR   rU   r   AttributeNode)rJ   node1r^   rT   s       r3   r+  r+    sc    
**,Ctts{a	
q  	qz&&s' 	'r6   Tallow_genexpc                    U R                  5         / n/ nSnSnU R                  S:w  Ga  U R                  S:X  aS  U(       a  U R                  SU R                  5       S9  U R                  5         UR	                  [        U 5      5        SnGONU R                  S:X  a.  U R                  5         UR	                  [        U 5      5        SnGO[        U 5      nU R                  S:X  a  U R                  5         UR                  (       d  U R                  S	UR                  S9  U R                  R                  UR                  5      n[        R                  " UR                  US
9n[        U 5      nUR	                  X45        OXU(       a  U R                  SUR                  S9  U(       a  U(       d  US   R	                  U5        OUR	                  U/5        SnU R                  S:w  a  O#U R                  5         U R                  S:w  a  GM  U R                  S;   aI  U(       aB  U(       d;  U(       d4  [        U5      S:X  a%  [        US   5      S:X  a  [        XS   S   5      //nU R!                  S5        U=(       d    / /U4$ )NFr   r   %Non-keyword arg following keyword argr^   Tr'  =z!Expected an identifier before '='valuerW   r  asyncr   r   )rR   rN   r   r]   rX   rv   r   r   r^   rO   rP   rT   r   IdentifierStringNodelenp_genexpru   )	rJ   r9  positional_argskeyword_argsstarstar_seenlast_was_tuple_unpackr   encoded_namekeywords	            r3   p_call_parse_argsrL  (  s    FFHOLM!
$$#+443;?QZZ\RFFH""6!9-$(!TTT\FFHq	* M"1%Ctts{{{GG? #  ) yy77A#88GG<1Qi##WN3GGCGQ"+@#B'..s3#**C51(-%443;	C $$#+F 	ttL$9?#q(S1C-D-I$,Q0B10E$F#G"HHHSM"rdL00r6   c           	         S nU Vs/ s H@  n[        U[        5      (       a  [        R                  " XS9O[        R                  " XS9PMB     nn[        [        [        R                  U S5      U5      nU(       GaO  / n/ nU H  n	[        U	[        5      (       a4  U	u  pUR                  [        R                  " U
R                  XS95        ML  U	R                  (       a  UR                  U	R                  5        Mz  U(       a4  UR                  [        R                  " US   R                  USS95        / nUR                  U	5        M     U(       a2  UR                  [        R                  " US   R                  USS95        U(       a?  [!        U5      S:X  a  US   R                  (       a  US   nXc4$ [        R"                  " XS	9nXc4$ s  snf )
Nrp   r  r   r^   keyr?  r   T)key_value_pairsreject_duplicatesr   )rG  )r   listr   	TupleNodeAsTupleNoder   r   rc   tuplerX   DictItemNoder^   is_dict_literalextendrQ  DictNoderD  MergedDictNode)r^   rF  rG  keyword_dictr   	subtuples	arg_tuplekwargs
dict_itemsitemrP  r?  s               r3   p_call_build_packed_argsrb  [  s   L #"C /9d.C.C	C*I^I^_bIll"  
 wy33S#>	JI
 D$&&!
!!)"8"8SWW#"[\%%!!$"6"67MM)"4"4"1)):Y]#_ `!#Jd# ! MM),,1!!:QUW X 6{aF1I$=$=%ay
 ""  )77Q""Is   AGc                    U R                  5       n[        U 5      u  p4U(       d?  [        U5      S:X  a0  [        US   [        5      (       a  [
        R                  " X!US   S9$ [        X#U5      u  pV[
        R                  " X!XVS9$ )Nr   r   )functionrp   )rd  rF  rG  )	r]   rL  rD  r   rS  r   SimpleCallNoderb  GeneralCallNode)rJ   rd  r^   rF  rG  r^  r\  s          r3   r0  r0    s     **,C$5a$8!OC0A5*_UVEWY]:^:^''_UVEWXX":3Q]"^	((IZ 	Zr6   c                 r   U R                  5       nU R                  5         [        U 5      u  p4U(       a0  [        US   5      S:X  a  US   u  pV[        R
                  " UXUS9nOA[        X#5      nU(       a  US   n	O[        R                  " X(S9n	[        R                  " UXS9nU R                  S5        U$ )Nr   r!   )basestartstoprN  rh  index])
r]   rR   p_subscript_listrD  r   SliceIndexNodemake_slice_nodesrT  	IndexNoderu   )
rJ   rh  r^   
subscriptsis_single_valueri  rj  r   indexesrl  s
             r3   r6  r6    s     **,CFFH"21"5J3z!}-2 m))#t5 #33AJE''<E$$S(HHSMMr6   c                     Sn[        U 5      /nU R                  S:X  aR  SnU R                  5         U R                  S:X  a   X!4$ UR                  [        U 5      5        U R                  S:X  a  MR  X!4$ )NTrW   Frm  )p_subscriptrN   rR   rX   )rJ   rs  itemss      r3   rn  rn    sm    O^E
$$#+	443;!! 	[^$ $$#+ !!r6   c                     [        U S5      nU R                  S:w  a  U/$ U R                  5         [        U S5      nU R                  S:w  a  X/$ U R                  5         [        U S5      nXU/$ )N)rm   rm   )rm   rW   rm  )p_slice_elementrN   rR   )rJ   ri  rj  steps       r3   rv  rv    sj    
 Av&Etts{wFFH1o.Dtts{}FFH1o.Dr6   c                 :    U R                   U;  a  [        U 5      $ g r.   )rN   rv   )rJ   
follow_sets     r3   ry  ry    s     	tt:ayr6   c                 &    U R                  S5        g )N...)ru   r   s    r3   expect_ellipsisr    s    HHUOr6   c                     / nU HC  n[        U5      S:X  a  UR                  US   5        M(  UR                  [        U /UQ76 5        ME     U$ )Nr   r   )rD  rX   make_slice_node)r^   rr  r   	subscripts       r3   rp  rp    sL     F	y>QMM)A,'MM/#:	:;	  
 Mr6   c                     U(       d  [         R                  " U 5      nU(       d  [         R                  " U 5      nU(       d  [         R                  " U 5      n[         R                  " U XUS9$ )N)ri  rj  rz  )r   NoneNode	SliceNode)r^   ri  rj  rz  s       r3   r  r    sU    ""3'!!#&!!#&s41 1r6   c                    U R                  5       nU R                  nUS:X  ap  U R                  5         U R                  S:X  a  [        R                  " U/ S9nO'U R                  S:X  a  [        U 5      nO[        U 5      nU R                  S5        U$ US:X  a  [        U 5      $ US:X  a  [        U 5      $ US:X  a  [        U 5      $ US:X  a!  [        U 5        [        R                  " U5      $ US	:X  a  [        U 5      $ US
:X  a0  U R                  nU R                  5         [        R                  " XS9$ US:X  a3  U R                  S S nU R                  5         [        R                   " XS9$ US:X  d  US:X  a  [#        U 5      $ US:X  a5  [%        U 5      nUc%  ['        X R                  5      nU R                  5         U$ U R)                  S5        g )Nr   r   rN  yieldr%  {`r~  INTFLOATr>  IMAGr@  BEGIN_STRINGBEGIN_FT_STRINGrM   z!Expected an identifier or literal)r]   rN   rR   r   rT  r  p_testlist_compru   p_list_makerp_dict_or_set_makerp_backquote_exprr  EllipsisNodep_int_literalrQ   	FloatNodeImagNodep_atom_stringp_atom_ident_constantsp_namer   )rJ   r^   rN   r   r?  s        r3   r*  r*    s   
**,C	
B	Sy	443;((R8FTTW_'*F$Q'F		sA	s"1%%	s""	u%%c**	uQ	w

	""366	v

3B	!!#55	~	'8!8Q	w'*>Azz*FFFH	34r6   c                    U R                  5       n[        U 5      u  p#nU(       d  [        R                  " XUS9$ UnUS:X  a  [        R                  " XS9$ US:X  a  [        R                  " XUS9$ US:X  a  [        R
                  " XS9$ US:X  a  [        R                  " XS9$ US:X  a  [        R                  " XS9$ U R                  S	U S
35        g )N)r?  bytes_valuecr>  ubfvaluestzinvalid string kind '')	r]   p_cat_string_literalr   UnicodeNodeCharNode	BytesNodeJoinedStrNodeTemplateStringNoder   )rJ   r^   kindr  unicode_value	kind_chars         r3   r  r  '  s     **,C';A'>$D}$$S;WW $IC!!#99	c	$$S;WW	c	""3::	c	&&sAA	c	++CFF 	
'vQ/0r6   c                 f   U R                  5       nU R                  nUS:X  a  [        R                  " U5      nOgUS:X  a  [        R                  " USS9nOKUS:X  a  [        R                  " USS9nO/US:X  a(  U R
                  (       d  [        R                  " U5      nOgU R                  5         U$ )	z{
Returns None if it isn't a special-cased named constant.
Only calls s.next() if it successfully matches a named constant.
NoneTrueTr>  FalseFNULLN)r]   rQ   r   r  BoolNoder   NullNoderR   )rJ   r^   rT   r   s       r3   r  r  ?  s     **,C::Dv~##C(	##Ct4	##Cu5	 0 0##C(FFHMr6   c                    U R                  5       n[        R                  " [        U R                  5      nU R                  5         SnSnUS   S;   a$  US   S;   a  US-  nOUS-  nUS S nUS   S;   a  M$  S nU(       a  SnO)U(       a"  US:X  d  U R                  R                  S	:  a  SnU R                  (       a  U(       a  [        US
5        Sn[        R                  " UUUUUS9$ )N r@  UuLlLlLUTLL   z4illegal integer literal syntax in Python source fileF)is_c_literalr?  unsignedlongness)r]   cythoncaststrrQ   rR   rO   language_levelr   r   r   IntNode)rJ   r^   r?  r  r  r  s         r3   r  r  V  s    
**,CS!**-EFFHHH
)v
9OHOHcr
 )v
 L	tqyy771<L#MNS,8%*(0(0	2 2r6   c                     U R                  5       nU R                  (       d:  XR                  ;   a+  U R                  R                  U5      n[	        X#5      nUb  U$ [
        R                  " X!S9$ )NrT   )r]   compile_time_exprcompile_time_envlookup_herewrap_compile_time_constantr   NameNode)rJ   rT   r^   r?  r  s        r3   r  r  w  s]    
**,C4+=+=#=""..t4)#5Kc--r6   c           
         Uc  [         R                  " U 5      $ U[        L a  [         R                  " U 5      $ [	        U[
        5      (       a  [         R                  " XS9$ [	        U[        5      (       a  [         R                  " U [        U5      US9$ [	        U[        5      (       a  [         R                  " U [        U5      US9$ [	        U[        5      (       a  [         R                  " U [        UR                  5      [        SUR                  5      S9nUR                  (       aI  [         R                   " U S[         R                  " U [        UR                  5      UR                  S9UUS9nU$ [	        U["        5      (       a  [         R$                  " U ['        U5      S9$ [	        U[(        5      (       a!  [+        US5      n[         R,                  " XUS9$ [	        U[.        5      (       a6  U Vs/ s H  n[1        X5      PM     nnS U;   a  g [         R2                  " XS9$ [5        U SU< S	UR6                  R8                  < S
35        g s  snf )Nr>  )r?  constant_resultg        r   )r  asciirN  z(Invalid type for compile-time constant: z (type r   )r   r  Ellipsisr  r   boolr  intr  reprfloatr  complexr  imagrealrc   r  r  r   bytesr   r  rV  r  rT  r   	__class__r=   )r^   r?  r  bvaluer   rp   s         r3   r  r    s   }!!#&&	(	%%c**	E4	 	 !!#33	E3		  DKOO	E5	!	!""3d5k5QQ	E7	#	#!!#T%**-=wWZ\a\f\fOgh:: ''S)--cejj9I[`[e[efhl %'D 	E3		$$Se0DEE	E5	!	!ug.""3eLL	E5	!	!@EF*34F4<""322	#113 4 Gs   :Ic           	      |   U R                  5       n[        U 5      u  p#nUS:X  d   U R                  S:w  a  U R                  S:w  a  X#U4$ U/U/U/pvnS =p4U R                  S:X  d  U R                  S:X  a  U R                  5       n[        U 5      u  pn
US:X  a  [        US5        MR  X:w  aA  X(1SS1SS14;   a  SnO1US:X  d  US:X  a  [        US	5        M  [        US
U< SU< S35        M  UR	                  U	5        UR	                  U
5        UR	                  U5        U R                  S:X  a  M  U R                  S:X  a  M  US;   d  US:X  a+  S U;  a%  [        SR                  U5      U R                  5      nUS;   a/  [        SR                  U Vs/ s H	  oc  M  UPM     sn5      5      nUS:X  a^  / n[        Xg5       HM  u  p[        U[        5      (       a  XK-  nM   UR	                  [        R                  " U[        U5      S95        MO     US:X  a  / nU H  nUR                  U5        M     X#U4$ s  snf )Nr  r  r  zCCannot concatenate char literal with another string or char literalr  r  r  r  z:cannot mix t-string literals with string or bytes literalsz8Cannot mix string literals of different types, expected z'', got z'')r  r  r  r6   r  r  r>  )r]   p_string_literalrN   r   rX   r   joinsource_encodingr   zipr   rS  r   r  rY  )rJ   r^   r  r  r  bstringsustrings	positions	next_kindnext_bytes_valuenext_unicode_valuer  s               r3   r  r    s)   
 **,C'7':$D}s{qtt~-!$$:K2K-//%0MM?SE	H"&&K
$$.
 ADD,=$=jjl:J1:M7	%7#\] c3Z#r$;;	S 0cWXc)% &()*+' $$.
 ADD,=$=* ~X1E#CHHX$68I8IJy%bgg(.T(Qq(.T&UVs{(.FA!T""" $$Y%:%:3mTUFV%WX / s{A  # m++ /Us   H9H9required_typec                     U R                   S:w  a  g U R                  5       n[        X5      u  p4nUS:X  a  US:X  a  U R                  SU5        U$ US:X  a  U$ U R                  S5        g )Nr  r  r  zf-string not allowed herer  z#internal parser configuration error)rN   r]   r  r   )rJ   r  r^   r  r  r  s         r3   p_opt_string_literalr    sj    tt~
**,C'7'I$D}3;GG/5	#		56r6   c                 \    [         R                  " [        U 5      nU H  nUS:  d  M    g   g)N   TF)r  r  r  )stringrJ   r  s      r3   check_for_non_ascii_charactersr    s+    C A;  r6   is_rawc                    U R                   nU R                  nUnU R                  R                  S:  nUS:X  a  UR	                  U5        U$ US:X  aP  U(       a8  U(       d  US:w  d  [        U5      S:  d	  US   S;  a  UR	                  U5        U$ Sn[        X2X`5         U$ US	:X  a  UR	                  S
5        U$ US:X  a  U R                  SUS9  U$ g)zx
Returns a string of non-escaped characters (if handled) or none.
If passed an escape sequence returns an empty string.
r  CHARSESCAPEr  r!   r   Uur  r&   
r'   zUnclosed string literalr<  N)rN   rQ   rO   r  rX   rD  _append_escape_sequencer   )	rJ   r^   charsr  r  rN   systrr   is_python3_sources	            r3   p_string_literal_shared_readr    s     
BJJEF%&YY%=%=%B	W}U M 
x(DCK3u:>USTX]aMaLL M F#D: M 
yT
 M	 
u	)s3 M r6   rQ   c                    UR                  S5      R                  5       n[        U5      S::  d  [        U5      S:X  a  US;   a  U$ [        U5      n[        U5      [        U5      :w  a  [	        U S5        UR                  S5        [        U5      n[        U5      S:  a  [	        U SUS    S	US    S
35        g[	        U SU 35        g)Nz"'r   r!   	rbrurfrtrz!Duplicate string prefix characterrzString prefixes r    and z cannot be combinedzInvalid string prefix r  )rstriplowerrD  setr   discardsorted)r^   rQ   kind_stringunique_string_prefixess       r3   _validate_kind_stringr    s    //%(..0K
;1[!1Q!6;+;U -
!"c+&66c67""3'#$:;
!"a'c%&<Q&?%@F\]^F_E``stu  	c+K=9:r6   c                 \   U R                   S:X  a  Ub   e[        U 5      $ U R                  5       nU R                  R                  S:  nSn[        X R                  5      nSU;   nSU;   a  [        U5      S:w  a  [        US5        SnOSU;   a  SnOS	U;   a  S	nOS
nUS
:X  aN  UcK  [        R                  U R                  R                  ;   a#  [        R                  " U R                  5      nS	nOnUb  US;   a  UnUS;   a  [        R                  " 5       nOGUS
:X  a!  [        R                  " U R                  5      nO [        R                   " U R                  5      n U R#                  5         [%        XXUS9n	U	bC  U(       d:  U(       a3  [        R                  U R                  R                  ;   a  ['        U	5      nMb  U R                   S:X  a  O0U R                  SU R                   < SU R                  < S35        M  US:X  a1  S n
UR)                  5       n[        U5      S:w  a  [        USU-  5        O`UR+                  5       u  pU(       aG  U(       a@  [        R                  U R                  R                  ;   a  US:X  a  U R                  SUS9  S nU R#                  5         X{U
4$ )Nr  r  Fr  r  r   z+Invalid string prefix for character literalr  r  r  ub)r  r  r  
END_STRINGUnexpected token rm   z in string literalzinvalid character literal: %rz0bytes can only contain ASCII literal characters.r<  )rN   p_ft_string_literalr]   rO   r  r  rQ   rD  r   r
   unicode_literalsre   r   StrLiteralBuilderr  UnicodeLiteralBuilderBytesLiteralBuilderrR   r  r  getchar
getstrings)rJ   kind_overrider^   r   has_non_ascii_literal_charactersr   r  r  r  handled_charsr  r  s               r3   r  r  $  s`    	tt  $$$"1%%
**,C%&YY%=%=%B',$'ZZ8K,F
k {q #DE				rzm+0G0G199KfKf0f001B1BC$$)> D:"88:ERZ"44Q5F5FGE"66q7H7HIE
	4E $4%&*A*AQYYE`E`*`3QR_3`044<GGajj" #   s{mmo{q #6DE%*%5%5%7",%&*A*AQYYE`E`*`s{JPSTKFFH}--r6   c                     / n U R                  5         U R                  nUS;   a'  US:X  a  U R                  5         SR                  U5      $ UR                  U R                  5        Mf  )N)END_FT_STRING_EXPRr'   Nr  r  )rR   rN   r  rX   rQ   )rJ   stringsrN   s      r3   p_read_ft_string_expressionr  s  sa    G
	TT     ))777##qzz" r6   is_single_quotedtf_string_kindc           
      :   / nS =n=pgS nSn	U R                  5       n
U
S   U
S   U
S   S-   4n[        U 5      nUR                  5       (       d  [        U
SU S35        / nGOU n[	        [        U5      U
S   U U R                  US9n U =R                  S-  sl        U R                  S:X  a  U R                  5         U R                  S	:X  a  [        U [        1 S
k-  S9nO[        U 5      nU R                  S:X  a  Sn	U R                  5         U R                  S:X  a  U R                  5       nU R                  5         U R                  nUS;   a  [        U R                  5       S5        O[        R                  R!                  U5      (       d.  [        U R                  5       SU-  5        U R                  5         OXU R                  5       S   US   S-   :w  a+  [        U R                  5       S5        U R                  5         OU R                  5         U	(       d  US:X  a  Ub  UR#                  SS5      u  pUS:X  aT  [        R$                  " U[&        R(                  " UR+                  5       R+                  S5      R+                  5       5      S9nU	(       a8  UR-                  [        R$                  " U[&        R(                  " U5      S95        U R                  S:X  d  U R                  S:X  a4  U R                  5         U R                  S:X  a  M"  U R                  S:X  a  M4  U R                  S:w  a*  [        U R                  5       SU SU R                   35        Un U R                  S:X  a1  U R                  5       n[/        XUSSS9n[        R0                  " UUS9nU	(       a  Uc  Uc  SnUb  [&        R(                  " U5      nUS:X  a'  UR-                  [        R2                  " XUXhS95        U$ UR-                  [        R                  " XUUS 95        U$ )!NFr   r   r!   z empty expression not allowed in z-string)parent_scannerr  initial_posINDENTr  >   !rm   })r  r=  Tr  )r  rm   r  zmissing conversion characterz!invalid conversion character '%s'zDf-string: conversion type must come right after the exclamation markr  )r^   r?  r&   DEDENTr'   zUnexpected characters after z-string expression: rm   r  is_format_stringr  r  r  )r?  conversion_charformat_specexpression_str)r?  r!  r"  )r]   r  stripr   r   r   r  bracket_nesting_levelrN   rR   r  r  p_testlist_star_exprrQ   r   FormattedValueNodefind_conversion_funcrsplitr  r   r   r  rX   p_ft_string_middlesr  TStringInterpolationNode)rJ   r  r  r  r   r!  r"  rx   t_string_expressionself_documentingbracket_posexpr_posexpr_stringoriginal_scannerprevious_pos_r^   format_spec_contentss                     r3   p_ft_string_replacement_fieldr5    s    F+//O/k**,KAAAq0@AH-a0Kk00@H	J[!N-- 
 	
1$448FFH447?%&;o&MOD (*D443;#FFH443;::<LFFHjjO.0ajjl$BC11FFWWajjl$G/$YZa\!_q%89ajjl$jk~4*!,!3!3C!;$&/&;&; (66{7I7I7K7R7RSV7W7^7^7`a'#  ))$,::;G ddi1448#3FFH ddi1448#3445=

.~.>>RSTS]S]R^_a tts{jjl  31>Naevyz--'
 O38K"(66Gi88_#
 	 M	 	i22_#
 	 Mr6   r   c           
         / n[         R                  " 5       nU R                  5       n U R                  5         U R                  n[        XUSUS9n	U	b  M.  UR                  (       aF  UR                  [        R                  " XvR                  5       S95        [         R                  " 5       nUS:X  a>  [        XX$S9n
UR                  U
5        U R                  S:X  d  U R                  S5        M  US:X  a   U$ U R                  S:X  a  U(       a   U$ O;[        U R                  5       SU R                  < S	U R                  < S
U< S35        GM*  )Nr  r  r>  r  )r  r  END_FT_STRINGr  rm   z in z-string literal)r   r  r]   rR   rN   r  r  rX   r   r  	getstringr5  rY  expectedr   rQ   )rJ   r  r  r   r  middlesbuilderr^   rN   r  fieldss              r3   r*  r*    s%   
 G224G
**,C
	TT4GS $==NN900<M<M<OPQ$::<G92+LFNN6"443;

3?" N TTS[ N   

ajj.237 r6   c                 >   [        U R                  5       U R                  5      nSU;   a  SOSnSU;   nU R                  R                  S5      n[	        U5      S:g  n[        XUSUS9nU R                  S:w  a  U R                  U5        U R                  5         US U4$ )	Nr  r  r  
rRbBuUfFtTr  Fr  r7  )	r  r]   rQ   lstriprD  r*  rN   r9  rR   )rJ   r   r  r  quotesr  r:  s          r3   r  r    s     (

ajjAK,/;,>SCN,FZZ|,F$'K1$4!!-=PUftuGtt	

6FFH4((r6   escape_sequencec           	         [        U5      S:  a  UR                  S5        g US   nUS;   a  UR                  [        USS  S5      5        g US;   a  UR                  U5        g US;   a&  UR                  [        R
                  " U5      5        g US:X  a  g US	:X  aB  [        U5      S
:X  a  UR                  [        USS  S5      5        g UR                  SU-  SS9  g US;   a  U S;   a  SnUS:X  a  S n [        USS 5      n[        U5      nON[        U5      S;   a,  [        USS  S5      nUS:  a  UR                  SU-  5        SnOUR                  SU-  SS9  US:  a  UR                  XR5        g g UR                  U5        g ! [         a1    UR                  S[        USS 5      R                  S5      -  SS9   Nef = f)Nr!   \r   01234567   z'"\abfnrtvr  x      zInvalid hex escape '%s'Fr   NUu)r  r  r  r@  Nr  z!Unknown Unicode character name %sr  )   
   i zInvalid unicode escape '%s'r   )rD  rX   append_charvalr  r   char_from_escape_sequencer   r	   ordKeyErrorr  r?  append_uescape)r  r;  rA  rJ   r  chrvaluchars          r3   r  r  '  s   
?atAJs?12#6:;	
gq	
i~??PQ	
d	
c1$""3qr':B#?@GG-?uGM	
e.8EN*?1R+@AU !W,,b1F5GHGG1OC5GQQ;""6;  	'  N;_Qr23::3?@GL  NNs   6F	 	8GGc                    U R                  5       nU R                  5         U R                  S:X  a&  U R                  S5        [        R
                  " U/ S9$ [        U 5      nU R                  S;   a  UR                  (       a  U R                  S5        [        R                  " XS9n[        X5      nU R                  S5        [        R                  " XU[        R                  U R                  R                  S:  S9$ U R                  S:X  a  U R                  5         [!        X5      nOU/nU R                  S5        [        R
                  " XS9$ )	Nrm  rN  rA  2iterable unpacking cannot be used in comprehensionr  r  )looprX   typehas_local_scoperW   )r]   rR   rN   ru   r   ListNoder   
is_starredr   ComprehensionAppendNode
p_comp_forComprehensionNoder   	list_typerO   r  %p_namedexpr_test_or_starred_expr_list)rJ   r^   rx   rX   rW  exprss         r3   r  r  X  s    **,CFFHtts{	!!#B//+A.Dtt??GGHI223B!$	**60A0AII449; 	; 	tts{	5a>HHSMc..r6   c                 r    U R                   S;   a  [        X5      $ U R                   S:X  a  [        X5      $ U$ )NrA  r   )rN   r]  	p_comp_if)rJ   bodys     r3   p_comp_iterre  w  s7    tt!""	
!! r6   c                    U R                  5       nSnU R                  S:X  a  SnU R                  5         U R                  S5        [	        U SUS9nUR                  S [        X5      US9  [        R                  " U40 UD6$ )NFrB  Tr  allow_testlistr  )else_clauserd  r  )	r]   rN   rR   ru   p_for_boundsr0   re  r   ForStatNode)rJ   rd  r^   r  kws        r3   r]  r]    ss    
**,CHttw	 HHUO	a	ABII$[%9HIMS'B''r6   c                     U R                  5       nU R                  5         [        U 5      n[        R                  " U[        R
                  " X#[        X5      S9/S S9$ )N	conditionrd  
if_clausesri  )r]   rR   r   r   
IfStatNodeIfClauseNodere  )rJ   rd  r^   r   s       r3   rc  rc    sZ     **,CFFH Q<DC((0;A0DF G r6   c                    U R                  5       nU R                  5         U R                  S:X  a%  U R                  5         [        R                  " U/ S9$ / nSnSn U R                  S;   a  US:X  a  U R                  S:X  a  SOS	nOEU[        U R                  5      :w  a,  U R                  S
U R                  < SUS:X  a  SOS< S35        U R                  5         U R                  S:X  a  U R                  S5        [        U 5      nUR                  U5        SnO[        U 5      nUS:X  a  U R                  S:X  a  S	OSnUS	:X  a=  U R                  S5        Un[        U 5      n[        R                  " UR                  XgS9nU(       a  US   R                  U5        OUR                  U/5        SnU R                  S:X  a"  U R                  5         U R                  S:X  a  OOOGM  U R                  S;   Ga{  [        U5      S:X  Ga  [        US   [        5      (       a  [        US   5      S:X  a  US   S   nUS	:X  at  [        U[        R                  5      (       d   [        U5      5       e[         R"                  n[        R$                  " UR                  UR&                  UR(                  S9n	O/[         R*                  n[        R,                  " UR                  US9n	[/        X	5      n
U R                  S5        [        R0                  " XXS9$ [        U5      S:X  a*  [        US   [        5      (       d  U R                  S5        OU R                  S5        [        R                  " U/ S9$ U R                  S5        US:X  Ga  / n/ nU Hv  n[        U[        5      (       a  UR3                  U5        M+  U(       a3  UR                  [        R4                  " US   R                  US95        / nUR                  U5        Mx     U(       a1  UR                  [        R4                  " US   R                  US95        [        U5      S:X  a  US   R6                  (       a  US   $ [        R8                  " X[         R*                  S9$ / n/ nU Hv  n[        U[        5      (       a  UR3                  U5        M+  U(       a3  UR                  [        R                  " US   R                  US95        / nUR                  U5        Mx     U(       a1  UR                  [        R                  " US   R                  US95        [        U5      S:X  a  US   R:                  (       a  US   $ [        R<                  " XSS9$ )Nr  rQ  r   FTr   r'  r   r   r!   zunexpected zitem found in r  dictz literalzexpected expression, found '*'rm   )rP  r?  r@  rW   rA  )key_expr
value_exprr  )rW  rX   rX  rV  rN  )rp   rX  )rG  rR  )r]   rR   rN   r   rZ  rD  r   r   rX   rv   ru   rW  r^   r   rS  rX  r   	dict_typeDictComprehensionAppendNoderP  r?  set_typer\  r]  r^  rY  SetNodeis_set_literalMergedSequenceNoderX  r[  )rJ   r^   partstarget_typelast_was_simple_itemra  rP  r?  comprehension_typerX   rW  rw  	set_itemspartr`  s                  r3   r  r    sv    **,CFFHtts{	!!#r::EK 
44;a#$443;aAADD	)DD;!#3%?A BFFHtts{89!!$DLL#( !9Da#$443;aAaq	 --cgg3L#b	  &dV$'+$443;FFHtts{  G J 	ttu:?z%(D99c%(mq>P8A;Da!$	(>(>??KdK?%,%6%6"">>HHtxxDJJH &-%5%5""::488$Oa(DHHSM..sfff 5zQz%(D'A'ALM %%c2>>HHSMa	D$%%  &LL!2!29Q<3C3C)!TU "IT"  LL**9Q<+;+;)LMu:?uQx668O++C'BRBRSS 
D$%%!!$'LL!3!3JqM4E4EWa!bc!#JT"  LL++JqM,=,=zZ[u:?uQx778O''SXYYr6   c                    U R                  5       nU R                  5         [        U 5      /nU R                  S:X  a<  U R                  5         UR	                  [        U 5      5        U R                  S:X  a  M<  U R                  S5        [        U5      S:X  a  US   nO[        R                  " XS9n[        R                  " XS9$ )NrW   r  r   r   rN  r  )
r]   rR   rv   rN   rX   ru   rD  r   rT  BackquoteNode)rJ   r^   rp   r   s       r3   r  r    s     **,CFFH1I;D
$$#+	F1I $$#+ HHSM
4yA~1g!!#3""322r6   c                     Ub  U/O/ nU R                   [        ;  aS  UR                  [        U 5      5        U R                   S:w  a   U$ U R	                  5         U R                   [        ;  a  MS  U$ NrW   )rN   expr_terminatorsrX   rv   rR   rJ   rx   ra  s      r3   p_simple_expr_listr  )  sa     ,4&"E
$$&
&fQi!443;L 	
	 $$&
&
 Lr6   c                     Ub  U/O/ nU R                   [        ;  aS  UR                  [        U 5      5        U R                   S:w  a   U$ U R	                  5         U R                   [        ;  a  MS  U$ r  )rN   r  rX   r   rR   r  s      r3   p_test_or_starred_expr_listr  4  sc     ,4&"E
$$&
&+A./443;L 	
	 $$&
&
 Lr6   c                     Ub  U/O/ nU R                   [        ;  aS  UR                  [        U 5      5        U R                   S:w  a   U$ U R	                  5         U R                   [        ;  a  MS  U$ r  )rN   r  rX   r   rR   r  s      r3   r`  r`  ?  sc     ,4&"E
$$&
&5a89443;L 	
	 $$&
&
 Lr6   c                     U R                  5       n[        U 5      nU R                  S:X  a/  U R                  5         [	        X5      n[
        R                  " XS9$ U$ NrW   rN  )r]   rv   rN   rR   r  r   rT  rJ   r^   rx   ra  s       r3   r	  r	  L  sJ    
**,C!9Dtts{	"1+""355r6   c                     U R                  5       n[        U 5      nU R                  S:X  a/  U R                  5         [	        X5      n[
        R                  " XS9$ U$ r  )r]   r   rN   rR   r  r   rT  r  s       r3   r&  r&  Z  sK    
**,C!!$Dtts{	+A4""355r6   c                     U R                  5       n[        U 5      nU R                  S:X  a/  U R                  5         [	        X5      n[
        R                  " XS9$ U R                  S;   a  [        X5      $ U$ )NrW   rN  rA  )r]   r   rN   rR   r`  r   rT  rE  r  s       r3   r  r  h  sc    
**,C+A.Dtts{	5a>""355	
!	!  r6   c                     [        U [        R                  " UR                  [        R
                  " UR                  US9S95      n[        R                  " UR                  US9$ )Nr  r  )rW  )r]  r   r  r^   r   r  GeneratorExpressionNode)rJ   rx   rW  s      r3   rE  rE  v  sP     a++00tDF GD,,TXXDAAr6   )r   rm  r  rm   r=  r&   r'   c                     U R                  5       nU R                  5         [        U 5      n[        R                  " XS9$ N)rY   )r]   rR   rZ   r   
GlobalNoderJ   r^   rY   s      r3   p_global_statementr    s2     **,CFFHOEC//r6   c                     U R                  5       nU R                  5         [        U 5      n[        R                  " XS9$ r  )r]   rR   rZ   r   NonlocalNoder  s      r3   p_nonlocal_statementr    s0    
**,CFFHOEc11r6   c           	         [        U 5      nSnU R                  S:X  aU  UR                  (       d"  UR                  (       d  UR                  (       a"  SnU R                  5         [        U 5      Ul        U R                  S:X  a+  UR                  (       a  U R                  SUR                  S9  U/nU R                  S:X  aZ  U R                  5         U R                  S:X  a  [        U 5      nO[        U 5      nUR                  U5        U R                  S:X  a  MZ  [        U5      S:X  Ga}  [        R                  " S	U R                  5      (       Ga2  US
   n[!        U["        R$                  5      (       aT  ["        R&                  " UR                  UR(                  [+        UR                  UR,                  UR.                  5      S9nOT[!        U["        R0                  ["        R&                  ["        R2                  45      (       d  [        UR                  S5        U R                  S S nU R                  5         U R                  S:X  a  [        U 5      nO[5        U 5      n[6        R8                  " UR                  XTUS9$ US
   n[6        R:                  " UR                  US9$ US   n[        U5      S:X  a#  [6        R<                  " UR                  US
   XbS9$ [6        R>                  " UR                  US S US9$ )NFrm   Tr=  zqa starred assignment target must be in a list or tuple - maybe you meant to use an index assignment: var[0] = ...r<  r  r   z([-+*/%^&|]|<<|>>|\*\*|//|@)=r   rk  z&Illegal operand for inplace operation.r@  )r   r   r   r  r!   )r   r   first)lhs_listr   ) r&  rN   r   is_subscriptis_attributerR   p_annotation
annotationr[  r   r^   r  rX   rD  r   matchr   r   ro  rq  rh  r  ri  rj  r7  r  r	  r   InPlaceAssignmentNoder  SingleAssignmentNodeCascadedAssignmentNode)rJ   rx   has_annotation	expr_listr   r   r   s          r3   p_expression_or_assignmentr    sD   "DNtts{(9(9T=N=N	&q/tts{t 	
 NHH 	 	 I
$$#+	447?%a(D'*D $$#+ 9~884add;;A,C#y7788))GG)#''399chhGI  i&=&=y?R?RT]TfTf%ghhcggGHttCRyHFFHttw(+ m..swwX[\\|!!$((66
B-C
9~))#''y|cc++CGGinRUVVr6   c                 t   U R                  5       nSnU R                  5         U R                  S:X  aK  U R                  5         [        U 5      nU R                  S:X  a  U R                  5         U R                  S;   nOS n/ nU R                  S;  ay  UR	                  [        U 5      5        U R                  S:X  aO  U R                  5         U R                  S;   a  SnO,UR	                  [        U 5      5        U R                  S:X  a  MO  [
        R                  " XS9n[        R                  " UXSU(       + S9$ )NFr   rW   r&   r'   TrN  )r^  streamappend_newline)	r]   rR   rN   rv   rX   r   rT  r   PrintStatNode)rJ   r^   ends_with_commar  rp   r^  s         r3   p_print_statementr    s     **,C#(OFFHttt|	443;FFHdd&88ODtt%%F1IddckFFHtt))"&KKq	" ddck ##C3Is**, ,r6   c                 Z   U R                  5       nU R                  5         [        U 5      n[        U[        R
                  5      (       a>  SnUR                  n[        U5      S;  a   U R                  S[        U5      -  USS9  U/nOSnU/nU R                  S:X  a{  U(       a  U R                  SSS9  U R                  5         UR                  [        U 5      5        U R                  S	:X  a*  U R                  5         UR                  [        U 5      5        [        R                  " XS
9$ )NT)r!   r  z.expected tuple of length 2 or 3, got length %dFr  r   z@tuple variant of exec does not support additional 'in' argumentsr   rW   rN  )r]   rR   r   r   r   rT  rp   rD  r   rN   rX   rv   r   ExecStatNode)rJ   r^   codetuple_variantrp   s        r3   p_exec_statementr    s     **,CFFHa=D$	++,,yyt9F"GGDs4yP5  *6Dvttt|GGV  !	F1I443;FFHKKq	"c--r6   c                     U R                  5       nU R                  5         [        U 5      n[        R                  " XS9$ )NrN  )r]   rR   r  r   DelStatNode)rJ   r^   rp   s      r3   p_del_statementr    s3     **,CFFHa DS..r6   Fwith_newlinec                     U R                  5       nU R                  S5        U(       a  U R                  SSS9  [        R                  " U5      $ )NpassExpected a newlineTignore_semicolon)r]   ru   expect_newliner   PassStatNode)rJ   r  r^   s      r3   p_pass_statementr    sA    
**,CHHV	-Ec""r6   c                 n    U R                  5       nU R                  5         [        R                  " U5      $ r.   )r]   rR   r   BreakStatNoder   s     r3   p_break_statementr    s)     **,CFFHs##r6   c                 n    U R                  5       nU R                  5         [        R                  " U5      $ r.   )r]   rR   r   ContinueStatNoder   s     r3   p_continue_statementr  "  s)     **,CFFH!!#&&r6   c                     U R                  5       nU R                  5         U R                  [        ;  a  [	        U 5      nOS n[
        R                  " XS9$ )Nr>  )r]   rR   rN   r  r	  r   ReturnStatNode)rJ   r^   r?  s      r3   p_return_statementr  *  sD     **,CFFHtt((133r6   c                    U R                  5       nU R                  5         S nS nS nS nU R                  [        ;  a  [	        U 5      nU R                  S:X  aG  U R                  5         [	        U 5      nU R                  S:X  a  U R                  5         [	        U 5      nO+U R                  S:X  a  U R                  5         [	        U 5      nU(       d  U(       d  U(       a  [
        R                  " UUUUUS9$ [
        R                  " U5      $ )NrW   r  )exc_type	exc_valueexc_tbcause)r]   rR   rN   r  rv   r   RaiseStatNodeReraiseStatNode)rJ   r^   r  r  r  r  s         r3   p_raise_statementr  6  s     **,CFFHHIFEtt((!9443;FFHq	Itts{TTV^FFH1IE9""3!	 	 $$S))r6   c                    U R                  5       nU R                  nU R                  5         [        U SS9/nU R                  S:X  a;  U R                  5         UR	                  [        U SS95        U R                  S:X  a  M;  / n[
        R                  U R                  R                  ;   nU H  u  ppxUS:X  a  [        R                  " UUUUS9n	Ok[        R                  " U[        R                  " X=(       d    US9[        R                  " U[        R                  " XS9[!        U5      U(       a  SOS S S	9S
9n	UR	                  U	5        M     [        R"                  " XS9$ )NT
as_allowedrW   cimport)module_nameas_nameis_absoluter  r>  r   r  is_import_as_namerA   imported_namesr   stats)r]   rN   rR   p_dotted_namerX   r
   absolute_importrO   re   r   CImportStatNoder  r   r  
ImportNoderC  r  StatListNode)
rJ   r^   r  rw  r  r  target_namedotted_namer  stats
             r3   p_import_statementr  T  s1    **,C44DFFH1./E
$$#+	]167 $$#+ E((AII,G,GGK27.+9((''	)D --&&s1GKH(( ) > >s V&*7m*!#')*D 	T# 38$ c//r6   first_statementc                    U R                  5       nU R                  5         U R                  S;   aM  SnU R                  S;   a:  U[        U R                  5      -  nU R                  5         U R                  S;   a  M:  OS nUb;  U R                  S;   a+  U R                  5       U R                  R                  S5      pTO:Uc*  [        R                  U R                  R                  ;   a  Sn[        U SS9u  pFpVU R                  S;  a  U R                  S5        U R                  nU R                  5         US:H  nSn	U R                  S	:X  a>  U R                  5       U R                  R                  S	5      S 4/n
U R                  5         O.U R                  S
:X  a  Sn	U R                  5         [        U 5      /n
U R                  S:X  aT  U R                  5         U	(       a  U R                  S:X  a  O,U
R                  [        U 5      5        U R                  S:X  a  MT  U	(       a  U R                  S5        US:X  a  U(       d  U R                  S5        OuU(       a  U R                  S5        O\U
 HV  u  pnUS:X  a  U R                  SU5          O: [        [        U5      nU R                  R                  R!                  U5        MX     ["        R$                  " U5      $ U(       a  ["        R&                  " X%UU
S9$ / n/ nU
 HW  u  pnUR                  [(        R*                  " XS95        UR                  U[(        R,                  " X=(       d    US945        MY     ["        R.                  " U[(        R0                  " U[(        R*                  " X%S9SUUS9US9$ ! [         a    U R                  SU-  U5           M  f = f)N)r&  r~  r   importr  r  Fr  zExpected 'import' or 'cimport'r  r   r   TrW   r   
__future__z?from __future__ imports must occur at the beginning of the filezinvalid syntaxbracesznot a chancez future feature %s is not defined)r  relative_levelr  r>  r  r  )modulerw  )r]   rR   rN   rD  rO   rP   r
   r  re   r  r   p_imported_namerX   ru   getattrAttributeErroraddr   r  FromCImportStatNoder   rC  r  FromImportStatNoder  )rJ   r  r^   rA   dotted_name_posr  r3  r  
is_cimportis_parenthesizedr  name_posrT   r  	directiveimported_name_stringsrw  s                    r3   p_from_import_statementr  u  s*    **,CFFHtt|ddl"SYEFFH ddl" QTT%::'(zz|QYY5M5Mb5Q=V33qyy7R7RRE/<Q5/Q,[tt((	0144DFFH"Jtts{::<)A)A#)FMN	443;#FFH)!,-
$$#+	oa01	 $$#+
 	l"GGUVGG$%-;)8#GGNH5 ' 5I 		++//	: .< !!#&&	(( )+ 	+
 !#)7%XW!((..xDFLLy))(DIJL *8
 ''))/'<<SV$)!6	8
  	% & GG>ExPs   NN>=N>c                 V    U R                  5       n[        U 5      n[        U 5      nXU4$ r.   )r]   rU   	p_as_name)rJ   r^   rT   r  s       r3   r  r    s*    
**,C1:DlGwr6   r  c                 X   U R                  5       n[        U 5      nS nU/nU R                  S:X  a<  U R                  5         UR	                  [        U 5      5        U R                  S:X  a  M<  U(       a  [        U 5      nX#U R                  R                  SR                  U5      5      U4$ )Nr&  )	r]   rU   rN   rR   rX   r  rO   rP   r  )rJ   r  r^   r  r  rY   s         r3   r  r    s    
**,C!*KGME
$$#+	WQZ  $$#+ A,aii66sxxGQQr6   c                 z    U R                   S:X  a+  U R                  S:X  a  U R                  5         [        U 5      $ g )NrM   as)rN   rQ   rR   rU   r   s    r3   r  r    s.    ttw1::-	qzr6   c                     U R                  5       nU R                  5         [        U 5      nU R                  S:X  a  U R                  5         [        U 5      nOS n[        R
                  " XUS9$ )NrW   )ro  r?  )r]   rR   rv   rN   r   AssertStatNode)rJ   r^   condr?  s       r3   p_assert_statementr    sV     **,CFFH!9Dtts{	q	5AAr6   c                 2   U R                  5       nU R                  5         [        U 5      /nU R                  S:X  a<  U R                  5         UR	                  [        U 5      5        U R                  S:X  a  M<  [        U 5      n[        R                  " UX#S9$ )Nelifrp  )r]   rR   p_if_clauserN   rX   p_else_clauser   rr  )rJ   r^   rq  ri  s       r3   p_if_statementr    s{     **,CFFHa.!J
$$&.	+a.) $$&.  "KC< <r6   c                 x    U R                  5       n[        U 5      n[        U 5      n[        R                  " UX#S9$ )Nrn  )r]   r   p_suiter   rs  )rJ   r^   r   rd  s       r3   r  r    s8    
**,CAD1:Dc' 'r6   c                 Z    U R                   S:X  a  U R                  5         [        U 5      $ g )Nr   )rN   rR   r  r   s    r3   r  r  
  s#    ttv~	qzr6   c                     U R                  5       nU R                  5         [        U 5      n[        U 5      n[	        U 5      n[
        R                  " UX#US9$ )N)ro  rd  ri  )r]   rR   r   r  r  r   WhileStatNode)rJ   r^   r   rd  ri  s        r3   p_while_statementr    sP     **,CFFHAD1:D"Ks!# #r6   r  c                     U R                  5       nU R                  5         [        U SUS9n[        U 5      n[	        U 5      nUR                  XEUS9  [        R                  " U40 UD6$ )NTrg  )rd  ri  r  )r]   rR   rj  r  r  r0   r   rk  )rJ   r  r^   rl  rd  ri  s         r3   r  r     s_     **,CFFH	ax	@B1:D"KII48IDS'B''r6   rh  c           	         [        U 5      nU R                  S:X  a#  U R                  5         [        XUS9n[	        X4S9$ U R
                  (       Gd  U(       Gd  U R                  S:X  a  U R                  5         [        U 5      nOUS p5[        U 5      nU R                  5       n[        U 5      nU R                  5       n	[        U 5      n
[        U 5      n[        U 5      nUc  [        R                  " XxS9nOCUR                  (       d  [        UR                  S5        OXR                   :w  a  [        US5        US   U
S   :w  a  [        U	S	5        [	        UUUU
UUS
9$ U R#                  S5        0 $ )Nr   r  )targetiteratorr  r  z4Target of for-from statement must be a variable namez5Variable name in for-from range does not match targetr   z,Relation directions in for-from do not match)r  bound1	relation1	relation2bound2rz  )p_for_targetrN   rR   p_for_iteratorrw  r   r   p_for_from_relationr]   rU   p_for_from_stepr   r  r   r   r^   rT   ru   )rJ   rh  r  r  r  r  rel1	name2_posname2rel2_posrel2r  rz  s                r3   rj  rj  ,  sD   !_Fttt|	!!hG655h446>FFH]F $TF"1%JJL	
::<"1%Aq!>''	@F>>fjjJL++%iKM7d1g(>@V# $ $# 	 	
	r6   c                     U R                   [        ;   a  U R                   nU R                  5         U$ U R                  S5        g )Nz#Expected one of '<', '<=', '>' '>=')rN   inequality_relationsrR   r   r   s     r3   r  r  Y  s3    tt##TT			56r6   c                 ~    U R                   S:X  a-  U R                  S:X  a  U R                  5         [        U 5      nU$ g )NrM   by)rN   rQ   rR   r   )rJ   rz  s     r3   r  r  c  s2    ttw1::-	!}r6   )r   r   r   r   rn   c                 d   U R                  5       n[        U 5      nU R                  S:X  a  U R                  5         U/nU R                  U:w  aM  UR	                  [        U 5      5        U R                  S:w  a  O"U R                  5         U R                  U:w  a  MM  [
        R                  " X$S9$ U$ r  )r]   r   rN   rR   rX   r   rT  )rJ   rn   r^   rx   ra  s        r3   p_targetr*  q  s    
**,C!Dtts{	ddj LL*+tts{FFH	 ddj 
 ""355r6   c                     [        U S5      $ )Nr   )r*  r   s    r3   r  r    s    Atr6   c                     U R                  5       nU(       a  [        U 5      nO[        U 5      nU(       a  [        R                  O[        R
                  " X4S9$ )N)sequence)r]   r	  r   r   AsyncIteratorNodeIteratorNode)rJ   rh  r  r^   rx   s        r3   r  r    sA    
**,C!}|+3I''9O9OOQTddr6   c                 B   U R                  5       nU R                  5         [        U 5      n/ nS nU R                  S;   a  U R                  S:X  a,  UR	                  [        U 5      5        U R                  S:X  a  M,  U R                  S:X  a  U R                  5         [        U 5      n[        R                  " UX#US9nU R                  S:w  a  U$ U R                  S:X  a0  U R                  5         [        U 5      n[        R                  " UX%S9$ U R                  S5        g )N)exceptr   r1  r   )rd  except_clausesri  finally)rd  finally_clausezExpected 'except' or 'finally')
r]   rR   r  rN   rX   p_except_clauser   TryExceptStatNodeTryFinallyStatNoder   )rJ   r^   rd  r2  ri  r4  s         r3   p_try_statementr8    s     **,CFFH1:DNKtt!!ddh!!/!"45 ddh446>FFH!!*K&&s%' 449Ktty	 '': 	: 	
01r6   c                    U R                  5       nU R                  5         S nS nSnU R                  S:w  Ga  [        U 5      n[	        U[
        R                  5      (       a  UR                  nOU/nU R                  S:X  d:  U R                  S:X  aF  U R                  S:X  a6  U R                  R                  S:X  a  U R                  5         [        U 5      nOaU R                  S:X  aQ  U R                  S:X  aA  U R                  5         U R                  5       n[        U 5      n[
        R                  " XVS9nSn[        U 5      n[        R                  " UX#XtS	9$ )
NFrm   rW   rM   r  r!   r  T)patternr  rd  is_except_as)r]   rR   rN   rv   r   r   rT  rp   rQ   rO   r  rU   r  r  r   ExceptClauseNode)rJ   r^   r  r  r;  pos2rT   rd  s           r3   r5  r5    s    **,CFFHHILtts{!9h	 3 344}}H zH443;1447?qzzT/A yy771<FFHq	ITTW_t!3FFH::<D1:D!**4=IL1:D!!#0 0r6   c           	         U R                  5       nU R                  5         [        U S5      S   nU R                  S5        U R                  (       a  UnU R
                  R                  XB5      nU(       ak  U R                  R                  U5        [        U5      nUR                  5        n[        XvXR                  U R                  S9n[        X5      n	S S S 5        U	$ g [        R                   " U5      $ ! , (       d  f       W	$ = f)Nr  r!   z!Syntax error in include statement)r  parse_comments)r]   rR   r  r  compile_time_evalrO   find_include_fileincluded_filesrX   r   get_file_objectr   encodingr?  p_statement_listr   r  )
rJ   r8   r^   unicode_include_file_nameinclude_file_nameinclude_file_pathsource_descr  s2trees
             r3   p_include_statementrL    s    
**,CFFH 0C 8 ;895II778IO##$56./@AK,,.!!!!ZZ`a`p`pq'0 / K!!#&& /. Ks   ,+C88
Dc                     U R                  5         U R                  S:X  a  U R                  (       d  [        U 5      nU$ [	        U 5      nU$ )Ntemplate)rR   rQ   r   p_with_templater  )rJ   r  s     r3   p_with_statementrP    s@    FFHzzZ(8(8q! K AKr6   c                    SnSnU R                   S:X  ah  [        U 5       nU R                  5         [        X5      nU R	                  S5        U R                   S:w  a  U R                  S5        SSS5        W(       + nU(       d  [        X5      n[        U 5      n[        U5       H  u  pgnU" U4SU0UD6nM     U$ ! , (       d  f       NT= f)	au  
Copied from CPython:
| 'with' '(' a[asdl_withitem_seq*]=','.with_item+ ','? ')' ':' b=block {
    _PyAST_With(a, b, NULL, EXTRA) }
| 'with' a[asdl_withitem_seq*]=','.with_item+ ':' tc=[TYPE_COMMENT] b=block {
    _PyAST_With(a, b, NEW_TYPE_COMMENT(p, tc), EXTRA) }
Therefore the first thing to try is the bracket-enclosed
version and if that fails try the regular version
Fr<   r   r   rm   r  Nrd  )rN   r   rR   p_with_items_listru   r   r  reversed)	rJ   r  brackets_succeededrw  errorsrd  clsr^   r2   s	            r3   r  r    s     Etts{a FFFH%a2EHHSMtts{  ! "(Z!!.1:D"5/$3*T*T* * K! ! s   AB<<
C
c                     / n UR                  [        X5      5        U R                  S:w  a   U$ U R                  5         U R                  S:X  a   U$ MR  )NrW   r   )rX   p_with_itemrN   rR   )rJ   r  rw  s      r3   rR  rR  	  sS    E
[-.443;
 L	 	
443;L r6   c                 L   U R                  5       nU R                  (       d  U R                  S:X  a  U R                  S;   a  U(       a  U R	                  S5        U R                  nU R                  5         S nU R                  S:X  a,  U R                  5         [        U 5      nU R                  S5        [        R                  X#US.4$ [        U 5      nS nU R                  S:X  a+  U R                  S:X  a  U R                  5         [        U 5      n[        R                  X%XaS.4$ )	NrM   )r#   gilzwith gil/nogil cannot be asyncr   r   )statero  r  )managerr  r  )r]   r   rN   rQ   r   rR   rv   ru   r   GILStatNoder   WithStatNode)rJ   r  r^   r[  ro  r\  r  s          r3   rX  rX  	  s     **,CAJJBR4RGG45

	 	443;FFHq	IHHSM  #Y'OOO)447?qzzT1FFH#A&F!!3v(dddr6   c                    U R                  5       n/ nU R                  5         U R                  S5        UR                  U R                  5        U R                  5         U R                  S:X  aM  U R                  5         UR                  U R                  5        U R                  5         U R                  S:X  a  MM  U R                  S5        U R
                  S:X  a_  U R                  5         U R                  S5        U R                  5         [        5       nX#l	        [        XU5      nU R                  5         U$ [        US5        g )Nr%  rW   rm  rm   z-Syntax error in template function declaration)r]   rR   ru   rX   rQ   rN   r  expect_indentr)   rG   p_c_func_or_var_declarationexpect_dedentr   )rJ   r^   rG   body_ctxfunc_or_vars        r3   rO  rO  ;	  s    
**,CIFFHHHSMQZZ FFH
**
	$	 **
 HHSMtts{		HI	5&1!(C	cBCr6   c                 D   U R                   S:X  a  [        U 5      nU$ U R                   S:X  a  [        U 5      nU$ U R                   S:X  a  [        U 5      nU$ U R                   S:X  a  [	        U 5      nU$ U R                   S:X  a  [        U 5      nU$ U R                   S:X  a  [        U 5      nU$ U R                   S:X  a  [        U 5      nU$ U R                   S:X  a  [        U 5      nU$ U R                   S	:X  a  [        U 5      nU$ U R                   S
;   a  [        U 5      nU$ U R                   S:X  a  [        XS9nU$ U R                   S:X  a  [        U 5      nU$ U R                   S:X  a  [        U 5      nU$ U R                   S:X  a  [        U 5      nU$ [        U 5      nU$ )Nglobalnonlocalprintexecdelbreakcontinuer[   raiser  r  r  r  assertr  )rN   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )rJ   r  r  s      r3   p_simple_statementrp  U	  s    	ttx!!$: K9 
	#A&6 K5 
 #2 K1 
". K- 
q!* K) 
 #& K% 
	#A&" K! 
	!!$ K 
 # K 
&	&!!$ K 
&qL K 
 # K 
	!!$
 K	 
" K *!,Kr6   c                 0   [        XS9nUR                  n/ n[        U[        R                  5      (       d  UR                  U5        U R                  S:X  ap  U R                  5         U R                  S;   a  OO[        XS9n[        U[        R                  5      (       a  M[  UR                  U5        SnU R                  S:X  a  Mp  U(       d  [        R                  " U5      nO)[        U5      S:X  a  US   nO[        R                  " XES9nU R                  S;  af  [        U[        R                  5      (       aG  UR                  R                  (       a,  UR                  R                  S:X  a  U R                  S	U5        U R                  S
5        U$ )Nrn  r%   r  Fr   r   r  cdefz@The 'cdef' keyword is only allowed in Cython files (pyx/pxi/pxd)z%Syntax error in simple statement list)rp  r^   r   r   r  rX   rN   rR   rD  r  r  rx   r   rT   r   r  )rJ   r8   r  r  r^   r  s         r3   p_simple_statement_listrs  y	  s6    aCD
((CEdE..//T
$$#+	44%%!!GdE..//T $$#+ !!#&	UqQx!!#5tt%%dE..//yy  TYY^^v%=Z\_`<=Kr6   c                 N    U R                   nSU l         [        U 5      nXl         U$ )Nr   )r  r	  )rJ   oldrx   s      r3   p_compile_time_exprrv  	  s)    


CAa=DKr6   c                 Z   U R                  5       nU R                  nU R                  5         [        U 5      nU R	                  S5        [        U 5      nU R                  (       a"  UR                  U5      nUR                  X55        U R                  SSS9  [        R                  " U5      $ )Nr=  r  Tr  )r]   r  rR   rU   ru   rv  r@  compile_time_valuedeclarer  r   r  )rJ   r^   denvrT   rx   r?  s         r3   p_DEF_statementr{  	  s    
**,CDFFH1:DHHSMq!D''-T!)DAc""r6   c                    U R                  5       nU R                  nUnU R                  nS n U R                  5         [	        U 5      nU=(       a    [        UR                  U5      5      U l        [        X5      nU R                  (       a  UnSnU R                  S:w  a  OMv  U R                  S:X  a*  U R                  5         X@l        [        X5      nU(       a  UnU(       d  [        R                  " U5      nX0l        U$ )Nr   ELIFELSE)r]   r@  r  rR   rv  r  rx  r  rN   r   r  )	rJ   r8   r^   
saved_evalcurrent_evalrz  r   rx   rd  s	            r3   p_IF_statementr  	  s    
**,C$$JLDF
	"1%*RtD4K4KD4Q/RqFL446>  	ttv~	*qF##C($Mr6   c                    UR                   nU R                  5       nS nU R                  S:X  a,  UR                  S;  a  U R	                  S5        [        X5      $ U R                  S:X  aA  U R                  R                  R                  SS5      (       a  [        USSS	9  [        U 5      $ U R                  S
:X  aA  U R                  R                  R                  SS5      (       a  [        USSS	9  [        X5      $ U R                  S:X  a  UR                  S;  a  U R	                  S5        UR                  U l        [        U 5      nUR                  (       dB  U R                  S;  a2  U R                  S:X  a  U R                  S:X  a  O3U R	                  S5        O!U R                  S:X  a  U(       a
  [        U SS9$ SnU R                  S:X  a  SnU R!                  5         O$U R                  S:X  a  SnSnU R!                  5         U(       a  UR                  S;  a  U R	                  S5        UR                  U l        [#        XU" US95      nUb  [$        R&                  [$        R(                  [$        R*                  4nUR                  (       a#  U[$        R,                  [$        R.                  4-  n[1        Xx5      (       d  U R	                  S5        XWl        U$ UR4                  (       a  U R	                  SSS9  g U R                  S:X  aM  SUR                  ;   a!  UR                  S :w  a  U R	                  S!5        UR                  U l        [7        X5      $ U R                  S":X  a,  UR                  S#;  a  U R	                  S$5        [9        X5      $ U R                  S%:X  a,  UR                  S;  a  U R	                  S&5        [;        X5      $ UR                  S':X  a+  U R                  S:X  a  U R                  S(:X  a  [=        U 5      $ U R                  S:X  a  UR                  S(:w  a
  [        U SS9$ UR                  S);   a!  [?        U 5      nUb  U$ U R	                  S*5        U R                  S+:X  a  [A        U 5      $ U R                  S,:X  a  [C        U 5      $ U R                  S-:X  a  [E        U 5      $ U R                  S.:X  a  [G        U 5      $ U R                  S/:X  a  [I        U 5      $ U R                  S:X  a  U R!                  5         [K        XU5      $ U R                  S:X  a  U R                  S:X  ar  U R                  n	U R                  5       n
U R!                  5         U R                  S:X  a  [K        XU5      $ U(       a  U R	                  S5        U RM                  SX5        U R                  S:X  a   U R                  S0:X  a  [O        X5      nUb  U$ [Q        XUS19$ )2Nctypedefr  
module_pxdz#ctypedef statement not allowed hereDEFzwarn.deprecated.DEFFzThe 'DEF' statement  will be removed in a future Cython version. Consider using global variables, constants, and in-place literals instead. See https://github.com/cython/cython/issues/4310r   r   IFzwarn.deprecated.IFTzThe 'IF' statement is deprecated and will be removed in a future Cython version. Consider using runtime conditions or C macros instead. See https://github.com/cython/cython/issues/4310r   )r  classc_classrd  propertyr  c_class_pxdr+   zdecorator not allowed here)r  rr  cpdefr  rB  rM   rB  r  r  )r  rr  r  )r  r  rd  r  r  zcdef statement not allowed here)rE   %'api' not allowed with this statementr   r  r  r  r  r  )r  rd  r  r+   z!class definition not allowed hereincludez"include statement not allowed herer  r  )r  r  z%Executable statement not allowed herer   whiler  tryr  r  rn  ))rC   r]   rN   rA   r   p_ctypedef_statementrO   compiler_directivesgetr   r{  r  p_decoratorsrH   rQ   r  rR   p_cdef_statementr   CFuncDefNodeCVarDefNodeCClassDefNodeCStructOrUnionDefNodeCEnumDefNoder   r   r$   r  p_class_statementrL  p_property_declp_ignorable_statementr  r  r  r8  rP  r!  put_backp_match_statementrs  )rJ   r8   r  rC   r^   r   rE   r  tup
ident_name	ident_posmatch_statements               r3   p_statementr  	  s    ]]I
**,CJttz9944GG9: $A++	
 99((,,-BEJJCGNOQ q!!	
99((,,-A4HHCGNOQ a%%	
99xxGG01))!!_
..144?i3ittw1::#8QR	
I55Kttv~			
		99ZZGG56))(DE!%%u'8'8%:M:MNC..33U5G5GHHd((QR(O77GG;5GITTU] "m)C89iiAG"111TTW_yy HH;<$Q33TTYyy 88<=&q..YY)#AJJ*<T"1%%TTV^		Z 7#AD99yy77,Q/#K?@ttt|%a(((++&q))&q))'**(<<447?qzzW'<!"J !

IFFHttu}0DD# YZJJw
>447?qzzW'<&7&?O&2...qWWr6   c                 p   U R                  5       n/ nU R                  S;  aP  [        XUS9n[        U[        R
                  5      (       a  M;  UR                  U5        SnU R                  S;  a  MP  U(       d  [        R
                  " U5      $ [        U5      S:X  a  US   $ [        R                  " X4S9$ )Nr  r'   rn  Fr   r   r  )	r]   rN   r  r   r   r  rX   rD  r  )rJ   r8   r  r^   r  r  s         r3   rE  rE  N
  s     **,CE
$$'
'1_EdE..//T $$'
' !!#&&	UqQx!!#55r6   c                     [        XSS9S   $ )NFwith_doc_onlyr   )p_suite_with_docstringrJ   r8   s     r3   r  r  a
  s    !!>qAAr6   r  c                    U R                  S5        S nU R                  S:X  aN  U R                  5         U R                  5         U(       a  [	        U 5      n[        X5      nU R                  5         OXUR                  (       a  U R                  SSS9  UR                  S;   a  [        X5      nO[        U 5      nU R                  SSS	9  U(       d  [        U5      u  p4X44$ )
Nrm   r&   r  Fr   )r  r  rd  r+   zSyntax error in declarationsTr  )ru   rN   rR   r`  p_doc_stringrE  rb  r$   r   rA   rs  r  r  _extract_docstring)rJ   r8   r  docrd  s        r3   r  r  f
  s    HHSM
Ctty		q/C'	77GG;5GI99@@*12D#A&D;dS&t,	9r6   c                 H   / n/ nSnU R                   U;  Ga	  U R                   S:X  d  U R                   S:X  a  U R                  SSS9  SnU R                   S:X  a  U R                  5       S   S:X  a  U R                  nU R	                  5         U R	                  5         [        U 5      (       a  [        U 5      nO4[        XS	9n	[        U S
S9n
[        R                  " U	R                  XS9nS
n[        R                  " UR                  US9nUR                  X45        S
nO[        U 5      (       a  [        U 5      nO4[        XS	9n	[        U S
S9n
[        R                  " U	R                  XS9nS
nUR                  U5        US-  n[        U5      S:  a  U R                  SUR                  S9  U R                   S:w  a>  U R                   U;  a*  U(       a#  U R                  SSR!                  U5      -  5         X44$ U R	                  5         U R                   U;  a  GM	  X44$ )z
Parses positional and keyword arguments. end_sy_set
should contain any s.sy that terminate the argument list.
Argument expansion (* and **) are not allowed.

Returns: (positional_args, keyword_args)
r   r   r'  z$Argument expansion not allowed here.Fr   rM   r=  rG   Tr   r   r>  r   r;  r<  rW   zUnmatched %sz or )rN   r   r(  rQ   rR   r   rv   r   r   r   CComplexBaseTypeNoder^   r   rC  rX   rD  r  )rJ   
end_sy_setrG   rF  rG  pos_idxparsed_typeidentr   r   r   keyword_nodewas_keywords                r3   p_positional_and_keyword_argsr  ~
  s    OLG
$$j
 443;!$$$,GG:%GH447?qvvx{c1JJEFFHFFHq!!Qi)!C	+AT:
00 )D"$99#''OL 34K q!!Qi)!C	+AT:
00 )D"""3'qLG< 1$?GG  % 443;tt:%GGNV[[-DDE(( 	
S $$j
 T ((r6   nonemptyc                 H    U R                   S:X  a	  [        XS9$ [        XUS9$ )Nr   r  r  rG   )rN   p_c_complex_base_typep_c_simple_base_type)rJ   r  rG   s      r3   r   r   
  s%    tts{$Q>>#AINNr6   c                     U R                   S:X  a2  U R                  [        ;   a  U R                  nU R                  5         U$ [	        S5      $ )NrM   r  )rN   rQ   calling_convention_wordsrR   r   )rJ   r   s     r3   p_calling_conventionr  
  s;    ttw1::)AA	R  r6   )	__stdcall__cdecl
__fastcallc                 l   U R                  5       nU R                  5         [        XS9n[        U SS9n[        R
                  " X#US9nU R                  S:X  a  U/nU R                  S:X  aj  U R                  5         U R                  S:X  a  OI[        XS9n[        U SS9nUR                  [        R
                  " X#US95        U R                  S:X  a  Mj  [        R                  " X&S9nU R                  S5        U R                  S:X  a)  [        U 5      (       a  [        X5      nU$ [        XU5      nU$ )	Nr  Tr   r   rW   r   )
componentsr%  )r]   rR   r   r   r   r  rN   rX   r   ru   is_memoryviewslice_accessp_memoryviewslice_accessp_buffer_or_template)rJ   rG   r^   r   r   	type_noder  s          r3   r  r  
  s    **,CFFHa5I.J**Z9Itts{[
ddckFFHtts{%a=I'6Je88ZA B ddck ,,SJ	HHSMtts{$Q''0>I  -Q9EIr6   c                    SnSnSnSn/ nU R                  5       nS=pU R                  S:X  ao  U R                  S:X  a  U	(       a  [        US5        Sn	O'U R                  S:X  a  U
(       a  [        US	5        Sn
OO"U R	                  5         U R                  S:X  a  Mo  U	(       d  U
(       af  [        XUS
9n[        U[        R                  5      (       a'  [        R                  " UUR                  XS9Ul
        U$ [        R                  " UXU
S9$ U R                  S:w  a  [        USU R                  -  5        [        U 5      (       a  SnU R                  S:X  aF  U R                  [        ;   a2  [        U R                     u  pEU R                  nU R	                  5         OP[        U 5      u  pEU R                  S:X  a1  U R                  [        ;   a  U R                  nU R	                  5         OSnU R                  S:X  a"  U R                  S:X  a  SnU R	                  5         GO[        U 5      (       al  U R                  nU R	                  5         U R                  S:X  a>  UR!                  U5        U R	                  5         [#        U 5      nU R                  S:X  a  M>  GO'U R                  nU R                  5       nU R	                  5         U(       a  U R                  S:w  a  U R                  S:X  a  U R                  5       nU R	                  5         U R                  S:X  dD  U R                  S:X  d4  U R                  S:X  d$  U R                  S:X  a(  U R                  [$        ;   a  U R'                  SSU5        OLU R'                  SSU5        U R'                  SX5        S nO$U R                  S;  a  U R'                  SX5        S n[        R(                  " UXX4XeUS9nU R                  S:X  a(  [+        U 5      (       a  [-        X5      nO[/        XU5      nU R                  S:X  a0  U R	                  5         [#        U 5      n[        R0                  " XUS9nU$ )NFr   r   rM   constzDuplicate 'const'TvolatilezDuplicate 'volatile'r  )r   is_constis_volatilez"Expected an identifier, found '%s'r  r  r&  r   r   r'  r   )r   r'  r%  r   )rT   module_pathis_basic_c_typesignedr  r  rG   r%  )r   rT   )r]   rN   rQ   r   rR   r   r   r   r   r   r   looking_at_base_typespecial_basic_c_typesp_sign_and_longnessbasic_c_type_nameslooking_at_dotted_namerX   rU   r  r  CSimpleBaseTypeNoder  r  r  CNestedBaseTypeNode)rJ   r  rG   is_basicr  r  r  r  r^   r  r  r   rT   r  old_posr  s                   r3   r  r  
  sp   HFHGK
**,C #"H
$$'/:: s$78HZZ:%E#'=>K	 $$'/ ;!!)L	i!>!>??','E'Ec#22X(`I$--cM 	M 	ttwc7!$$>?A447?qzz-BB4QZZ@F::DFFH215Fttw1::1C#Czz447?qzzY6GFFH		"	"zz	ddckt$FFH1:D ddck
 zz::<	tts{**,DDCK1444<1443;DDGO

>V0VJJsC1JJsC1JJw7D22

7D3))#"	I 	tts{$Q''0>I,Q9EItts{	qz--cQUV	r6   c                    U R                  5       nU R                  5         [        U SU5      u  pEU R                  S5        U R                  S:X  a  [        XU5      n[        R                  " UU VVs/ s H$  u  pg[        R                  " UR                  XgS9PM&     snnS9n[        R                  " UUUUS9n	U	$ s  snnf )N)rm  rm  r%  rO  ru  )rF  rG  r   )r]   rR   r  ru   rN   r  r   rZ  rW  r^   r   r   )
rJ   r   rG   r^   rF  rG  rP  r?  r\  r   s
             r3   r  r  O  s     **,CFFH 	&a; "O HHSMtts{-aK%%c +
*
 ""swwCE*
L
 $$S)#')F M
s   3+B=c                    U R                   U R                  U R                  5       4/nU R                  5         SnU R                  S:X  a  SnOhU R                   S:X  aX  UR	                  U R                   U R                  U R                  5       45        U R                  5         U R                   S:X  a  SnUS S S2    H  nU R
                  " U6   M     U$ )NFrm   Tr  r@  )rN   rQ   r]   rR   rX   r  )rJ   savedretvalsvs       r3   r  r  j  s     ddAJJ

-.EFFHFzzS	
addAJJ

56	443;FDbDk	

B  Mr6   c                    U R                  5       nU R                  5         [        U 5      u  p4U H%  n[        U5      S:  d  M  U R	                  S5        M'     U R                  S5        [        X#5      n[        R                  " UUUS9nU$ )Nr!   zDAn axis specification in memoryview declaration does not have a ':'.rm  )r   axes)	r]   rR   rn  rD  r   ru   rp  r   r   )rJ   r   r^   rr  r3  r  rt  r   s           r3   r  r    s}     **,CFFH$Q'MJ	y>AGGZ[   HHSMs/G**3+F Mr6   c                 T    U R                   S:H  =(       a    U R                  [        ;  $ rL   )rN   rQ   r  r   s    r3   looking_at_namer    s    447?Iqzz1IIIr6   c                    U R                   [        ;   a  gU R                  S:X  Ga"  SnU R                   nU R                  5       n/ nU R	                  5         U R                  S:X  a^  U R	                  5         UR                  U R                   U R                  5       45        U R                  S5        U R                  S:X  a  M^  U R                  U R                   U R                  5       4nU R                  S:X  a  SnOU R                  S:X  d  U R                  S:X  a/  U R	                  5         U R                  S;   nU R                  " U6   OU R                  S:X  a/  U R	                  5         U R                  S:H  nU R                  " U6   OUU R                  S	:X  aE  U R	                  5         U R                  S
:H  =(       d    [        U 5      (       + nU R                  " U6   UR                  5         U H,  nU R                  " S/UQ76   U R                  SSUS   5        M.     U R                  SX#5        U(       + =(       a    US   $ g)NFrM   r&  Tr   r'  )r   rm  r   r%  rm  r   r   )
rQ   base_type_start_wordsrN   r]   rR   rX   ru   r  r   reverse)rJ   is_typerT   r  dotted_pathr  ps          r3   r   r     s   zz**	
zz::<	ddckFFH

AJJL9:HHW ddck
 ajj!**,.447?GTTS[ADDDLFFHddj(GJJTTS[FFHddckGJJTTS[FFHddck;);%;GJJAJJw##JJsC1&  	


7D+{'uQx'r6   c                 T    U R                   S:H  =(       a    U R                  [        ;   $ rL   )rN   rQ   r  r   s    r3   r  r    s!     447?Bqzz-BBBr6   c                     U R                   S:X  aO  U R                  nU R                  5       nU R                  5         U R                   S:H  nU R	                  SX5        U$ g)NrM   r&  F)rN   rQ   r]   rR   r  )rJ   rT   r  r   s       r3   r  r    sM    ttwzz::<	ddck	

7D+r6   )voidcharr  r  doublebint)r   r   )r!   r   )r   r   )
Py_UNICODEPy_UCS4	Py_hash_t
Py_ssize_tssize_tsize_t	ptrdiff_tPy_tss_t)shortlongr  r  )structunionenumpackedc                 `   SnSnU R                   S:X  a  U R                  [        ;   a  U R                  S:X  a  SnO;U R                  S:X  a  SnO(U R                  S:X  a  SnOU R                  S	:X  a  US-  nU R                  5         U R                   S:X  a  U R                  [        ;   a  M  X4$ )
Nr   r   rM   r  r  r!   r  r@  r  )rN   rQ   sign_and_longness_wordsrR   )rJ   r  r  s      r3   r  r    s    FH
$$'/ajj,CC::#FZZ8#FZZ7"HZZ6!MH	 $$'/ajj,CC r6   c                 d    [        U S5      nUb  [        U5      nU R                  Ul        U$ S nU$ )Nr  )r  r   r  rD  )rJ   literalcnames      r3   p_opt_cnamer    s>    "1c*Gg&** L Lr6   r   r  cmethod_flag
assignablecalling_convention_allowedc           
         U R                  5       nU R                  S:X  a  U R                  5         U R                  S:X  d  [        U 5      (       a<  [        R
                  " XR                  R                  S5      S S9n	[        XXU5      n
O-[        XX#UUSS9n
U R                  S5        O[        XX#UXV5      n
U(       dH  U
R                  (       a7  U R                  S:w  a'  [        U R                  5       SU
R                  -  5        U R                  S;   a]  U R                  5       nU R                  S	:X  a  [        X
5      n
OU R                  5         [        XXU5      n
S
nU R                  S;   a  M]  U
$ )Nr   r   r  )rT   r  T)r   r  r  r  r  z&%s on something that is not a functionr%  r   r%  r   )r]   rN   rR   r  r   CNameDeclaratorNoderO   rP   p_c_func_declaratorr   ru   p_c_simple_declaratorcalling_conventionr   p_c_array_declarator)rJ   r8   r   r  r  r  r  r  r^   rh  r   s              r3   r   r     s5    **,Ctts{	443;/!,,,,Syy7O7OPR7S[_`D(LIF#AE3?/7AEGF HHSM&qu|'1=%&*C*CPSajjlD''( 	)
$$*
jjl443;)!4FFFH(lKF $$*
 Mr6   c                     U R                  5       nU R                  5         U R                  S:w  a  [        U 5      nOS nU R	                  S5        [
        R                  " X!US9$ )Nrm  )rh  	dimension)r]   rR   rN   r	  ru   r   CArrayDeclaratorNode)rJ   rh  r^   dims       r3   r  r  4  sM    
**,CFFHtts{mHHSM%%cCHHr6   c                    [        XUSS9n[        U 5      nU R                  S5        [        U 5      n[	        XR
                  S:H  5      u  pn
U(       a   U
(       a  [        U R                  5       SSS9  U=(       d    [        U 5      n[        U 5      n[        R                  " UX5UXU=(       d    UR                  =(       d    UXS9	$ )	Nr   )r  nonempty_declaratorsr   externzThe keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.r!   r   )rh  rp   has_varargsexception_valueexception_checkr#   with_gilhas_explicit_exc_clause)p_c_arg_listp_optional_ellipsisru   p_nogilp_exception_value_clauserB   r   r]   
p_with_gilr   CFuncDeclaratorNoder#   )rJ   r^   r8   rh  r  rp   ellipsisr#   exc_val	exc_check
exc_clauser  s               r3   r  r  @  s     |/02D"1%HHHSMAJE%=aS[A[%\"G
JJL 	
 WQZE!}H$$S!..h8i ir6   )r   r   r   rb   r   z++z--r   r   r   r   r   r   rW   r   r   r   r   r   r   []()r  r=  r  c           
         U R                  5       n[        U 5      nU R                  S;   a  U R                  S:H  n	U R                  5         U R                  5       n
U R                  S:H  =(       a    U R                  S:H  nU(       a  U R                  5         [        XX#UXVS9nU(       a  [        R                  " XS9nU	(       a  [        R                  " X|S9n[        R                  " X|S9nGOU R                  S:X  d+  U R                  S:X  ao  U R                  R                  (       aT  U R                  S:X  a  [        R                  O[        R                  nU R                  5         [        XX#UXVS9nU" X|S9nGOMS nU R                  S:X  a  U R                  nU(       a  [        U R                  5       S	5        U R                  5         [        U 5      nUS
:w  a2  U R                  S:X  a"  U(       a  U R                  5         [        U 5      nO%U(       a  [        U R                  5       S5        SnS nUc&  UR                   b  U(       a  UR                   S-   U-   nUS
:X  GaN  UR"                  S:X  Ga=  U(       Ga5  U R                  nU Vs/ s H  nUS;   d  M  SPM     sn(       a  U R                  5         US:X  a  U R%                  S5        SnOuUS:X  a  U R%                  S5        SnO[US;   a&  U R                  U:X  a  US-  nU R                  5         O/U R                  S:X  a  UU R                  -  nU R                  5         U[&        ;  a  U R                  SU-  SS9  UU-  nOGUS:X  aA  U R                  nU[&        ;  a  U R                  SU-  SS9  US-   U-   nU R                  5         [        R(                  " UUUUS9nXl        U$ s  snf )Nrv  r'  r  rM   )r   r  r  r  r  )rh  r   r   zDeclarator should be emptyr   r=  zEmpty declaratorr  ::r  z+-*/<=>!%&|([^~,r   r   r   r&  r%  rm  r%  )r   r   r   r   r!   z,Overloading operator '%s' not yet supported.Fr    )rT   r  default)r]   r  rN   rR   rQ   r   r   CConstDeclaratorNodeCPtrDeclaratorNoderO   cpp CppRvalueReferenceDeclaratorNodeCReferenceDeclaratorNoder   r  rv   rF   rB   ru   supported_overloaded_operatorsr
  r  )rJ   r8   r   r  r  r  r  r^   r  	is_ptrptr	const_posr  rh  r   
node_classr   rT   r  r_   r  s                       r3   r  r  c  s     **,C-a0tt{DDDL		JJL	::(<QTTW_FFHaE+7)3H --iCD++C;D))#9	
!))--?@ttt|U;;QVQoQo
	aE+7)3H C+447?::Dajjl$@AFFHNEz!addckjQiajjl$67DE=S]]68MMD(4/E:#..H"<B92a&8!8299HHSMB3YHHSMB//ADDBJ!GBFFHTTS[!$$JBFFH;;GGJRO"'  )
wZZ;;GGJRO"'  )czB**3#7 2M; :s   
OOc                 f    U R                   S:X  a!  U R                  S:X  a  U R                  5         gg)NrM   r#   TFrN   rQ   rR   r   s    r3   r  r    s'    ttw1::0	r6   c                 h    U R                   S:X  a"  U R                  5         U R                  S5        gg)Nr  rZ  TF)rN   rR   expect_keywordr   s    r3   r  r    s*    ttv~		r6   	is_externc                 Z   SnSnU(       a  SOSnU R                   S:X  a&  U R                  S:X  a  SnU R                  5         SnGOcU R                   S:X  GaR  SnU R                  5         U R                   S:X  a  SnU R                  5         GOU R                   S:X  a  SnU R                  5       S	   nU R                  5         U R                   S:X  ac  U R                  nUS
:X  a5  U R                  5       S	   US-   :X  a  [	        U R                  5       S5        O[        X5      nU R                  5         OtU R                   S:X  a3  [        R                  " U R                  5       SS9nU R                  5         O0U R                   S:X  a  SnU R                  5         OSn[        U 5      nX4U4$ )a2  
Parse exception value clause.

Maps clauses to exc_check / exc_value / exc_clause as follows:
 ______________________________________________________________________
|                             |             |             |            |
| Clause                      | exc_check   | exc_value   | exc_clause |
| ___________________________ | ___________ | ___________ | __________ |
|                             |             |             |            |
| <nothing> (default func.)   | True        | None        | False      |
| <nothing> (cdef extern)     | False       | None        | False      |
| noexcept                    | False       | None        | True       |
| except <val>                | False       | <val>       | True       |
| except? <val>               | True        | <val>       | True       |
| except *                    | True        | None        | True       |
| except +                    | '+'         | None        | True       |
| except +*                   | '+'         | '*'         | True       |
| except +<PyErr>             | '+'         | <PyErr>     | True       |
| ___________________________ | ___________ | ___________ | __________ |

Note that the only reason we need `exc_clause` is to raise a
warning when `'except'` or `'noexcept'` is placed after the
`'nogil'` keyword.
FNTrM   noexceptr1  r   r   r!   r#   r   zf'except +nogil' defines an exception handling function. Use 'except + nogil' for the 'nogil' modifier.r>  r   )	rN   rQ   rR   r]   r   r  r   r  rv   )rJ   r8  r$  r"  r#  plus_char_posrT   s          r3   r  r    sX   4 $JG"Ittw1::3
			
	
	443;IFFHTTS[IJJLOMFFHttwzz7?zz|A-!*;;ajjl GH %QoGFFH#,,QZZ\Etts{ 	!	QiGz))r6   )r   r'  r~  r   rm   rb   	in_pyfuncr  kw_onlyro   c                     / nUnU R                   [        ;  aV  UR                  [        XX(XEUS95        U R                   S:w  a   U$ U R	                  5         SnU R                   [        ;  a  MV  U$ )N)r  r=  ro   rW   r   )rN   c_arg_list_terminatorsrX   p_c_arg_declrR   )	rJ   r8   r<  r  r  r=  ro   rp   is_self_args	            r3   r  r    su     DK
$$,
,L+!# 	$ 443; K 	
 $$,
, Kr6   c                 <    U R                   S:X  a  [        U 5        gg)Nr~  TF)rN   r  r   s    r3   r  r  &  s    ttu}r6   c                    U R                  5       nS=pS n
S nU R                  (       a  [        R                  " US / SSSSUS S9	nO	[	        XS9n[        XUS9nU R                  S;   a  U R                  (       d~  U R                  nU R                  5         U R                  S:X  a!  U R                  S:X  a  U R                  5         OU R                  S5        U(       d  [        US	U-  5        US
:H  n	US:H  nU(       a+  U R                  S:X  a  U R                  5         [        U 5      nU R                  S:X  a  U R                  5         SUR                  ;   a`  U R                  S;   a'  [        R                  " U5      n
U R                  5         O4SUR                  ;   a  [        U 5      n
O[        US5        O[        U 5      n
[        R                   " UUUUU	U
UUS9$ )NFr   )rT   r  r  r  r  r  rA  rG   r  )r   r   rM   r  zExpected 'None'z*'%s None' only allowed in Python functionsr   r   rm   r=  r  )r   r   r"   z;default values cannot be specified in pxd files, use ? or *)r   r   not_noneor_noner*  r  r=  )r]   r   r   r  r   r   rN   rR   rQ   r   r  rA   r   r  	modifiersrv   CArgDeclNode)rJ   r8   r<  r  r  r=  ro   r^   rE  rF  r*  r  r   r   r  s                  r3   r@  r@  /  s    **,CHGJ--cr#a&D	:	 "!7	8<Jtt}Q%5%5tt	447?qzzV3FFHGG%&#CdJK$,5=QTTS[	!!_
tts{	CIIttz!#,,S1S]]* )cXYQiGc r6   c                 `    U R                  5       n[        U 5      n[        R                  " XS9$ )a  An annotation just has the "test" syntax, but also stores the string it came from

Note that the string is *allowed* to be changed/processed (although isn't here)
so may not exactly match the string generated by Python, and if it doesn't
then it is not a bug.
r  )r]   rv   r   AnnotationNode)rJ   r^   rx   s      r3   r  r  f  s)     **,C!9D##C33r6   c                 f    U R                   S:X  a!  U R                  S:X  a  U R                  5         gg)NrM   r$   TFr5  r   s    r3   p_apirL  s  s'    ttw1::.	r6   c                    [        XR                  5      Ul        UR                  =(       d    [        U 5      Ul        UR                  (       a)  UR                  S;  a  [	        USUR                  -  5        UR                  S:X  a  U R
                  S:X  a  [        XU5      $ U R
                  S:X  a  U R                  5         [        XU5      $ [        U 5      (       a/  SUl	        UR                  (       a  [	        US5        [        X5      $ U R
                  S:X  a(  UR                  (       a  [	        US5        [        X5      $ U R
                  S	:X  aE  UR                  S
;  a  [	        US5        UR                  (       a  [	        US5        [        XU5      $ U R
                  S:X  a  U R                  S:X  a  [        XU5      $ U R
                  S:X  ai  U R                  [         ;   aU  UR                  S
;  a  [	        US5        UR                  (       a  U R                  S:w  a  [	        US5        [#        XU5      $ U R
                  S:X  a  U R                  S:X  a  [%        XU5      $ ['        XU5      $ )N)r,   publiczCannot combine 'api' with '%s'r  r  r  Tz$cdef blocks cannot be declared cpdefrm   r  r  z*Extension type definition not allowed herez(Extension types cannot be declared cpdefrM   r/  z/C struct/union/enum definition not allowed herer  z'C struct/union cannot be declared cpdeffused)p_visibilityrB   r$   rL  r   rN   p_cdef_extern_blockrR   r  r#   rE   p_cdef_blockrA   p_c_class_definitionrQ   p_cpp_class_definitionstruct_enum_unionp_struct_enump_fused_definitionra  rJ   r^   r8   s      r3   r  r  |  s   !!^^4CNgg!qCG
ww>>!66#7#..HI(""13//	
		"13//		??#=>A##	
??#=>A##	
9944#CD??#AB#AC00	
QZZ:5%ac22	
QZZ+<<9944#HI??zzV#cDEQS))	
QZZ72!!#..*1377r6   c                      [        X" SS95      $ )NT)rC   )r  r  s     r3   rR  rR    s    1cd+,,r6   c                    UR                   (       a  [        US5        S nU R                  S5        U R                  S:X  a  U R	                  5         O[        U S5      S   nU" SSS9nU R                  S	:X  a$  U R	                  5         [        U S5      S   Ul        [        U 5      (       a  SUl	        [        XS5      u  pE[        R                  " UUUUUR                  S
9$ )Nz+cdef extern blocks cannot be declared cpdefr  r   r  r!   Tr  )rC   rB   rF   )include_fileverbatim_includerd  rF   )rE   r   ru   rN   rR   r  rQ   rF   r  r#   r  r   CDefExternNode)rJ   r^   r8   r[  r\  rd  s         r3   rQ  rQ    s    
c@ALHHVtts{	'3/2
$X
6Czz[ 	(C03qzz	 4ADA#+MM	# #r6   c                    U R                  5         SnU R                  R                  (       aB  U R                  S:X  d   U R                  S:X  a"  U R                  S:X  a  SnU R                  5         U R                  S:X  aJ  U R                  nU R                  5         [        U 5      nUc  UR                  b  UR                  S-   U-   nOS =pEU(       a  U R                  S5        U(       a=  U R                  S:X  a-  U R                  5         [        U 5      nU R                  S	5        O[        R                  " US
/ SSSSS9nU R                  S5        / nS nU R                  S:w  a  [        XU5        OiU R                  5         U R                  5         [        U 5      nU R                  S;  a  [        XU5        U R                  S;  a  M  U R                  5         U(       d  UR                   S:w  a  [        US5        [        R"                  " XUX7UUR$                  UR                   UR&                  UR(                  UR*                  S:H  US9$ )NFr  rM   r  Tr(  zUnnamed scoped enum not allowedr   r   r  r   r   )rT   r  r  r  r  r  rm   r&   r  r  zDEmpty enum definition not allowed outside a 'cdef extern from' blockr  )rT   r  scopedrw  underlying_typerD   rB   create_wrapperr$   in_pxdr  )rR   rO   r-  rN   rQ   r  rF   r   r   ru   r   r  p_c_enum_liner`  r  rb  rB   r  rD   rE   r$   rA   )	rJ   r^   r8   r_  rT   r  r`  rw  r  s	            r3   p_c_enum_definitionrd    s    FFHFyy}}!$$'/addgo!**PXBX	ttwzz	A=S]]6MMD(4/EGG56!$$#+	'*	33"
 HHSME
Cttyae$		1odd++!%( dd++ 	
S^^x/cYZe'%%#..GGCII53@ @r6   rw  c                    U R                   S:w  a\  [        XU5        U R                   S:X  a?  U R                  5         U R                   S;   a  O/[        XU5        U R                   S:X  a  M?  OU R                  5         U R                  S5        g )Nr  rW   r  zSyntax error in enum item list)rN   p_c_enum_itemrR   r  )rJ   r8   rw  s      r3   rc  rc    sm    ttv~ae$ddckFFHtt))!%(	 ddck 	
56r6   c           	      8   U R                  5       n[        U 5      n[        U 5      nUc  UR                  b  UR                  S-   U-   nS nU R                  S:X  a  U R                  5         [        U 5      nUR                  [        R                  " UXEUS95        g )Nr(  r=  )rT   r  r?  )
r]   rU   r  rF   rN   rR   rv   rX   r   CEnumDefItemNode)rJ   r8   rw  r^   rT   r  r?  s          r3   rf  rf    s    
**,C1:DNE}2$t+Etts{	q		LL''E3 4r6   c                 x   SnU R                   S:X  aC  SnU R                  5         U R                  S:w  d  U R                   S:w  a  U R                  S5        U R                   nU R                  5         [	        U 5      n[        U 5      nUc  UR                  b  UR                  S-   U-   nS nU R                  S:X  Ga(  U R                  5         / nU R                  S:X  a!  U R                  5         U R                  S	SS
9  OU R                  S5        U R                  5         [        UR                  S9nU R                  S:w  am  U R                  S:w  a*  UR                  [        X R                  5       U5      5        O!U R                  5         U R                  S	5        U R                  S:w  a  Mm  U R                  5         U(       d  UR                  S:w  a  [!        US5        OU R                  S5        ["        R$                  " UXVXGUR&                  UR                  UR(                  UR*                  S:H  US9
$ )NFr  TrM   r  r(  rm   r  r  r  r&   )rB   r  r  zOEmpty struct or union definition not allowed outside a 'cdef extern from' blockz*Syntax error in struct or union definitionr  )	rT   r  r  
attributesrD   rB   r$   rb  r  )rQ   rR   rN   r9  rU   r  rF   r  ru   r`  r)   rB   rX   ra  r]   rb  r   r   r  rD   r$   rA   )	rJ   r^   r8   r  r  rT   r  rj  rc  s	            r3   p_c_struct_or_union_definitionrk  #  s   FzzX	447?ajjH4JJx ::DFFH1:DNE}2$t+Jtts{	
446>FFH1DIHHYOOcnn5H$$("446>%%3Azz|XNP FFH$$%9: $$(" OOcnn8#hi	EF&&s4''cnngg		\ 9FL Lr6   c                     UR                   S;  a  [        US5        U R                  5         [        U 5      nU R	                  S5        U R                  5         U R                  5         / nU R                  S:w  a]  U R                  S:w  a  UR                  [        U 5      5        OU R                  5         U R                  5         U R                  S:w  a  M]  U R                  5         U(       d  [        US5        [        R                  " XUS9$ )z)
c(type)def fused my_fused_type:
    ...
r  z&Fused type definition not allowed hererm   r  r  zNeed at least one type)rT   types)rA   r   rR   rU   ru   r  r`  rN   rX   r   rb  r   FusedTypeNode)rJ   r^   r8   rT   rm  s        r3   rW  rW  Q  s     yy00c;<FFH1:DHHSMOOE
$$(
446>LLq)*FFH	 $$(
 OOc+,sU;;r6   c                 R    U R                   S:X  a  [        XU5      $ [        XU5      $ )Nr  )rQ   rd  rk  rX  s      r3   rV  rV  u  s(    zzV"13//-ac::r6   c                     UnU R                   S:X  aP  U R                  S;   a@  U R                  nUS:w  a  X!:w  a  U R                  SU< SU< S3SS9  U R                  5         U$ )	NrM   )r  rN  readonlyr,   z Conflicting visibility options 'z' and 'r  Fr   )rN   rQ   r   rR   )rJ   prev_visibilityrB   s      r3   rP  rP  }  sa     Jttw1::)IIZZ
i'J,IGG"J07<  >	r6   c                     U R                   S:X  a;  U R                  S;   a+  U R                  nU R                  5         U/[        U 5      -   $ / $ )NrM   )r"   )rN   rQ   rR   p_c_modifiers)rJ   modifiers     r3   rt  rt    sA    ttw1::4::	zM!,,,Ir6   c                    UR                   S;   n[        U 5      n[        U SUR                  S9n[	        X" US9USSS9nUR
                  Ul        U R                  S:X  a3  U R                  S:X  a#  UR                   S:X  a  U R                  5         SnOS	nU R                  S
:X  a+  U R                  SS	S9  U R                  5         [        U 5        U R                  S:X  a  UR                   S;  a"  UR                  (       d  U R                  S5        [        U [        SS95      u  p[        R                  " UUR                  UUU	UUUR                   UR
                  US9
n
U
$ U(       a  Xvl        U/nU R                  S:X  aP  U R                  5         U R                  S:X  a  O/[	        XUSSS9nUR%                  U5        U R                  S:X  a  MP  U R&                  S-   nU R)                  SSS9  UR                   S;   a  U R&                  U:X  a  [+        U 5      nOS n[        R,                  " UUR                  UUUR                   S;   UUR                   UUR
                  S9	n
U
$ )N)r  r  Tr  )rG  )r  r  r  rM   r  	cpp_classF->z~Return type annotation is not allowed in cdef/cpdef signatures. Please define it before the function name, as in C signatures.r   rm   )r  r  r  r  rw  z&C function definition not allowed hererd  r   )	rB   r   r   rd  r  rG  r$   rE   is_const_methodrW   r&   r   z&Syntax error in C variable declarationr  )r  r  )rB   r   declaratorsrb  r  r$   rG  rE   )rA   rt  r   rG   r   rE   rN   rQ   rR   r   rv   r  r)   r   r  rB   r$   ry  rX   
start_liner  r  r  )rJ   r^   r8   r  rG  r   r   ry  r  suiter   rz  doc_lines                r3   ra  ra    s7    #		-G GLa Ia$CMMJI3#;L+/4AJ __Jttw1::0SYY+5M	ttt|	M 	 	 	
q	tts{99[[dgdqdqGG<=+As/DE
##C!#!''//-	/L M3 )8&!lddckFFHtty '|37$HJz* ddck <<!#	ATXY9922q||x7Oq/CC""3!%YY"??''!//+ Mr6   c           	      .   U R                  5       nU R                  5         [        XR                  5      n[	        U 5      nU" SUS9nU(       a  SUl        U R                  S:X  a  [        XU5      $ U R                  S:X  a   U R                  [        ;   a  [        XU5      $ U R                  S:X  a  U R                  S:X  a  [        XU5      $ [        U SS9n[        XSSS9nU R                  SSS	9  [        R                   " X%UX4UR"                  S
:H  S9$ )NT)rD   rB   r  rM   rO  rD  )r  r  z"Syntax error in ctypedef statementr  r  )r   r   rB   r$   rb  )r]   rR   rP  rB   rL  r$   rN   rS  rQ   rU  rV  rW  r   r   r  r   CTypeDefNoderA   )rJ   r8   r^   rB   r$   r   r   s          r3   r  r    s     **,CFFHa0J
(C
4j
9C
ttw#AC00	
QZZ+<<QS))	
QZZ72!!#..!!d3	#AD4H
	=PTU!!##YY,.	0 	0r6   c                    / nU R                   S:X  aq  U R                  5       nU R                  5         [        U 5      nUR	                  [
        R                  " X#S95        U R                  S5        U R                   S:X  a  Mq  U$ )Nr   )	decoratorz"Expected a newline after decorator)rN   r]   rR   r   rX   r   DecoratorNoder  )rJ   r   r^   r  s       r3   r  r    sm    J
$$#+jjl	$Q'	%--cGH	=> $$#+ r6   c                 v    U R                   S:X  a(  U[        ;   a  U R                  SU-  SS9  [        U 5      $ U$ )zqStep over incorrectly placed cdef modifiers (@see _CDEF_MODIFIERS) to provide a good error message for them.
    rM   zTCannot use cdef modifier '%s' in Python function signature. Use a decorator instead.Fr   )rN   r   r   rU   )rJ   rT   s     r3   _reject_cdef_modifier_in_pyr    s=     	ttw4?2	fimmuz{qzKr6   r   r  c                    U(       a  US   R                   OU R                  5       nU(       a  U R                  5         U R                  5         [	        U [        U 5      5      nU R                  SSU R                  S:X  a  U R                  OU R                  -  5        [        U SS9u  pVnU R                  S5        [	        X R                  5        S nU R                  S:X  a0  U R                  5         [        U 5      n[	        X R                  5        [        U [        SS	95      u  pU(       a  U R                  5         [        R                  " X4XVUXXUS
9
$ )Nr   r   z~Expected '(', found '%s'. Did you use cdef syntax in a Python declaration? Use decorators and Python type annotations instead.rM   r   )rn   rx  rd  r   )	rT   rp   rq   rr   r  rd  r   r  return_type_annotation)r^   r]   enter_asyncrR   r  rU   ru   rN   rQ   rt   r  r  r)   
exit_asyncr   DefNode)rJ   r   r  r^   rT   rp   rq   rr   r  r  rd  s              r3   r  r  	  s     **Q-

qzz|C	FFH&q'!*5DHH	>$$'/AJJqtt	56
 $1s#C DLHHSM::.!ttt|	!-a#Azz2&q#J*?@IC	==T<z57 7r6   c           
      D   [        U SSUS9nS nS nU R                  S:X  a  [        U5      S:X  a  U R                  S5        U R	                  5         U H
  nSUl        M     U R                  S:X  a,  U R	                  5         UR                  [        U SSUS95        O!U R                  U:w  a  U R                  S5        U R                  S	:X  a  U R	                  5         U R                  S
:X  a	  [        XS9nU R                  S:X  a-  U R	                  5         UR                  [        U SSSUS95        O!U R                  U:w  a  U R                  S5        U R                  S:X  a  U R	                  5         [        XS9nU R                  S:X  a  U R	                  5         X4U4$ )NT)r<  r  ro   rb   r   zTGot zero positional-only arguments despite presence of positional-only specifier '/'r   rW   z-Syntax error in Python function argument listr   rM   )ro   )r<  r  r=  ro   r'  )r  rN   rD  r   rR   pos_onlyrY  p_py_arg_decl)rJ   rn   ro   rp   rq   rr   r   s          r3   rt   rt   *  s_   T$-/DHLtts{t9>GG 4 5	CCL 443;FFHKKT)U VTTZGGCDtts{	447?$Q<H443;FFHKKdtYbd eTTZGGCDttt|	$Q<tts{	L))r6   c                     U R                  5       n[        U 5      nS nU(       a+  U R                  S:X  a  U R                  5         [	        U 5      n[
        R                  " X#US9$ )Nrm   )rT   r  )r]   rU   rN   rR   r  r   PyArgDeclNode)rJ   ro   r^   rT   r  s        r3   r  r  P  sM    
**,C1:DJQTTS[	!!_
sjIIr6   c                    U R                  5       nU R                  5         [        [        U 5      5      nU R                  Ul        S nS nU R                  S:X  a  [        U SS9u  pg[        X&U5      u  pEUc  [        R                  " U/ S9n[        U [        SS95      u  p[        R                  " X#UUXUU R                  R                   S:  S9$ )	Nr   Fr9  rN  r  r   r  )rT   basesrG  r  rd  r   force_py3_semantics)r]   rR   r   rU   r  rD  rN   rL  rb  r   rT  r  r)   r   PyClassDefNoderO   r  )
rJ   r   r^   
class_namer^  r\  rF  rG  r  rd  s
             r3   r  r  [  s     **,CFFHwqz*J++JILtts{(9!%(P%":3Q]"^	''"5	&q#G*<=IC!zII449; ;r6   c                    U R                  5         / n[        U 5      nU R                  S:X  a>  U R                  5         UR                  U5        [        U 5      nU R                  S:X  a  M>  U(       a  UR                  S:w  a  [        US5        U(       a<  U R                  S:X  a,  U R                  S:X  a  U R                  5         [        U 5      nOUnS nS nS nS n	U R                  S:X  a2  [        U SS9u  pU(       a  U R                  S	5        [        XU5      u  pUc  [        R                  " U/ S
9nU R                  S:X  aI  UR                  S;  a+  UR                  (       d  [        U R                  5       S5        [        U 5      u  pgn	U R                  S:X  a+  UR                  S:X  a  SnOSn[        U [!        US95      u  pOU R#                  S5        S nS nUR                  S:X  a'  U(       d  [        US5        U(       a  [        US5        OUR                  S:X  a'  U(       d  [        US5        U(       d  [        US5        OaUR                  S:X  a8  UR                  (       a&  U(       d  [        US5        U(       d  [        US5        O[        USUR                  -  5        [$        R&                  " UUR                  UR(                  UR                  SR+                  U5      UUUUUU	UR                  S:H  UUS9$ )Nr&  r  z6Qualified class name only allowed for 'extern' C classrM   r  r   Fr  z$C classes cannot take keyword bases.rN  r%  )rN  r  zBName options only allowed for 'public', 'api', or 'extern' C classrm   r  r  r  r   z"Syntax error in C class definitionz)Module name required for 'extern' C classz?Type object name specification not allowed for 'extern' C classrN  z>Object struct name specification required for 'public' C classz<Type object name specification required for 'public' C classr,   z;Object struct name specification required for 'api' C classz9Type object name specification required for 'api' C classzInvalid class visibility '%s')rB   rD   r$   r  r  r  r  objstruct_nametypeobj_name
check_sizerb  r  rd  )rR   rU   rN   rX   rB   r   rQ   rL  rb  r   rT  r$   r]   p_c_class_optionsrA   r  r)   r  r   r  rD   r  )rJ   r^   r8   r  r  r  r  r  r  r  rF  rG  r3  
body_levelr  rd  s                   r3   rS  rS  s  s    FFHKJ
$$#+	:&QZ
 $$#+ s~~1cKLqttw1::+=	!*NLEJtts{(9!%(P%GG:;+C,O}##Cb1tts{>>!55cgg!**, de3DQ3G0jtts{99$&J"J*1c
.CD	T	=>
~~!#BC#XY	8	##WX#UV	9	$77!cXYcVWc2S^^CDs^^''gghh{+'#l* r6   c                     S nS nS nU R                  S5         U R                  S:w  a  OU R                  S:X  a  U R                  5         [	        U 5      nOqU R                  S:X  a  U R                  5         [	        U 5      nOEU R                  S:X  a5  U R                  5         [	        U 5      nUS;  a  U R                  SU-  5        U R                  S:w  a  OU R                  5         M  U R                  S	S
5        XU4$ )Nr%  rM   objectrX  r  )ignorewarnr   z/Expected one of ignore, warn or error, found %rrW   rm  z)Expected 'object', 'type' or 'check_size')ru   rN   rQ   rR   rU   r   )rJ   r  r  r  s       r3   r  r    s    NLJHHSM
447?::!FFH$QZNZZ6!FFH"1:LZZ<'FFH J!<<IJVW443;	! " HHS=>33r6   c                     U R                  5       nU R                  5         [        U 5      n[        U [	        SS9SS9u  p4[
        R                  " XX4S9$ )Nr  r   Tr  )rT   r  rd  )r]   rR   rU   r  r)   r   PropertyNode)rJ   r^   rT   r  rd  s        r3   r  r    sJ    
**,CFFH1:D&	3Z 6ICc#AAr6   c                     U R                   S:X  a?  U R                  5       n[        U 5      nU R                  SSS9  [        R
                  " XS9$ g)zG
Parses any kind of ignorable statement that is allowed in .pxd files.
r  zSyntax error in stringTr  r  N)rN   r]   r*  r  r   r  )rJ   r^   string_nodes      r3   r  r    sL    
 	tt~jjlQi	1DI!!#88r6   c                     U R                   S:X  aD  U R                  5       n[        U 5      u  p#nU R                  SSS9  US;   a  U$ [	        US5        U$ g )Nr  zSyntax error in doc stringTr  r  2Python 3 requires docstrings to be unicode strings)rN   r]   r  r  r   )rJ   r^   r  bytes_resultunicode_results        r3   r  r    s^    tt~jjl-A!-D*N	5M9!!IJr6   c                    SnU c  O[        U [        R                  5      (       aG  U R                  R                  (       a+  U R                  n[        R
                  " U R                  / S9n O[        U [        R
                  5      (       ao  U R                  (       a^  U R                  n[        US   [        R                  5      (       a0  US   R                  R                  (       a  US   R                  nUS	 Uc  SnX04$ [        U[        R                  5      (       a%  [        U R                  S5        UR                  nX04$ UR                  nX04$ )z
Extract a docstring from a statement or from the first statement
in a list.  Remove the statement if found.  Return a tuple
(plain-docstring or None, node).
Nr  r   r  )r   r   r  rx   is_string_literalr  r^   r  r   r  r   r?  )r  doc_noder  r  s       r3   r  r     s    H|	D%,,	-	-99&&yyH%%dhhb9D	D%,,	-	-$**

eAh 2 233Qx}}.. 8==!H 9 
Hi11	2	2D	Fnn 9 nn9r6   c                     [        X" US9SS9nU R                  S:w  a@  U R                  S[        U R                  5      < S[        U R                  5      < S35        U$ )Nr   Trn  r'   Syntax error in statement [rW   rm  )rE  rN   r   r  rQ   )rJ   rA   r8   rd  s       r3   p_coder     sL    As514HDttu}	JQZZ(* 	+Kr6   z$^#\s*cython\s*:\s*((\w|[.])+\s*=.*)$c           
      p   0 nU R                   S:X  Ga\  U R                  5       n[        U R                  5      nU(       Ga  UR	                  S5      R                  5       n [        R                  " USS9nU H  nXq;  a  M
  [        R                  R                  U5      [        L a  X==   XW   -  ss'   X   XW'   MF  XW   X   :X  a  [        USU< 35        Mb  U R                  S	U< S
X   < SXW   < 3US9  M     SU;   a  U R                   R#                  US   5        SU;   a  US   U R                   l        UR'                  U5        U R                  5         U R                   S:X  a  GM\  U$ ! [         a9  nU R                  UR                  S   SS9  U R                  5          S nAGM  S nAff = f)Ncommentliner   T)ignore_unknownr   Fr   zDuplicate directive found: z3Conflicting settings found for top-level directive : r  r<  r  legacy_implicit_noexcept)rN   r]   !_match_compiler_directive_commentrQ   groupr$  r   parse_directive_list
ValueErrorr   rp   rR   directive_typesr  rS  r   rO   set_language_levelr  r0   )rJ   r   r^   mdirectives_stringnew_directiveserT   s           r3   p_compiler_directive_commentsr  -  s   F
$$-
jjl-ajj9 !
 0 0 2!(!=!=>O`d!e '%,,006$>LN$88L+1<N(#)V\9CD!JKGGflN,@BGJ  L '  >1		,,^<L-MN)^;5CD^5_		2 MM.)	C $$-
D M7  q	/s   !E2 2
F5<-F00F5c                    U R                  5       n[        U 5      nSU l        U R                  R                  c  U R                  R                  S5        U(       a  SOSn[        U 5      n[        X" US9SS9nU R                  S:w  a@  U R                  S	[        U R                  5      < S
[        U R                  5      < S35        [        XGUUUS9$ )NF3r  r  r   Trn  r'   r  rW   rm  )r  rd  full_module_namedirective_comments)r]   r  r?  rO   r  r  r  rE  rN   r   r  rQ   r   )	rJ   r  r  r8   r^   r  rA   r  rd  s	            r3   p_moduler  U  s    
**,C6q9Ayy'			$$S)LXE
q/CAs/FDttu}	JQZZ(* 	+cT)9+=? ?r6   c                     [        U 5      nU R                  S:X  a'  U R                  S5        U R                  S5        SnX4$ SnX4$ )Nr=  r   FT)rU   rN   ru   )rJ   rT   requireds      r3   p_template_definitionr  j  sJ    1:Dtts{		 > >r6   c                    U R                  5         [        U 5      n[        U 5      nUc  UR                  b  UR                  S-   U-   nU R                  S:X  a  [        US5        U R                  S:X  a  U R                  5         [        U 5      /nU R                  S:X  a<  U R                  5         UR                  [        U 5      5        U R                  S:X  a  M<  U R                  S5        U VVs/ s H  u  pgUPM	     nnnOS nS nU R                  S:X  av  U R                  5         [        XS9/n	U R                  S:X  a:  U R                  5         U	R                  [        XS95        U R                  S:X  a  M:  U R                  S	5        O/ n	U R                  S:X  a  [        U R                  5       S
5        [        U 5      n
U R                  S:X  a  U R                  5         U R                  S5        U R                  5         [        U 5        / n[        UR                  SU
=(       d    UR                   S9nXl        U R                  S:w  a^  U R                  S:w  a  UR                  [%        X5      5        O!U R                  5         U R'                  S5        U R                  S:w  a  M^  U R)                  5         OS nU R'                  S5        [*        R,                  " UUUU	UR                  UR.                  S:H  UUS9$ s  snnf )Nr(  r&  z*Qualified class name not allowed C++ classr%  rW   rm  r   r  r   z&Name options not allowed for C++ classrm   r&   rw  )rB   rA   r#   r  r  r  z$Syntax error in C++ class definitionr  )rT   r  base_classesrB   rb  rj  rG   )rR   rU   r  rF   rN   r   r  rX   ru   r   r]   r  r`  r  r)   rB   r#   rG   p_cpp_class_attributer  rb  r   CppClassNoderA   )rJ   r^   r8   r  r  rG   rT   r  template_namesr  r#   rj  rc  s                r3   rT  rT  v  sr    FFHJNE}2$z1tts{c?@tts{	*1-.	ddckFFH2156 ddck 	
5>?Y>4$Y?	tts{	%aDEddckFFHa LM ddck 	
tts{ajjlDEAJEtts{			 	Q
CNN+UM_VYV_V_`+ddhttv~!!"7"DE  !56 ddh 	

	?@c#^^l* K @s   3Lc                    U R                  5       nS nU R                  S:X  a  [        U 5      nU R                  S:X  a  [	        XU5      $ U R                  S:X  a  [        X5      $ U R                  S:X  a<  U R                  [        ;   a(  U R                  S:w  a  [	        XU5      $ [        XU5      $ [        XU5      nUb  [        R                  [        R                  [        R                  4nUR                  (       a#  U[        R                  [        R                  4-  n[!        XE5      (       d  U R#                  S5        X4l        U$ )Nr   r/  r  rM   r  r  )r]   rN   r  rQ   rT  r  rU  rV  ra  r   r  r  r  rH   r  r  r   r   r   )rJ   r8   r^   r   r  r  s         r3   r  r    s	   
**,CJtts{!!_
zzZ%ac22	
z	!#A++	
QZZ+<<::)!#66 --*137!$$e&7&79L9LLC..u22E4F4FFFd((QR(Or6   c                 2   U R                   S:X  a  U R                  S:X  d   eU R                  5       n[        U 5       nU R	                  5         [        U 5      nS nU R                   S:X  a  U/nU R                   S:X  aM  U R	                  5         U R                   S:X  a  O,UR                  [        U 5      5        U R                   S:X  a  MM  Ub  [        R                  " X%S9nU R                  S5        S S S 5        W(       a  g U R                  5         U R                  5         / nU R                   S:w  a,  UR                  [        X5      5        U R                   S:w  a  M,  U R                  5         [        R                   " UWUS9$ ! , (       d  f       N= f)NrM   r  rW   rm   rN  r  )subjectcases)rN   rQ   r]   r   rR   r   rX   rv   r   rT  ru   r  r`  p_case_blockrb  r   	MatchNode)rJ   r8   r^   rU  r  subjectsr  s          r3   r  r    s<   447?qzzW444
**,C	!		"1%443;yHddckFFHtts{OOF1I&	 ddck
 ))#=G	 
  OOE
$$(
\!)* $$(
OO##CFF7 
	s   BF(F
Fc                 T   U R                   S:X  a  U R                  S:X  d  U R                  S5        U R                  5         U R	                  5       n[        U 5      nS nU R                   S:X  a  U R                  5         [        U 5      n[        X5      n[        R                  " X#XTS9$ )NrM   caser   )r:  rd  guard)
rN   rQ   r9  rR   r]   
p_patternsrv   r  r   MatchCaseNode)rJ   r8   r^   r:  r  rd  s         r3   r  r    s    DDGO

f 4	

6FFH
**,CmGEttt|	q	1?D''4UUr6   c                    / nSnU R                  5       n [        U 5       n[        U 5      nS S S 5        W(       a7  U(       a  OwUS   nU R                  UR                  S   UR                  S   S9  UR                  W5        U R                  S:X  a$  SnU R                  5         U R                  S;   a  OOOM  U(       a  [        R                  " X1S9$ US   $ ! , (       d  f       N= f)	NFTr   r   r<  rW   )rm   r   patterns)
r]   r   p_maybe_star_patternr   rp   rX   rN   rR   r   MatchSequencePatternNode)rJ   r  seqr^   rU  r:  r  s          r3   r  r    s     H
C
**,C
a F*1-G !1Iq	qvvay1 443;CFFHtt{" # # & 66sNN{+ ! s   C
C)c                    U R                   S:X  ad  U R                  5         S nU R                  S:w  a  [        U 5      nOU R                  5         [        R
                  " U R                  5       USS9nU$ [        U 5      nU$ )Nr   r3  T)r  is_star)rN   rR   rQ   p_pattern_capture_targetr   MatchAndAssignPatternNoder]   	p_pattern)rJ   r  r:  s      r3   r  r  #  sn     	tts{	::-a0FFFH ::JJL
 A,r6   c                 |   / nU R                  5       n UR                  [        U 5      5        U R                  S:w  a  OU R	                  5         M=  [        U5      S:  a  [        R                  " UUS9nOUS   nU R                  S:X  a  U R                  S:X  a  U R	                  5         [        U 5       nUR                  R                  [        U 5      5        S S S 5        W(       aU  U R                  S:X  aE  U R	                  5         [        R                  " US   R                  S   US   R                  S   S9$ U(       a?  [        U 5         [        U 5      n[        R                  " UR                   S	S9sS S S 5        $ U$ ! , (       d  f       N= f! , (       d  f       O= fU R#                  US   5        N9)
Nr   r   )alternativesr   rM   r  r3  whatzInvalid pattern target)r]   rX   p_closed_patternrN   rR   rD  r   OrPatternNoderQ   r   
as_targetsr  r   	ErrorNoderp   rv   r^   r   )rJ   r  r^   r:  rU  rx   s         r3   r  r  7  sW    H
**,C
(+,443;		  8}q ..!

 1+ttw1::-	a F%%&>q&AB !addckFFH??6!9>>!#46!9>>!;LMM!!$aytxx6NO %$ N !  %$ GGF1Is   6%F*F
F
F&c                 ~   U R                   S:X  aF  U R                  S:X  a6  U R                  5       nU R                  5         [        R
                  " U5      $ U R                   S:X  a  [        U 5      $ U R                   S:X  a  [        U 5      $ U R                   S:X  a=  [        U 5       n[        U 5      nU(       d  UsSSS5        $  SSS5        [        U 5      $ [        U 5       n[        U 5      nU(       d  UsSSS5        $  SSS5        [        U 5       n[        U 5      nU(       d  UsSSS5        $  SSS5        [        U 5       n[        U 5      nU(       d  UsSSS5        $  SSS5        [        U 5      $ ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nm= f! , (       d  f       NL= f)a  
The PEG parser specifies it as
| literal_pattern
| capture_pattern
| wildcard_pattern
| value_pattern
| group_pattern
| sequence_pattern
| mapping_pattern
| class_pattern

For the sake avoiding too much backtracking, we know:
* starts with "{" is a sequence_pattern
* starts with "[" is a mapping_pattern
* starts with "(" is a group_pattern or sequence_pattern
* wildcard pattern is just identifier=='_'
The rest are then tried in order with backtracking
rM   r3  r  r%  r   N)rN   rQ   r]   rR   r   r  p_mapping_patternp_sequence_patternr   p_group_patternp_literal_patternp_capture_patternp_value_patternp_class_pattern)rJ   r^   rU  r   s       r3   r  r  [  s`   ( 	ttw1::,jjl	77<<	
 ##	
!!$$	
a F$Q'F !  ! "!$$	!	"1% 
	 
 
!	"1% 
	 
 
!	 # 
	 
 1% !  
	 
	 
	s0   (E;%FF	F.;
F	
F
F+.
F<c           
         SnSnU R                   S:X  a.  U R                   nU R                  5       nU R                  5         SnU R                   nU R                  5       nS nUS:X  a  [        U 5      nO6US:X  a0  U R                  nU R                  5         [
        R                  " XWS9nUb  US:X  a  [
        R                  " WUS9nUb  U R                   S	;   a  U R                   nU R                  5         U R                   S
:w  a  U R                  S5        OgU R                  5       nU R                  S S nU R                  5         [
        R                  " UUU[
        R                  " U R                  5       US9S9nUcW  US
:X  aQ  U R                  S S nU R                  5         [
        R                  " XRU-   S9nUS:X  a  [
        R                  " WUS9nUb  [        R                  " XVS9$ U(       a  U R                  S5        US:X  a  [        U 5      n[        R                  " XVS9$ US:X  a'  [        U 5      n	U	(       a  [        R                  " XYSS9$ U R                  S5        g )NFr  r   Tr  r  r>  r   r   r  zExpected imaginary numberr@  )r   r   zExpected a numberr  rM   )r?  is_is_checkzFailed to match literal)rN   r]   rR   r  rQ   r   r  UnaryMinusNoder   rc   r  r   MatchValuePatternNoder  r  )
rJ   next_must_be_a_numbersignsign_posrN   r^   resr?  add_posr   s
             r3   r  r    s    "Dtts{tt::<	 $	
B
**,C
C	U{A	w

	!!#3
43;&&x=
144:-tt	446>GG/0jjlGJJsOEFFH&&"++AJJLF	C {rV|

3B	  J73;**8SAC
33CCC	#$	^A33CCC	w (*!77W[\\GG%&r6   c                 Z    [         R                  " U R                  5       [        U 5      S9$ )N)r  )r   r  r]   r  r   s    r3   r  r    s&    33	

'* r6   c                 8   U R                   S:w  a  U R                  S5        U R                  5       n[        X R                  5      nU R                  5         U R                   S:w  a  U R                  S5        U R                   S:X  aR  U R                  5       nU R                  5         [        U 5      n[        R                  " X2US9nU R                   S:X  a  MR  U R                   S;   a  U R                  SU R                   -  5        [        R                  " XS9$ )NrM   Expected identifierr&  r3  )r   r=  zUnexpected symbol '%s'r>  )rN   r   r]   r  rQ   rR   rU   r   r7  r   r  )rJ   r^   r  attr_posattrs        r3   r  r    s    ttw	%&
**,C
JJ
CFFHtts{	
$$#+::<	qz%%h4H	 $$#+
 	ttz	(144/0//??r6   c                 `    U R                  S5        [        U 5      nU R                  S5        U$ )Nr   r   )ru   r  )rJ   r:  s     r3   r  r    s&    HHSMlGHHSMNr6   c                    U R                   nU R                  5       nUS;   a  US:X  a  SOSnU R                  5         / nU R                   U:w  at  UR                  [	        U 5      5        U R                   S:X  a  U R                  5         O'US:X  a   [        U5      S:X  a  U R                  S5        OU R                   U:w  a  Mt  U R                  U5        [        R                  " X$S	9$ U R                  S
5        g )Nr	  r%  rm  r   rW   r   r   z3tuple-like pattern of length 1 must finish with ','r  zExpected '[' or '(')
rN   r]   rR   rX   r  rD  r   ru   r   r  )rJ   openerr^   closerr  s        r3   r  r    s    TTF
**,C#3	ddfnOO034tts{S=S]a%7GGQR ddfn 	
66sNN	%&r6   c           	         U R                  5       nU R                  S5        U R                  S:X  a&  U R                  5         [        R
                  " U5      $ S n/ nS nU R                  S:w  a  U(       a  U(       d  U R                  5       nU R                  S:X  a  U R                  5         [        U 5      nOx[        U 5       n[        U 5      nUR                  nS S S 5        W(       a  [        U 5      nUR                  nU R                  S5        [        U 5      nUR                  WU45        U R                  S:w  a  O"U R                  5         U R                  S:w  a  M  U R                  S5        Ub  [        R                  " USS9$ [        R
                  " UU V	s/ s H  oS   PM	     sn	U V	s/ s H  oS	   PM	     sn	US
9$ ! , (       d  f       N= fs  sn	f s  sn	f )Nr  r  r'  rm   rW   z7** pattern must be the final part of a mapping pattern.r  r   r   )keysvalue_patternsdouble_star_capture_target)r]   ru   rN   rR   r   MatchMappingPatternNoder  r   r  r?  r  r  rX   r   r  )
rJ   r^   r  items_patternsstar_star_arg_posrU  r:  rP  r?  kvs
             r3   r  r  
  s   
**,CHHSMtts{	55c::!%N
$$#+%.? !

444<FFH)A!)D& "!$+A.mm % )!,mmHHSMaLE!!3,/443;	' $$#+( HHSM$L
 	
 11 ./"1/*89.BQ%.9%?	 ' %$* 09s   G	!G
5G	
Gc                 j   U R                  5       n[        X R                  5      nU R                  5         U R                  S:X  aR  U R                  5       nU R                  5         [        U 5      n[        R                  " X2US9nU R                  S:X  a  MR  UnU R                  S5        U R                  S:X  a$  U R                  5         [        R                  " XS9$ / n/ nS nU R                  S:w  a  [        U 5       n	UR                  [        U 5      5        S S S 5        W	(       d  U(       a  U R                  5       nO.[        U 5       n	UR                  [        U 5      5        S S S 5        U R                  S:w  a  O"U R                  5         U R                  S:w  a  M  U R                  S5        Ub  [        R                   " USS9$ [        R                  " XUU V
s/ s H  oS	   PM	     sn
U V
s/ s H  oS
   PM	     sn
S9$ ! , (       d  f       N= f! , (       d  f       N= fs  sn
f s  sn
f )Nr&  r3  r   r   )class_rW   z+Positional patterns follow keyword patternsr  r   r   )r  positional_patternskeyword_pattern_nameskeyword_pattern_patterns)r]   r  rQ   rR   rN   rU   r   r7  ru   r   ClassPatternNoder   rX   r  p_keyword_patternr   r  )rJ   r^   r  r  r  r  r  keyword_patternskeyword_patterns_errorrU  r
  s              r3   r  r  9  s    **,C
JJ
CFFH
$$#+::<	qz%%h4H	 $$#+
 FHHSMtts{	..sBB !
$$#+a F&&y|4 !)*&!!$ ''(9!(<= %443;	 $$#+ HHSM)">
 	
 **11A B1A2A1A B4D#E4DbqE4D#E	 % !  %$ !C#Es$    H	H"H+6H0	
H
H(c                     U R                   S:w  a  U R                  S5        [        X R                  5      nU R	                  5         U R                  S5        [        U 5      nX4$ )NrM   r  r=  )rN   r   r  rQ   rR   ru   r  )rJ   r   r?  s      r3   r  r  k  sM    ttw	%&
JJ
CFFHHHSMaLE:r6   c                 0   U R                   S:w  a  U R                  S5        U R                  S:X  a  U R                  S5        [        X R                  5      nU R	                  5         U R                   S;   a  U R                  SU R                   -  5        U$ )NrM   r  r3  z$Pattern capture target cannot be '_')r&  r   r=  zIllegal next symbol '%s')rN   r   rQ   r  rR   )rJ   r  s     r3   r  r  v  ss     	ttw	%&zzS	67Azz"FFFHtt	*QTT12Mr6   rA   c                    SU-  nU R                  U5        U(       a  U R                  U S35        U(       d  U R                  S5        g [        U5      [        L aN  U R                  SUS    SUS    S35        US	S   H  n[        XUS-   5        M     U R                  U S
35        g [	        U[
        R                  5      (       a{   UR                  nU R                  U SUR                   S35        [        UR                  R                  5       5       H%  u  pxUS:w  d  M  US:w  d  M  [        XUS-   U5        M'     g [        U5      [        L a>  U R                  S5        U H  n[        XUS-   5        M     U R                  U S35        g U R                  U U S35        g ! [         a    UR                  R                  n Nf = f)Nz  r  zNone
r   r   z @ r   r  r!   z)
tagr^   z[
z]
)writerX  rV  print_parse_treer   r   Noder  r  r  r=   r^   r  r/   rw  rS  )	r  r  rA   rP  indra  r  rT   r?  s	            r3   r  r    s   e|CGGCL
	3%r
		du		!DG9CQy+,HDQeAg. 	3%s	D%**	%	%	*((C 	
3%s488*B'(!$--"5"5"78KDu} 57D9 9 
dt		DQeAg. 	3%s	3%vR !  	*..))C	*s   F, , GGr<   )zExpected an identifier)T)NN)r  r.   )F)r   )TF)FN)FFFT)NF)r   T)r  ry  r  rV  rw  ior   r   unicodedatar   r	   	functoolsr   r   Scanningr   r   r   r  r   r   r   r   r   r   r   r   Errorsr   r   r    r   r
   r   r   	frozensetr  r)   cfuncrU   rZ   r`   rk   ry   rv   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  rL  rb  r0  r6  rn  rS  rv  ry  r  rp  ccallr  r*  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r5  r*  r  r  r  re  r]  rc  r  r  r  r  r`  r	  r&  r  rE  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rj  r  r  r&  r*  r  r  r8  r5  rL  rP  r  rR  rX  rO  rp  rs  rv  r{  r  r  rE  r  r  r  r   r  r  r  r  r  r  r  r  r   r  r  r  r  r   r  rU  r  r  r   r  r  r0  r  r  r  r  r?  r  r  r@  r  rL  r  rR  rQ  rd  rc  rf  rk  rW  rV  rP  rt  ra  r  r  r  r  rt   r  r  rS  r  r  r  r  r  r  compiler  r  r  r  r  rT  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r<   r6   r3   <module>r%     s     BV Bv BV B#B4:B$*B?EB B '-B 5;B EKB 	B +1	B 9?	B JP	B Y_	B
 B
 39B
 W]B B '-B  %B =AB  	 4 % J J      8 " 0 0    -y) = 3   0 |   L       L     ( 
l 
 
      *  $51 4 4 4
< $ 5, 5 5 ,   
L 
 
 l   # # # 
l 
 
 l     ( 	9 6 ,  /, / / /, / / 1, 1 1 7L 7 7 /L / / Al A A   
   ( ,  >   ( K` 5, 5y 5 5, ? ? ? F F F, |  ( F, F F 
' 
' 
', /1 /1V[[ /1E /1 /1d '#E '# '#T 
Zl 
Z 
Z" |  * 	" 	" 	" 	" < D    |   |      1 1 )5l )5 )5X 1\ 1 1. l  , 2\ 2 2@ .l . . " "J 0,L 0,U 0, 0,f 7L 7 7 7 fkk    :      K. K.U K. K.\ #< #C # # j\ j(.jGM{{j06jCGj jX &< & &&?E{{&*0++& )/& <@& &P )< )E ) ) &(C &(L &( &(` /L / /< <   (, ( (   , jZ< jZ jZ\ 3 3 3  , d   < t   \    ,   L   
| 
 
 B B B >>)Y 8/ .0 1  0, 0 0 2L 2 2 0W, 0W 0Wf , , ,8 . . .8 /| / / # #FKK # # $ $ $ 'L ' ' 4, 4 4 * * *: 0, 0 0@ M| Mfkk M M`  |       
R\ 
Rv{{ 
Ru 
R 
R    
B, 
B 
B 
<l 
< 
< '< ' ' \   	# 	# 	# (| (v{{ ( ( )L )&++ )PVP[P[ )hl ) )X 7< 7 7 |   ~~i < 2    #    L   el eFKK eRXR]R] e e 2| 2 28 0| 0 0> '< ' '*    L FKK  @ 
 
 
 
 
 e< e6;; e5 e e: D| D D2  ,      F !| !6;; ! !H <   #| # # l  8 vX< vXv{{ vX vXr 6 6FKK 6 6$ !$ B| B B l  X]  . 6)\ 6)TY 6) 6)r O\ OV[[ O O !L ! ! ">>)Y @* 6+ ,  \  : _L _FKK _ _D L  4  &++  ,   " J| J J J '| ' ' 'T CL CV[[ C C
 	l 	v{{ 	 	 ^^Iy :6 07 8  t
. 
  !..I ?+ 5, -  %&'(  NN9i 9) /* +  < E    <   *-%(-ein-2E=B"l " ++"8>"[a[f[f"%{{">Dkk" 06{{" "J IL I I i< iv{{ i i2 "(	9 F < "  O\ O!'O7={{ORXR]R]O&,kkO=C[[O Od |    , 6;;   A* A* A* A* A*H  	9 >% 4& '  (+*/U5:SX*.L "KK?E{{'-{{EK[[ #KK 48 & < FKK   [`).HL3L 3&++ 3V[[ 3!;;3 ++3:@++3 3l 	4L 	4 	4 \ fkk   &8 &8 &8R -L - - #< # #4 <@< <@ <@~ 
7\ 
7t 
7 
7 4\ 4t 4 4 *Ll *L *LZ  <,  <  <F ;\ ; ; L   \ d   A< A AH 0L 0 04 L T   <   7| 7 7FKK 7 7@ "*\ "*v~~ "*PVP[P[ "*gl "* "*J J\ Jfkk J J ; ; ;. IL I IX 4 4% 4 44 B| B B 	\ 	 	 
L 
 
   > "&C l   %+NN62::+<--2U%4 ! $\ $d $ $N 9< ? ? ?( \ e   <l < <~ \  4 G G GB VL V V ,  > L  &      F . . .b ?' ?' ?'D    @| @ @$ |   ', ' ', + + +\ .| . .b  %   
 
 
( "V[[ " "r6   