
    hg                    ,   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  S&S'KJr  SS(KJr  SS)KJ r   S*r! " S+ S,5      r"\ RF                  GS$S-\4S. jj5       r$\ RF                  S-\4S/ j5       r%\ RF                  S-\S0\4S1 j5       r&S-\4S2 jr'\ RF                  S-\4S3 j5       r(\ RF                  S-\4S4 j5       r)\ RF                  S-\4S5 j5       r*\ RF                  S-\4S6 j5       r+S7S8S9.r,\ RF                  S-\4S: j5       r-S-\4S; jr.\ RF                  S-\4S< j5       r/\ RF                  S-\4S= j5       r0\ RF                  S-\4S> j5       r1\ RF                  S-\4S? j5       r2\ RF                  S-\4S@ j5       r3\ RF                  S-\4SA j5       r4\ RF                  S-\4SB j5       r5\ RF                  S-\4SC j5       r6\ R                  " \7\7" SD5      5      r8\ RF                  S-\4SE j5       r9\ RF                  S-\4SF j5       r:\ RF                  S-\4SG j5       r;\ RF                  S-\4SH j5       r<\ RF                  S-\4SI j5       r=\ RF                  S-\4SJ j5       r>\ RF                  S-\4SK j5       r?\ RF                  S-\4SL j5       r@\ RF                  S-\4SM j5       rA\ RF                  S-\4SN j5       rB\ RF                  S-\4SO j5       rC\ RF                  S-\4SP j5       rD\ RF                  S-\4SQ j5       rE\ RF                  S-\4SR j5       rF\ RF                  S-\4SS j5       rG\ RF                  S-\4ST j5       rH\ RF                  GS%S-\SV\ R                  4SW jj5       rJ\ RF                  S0\4SX j5       rK\ RF                  S-\4SY j5       rL\ RF                  S-\4SZ j5       rM\ RF                  S-\S0\4S[ j5       rN\ RF                  S-\4S\ j5       rO\ RF                  S-\4S] j5       rP\ RF                  S-\4S^ j5       rQ\ RF                  S_ 5       rR\ R                  GS&S` j5       rT\ RF                  S-\4Sa j5       rU\ RF                  S-\4Sb j5       rV\ RF                  S-\4Sc j5       rW\ RF                  S-\4Sd j5       rX\ RF                  S-\4Se j5       rY\ RF                  Sf 5       rZ\ RF                  S-\S0\4Sg j5       r[\ RF                  GS'S-\Sh\\4Si jj5       r]\ RF                  S0\ R                  4Sj j5       r^\ RF                  GS(S-\S0\4Sk jj5       r_\ RF                  Sl\\S-\4Sm j5       r`Sn V s/ s H<  n \R                  SoU (       a  SpOSq-   Sr-   R                  Ss5      5      R                  PM>     sn u  rdre\ RF                  St\Su\ R                  S0\4Sv j5       rg\ RF                  S-\Sw\ R                  S0\h4Sx j5       ri\ RF                  S-\St\Sy\ R                  Sw\ R                  S0\4
Sz j5       rj\ RF                  S-\4S{ j5       rk\ RF                  S-\4S| j5       rl\ RF                  S-\4S} j5       rm\ RF                  S-\4S~ j5       rn\ RF                  S-\4S j5       ro\ RF                  S-\4S j5       rp\ RF                  GS(S-\S0\h4S jj5       rq\ RF                  GS(S-\S0\h4S jj5       rr\ RF                  GS(S-\S0\h4S jj5       rs\ RF                  S-\4S j5       rt\ RF                  S-\4S j5       ru\ RF                  S-\4S j5       rv\ RF                  S-\4S j5       rw\ R                  " \7\7" S5      5      rx\ RF                  S-\4S j5       ry\ RF                  S-\4S j5       rz\ RF                  S-\4S j5       r{\ RF                  S-\4S j5       r|\ RF                  S-\4S j5       r}\ RF                  S-\4S j5       r~\ RF                  GS)S-\S\ R                  4S jj5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  GS*S-\S\ R                  4S jj5       r\ RF                  S-\4S j5       r\ RF                  S-\S\ R                  S0\4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ R                  " \7\7" S5      5      r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  GS)S-\S\ R                  4S jj5       r\ RF                  SnS-\S\ R                  S\ R                  S0\4S jj5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ R                  " \7\7" S5      5      r\ RF                  S-\S\\4S j5       r\ RF                  S-\4S j5       r\ RF                  SnS-\S\ R                  S\ R                  4S jj5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  GS)S-\S\ R                  4S jj5       r\ RF                  S-\S\ R                  S0\h4S j5       r\ RF                  S-\S\ R                  S0\4S j5       r\ RF                  S-\4S j5       r\ RF                  GS*S-\S\ R                  4S jj5       r\ RF                  GS*S-\S\ R                  4S jj5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  GS)S-\S\ R                  4S jj5       r\ RF                  GS*S-\S\ R                  4S jj5       r\ RF                  \"" 5       4S-\4S jj5       r\ RF                  GS)S-\S\ R                  S0\4S jj5       r\ RF                  GS(S-\4S jj5       r\ R                  GS+S-\S\ R                  4S jj5       r\ RF                  S-\4S j5       r\ R                  " \7\7" S5      5      r\ RF                  GS(S-\4S jj5       r\ RF                  GS(S-\S\ R                  4S jj5       r\ RF                  S-\4S j5       r\ RF                  S-\S0\ R                  4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\S0\ R                  4S j5       r\ RF                  S-\S0\ R                  4S j5       r\ RF                  S-\S0\ R                  4S j5       r\ RF                  S-\S0\ R                  4S j5       r\ R                  " \7\7" S5      5      r\ R                  " \SSSSSSSSS.5      r\ R                  " \7\7" S5      5      r\ R                  " \7\\-  \7" \5      -  5      r\ R                  " \7\7" S5      5      r\ RF                  S-\S0\4S j5       r\ RF                  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\ RF                  S-\4S j5       r\ RF                  S-\S\ R                  4S j5       r\ R                  " \7\7" S5      5      r\ RF                  S-\S\ R                  S\ R                  S\ R                  S\ R                  S\ R                  4S j5       r\ RF                  S-\S0\ R                  4S j5       r\ RF                  S-\S0\ R                  4S j5       r\ RF                  S-\S\ R                  S0\4S j5       r\ R                  " \7\7" S5      5      r\ R                  \"" 5       SSSSSU4S-\S\ R                  S\ R                  S\ R                  S\ R                  S\ R                  S0\h4S jj5       r\ RF                  S-\S0\ R                  4S j5       r\ RF                     GS,S-\S\ R                  S\ R                  S\ R                  S\ R                  S\ R                  4S jj5       r\ RF                  S-\4S j5       r\ RF                  S-\S0\ R                  4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\S\h4S j5       r\ RF                  S-\S\h4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\S0\h4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\4S j5       r\ RF                  S-\S0\h4S j5       r\ RF                  S-\4S j5       r\ RF                  GS-S-\S\hGS \ R                  4GS jj5       r\ RF                  GS.S-\S\ GR                  S\ R                  S0\4GS jj5       r\ RF                  GS%S-\S\ R                  4GS jj5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\S0\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS	 j5       r\ RF                  S0\4GS
 j5       r\ R                  S\"4S-\4GS jj5       r\ R                  " \\R                  " GS5      R                  5      r\ RF                  S-\S0\4GS j5       r\ R                  \"4S-\4GS jj5       r\ RF                  S-\S0\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS j5       r\ RF                  S-\4GS  j5       r\ R                  GS(GS!\ GR                  4GS" jj5       rgs  sn f (/      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      )r   )r
   )r   )inlinenogilapic                   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     Q/var/www/fran/franai/venv/lib/python3.13/site-packages/Cython/Compiler/Parsing.py__init__Ctx.__init__5   s    T"    c                     [        5       nUR                  nUR                  U R                  5        UR                  U5        U$ r*   )r%   r+   r,   )r-   r.   ctxds       r/   __call__Ctx.__call__8   s2    eLL		
r2    )__name__
__module____qualname____firstlineno__level
visibility	cdef_flagtypedef_flagr#   overridabler"   	namespace	templatesallow_struct_enum_decoratorr0   r6   __static_attributes__r8   r2   r/   r%   r%   (   s?    EJIL
CKEII"'#r2   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   )rF   messagenames      r/   p_identrQ   @   s?    ttwyy''

3		r2   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$ )NrI   ,)rJ   appendrK   rL   rM   rN   )rF   namess     r/   p_ident_listrV   J   sl    E
$$'/QYY--ajj9:	443;L 	
 $$'/ Lr2   returnc                 `    U R                  5       nU R                  nU R                  5         X!4$ r*   )positionrJ   rN   )rF   posops      r/   p_binop_operatorr\   [   s&    
**,C	
BFFH7Nr2   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)	rJ   r\   r   
binop_noder
   divisionrK   future_directivestruedivision)rF   ops
p_sub_exprn1r[   rZ   n2s          r/   p_binop_exprrg   d   s|    	AB
$$#+"1%]!!#229!))"="=="&"& $$#+ Ir2   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)rY   rN   rJ   p_varargslistexpectp_testr   
LambdaNode)rF   rZ   rl   rm   rn   exprs         r/   	p_lambdefru   t   sx     **,CFFHtts{"&&<'4#(0$HHSM!9D r2   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_afterrJ   r   )rF   rt   s     r/   rr   rr      s+     %Q'Dttt|	STKr2   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)	rJ   ru   rY   	p_or_testrN   rq   rr   r   CondExprNode)rF   rZ   rt   r}   r'   s        r/   rx   rx      sv    ttx|
**,CQ<Dttt|	|	q	%%ctUUr2   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$ )Nrw   z=Left-hand side of assignment expression must be an identifierFfatallhsrhs)	rx   rJ   rY   is_namer   rN   rr   r   AssignmentExpressionNode)rF   r   rY   r   s       r/   p_namedexpr_testr      sg     $A
&Cttt|::<{{GGS[`Ga	Qi11(MMJr2   orand)z||&&c                 $    [        U S[        5      $ )Nr   )p_rassoc_binop_expr
p_and_testrF   s    r/   r   r      s    q$
33r2   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   r=   )rJ   rY   rN   r   r   r_   r   r   )rF   r[   	p_subexprre   rZ   rf   s         r/   r   r      s    	1BttrzjjlTT	 	2!!#22 I 
&	&+@+F"+L

WXW[W[]_`	 Ir2   c                 $    [        U S[        5      $ )Nr   )r   
p_not_testr   s    r/   r   r      s     q%44r2   c                     U R                   S:X  a>  U R                  5       nU R                  5         [        R                  " U[        U 5      S9$ [        U 5      $ )Nnotoperand)rJ   rY   rN   r   NotNoder   p_comparisonrF   rZ   s     r/   r   r      sB    ttu}jjl	  
1>>Ar2   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_exprrJ   comparison_opsrY   p_cmp_opr   PrimaryCmpNodep_cascaded_cmpcascade)rF   re   rZ   r[   rf   s        r/   r   r      sj    		Btt~jjla[A%%cR944>!'*BJIr2   c                 N    U R                   S:X  a  [        U 5      $ [        U 5      $ N*)rJ   r   rr   r   s    r/   p_test_or_starred_exprr      s"    tts{a  ayr2   c                 N    U R                   S:X  a  [        U 5      $ [        U 5      $ r   )rJ   r   r   r   s    r/    p_namedexpr_test_or_starred_exprr     s#    tts{a  ""r2   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)rY   rJ   rN   
p_bit_exprr   StarredUnpackingNode)rF   rZ   starredrt   s       r/   r   r   
  sL    
**,Ctts{	a=D--c8Kr2   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   )	rY   r   r   r   CascadedCmpNoderJ   r   r   r   )rF   rZ   r[   rf   results        r/   r   r     sR    
**,C	!B		B&&s&Ftt~'*Mr2   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<>!=)rJ   rN   rq   rF   r[   s     r/   r   r   $  s{    ttu}			
	445=FFHBBTT		TzIr2   )
<>==>=<=r   r   r   r   r   c                 $    [        U S[        5      $ )N)|)rg   
p_xor_exprr   s    r/   r   r   A      6:..r2   c                 $    [        U S[        5      $ )N)^)rg   
p_and_exprr   s    r/   r   r   H  r   r2   c                 $    [        U S[        5      $ )N)&)rg   p_shift_exprr   s    r/   r   r   O  s    6<00r2   c                 $    [        U S[        5      $ )N)<<>>)rg   p_arith_exprr   s    r/   r   r   V  s    <66r2   c                 $    [        U S[        5      $ )N+-)rg   p_termr   s    r/   r   r   ]  s    :v..r2   c                 $    [        U S[        5      $ )N)r   @r^   %z//)rg   p_factorr   s    r/   r   r   d  s    5x@@r2   c                     [        U 5      $ r*   )	_p_factorr   s    r/   r   r   k  s     Q<r2   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   rI   sizeof)rJ   rY   rN   r   	unop_noder   in_python_fileAmpersandNode
p_typecastrM   p_sizeofp_power)rF   rJ   r[   rZ   args        r/   r   r   q  s    	
B	_TTjjl	""3HQK889**,CFFH1+C**3>>3Ya= 7]qzzX5A;1:r2   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)rY   rN   p_c_base_type
isinstancer   MemoryViewSliceTypeNodeTemplatedTypeNodeCConstOrVolatileTypeNodeCTupleBaseTypeNoderP   r   p_c_declaratorrJ   rq   r   r   CythonArrayNodeTypecastNode)rF   rZ   r   is_memsliceis_other_unnamed_typer   r   r   s           r/   r   r     s     **,CFFHa IY(E(EFK&y&&  3 
 0inn6L	.Jtts{			HHSMqkG((PWXX!!#	 r2   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   ))
rY   rN   rq   looking_at_exprrr   r   SizeofVarNoder   r   SizeofTypeNode)rF   rZ   r   noder   r   s         r/   r   r     s     **,CFFHHHSM q)&&s>!!$	#AT2
''!<HHSMKr2   c                    U R                  5       nU R                  5         SnU R                  S:X  a  SnU R                  5         U R                  S:w  a2  U R                  [        ;  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rZ   r   r   )
rY   rN   rJ   statement_terminatorsrr   
p_testlistr   r   YieldFromExprNodeYieldExprNode)rF   rZ   is_yield_fromr   s       r/   p_yield_expressionr	    s     **,CFFHMttv~	tts{qtt#88(fQijmGG=5  ***388&&s44r2   c                 V    [        U 5      n[        R                  " UR                  US9$ )Nrt   )r	  r   ExprStatNoderZ   )rF   
yield_exprs     r/   p_yield_statementr    s%     $A&Jjnn:>>r2   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')rJ   r=   r   p_def_statementp_for_statementrN   p_with_items)rF   r4   
decoratorss      r/   p_async_statementr    s     	ttu}CIIGG45))q4@@		IJ	
q400	
	A--	DEr2   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   rI   await)r   [.r  **)rM   peek
p_new_exprrJ   rY   rN   p_atom	p_trailerr   AwaitExprNoder   r_   )rF   	await_posre   rZ   rf   s        r/   r   r     s    zzUqvvx{g5!}IttwJJL			B
$$/
!q $$/
!$$Y7ttt|jjl	a[!!#tR4Ir2   c                     U R                  5       nU R                  5         [        U 5      n[        U [        R
                  " XS95      $ )N)cppclass)rY   rN   r   p_callr   NewExprNode)rF   rZ   r+  s      r/   r%  r%    s:     **,CFFHQH!Y**3DEEr2   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)rY   rJ   r,  p_indexrN   rQ   r   AttributeNode)rF   node1rZ   rP   s       r/   r'  r'    sc    
**,Ctts{a	
q  	qz&&s' 	'r2   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rZ   Tr#  =z!Expected an identifier before '='valuerS   r  asyncr   r   )rN   rJ   r   rY   rT   rr   r   r   rZ   rK   rL   rP   r   IdentifierStringNodelenp_genexprq   )	rF   r5  positional_argskeyword_argsstarstar_seenlast_was_tuple_unpackr   encoded_namekeywords	            r/   p_call_parse_argsrH  '  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0r2   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rl   r  r   rZ   keyr;  r   T)key_value_pairsreject_duplicatesr   )rC  )r   listr   	TupleNodeAsTupleNoder   r   r_   tuplerT   DictItemNoderZ   is_dict_literalextendrM  DictNoder@  MergedDictNode)rZ   rB  rC  keyword_dictr   	subtuples	arg_tuplekwargs
dict_itemsitemrL  r;  s               r/   p_call_build_packed_argsr^  Z  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   )functionrl   )r`  rB  rC  )	rY   rH  r@  r   rO  r   SimpleCallNoder^  GeneralCallNode)rF   r`  rZ   rB  rC  rZ  rX  s          r/   r,  r,    s     **,C$5a$8!OC0A5*_UVEWY]:^:^''_UVEWXX":3Q]"^	((IZ 	Zr2   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stoprJ  rd  index])
rY   rN   p_subscript_listr@  r   SliceIndexNodemake_slice_nodesrP  	IndexNoderq   )
rF   rd  rZ   
subscriptsis_single_valuere  rf  r   indexesrh  s
             r/   r2  r2    s     **,CFFH"21"5J3z!}-2 m))#t5 #33AJE''<E$$S(HHSMMr2   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$ )NTrS   Fri  )p_subscriptrJ   rN   rT   )rF   ro  itemss      r/   rj  rj    sm    O^E
$$#+	443;!! 	[^$ $$#+ !!r2   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)ri   ri   )ri   rS   ri  )p_slice_elementrJ   rN   )rF   re  rf  steps       r/   rr  rr    sj    
 Av&Etts{wFFH1o.Dtts{}FFH1o.Dr2   c                 :    U R                   U;  a  [        U 5      $ g r*   )rJ   rr   )rF   
follow_sets     r/   ru  ru    s     	tt:ayr2   c                 &    U R                  S5        g )N...)rq   r   s    r/   expect_ellipsisr{    s    HHUOr2   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   )r@  rT   make_slice_node)rZ   rn  r   	subscripts       r/   rl  rl    sL     F	y>QMM)A,'MM/#:	:;	  
 Mr2   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)re  rf  rv  )r   NoneNode	SliceNode)rZ   re  rf  rv  s       r/   r}  r}    sU    ""3'!!#&!!#&s41 1r2   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  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   rJ  yieldr!  {`rz  INTFLOATr:  IMAGr<  BEGIN_STRINGrI   z!Expected an identifier or literal)rY   rJ   rN   r   rP  r	  p_testlist_comprq   p_list_makerp_dict_or_set_makerp_backquote_exprr{  EllipsisNodep_int_literalrM   	FloatNodeImagNodep_atom_stringp_atom_ident_constantsp_namer   )rF   rZ   rJ   r   r;  s        r/   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	~	Q	w'*>Azz*FFFH	34r2   c                 x   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 R                  SU S	35        g )
N)r;  bytes_valuecr:  ubfvalueszinvalid string kind '')rY   p_cat_string_literalr   UnicodeNodeCharNode	BytesNodeJoinedStrNoder   )rF   rZ   kindr  unicode_value	kind_chars         r/   r  r  &  s     **,C';A'>$D}$$S;WW $IC!!#99	c	$$S;WW	c	""3::	c	&&sAA 	
'vQ/0r2   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)rY   rM   r   r  BoolNoder   NullNoderN   )rF   rZ   rP   r   s       r/   r  r  ;  s     **,C::Dv~##C(	##Ct4	##Cu5	 0 0##C(FFHMr2   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)rY   cythoncaststrrM   rN   rK   language_levelr   r   r   IntNode)rF   rZ   r;  r  r  r  s         r/   r  r  R  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 2r2   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rP   )rY   compile_time_exprcompile_time_envlookup_herewrap_compile_time_constantr   NameNode)rF   rP   rZ   r;  r   s        r/   r  r  s  s]    
**,C4+=+=#=""..t4)#5Kc--r2   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  asciirJ  z(Invalid type for compile-time constant: z (type r   )r   r  Ellipsisr  r   boolr  intr  reprfloatr  complexr  imagrealr_   r  r  r   bytesr   r  rR  r  rP  r   	__class__r9   )rZ   r;  r   bvaluer   rl   s         r/   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  X#U4$ U/U/U/pvnS =p4U R                  S:X  a  U R                  5       n[        U 5      u  pn
US:X  a  [        US5        MB  X:w  a'  X(1SS1SS14;   a  SnO[        USU< SU< S	35        Mn  UR	                  U	5        UR	                  U
5        UR	                  U5        U R                  S:X  a  M  US
;   d  US:X  a0  S U;  a*  [        [        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     X#U4$ s  snf )Nr  r  zCCannot concatenate char literal with another string or char literalr  r  r  z8Cannot mix string literals of different types, expected z'', got z'')r  r  r  r  r  r:  )rY   p_string_literalrJ   r   rT   r   r   
join_bytessource_encodingr   joinzipr   rO  r   r  )rF   rZ   r  r  r  bstringsustrings	positions	next_kindnext_bytes_valuenext_unicode_valuer  s               r/   r  r    s   
 **,C'7':$D}s{addn,-//%0MM?SE	H"&&K
$$.
 jjl:J1:M7	%7#\] c3Z#r$;;c)% &()*+! $$.
 $ ~X1E#N$=$=h$GIZIZ[y%bgg(.T(Qq(.T&UVs{(.FA!T""" $$Y%:%:3mTUFV%WX / m++ /Us   GG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)rJ   rY   r  r   )rF   r  rZ   r  r  r  s         r/   p_opt_string_literalr    sj    tt~
**,C'7'I$D}3;GG/5	#		56r2   c                 \    [         R                  " [        U 5      nU H  nUS:  d  M    g   g)N   TF)r  r  r  )stringrF   r  s      r/   check_for_non_ascii_charactersr    s+    C A;  r2   c                    U R                  5       nU R                  R                  S:  nSnUS   US   US   [        U R                  5      -   4nU R                  R                  S5      R                  5       n[        U5      S:  au  [        [        U5      5      [        U5      :w  a  [        US5        SU;   a  S	U;   a  [        US
5        SU;   a  SU;   a  [        US5        S	U;   a  SU;   a  [        US5        SU;   nSU;   a  [        U5      S:w  a  [        US5        SnOSU;   a  Sn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         U R$                  n
[&        R(                  " [*        U R                  5      nU
S:X  a2  U	R-                  U5        U(       a  U(       d  [/        U5      (       a  SnOU
S:X  a\  U(       aH  U(       d  US	:w  d	  US   S;  a2  U	R-                  U5        U(       a  U(       d  [/        U5      (       a  SnOg[1        XX5        OZU
S:X  a  U	R-                  S5        OBU
S:X  a  O>U
S:X  a  U R                  SUS9  O$U R                  SU
< SU R                  < S 35        GM8  US:X  a1  S nU	R3                  5       n[        U5      S:w  a  [        US!U-  5        O`U	R5                  5       u  pU(       aG  U(       a@  [        R                  U R                  R                  ;   a  US:X  a  U R                  S"US9  S nUS:X  a  [7        XUSU;   S#9nU R#                  5         XU4$ )$Nr  Fr   r   r    z"'z!Duplicate string prefix characterr  r  z*String prefixes b and u cannot be combinedr  z*String prefixes b and f cannot be combinedz*String prefixes u and f cannot be combinedrr  z+Invalid string prefix for character literalTr  ub)r  r  CHARSESCAPEUuNEWLINE

END_STRINGEOFzUnclosed string literalr8  zUnexpected token ri   z in string literalzinvalid character literal: %rz0bytes can only contain ASCII literal characters.is_raw)rY   rK   r  r@  rM   rstriplowersetr   r
   unicode_literalsra   r   StrLiteralBuilderr  UnicodeLiteralBuilderBytesLiteralBuilderrN   rJ   r  r  r  rT   r  _append_escape_sequencegetchar
getstrings
p_f_string)rF   kind_overriderZ   is_python3_source has_non_ascii_literal_charactersstring_start_poskind_stringr  r  charsrJ   systrr  r  s                 r/   r  r    s    **,C%&YY%=%=%B',$AAAQZZ(@A**##E*002K
;!s; C$44#:;+#"4#CD+#"4#CD+#"4#CD,F
k {q #DE						rzm+0G0G199KfKf0f001B1BC$$)> D:"88:ERZ"44Q5F5FGE"66q7H7HIE 	TTC,=LL )INlmrNsNs3708^,uQxt?SU#$-MRpqvRwRw7;4'U>9_LL<5[GG-3G7GGAJJ  !1 6 s{mmo{q #6DE%*%5%5%7",%&*A*AQYYE`E`*`s{JPSTKs{"15EcU`N`aFFH}--r2   escape_sequencec           	      L   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   01234567   z'"\abfnrtvr  x   r       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   )append_charvalr  rT   r   char_from_escape_sequencer@  r   r	   ordKeyErrorr  lstripappend_uescape)r  builderr  rF   r  chrvaluchars          r/   r  r  R  s   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   E( (8F#"F#)TFs   (\\(?:s   \\?s]   [\\abfnrtv"\'{]|[0-7]{2,3}|N\{[^}]*\}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|[NxuU]|s   )?|\{\{?|\}\}?|[^\\{}]+)zus-asciirZ   ic                 *    U S   U S   U S   U-   S-   4$ )Nr   r   r    r8   )rZ   r  r  s      r/   _f_string_error_posr    s#    FCFCFQJN++r2   r  c                    / nSn[        U5      n[        R                  " 5       nU(       a  [        O[        nXV:  Gah  Un	U" X5      n
U
c  [        [        X!U5      S5        U
R                  5       nU
R                  5       nUS   nUS:X  a6  U(       d  [        U5      S:  a  [        SX{U 5        OUR                  U5        OUS:X  a  US:X  a  UR                  S5        OUR                  (       aF  UR                  [        R                  " X'R                  5       S95        [        R                  " 5       n[        XX%U5      u  p]UR!                  U5        OFUS	:X  a/  US
:X  a  UR                  S	5        O([        [        X!U	5      S5        OUR                  U5        XV:  a  GMh  UR                  (       a1  UR                  [        R                  " X'R                  5       S95        U$ )Nr   zInvalid escape sequence\r   r  r  z{{r:  }z}}z#f-string: single '}' is not allowed)r@  r   r  r   r   r   r  endgroupr  rT   r  r   r  	getstringp_f_string_exprrU  )rF   r  rZ   r  r  
next_startsizer  
_parse_seqr  matchpartr  
expr_nodess                 r/   r  r    s    F$%J!-0D224G06,<SJ

!+=5=%c*EG`a(-		
KKMG9c$i!m'WA>t$#Xt|s# ==MM)"7"7CTCTCV"WX,BBDG)83\b)c&
j)#Xt|s#)#cB;= NN4 ? 
B }}i++C7H7H7JKLMr2   starting_indexc           	         Un[        U5      nS =n=pS n
S nSnSnUnSnSn XV:  a  GOX   nX:w  a_  US:X  a   U(       d  [        [        X!U5      S5        SnOUU:X  a2  U(       a)  US-   U:  a  XS-      U:X  a  XS-      U:X  a	  SnUnUS-  nOUnOUS	;   a)  UnUS-   U:  a  XS-      U:X  a  XS-      U:X  a  SnUS-  nOzUS
;   a  US-  nOnUS:w  a  US;   a  US-  nO\US:X  a  [        [        X!U5      S5        O?US:X  a9  US;   a3  US-   U:  a'  US;   a!  XS-      S:X  a  US-  nGM  US;   a  US-  nGM  UnOUS-  nGM   XU R                  SS5      R                  SS5      nUS   US   US   U-   S-   4nUR	                  5       (       d  [        [        X!U5      S5        US:X  aQ  US-  nXV:  a:  X   R                  5       (       a#  US-  nXV:  a  X   R                  5       (       a  M#  XV:  a  X   nXU nUS:X  a  US-  nUS-   U:  a  OX   nUS-  nX   nUS:X  a  SnSnSnUS-   n XV:  a  OX   nU(       d(  U(       d!  US:X  a  US-  nOUS:X  a  US:  a  US-  nOUnONUS	;   aA  U(       d,  US-   U:  a#  XS-      U:X  a  XS-      U:X  a  U(       + nUS-  nOU(       d  U(       + nUS-  nM  UUU n
U(       a  Uc  U
c  SnUS:w  a%  [        [        X!U5      SU(       a  SU-  OS-   5        [        SU-  5      n[        UUS   X R                  US9n[        U5      nUb3  [        R                  R                  U5      (       d  [        US U-  5        U
(       a  [        R                  " U[        X
X$5      S!9n	/ nU(       a-  UR                  [        R                   " U[#        U5      S"95        UR                  [        R                  " UUXyS#95        US-   U4$ )$Ni   @r   FTr  z$backslashes not allowed in f-stringsr    r   z'"z{[(z}])#zformat string cannot include #z><=!:}z!=><r9  z><z
r  z(empty expression not allowed in f-string!ri   r  r  r  z'missing '}' in format string expressionz, found '%s'r  z(%s))parent_scannerr  initial_posz!invalid conversion character '%s'r  r:  )r;  conversion_charformat_spec)r@  r   r  replacestripisspacer   r   r  r  r   FormattedValueNodefind_conversion_funcr  r  rT   r  r   )rF   r  rZ   r)  r  r  r$  r0  terminal_charr1  format_spec_str	expr_textNO_CHARnested_depth
quote_charin_triple_quotesbackslash_reportedr  expr_strexpr_pos	in_stringstart_format_specbufscannerrt   nodess                             r/   r"  r"    s    *A!-0D488O8mOI#G&'L!(J
9 Dy)-c!D@B%)"j#1ut|!e(<(AmXYTYFZ^_F_+0(%,
Q!(J%ZJ1ut|!e 4 9mPQE>RVW>W#' Q%ZALQ1:AL#X%c!<24Q1=1ut|V Q'3.FA$YFAM	QW \ A.66vtDLLTSWXHAAA 7! ;<H>>!#nE8	: 	Qh=+3355FA h=+3355 8),M%Q7I 	Qq54<+.OFA),M 	Ey A#I8 A%L#X#a'$)()Ez QUT\mE6Ja6OTafgbgThlmTm+;';$FA)$-IFA' * ((9!<_,1H!#a874A.=0rK	L
 6H$
%C3AO`O`nvwGgD "9+G+G+\+\]l+m+mh;oMN --c*QY\:efEY**3mI6NOP	LL--cxyq5%<r2   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$ )	Nri  rJ  r=  2iterable unpacking cannot be used in comprehensionr  r  )looprT   typehas_local_scoperS   )rY   rN   rJ   rq   r   ListNoder   
is_starredr   ComprehensionAppendNode
p_comp_forComprehensionNoder   	list_typerK   r  %p_namedexpr_test_or_starred_expr_list)rF   rZ   rt   rT   rH  exprss         r/   r  r  a  s    **,CFFHtts{	!!#B//+A.Dtt??GGHI223B!$	**60A0AII449; 	; 	tts{	5a>HHSMc..r2   c                 r    U R                   S;   a  [        X5      $ U R                   S:X  a  [        X5      $ U$ )Nr=  r{   )rJ   rN  	p_comp_if)rF   bodys     r/   p_comp_iterrV    s7    tt!""	
!! r2   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$ )NFr>  Tr  allow_testlistr  )else_clauserU  r  )	rY   rJ   rN   rq   p_for_boundsr,   rV  r   ForStatNode)rF   rU  rZ   r  kws        r/   rN  rN    ss    
**,CHttw	 HHUO	a	ABII$[%9HIMS'B''r2   c                     U R                  5       nU R                  5         [        U 5      n[        R                  " U[        R
                  " X#[        X5      S9/S S9$ )N	conditionrU  
if_clausesrZ  )rY   rN   r   r   
IfStatNodeIfClauseNoderV  )rF   rU  rZ   r}   s       r/   rT  rT    sZ     **,CFFH Q<DC((0;A0DF G r2   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  rM  r   FTr   r#  r   r   r    zunexpected zitem found in r  dictz literalzexpected expression, found '*'ri   )rL  r;  r<  rS   r=  )key_expr
value_exprr  )rH  rT   rI  rG  rJ  )rl   rI  )rC  rN  )rY   rN   rJ   r   rV  r@  r   r   rT   rr   rq   rS  rZ   r   rO  rI  r   	dict_typeDictComprehensionAppendNoderL  r;  set_typerM  rN  rO  rU  SetNodeis_set_literalMergedSequenceNoderT  rW  )rF   rZ   partstarget_typelast_was_simple_itemr]  rL  r;  comprehension_typerT   rH  rs  	set_itemsr'  r\  s                  r/   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Yr2   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$ )NrS   r  r   r   rJ  r  )
rY   rN   rr   rJ   rT   rq   r@  r   rP  BackquoteNode)rF   rZ   rl   r   s       r/   r  r  !  s     **,CFFH1I;D
$$#+	F1I $$#+ HHSM
4yA~1g!!#3""322r2   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$ NrS   )rJ   expr_terminatorsrT   rr   rN   rF   rt   rR  s      r/   p_simple_expr_listr|  2  sa     ,4&"E
$$&
&fQi!443;L 	
	 $$&
&
 Lr2   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$ ry  )rJ   rz  rT   r   rN   r{  s      r/   p_test_or_starred_expr_listr~  =  sc     ,4&"E
$$&
&+A./443;L 	
	 $$&
&
 Lr2   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$ ry  )rJ   rz  rT   r   rN   r{  s      r/   rQ  rQ  H  sc     ,4&"E
$$&
&5a89443;L 	
	 $$&
&
 Lr2   c                     U R                  5       n[        U 5      nU R                  S:X  a/  U R                  5         [	        X5      n[
        R                  " XS9$ U$ NrS   rJ  )rY   rr   rJ   rN   r|  r   rP  rF   rZ   rt   rR  s       r/   r  r  U  sJ    
**,C!9Dtts{	"1+""355r2   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  )rY   r   rJ   rN   r~  r   rP  r  s       r/   p_testlist_star_exprr  c  sK    
**,C!!$Dtts{	+A4""355r2   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$ )NrS   rJ  r=  )rY   r   rJ   rN   rQ  r   rP  rA  r  s       r/   r  r  q  sc    
**,C+A.Dtts{	5a>""355	
!	!  r2   c                     [        U [        R                  " UR                  [        R
                  " UR                  US9S95      n[        R                  " UR                  US9$ )Nr  r  )rH  )rN  r   r  rZ   r   r  GeneratorExpressionNode)rF   rt   rH  s      r/   rA  rA    sP     a++00tDF GD,,TXXDAAr2   )r   ri  r  ri   r9  r  c                     U R                  5       nU R                  5         [        U 5      n[        R                  " XS9$ N)rU   )rY   rN   rV   r   
GlobalNoderF   rZ   rU   s      r/   p_global_statementr    s2     **,CFFHOEC//r2   c                     U R                  5       nU R                  5         [        U 5      n[        R                  " XS9$ r  )rY   rN   rV   r   NonlocalNoder  s      r/   p_nonlocal_statementr    s0    
**,CFFHOEc11r2   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$ )NFri   Tr9  zqa starred assignment target must be in a list or tuple - maybe you meant to use an index assignment: var[0] = ...r8  r  r   z([-+*/%^&|]|<<|>>|\*\*|//|@)=r   rg  z&Illegal operand for inplace operation.r<  )r   r   r   r  r    )r   r   first)lhs_listr   ) r  rJ   r   is_subscriptis_attributerN   p_annotation
annotationrL  r   rZ   r	  rT   r@  r   r&  r   r   rk  rm  rd  r}  re  rf  r3  r  r  r   InPlaceAssignmentNoder  SingleAssignmentNodeCascadedAssignmentNode)rF   rt   has_annotation	expr_listr   r   r   s          r/   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Vr2   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   rS   r  r  TrJ  )rZ  streamappend_newline)	rY   rN   rJ   rr   rT   r   rP  r   PrintStatNode)rF   rZ   ends_with_commar  rl   rZ  s         r/   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**, ,r2   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   rS   rJ  )rY   rN   r   r   r   rP  rl   r@  r   rJ   rT   rr   r   ExecStatNode)rF   rZ   codetuple_variantrl   s        r/   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--r2   c                     U R                  5       nU R                  5         [        U 5      n[        R                  " XS9$ )NrJ  )rY   rN   r|  r   DelStatNode)rF   rZ   rl   s      r/   p_del_statementr    s3     **,CFFHa DS..r2   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)rY   rq   expect_newliner   PassStatNode)rF   r  rZ   s      r/   p_pass_statementr    sA    
**,CHHV	-Ec""r2   c                 n    U R                  5       nU R                  5         [        R                  " U5      $ r*   )rY   rN   r   BreakStatNoder   s     r/   p_break_statementr  #  s)     **,CFFHs##r2   c                 n    U R                  5       nU R                  5         [        R                  " U5      $ r*   )rY   rN   r   ContinueStatNoder   s     r/   p_continue_statementr  +  s)     **,CFFH!!#&&r2   c                     U R                  5       nU R                  5         U R                  [        ;  a  [	        U 5      nOS n[
        R                  " XS9$ )Nr:  )rY   rN   rJ   r  r  r   ReturnStatNode)rF   rZ   r;  s      r/   p_return_statementr  3  sD     **,CFFHtt((133r2   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      $ )NrS   r  )exc_type	exc_valueexc_tbcause)rY   rN   rJ   r  rr   r   RaiseStatNodeReraiseStatNode)rF   rZ   r  r  r  r  s         r/   p_raise_statementr  ?  s     **,CFFHHIFEtt((!9443;FFHq	Itts{TTV^FFH1IE9""3!	 	 $$S))r2   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	Op[        R                  " U[        R                  " X=(       d    US9[        R                  " U[        R                  " XS9U(       a  SOS S	U;   =(       a    US L S S
9S9n	UR	                  U	5        M     [        R                   " XS9$ )NT
as_allowedrS   cimport)module_nameas_nameis_absoluter  r:  r   r"  )r  r=   get_top_level_module	name_listr   stats)rY   rJ   rN   p_dotted_namerT   r
   absolute_importrK   ra   r   CImportStatNoder  r   r  
ImportNoder?  StatListNode)
rF   rZ   r  rs  r  r  target_namedotted_namer  stats
             r/   p_import_statementr  ]  s;    **,C44DFFH1./E
$$#+	]167 $$#+ E((AII,G,GGK27.+9((''	)D --&&s1GKH(( ) > >s V*!),);)O4"$%D 	T# 38$ c//r2   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
S   S   US9n["        R0                  " U[(        R2                  " U[(        R*                  " X%S9UUS9US9$ ! [         a    U R                  SU-  U5           GM  f = f)N)r"  rz  r   importr  r  Fr  zExpected 'import' or 'cimport'r  r   r   TrS   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_levelimported_namesr:  r  rJ  )r  r=   r  )modulers  )rY   rN   rJ   r@  rK   rL   r
   r  ra   r  r   p_imported_namerT   rq   getattrAttributeErroraddr   r  FromCImportStatNoder   r?  r  rK  FromImportStatNoder  )rF   r  rZ   r=   dotted_name_posr  _r  
is_cimportis_parenthesizedr  name_posrP   r  	directiveimported_name_stringsrs  import_lists                     r/   p_from_import_statementr  ~  sG    **,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
  ((1a '<>''))/'<<SV')  	) & GG>ExPs   N44OOc                 V    U R                  5       n[        U 5      n[        U 5      nXU4$ r*   )rY   rQ   	p_as_name)rF   rZ   rP   r  s       r/   r  r    s*    
**,C1:DlGwr2   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"  )	rY   rQ   rJ   rN   rT   r  rK   rL   r  )rF   r  rZ   r  r  rU   s         r/   r  r    s    
**,C!*KGME
$$#+	WQZ  $$#+ A,aii66sxxGQQr2   c                 z    U R                   S:X  a+  U R                  S:X  a  U R                  5         [        U 5      $ g )NrI   as)rJ   rM   rN   rQ   r   s    r/   r  r    s.    ttw1::-	qzr2   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$ )NrS   )r`  r;  )rY   rN   rr   rJ   r   AssertStatNode)rF   rZ   condr;  s       r/   p_assert_statementr    sV     **,CFFH!9Dtts{	q	5AAr2   );r  r  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elifra  )rY   rN   p_if_clauserJ   rT   p_else_clauser   rc  )rF   rZ   rb  rZ  s       r/   p_if_statementr     s{     **,CFFHa.!J
$$&.	+a.) $$&.  "KC< <r2   c                 x    U R                  5       n[        U 5      n[        U 5      n[        R                  " UX#S9$ )Nr_  )rY   r   p_suiter   rd  )rF   rZ   r}   rU  s       r/   r  r    s8    
**,CAD1:Dc' 'r2   c                 Z    U R                   S:X  a  U R                  5         [        U 5      $ g )Nr|   )rJ   rN   r  r   s    r/   r  r    s#    ttv~	qzr2   c                     U R                  5       nU R                  5         [        U 5      n[        U 5      n[	        U 5      n[
        R                  " UX#US9$ )N)r`  rU  rZ  )rY   rN   r   r  r  r   WhileStatNode)rF   rZ   r}   rU  rZ  s        r/   p_while_statementr  !  sP     **,CFFHAD1:D"Ks!# #r2   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$ )NTrX  )rU  rZ  r  )rY   rN   r[  r  r  r,   r   r\  )rF   r  rZ   r]  rU  rZ  s         r/   r  r  .  s_     **,CFFH	ax	@B1:D"KII48IDS'B''r2   rY  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bound2rv  )p_for_targetrJ   rN   p_for_iteratorrh  r   r   p_for_from_relationrY   rQ   p_for_from_stepr   r  r   r   rZ   rP   rq   )rF   rY  r  r	  r
  r  rel1	name2_posname2rel2_posrel2r  rv  s                r/   r[  r[  :  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# $ $# 	 	
	r2   c                     U R                   [        ;   a  U R                   nU R                  5         U$ U R                  S5        g )Nz#Expected one of '<', '<=', '>' '>=')rJ   inequality_relationsrN   r   r   s     r/   r  r  g  s3    tt##TT			56r2   c                 ~    U R                   S:X  a-  U R                  S:X  a  U R                  5         [        U 5      nU$ g )NrI   by)rJ   rM   rN   r   )rF   rv  s     r/   r  r  q  s2    ttw1::-	!}r2   )r   r   r   r   rj   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  )rY   r   rJ   rN   rT   r   rP  )rF   rj   rZ   rt   rR  s        r/   p_targetr    s    
**,C!Dtts{	ddj LL*+tts{FFH	 ddj 
 ""355r2   c                     [        U S5      $ )Nr   )r  r   s    r/   r  r    s    Atr2   c                     U R                  5       nU(       a  [        U 5      nO[        U 5      nU(       a  [        R                  O[        R
                  " X4S9$ )N)sequence)rY   r  r   r   AsyncIteratorNodeIteratorNode)rF   rY  r  rZ   rt   s        r/   r  r    sA    
**,C!}|+3I''9O9OOQTddr2   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|   r$  r|   )rU  except_clausesrZ  finally)rU  finally_clausezExpected 'except' or 'finally')
rY   rN   r  rJ   rT   p_except_clauser   TryExceptStatNodeTryFinallyStatNoder   )rF   rZ   rU  r%  rZ  r'  s         r/   p_try_statementr+    s     **,CFFH1:DNKtt!!ddh!!/!"45 ddh446>FFH!!*K&&s%' 449Ktty	 '': 	: 	
01r2   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$ )
NFri   rS   rI   r  r    r  T)patternr	  rU  is_except_as)rY   rN   rJ   rr   r   r   rP  rl   rM   rK   r  rQ   r  r  r   ExceptClauseNode)rF   rZ   r  r  r.  pos2rP   rU  s           r/   r(  r(    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 0r2   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)rY   rN   r  r  compile_time_evalrK   find_include_fileincluded_filesrT   r   get_file_objectr   encodingr2  p_statement_listr   r  )
rF   r4   rZ   unicode_include_file_nameinclude_file_nameinclude_file_pathsource_descr  s2trees
             r/   p_include_statementr?    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)rN   rM   r   p_with_templater  )rF   r   s     r/   p_with_statementrC    s@    FFHzzZ(8(8q! K AKr2   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
Fr8   r   r   ri   r  NrU  )rJ   r   rN   p_with_items_listrq   r   r  reversed)	rF   r  brackets_succeededrs  errorsrU  clsrZ   r.   s	            r/   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  )NrS   r   )rT   p_with_itemrJ   rN   )rF   r  rs  s      r/   rE  rE  	  sS    E
[-.443;
 L	 	
443;L r2   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$ )	NrI   )r"   gilzwith gil/nogil cannot be asyncr   r   )stater`  r  )managerr	  r  )rY   r   rJ   rM   r   rN   rr   rq   r   GILStatNoder   WithStatNode)rF   r  rZ   rN  r`  rO  r	  s          r/   rK  rK  +	  s     **,CAJJBR4RGG45

	 	443;FFHq	IHHSM  #Y'OOO)447?qzzT1FFH#A&F!!3v(dddr2   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!  rS   ri  ri   z-Syntax error in template function declaration)rY   rN   rq   rT   rM   rJ   r  expect_indentr%   rC   p_c_func_or_var_declarationexpect_dedentr   )rF   rZ   rC   body_ctxfunc_or_vars        r/   rB  rB  I	  s    
**,CIFFHHHSMQZZ FFH
**
	$	 **
 HHSMtts{		HI	5&1!(C	cBCr2   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continuerW   raiser  r  r  r  assertr  )rJ   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )rF   r  r   s      r/   p_simple_statementrc  c	  s    	ttx!!$: K9 
	#A&6 K5 
 #2 K1 
". K- 
q!* K) 
 #& K% 
	#A&" K! 
	!!$ K 
 # K 
&	&!!$ K 
&qL K 
 # K 
	!!$
 K	 
" K *!,Kr2   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$ )Nra  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)rc  rZ   r   r   r  rT   rJ   rN   r@  r  r  rt   r   rP   r   r  )rF   r4   r  r  rZ   r  s         r/   p_simple_statement_listrf  	  s6    aCD
((CEdE..//T
$$#+	44%%!!GdE..//T $$#+ !!#&	UqQx!!#5tt%%dE..//yy  TYY^^v%=Z\_`<=Kr2   c                 N    U R                   nSU l         [        U 5      nXl         U$ )Nr   )r  r  )rF   oldrt   s      r/   p_compile_time_exprri  	  s)    


CAa=DKr2   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      $ )Nr9  r  Tr  )rY   r  rN   rQ   rq   ri  r3  compile_time_valuedeclarer  r   r  )rF   rZ   denvrP   rt   r;  s         r/   p_DEF_statementrn  	  s    
**,CDFFH1:DHHSMq!D''-T!)DAc""r2   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)rY   r3  r  rN   ri  r  rk  r  rJ   r   r  )	rF   r4   rZ   
saved_evalcurrent_evalrm  r   rt   rU  s	            r/   p_IF_statementrt  	  s    
**,C$$JLDF
	"1%*RtD4K4KD4Q/RqFL446>  	ttv~	*qF##C($Mr2   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_classr`  propertyrx  c_class_pxdr'   zdecorator not allowed here)r  re  cpdefr{  r>  rI   r>  r  r  )r  re  r  )r  rx  r`  r|  r~  zcdef statement not allowed here)rA   %'api' not allowed with this statementr   r  r  r~  r  r{  )r  r`  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&  ra  ))r?   rY   rJ   r=   r   p_ctypedef_statementrK   compiler_directivesgetr   rn  rt  p_decoratorsrD   rM   r  rN   p_cdef_statementr   CFuncDefNodeCVarDefNodeCClassDefNodeCStructOrUnionDefNodeCEnumDefNoder   r  r#   r  p_class_statementr?  p_property_declp_ignorable_statementr   r  r  r+  rC  r  put_backp_match_statementrf  )rF   r4   r  r?   rZ   r  rA   r   tup
ident_name	ident_posmatch_statements               r/   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Wr2   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DEDENTr  ra  Fr   r   r  )	rY   rJ   r  r   r   r  rT   r@  r  )rF   r4   r  rZ   r  r  s         r/   r8  r8  \
  s     **,CE
$$'
'1_EdE..//T $$'
' !!#&&	UqQx!!#55r2   c                     [        XSS9S   $ )NFwith_doc_onlyr   )p_suite_with_docstringrF   r4   s     r/   r  r  o
  s    !!>qAAr2   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$ )
Nri   r  r  Fr   )r  r{  r`  r'   zSyntax error in declarationsTr  )rq   rJ   rN   rS  p_doc_stringr8  rU  r#   r   r=   rf  r  r  _extract_docstring)rF   r4   r  docrU  s        r/   r  r  t
  s    HHSM
Ctty		q/C'	77GG;5GI99@@*12D#A&D;dS&t,	9r2   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   rI   r9  rC   Tr   r   r:  r   r7  r8  rS   zUnmatched %sz or )rJ   r   r$  rM   rN   r   rr   r   r   r   CComplexBaseTypeNoderZ   r   r?  rT   r@  r  )rF   
end_sy_setrC   rB  rC  pos_idxparsed_typeidentr   r   r   keyword_nodewas_keywords                r/   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 ((r2   nonemptyc                 H    U R                   S:X  a	  [        XS9$ [        XUS9$ )Nr   r  r  rC   )rJ   p_c_complex_base_typep_c_simple_base_type)rF   r  rC   s      r/   r   r   
  s%    tts{$Q>>#AINNr2   c                     U R                   S:X  a2  U R                  [        ;   a  U R                  nU R                  5         U$ [	        S5      $ )NrI   r  )rJ   rM   calling_convention_wordsrN   r   )rF   r   s     r/   p_calling_conventionr  
  s;    ttw1::)AA	R  r2   )	__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   rS   r   )
componentsr!  )rY   rN   r   r   r   r  rJ   rT   r   rq   is_memoryviewslice_accessp_memoryviewslice_accessp_buffer_or_template)rF   rC   rZ   r   r   	type_noder  s          r/   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r2   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   rI   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   )rP   module_pathis_basic_c_typesignedr  r  rC   r!  )r   rP   )rY   rJ   rM   r   rN   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_namerT   rQ   r  r  CSimpleBaseTypeNoder  r  r  CNestedBaseTypeNode)rF   r  rC   is_basicr  r  r  r  rZ   r  r  r   rP   r  old_posr  s                   r/   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	r2   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)ri  ri  r!  rK  rf  )rB  rC  r   )rY   rN   r  rq   rJ   r  r   rV  rS  rZ   r   r   )
rF   r   rC   rZ   rB  rC  rL  r;  rX  r   s
             r/   r  r  ]  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$ )NFri   Tr  r<  )rJ   rM   rY   rN   rT   r  )rF   savedretvalsvs       r/   r  r  x  s     ddAJJ

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

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

B  Mr2   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 ':'.ri  )r   axes)	rY   rN   rj  r@  r   rq   rl  r   r   )rF   r   rZ   rn  r  r~  rp  r   s           r/   r  r    s}     **,CFFH$Q'MJ	y>AGGZ[   HHSMs/G**3+F Mr2   c                 T    U R                   S:H  =(       a    U R                  [        ;  $ rH   )rJ   rM   r  r   s    r/   looking_at_namer    s    447?Iqzz1IIIr2   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)NFrI   r"  Tr   r#  )r   ri  r   r!  ri  r   r   )
rM   base_type_start_wordsrJ   rY   rN   rT   rq   r  r   reverse)rF   is_typerP   r  dotted_pathr  ps          r/   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'r2   c                 T    U R                   S:H  =(       a    U R                  [        ;   $ rH   )rJ   rM   r  r   s    r/   r  r    s!     447?Bqzz-BBBr2   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)NrI   r"  F)rJ   rM   rY   rN   r  )rF   rP   r  r   s       r/   r  r    sM    ttwzz::<	ddck	

7D+r2   )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   rI   r  r  r    r  r<  r  )rJ   rM   sign_and_longness_wordsrN   )rF   r  r  s      r/   r  r     s    FH
$$'/ajj,CC::#FZZ8#FZZ7"HZZ6!MH	 $$'/ajj,CC r2   c                 d    [        U S5      nUb  [        U5      nU R                  Ul        U$ S nU$ )Nr  )r  r   r  r7  )rF   literalcnames      r/   p_opt_cnamer    s>    "1c*Gg&** L Lr2   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  )rP   r  T)r   r  r  r  r  z&%s on something that is not a functionr!  r   r!  r   )rY   rJ   rN   r  r   CNameDeclaratorNoderK   rL   p_c_func_declaratorr   rq   p_c_simple_declaratorcalling_conventionr   p_c_array_declarator)rF   r4   r   r  r  r  r  r  rZ   rd  r   s              r/   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 $$*
 Mr2   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$ )Nri  )rd  	dimension)rY   rN   rJ   r  rq   r   CArrayDeclaratorNode)rF   rd  rZ   dims       r/   r  r  B  sM    
**,CFFHtts{mHHSM%%cCHHr2   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   )rd  rl   has_varargsexception_valueexception_checkr"   with_gilhas_explicit_exc_clause)p_c_arg_listp_optional_ellipsisrq   p_nogilp_exception_value_clauser>   r   rY   
p_with_gilr   CFuncDeclaratorNoder"   )rF   rZ   r4   rd  r  rl   ellipsisr"   exc_val	exc_check
exc_clauser  s               r/   r  r  N  s     |/02D"1%HHHSMAJE%=aS[A[%\"G
JJL 	
 WQZE!}H$$S!..h8i ir2   )r   r   r   r^   r   z++z--r   r   r   r   r   r   rS   r   r   r   r   r   r   []()r-  r9  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 )Nrg  r#  r  rI   )r   r  r  r  r  )rd  r   r   zDeclarator should be emptyr   r9  zEmpty declaratorr  ::r	  z+-*/<=>!%&|([^~,r   r   r   r  r!  ri  r  )r   r   r   r   r    z,Overloading operator '%s' not yet supported.Fr    )rP   r  default)rY   r  rJ   rN   rM   r   r   CConstDeclaratorNodeCPtrDeclaratorNoderK   cpp CppRvalueReferenceDeclaratorNodeCReferenceDeclaratorNoder   r  rr   rB   r>   rq   supported_overloaded_operatorsr  r  )rF   r4   r   r  r  r  r  rZ   r  	is_ptrptr	const_posr  rd  r   
node_classr   rP   r  r[   r  s                       r/   r   r   q  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)NrI   r"   TFrJ   rM   rN   r   s    r/   r  r    s'    ttw1::0	r2   c                 h    U R                   S:X  a"  U R                  5         U R                  S5        gg)Nr  rM  TF)rJ   rN   expect_keywordr   s    r/   r  r    s*    ttv~		r2   	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.
FNTrI   noexceptr$  r   r   r    r"   r   zf'except +nogil' defines an exception handling function. Use 'except + nogil' for the 'nogil' modifier.r:  r   )	rJ   rM   rN   rY   r   r  r   r  rr   )rF   r,  r  r  r  plus_char_posrP   s          r/   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))r2   )r   r#  rz  r   ri   r^   	in_pyfuncr  kw_onlyrk   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  r1  rk   rS   r   )rJ   c_arg_list_terminatorsrT   p_c_arg_declrN   )	rF   r4   r0  r  r  r1  rk   rl   is_self_args	            r/   r  r     su     DK
$$,
,L+!# 	$ 443; K 	
 $$,
, Kr2   c                 <    U R                   S:X  a  [        U 5        gg)Nrz  TF)rJ   r{  r   s    r/   r  r  4  s    ttu}r2   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   )rP   r  r  r  r  r  r5  rC   r  )r   r   rI   r  zExpected 'None'z*'%s None' only allowed in Python functionsr   r   ri   r9  r  )r   r   r!   z;default values cannot be specified in pxd files, use ? or *)r   r   not_noneor_noner  r  r1  )rY   r   r   r  r   r   rJ   rN   rM   r   r  r=   r   r  	modifiersrr   CArgDeclNode)rF   r4   r0  r  r  r1  rk   rZ   r9  r:  r  r  r   r   r  s                  r/   r4  r4  =  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 r2   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  )rY   rr   r   AnnotationNode)rF   rZ   rt   s      r/   r  r  t  s)     **,C!9D##C33r2   c                 f    U R                   S:X  a!  U R                  S:X  a  U R                  5         gg)NrI   r#   TFr)  r   s    r/   p_apir@    s'    ttw1::.	r2   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 cpdefri   r{  rw  z*Extension type definition not allowed herez(Extension types cannot be declared cpdefrI   r+  z/C struct/union/enum definition not allowed herer  z'C struct/union cannot be declared cpdeffused)p_visibilityr>   r#   r@  r   rJ   p_cdef_extern_blockrN   r  r"   rA   p_cdef_blockr=   p_c_class_definitionrM   p_cpp_class_definitionstruct_enum_unionp_struct_enump_fused_definitionrT  rF   rZ   r4   s      r/   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7r2   c                      [        X" SS95      $ )NT)r?   )r  r  s     r/   rF  rF    s    1cd+,,r2   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	  )r?   r>   rB   )include_fileverbatim_includerU  rB   )rA   r   rq   rJ   rN   r  rM   rB   r  r"   r  r   CDefExternNode)rF   rZ   r4   rO  rP  rU  s         r/   rE  rE    s    
c@ALHHVtts{	'3/2
$X
6Czz[ 	(C03qzz	 4ADA#+MM	# #r2   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{  rI   r  Tr  zUnnamed scoped enum not allowedr   r   r  r   r   )rP   r  r  r  r  r  ri   r  r  r	  zDEmpty enum definition not allowed outside a 'cdef extern from' blockrx  )rP   r  scopedrs  underlying_typer@   r>   create_wrapperr#   in_pxdr  )rN   rK   r!  rJ   rM   r  rB   r   r   rq   r   r  p_c_enum_linerS  r  rU  r>   r  r@   rA   r#   r=   )	rF   rZ   r4   rS  rP   r  rT  rs  r  s	            r/   p_c_enum_definitionrX    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@ @r2   rs  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  rS   r  zSyntax error in enum item list)rJ   p_c_enum_itemrN   r  )rF   r4   rs  s      r/   rW  rW    sm    ttv~ae$ddckFFHtt))!%(	 ddck 	
56r2   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  r9  )rP   r  r;  )
rY   rQ   r  rB   rJ   rN   rr   rT   r   CEnumDefItemNode)rF   r4   rs  rZ   rP   r  r;  s          r/   rZ  rZ  "  s    
**,C1:DNE}2$t+Etts{	q		LL''E3 4r2   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  TrI   r  r  ri   r  r  r  r  )r>   r  r	  zOEmpty struct or union definition not allowed outside a 'cdef extern from' blockz*Syntax error in struct or union definitionrx  )	rP   r  r  
attributesr@   r>   r#   rV  r  )rM   rN   rJ   expectedrQ   r  rB   r  rq   rS  r%   r>   rT   rT  rY   rU  r   r   r  r@   r#   r=   )	rF   rZ   r4   r  r  rP   r  r^  rV  s	            r/   p_c_struct_or_union_definitionr`  1  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r2   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:
    ...
rw  z&Fused type definition not allowed hereri   r  r  zNeed at least one type)rP   types)r=   r   rN   rQ   rq   r  rS  rJ   rT   r   rU  r   FusedTypeNode)rF   rZ   r4   rP   rb  s        r/   rK  rK  _  s     yy00c;<FFH1:DHHSMOOE
$$(
446>LLq)*FFH	 $$(
 OOc+,sU;;r2   c                 R    U R                   S:X  a  [        XU5      $ [        XU5      $ )Nr  )rM   rX  r`  rL  s      r/   rJ  rJ    s(    zzV"13//-ac::r2   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$ )	NrI   )r	  rB  readonlyr(   z Conflicting visibility options 'z' and 'r  Fr   )rJ   rM   r   rN   )rF   prev_visibilityr>   s      r/   rD  rD    sa     Jttw1::)IIZZ
i'J,IGG"J07<  >	r2   c                     U R                   S:X  a;  U R                  S;   a+  U R                  nU R                  5         U/[        U 5      -   $ / $ )NrI   )r!   )rJ   rM   rN   p_c_modifiers)rF   modifiers     r/   ri  ri    sA    ttw1::4::	zM!,,,Ir2   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  )r;  )r  r  r  rI   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   ri   )r  r|  rx  r~  rl  z&C function definition not allowed herer`  r   )	r>   r   r   rU  r  r;  r#   rA   is_const_methodrS   r  r   z&Syntax error in C variable declarationr  )rx  r~  )r>   r   declaratorsrV  r  r#   r;  rA   )r=   ri  r   rC   r   rA   rJ   rM   rN   r   rr   r  r%   r   r  r>   r#   rn  rT   
start_liner  r  r  )rF   rZ   r4   r  r;  r   r   rn  r  suiter   ro  doc_lines                r/   rT  rT    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"??''!//+ Mr2   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)r@   r>   r{  rI   rC  r8  )r  r  z"Syntax error in ctypedef statementr  rx  )r   r   r>   r#   rV  )rY   rN   rD  r>   r@  r#   rJ   rG  rM   rI  rJ  rK  r   r   r  r   CTypeDefNoder=   )rF   r4   rZ   r>   r#   r   r   s          r/   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 	0r2   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)rJ   rY   rN   r   rT   r   DecoratorNoder  )rF   r  rZ   rv  s       r/   r  r     sm    J
$$#+jjl	$Q'	%--cGH	=> $$#+ r2   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.
    rI   zTCannot use cdef modifier '%s' in Python function signature. Use a decorator instead.Fr   )rJ   r   r   rQ   )rF   rP   s     r/   _reject_cdef_modifier_in_pyry    s=     	ttw4?2	fimmuz{qzKr2   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.rI   r   )rj   rm  r`  r   )	rP   rl   rm   rn   r  rU  r  r  return_type_annotation)rZ   rY   enter_asyncrN   ry  rQ   rq   rJ   rM   rp   r  r  r%   
exit_asyncr   DefNode)rF   r  r  rZ   rP   rl   rm   rn   r{  r  rU  s              r/   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 7r2   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)r0  r  rk   r^   r   zTGot zero positional-only arguments despite presence of positional-only specifier '/'r   rS   z-Syntax error in Python function argument listr   rI   )rk   )r0  r  r1  rk   r#  )r  rJ   r@  r   rN   pos_onlyrU  p_py_arg_decl)rF   rj   rk   rl   rm   rn   r   s          r/   rp   rp   8  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))r2   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$ )Nri   )rP   r  )rY   rQ   rJ   rN   r  r   PyArgDeclNode)rF   rk   rZ   rP   r  s        r/   r  r  ^  sM    
**,C1:DJQTTS[	!!_
sjIIr2   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r5  rJ  r{  r   r  )rP   basesrC  r  rU  r  force_py3_semantics)rY   rN   r   rQ   r  r7  rJ   rH  r^  r   rP  r  r%   r   PyClassDefNoderK   r  )
rF   r  rZ   
class_namerZ  rX  rB  rC  r  rU  s
             r/   r  r  i  s     **,CFFHwqz*J++JILtts{(9!%(P%":3Q]"^	''"5	&q#G*<=IC!zII449; ;r2   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 classrI   r  r   Fr  z$C classes cannot take keyword bases.rJ  r!  )rB  r	  zBName options only allowed for 'public', 'api', or 'extern' C classri   rx  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 classrB  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')r>   r@   r#   r  r  r  r  objstruct_nametypeobj_name
check_sizerV  r  rU  )rN   rQ   rJ   rT   r>   r   rM   rH  r^  r   rP  r#   rY   p_c_class_optionsr=   r  r%   r  r   r  r@   r  )rF   rZ   r4   r  r  r  r  r  r  r  rB  rC  r  
body_levelr  rU  s                   r/   rG  rG    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* r2   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!  rI   objectrI  r  )ignorewarnr   z/Expected one of ignore, warn or error, found %rrS   ri  z)Expected 'object', 'type' or 'check_size')rq   rJ   rM   rN   rQ   r   )rF   r  r  r  s       r/   r  r    s    NLJHHSM
447?::!FFH$QZNZZ6!FFH"1:LZZ<'FFH J!<<IJVW443;	! " HHS=>33r2   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  )rP   r  rU  )rY   rN   rQ   r  r%   r   PropertyNode)rF   rZ   rP   r  rU  s        r/   r  r    sJ    
**,CFFH1:D&	3Z 6ICc#AAr2   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)rJ   rY   r&  r  r   r  )rF   rZ   string_nodes      r/   r  r    sL    
 	tt~jjlQi	1DI!!#88r2   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)rJ   rY   r  r  r   )rF   rZ   r  bytes_resultunicode_results        r/   r  r     s^    tt~jjl-A!-D*N	5M9!!IJr2   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  rt   is_string_literalr  rZ   r  r   r  r   r;  )r   doc_noder  r  s       r/   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r2   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   Tra  r  Syntax error in statement [rS   ri  )r8  rJ   r   r  rM   )rF   r=   r4   rU  s       r/   p_coder  .  sL    As514HDttu}	JQZZ(* 	+Kr2   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 : z and r8  r  legacy_implicit_noexcept)rJ   rY   !_match_compiler_directive_commentrM   r   r3  r   parse_directive_list
ValueErrorr   rl   rN   directive_typesr  rO  r   rK   set_language_levelr  r,   )rF   r   rZ   mdirectives_stringnew_directiveserP   s           r/   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3rx  r  r   Tra  r  r  rS   ri  )r  rU  full_module_namedirective_comments)rY   r  r2  rK   r  r  r  r8  rJ   r   r  rM   r   )	rF   r  r  r4   rZ   r  r=   r  rU  s	            r/   p_moduler  c  s    
**,C6q9Ayy'			$$S)LXE
q/CAs/FDttu}	JQZZ(* 	+cT)9+=? ?r2   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$ )Nr9  r   FT)rQ   rJ   rq   )rF   rP   requireds      r/   p_template_definitionr  x  sJ    1:Dtts{		 > >r2   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!  rS   ri  r   r  r   z&Name options not allowed for C++ classri   r  rl  )r>   r=   r"   r  r  r  z$Syntax error in C++ class definitionrx  )rP   r  base_classesr>   rV  r^  rC   )rN   rQ   r  rB   rJ   r   r  rT   rq   r   rY   r  rS  r  r%   r>   r"   rC   p_cpp_class_attributer  rU  r   CppClassNoder=   )rF   rZ   r4   r  r  rC   rP   r  template_namesr  r"   r^  rV  s                r/   rH  rH    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+  rv  rI   r  r  )rY   rJ   r  rM   rH  r  rI  rJ  rT  r   r  r  r  rD   r  r  r   r   r  )rF   r4   rZ   r  r   r  s         r/   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r2   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)NrI   r&  rS   ri   rJ  r  )subjectcases)rJ   rM   rY   r   rN   r   rT   rr   r   rP  rq   r  rS  p_case_blockrU  r   	MatchNode)rF   r4   rZ   rH  r  subjectsr  s          r/   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$ )NrI   caser{   )r-  rU  guard)
rJ   rM   r_  rN   rY   
p_patternsrr   r  r   MatchCaseNode)rF   r4   rZ   r-  r  rU  s         r/   r  r    s    DDGO

f 4	

6FFH
**,CmGEttt|	q	1?D''4UUr2   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   r8  rS   )ri   r{   patterns)
rY   r   p_maybe_star_patternr   rl   rT   rJ   rN   r   MatchSequencePatternNode)rF   r  seqrZ   rH  r-  r  s          r/   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   r  T)r	  is_star)rJ   rN   rM   p_pattern_capture_targetr   MatchAndAssignPatternNoderY   	p_pattern)rF   r	  r-  s      r/   r  r  1  sn     	tts{	::-a0FFFH ::JJL
 A,r2   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   rI   r  r  whatzInvalid pattern target)rY   rT   p_closed_patternrJ   rN   r@  r   OrPatternNoderM   r   
as_targetsr  r   	ErrorNoderl   rr   rZ   r   )rF   r  rZ   r-  rH  rt   s         r/   r  r  E  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
rI   r  r  r!  r   N)rJ   rM   rY   rN   r   r  p_mapping_patternp_sequence_patternr   p_group_patternp_literal_patternp_capture_patternp_value_patternp_class_pattern)rF   rZ   rH  r   s       r/   r  r  i  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  rI   )r;  is_is_checkzFailed to match literal)rJ   rY   rN   r  rM   r   r  UnaryMinusNoder   r_   r  r   MatchValuePatternNoder  r  )
rF   next_must_be_a_numbersignsign_posrJ   rZ   resr;  add_posr   s
             r/   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%&r2   c                 Z    [         R                  " U R                  5       [        U 5      S9$ )N)r	  )r   r  rY   r  r   s    r/   r  r    s&    33	

'* r2   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$ )NrI   Expected identifierr"  r/  )r   r9  zUnexpected symbol '%s'r:  )rJ   r   rY   r  rM   rN   rQ   r   r3  r   r  )rF   rZ   r  attr_posattrs        r/   r  r    s    ttw	%&
**,C
JJ
CFFHtts{	
$$#+::<	qz%%h4H	 $$#+
 	ttz	(144/0//??r2   c                 `    U R                  S5        [        U 5      nU R                  S5        U$ )Nr   r   )rq   r  )rF   r-  s     r/   r  r    s&    HHSMlGHHSMNr2   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!  ri  r   rS   r   r   z3tuple-like pattern of length 1 must finish with ','r  zExpected '[' or '(')
rJ   rY   rN   rT   r  r@  r   rq   r   r  )rF   openerrZ   closerr  s        r/   r  r    s    TTF
**,C#3	ddfnOO034tts{S=S]a%7GGQR ddfn 	
66sNN	%&r2   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#  ri   rS   z7** pattern must be the final part of a mapping pattern.r  r   r   )keysvalue_patternsdouble_star_capture_target)rY   rq   rJ   rN   r   MatchMappingPatternNoder  r   r  r;  r  r  rT   r   r  )
rF   rZ   r  items_patternsstar_star_arg_posrH  r-  rL  r;  kvs
             r/   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"  r/  r   r   )class_rS   z+Positional patterns follow keyword patternsr  r   r   )r   positional_patternskeyword_pattern_nameskeyword_pattern_patterns)rY   r  rM   rN   rJ   rQ   r   r3  rq   r   ClassPatternNoder   rT   r  p_keyword_patternr   r  )rF   rZ   r  r  r  r   r  keyword_patternskeyword_patterns_errorrH  r  s              r/   r  r  G  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$ )NrI   r  r9  )rJ   r   r  rM   rN   rq   r  )rF   r   r;  s      r/   r  r  y  sM    ttw	%&
JJ
CFFHHHSMaLE:r2   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$ )NrI   r  r  z$Pattern capture target cannot be '_')r"  r   r9  zIllegal next symbol '%s')rJ   r   rM   r  rN   )rF   r	  s     r/   r  r    ss     	ttw	%&zzS	67Azz"FFFHtt	*QTT12Mr2   r=   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)
tagrZ   z[
z]
)writerI  rR  print_parse_treer   r   Noder  r  r  r9   rZ   sortedr+   rs  rO  )	r  r   r=   rL  indr]  r  rP   r;  s	            r/   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r8   )zExpected an identifier)T)NN)r  r*   )F)r   )FN)FFFT)NF)r   T)r  rl  r  rR  rh  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%   cfuncrQ   rV   r\   rg   ru   rr   rx   r   r   r   r   r   r   r   r   r   r   r   r   	frozensetr   r   r   r   r   r   r   r   r   r   r   r	  r  r  r   r%  r'  r  rH  r^  r,  r2  rj  rr  ru  r{  rl  ccallr}  r&  r  r  r  r  r  r  r  r  r  r  r  compiledecoder&  r   r   r  r  rO  r  r"  r  rV  rN  rT  r  r  r|  r~  rQ  r  r  r  rA  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r[  r  r  r  r  r  r  r+  r(  r?  rC  r  rE  rK  rB  rc  rf  ri  rn  rt  r  r8  r  r  r  r   r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  rI  r  r  r   r  r  r$  r   r  r  r  r3  r  r  r4  r  r@  r  rF  rE  rX  rW  rZ  r`  rK  rJ  rD  ri  rT  r  r  ry  r  r  rp   r  r  rG  r  r  r  r  r  r  r  r  r  r  rH  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  s   0r/   <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 |   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   
   ( ,  >   ( 5, 5 5, ? ? ? F F F, |  ( F, F F 
' 
' 
', /1 /1V[[ /1 /1d '#E '# '#T 
Zl 
Z 
Z" |  * 	" 	" 	" 	" <    |   |     1 1 )5l )5 )5X 1\ 1 1( l  , 2\ 2 2@ .l . . " "J ),L ),U ), ),X 7L 7 7 7 fkk   d. d.U d. d.N #(C #(L #( #(p  %8$  % 9;

W		 fZ#9"  %#9 $  %8 4 4, ,U ,v/@/@ ,U , , ,, ,FKK ,D , ,^ R| R R$*$5$5R?E{{ROTR Rx /L / /< <   (, ( (   , jZ< jZ jZ\ 3 3 3  , d   < t   \    ,   L   
| 
 
 B B B >>)Y 8( .) *  0, 0 0 2L 2 2 0W, 0W 0Wf , , ,8 . . .8 /| / / # #FKK # # $ $ $ 'L ' ' 4, 4 4 * * *: 0, 0 0@ N| Nfkk N Nb  |     
R\ 
Rv{{ 
Ru 
R 
R    
B, 
B 
B y) = 3   
<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) 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[[ " "Cq8s   2AAY