
     
ziP                     8    S SK JrJrJr  SSKJr   " S S5      rg)    )CallableListOptional   )c_astc            	       T
   \ rS rSr% Sr\\S'   \\S'   SlS\SS4S jjrS\	4S jr
S	\R                  S\	4S
 jrS	\\R                     S\	4S jrS\R                   S\	4S jrS\R$                  S\	4S jrS\R(                  S\	4S jrS\R,                  S\	4S jrS\R0                  S\	4S jrS\R4                  S\	4S jrS\R8                  S\	4S jr0 SS_SS_SS_SS_SS_SS_S S_S!S"_S#S"_S$S"_S%S"_S&S'_S(S'_S)S*_S+S*_S,S-_S.S-_S/S-0ErS\R>                  S\	4S0 jr S\RB                  S\	4S1 jr"S\RF                  S\	4S2 jr$S\R                  S\	4S3 jr%SlS\RL                  S4\S\	4S5 jjr'S\RP                  S\	4S6 jr)S\RT                  S\	4S7 jr+S\RX                  S\	4S8 jr-S\R\                  S\	4S9 jr/S\R`                  S\	4S: jr1S\Rd                  S\	4S; jr3S\Rh                  S\	4S< jr5S\Rl                  S\	4S= jr7S\Rp                  S\	4S> jr9S\Rt                  S\	4S? jr;S\Rx                  S\	4S@ jr=S\R|                  S\	4SA jr?S\R                  S\	4SB jrAS\R                  S\	4SC jrCS\R                  S\	4SD jrES\R                  S\	4SE jrGS\R                  S\	4SF jrIS\R                  S\	4SG jrKS\R                  S\	4SH jrMS\R                  S\	4SI jrOS\R                  S\	4SJ jrQS\R                  S\	4SK jrSS\R                  S\	4SL jrUS\R                  S\	4SM jrWS\R                  S\	4SN jrYS\R                  S\	4SO jr[S\R                  S\	4SP jr]S\R                  S\	4SQ jr_S\R                  S\	4SR jraS\R                  S\	4SS jrcS\R                  S\	4ST jreS\R                  S\	4SU jrgS\R                  S\	4SV jriS\R                  S\	4SW jrkS\R                  S\	4SX jrmS\R                  S\	4SY jroS\R                  S\	4SZ jrqS\R                  \R                  -  \Rd                  -  S[\	S\	4S\ jrrS]\s\R                     S\	4S^ jrtS]\s\Rl                     S\	4S_ jruSlS\R                  S`\S\	4Sa jjrvS\RL                  S\	4Sb jrw/ Sc4S\R                  Sd\s\R                     Se\S\	4Sf jjrxS\R                  Sg\y\R                  /\4   S\	4Sh jrzS\R                  S\	4Si jr{S\R                  S\4Sj jr|Skr}g)m
CGenerator   zUses the same visitor pattern as c_ast.NodeVisitor, but modified to
return a value from each visit method, using string accumulation in
generic_visit.
indent_levelreduce_parenthesesreturnNc                     SU l         Xl        g)zrConstructs C-code generator

reduce_parentheses:
    if True, eliminates needless parentheses on binary operators
r   Nr   r   )selfr   s     H/var/www/html/venv/lib/python3.13/site-packages/pycparser/c_generator.py__init__CGenerator.__init__   s     "4    c                      SU R                   -  $ N )r   )r   s    r   _make_indentCGenerator._make_indent"   s    T&&&&r   nodec                 l    SUR                   R                  -   n[        XU R                  5      " U5      $ )Nvisit_)	__class____name__getattrgeneric_visit)r   r   methods      r   visitCGenerator.visit%   s.    DNN333tT%7%78>>r   c                 ^   ^  Uc  gSR                  U 4S jUR                  5        5       5      $ )N c              3   J   >#    U  H  u  pTR                  U5      v   M     g 7fNr"   ).0c_namecr   s      r   	<genexpr>+CGenerator.generic_visit.<locals>.<genexpr>-   s     J/YV4::a==/s    #)joinchildren)r   r   s   ` r   r    CGenerator.generic_visit)   s&    <77J$--/JJJr   nc                     UR                   $ r'   )valuer   r1   s     r   visit_ConstantCGenerator.visit_Constant/   s    wwr   c                     UR                   $ r'   namer4   s     r   visit_IDCGenerator.visit_ID2   s    vvr   c                 P    SnUR                   (       a  USUR                   -   -  nU$ )Nz#pragmar   )string)r   r1   rets      r   visit_PragmaCGenerator.visit_Pragma5   s%    883>!C
r   c                     U R                  UR                  5      nUS-   U R                  UR                  5      -   S-   $ )N[])_parenthesize_unless_simpler9   r"   	subscript)r   r1   arrrefs      r   visit_ArrayRefCGenerator.visit_ArrayRef;   s7    11!&&9|djj55;;r   c                     U R                  UR                  5      nX!R                  -   U R                  UR                  5      -   $ r'   )rD   r9   typer"   field)r   r1   srefs      r   visit_StructRefCGenerator.visit_StructRef?   s4    //7ff}tzz!''222r   c                     U R                  UR                  5      nUR                  b  U R                  UR                  5      OSnUS-   U-   S-   $ )Nr%   ())rD   r9   argsr"   )r   r1   frefrR   s       r   visit_FuncCallCGenerator.visit_FuncCallC   sG    //7%&VV%7tzz!&&!RczD 3&&r   c                 T   UR                   =S:X  a     SU R                  UR                  5       S3$ =S:X  a!    U R                  UR                  5      nU S3$ S:X  a   U R                  UR                  5      nU S3$  U R                  UR                  5      nUR                    U 3$ )Nsizeofzsizeof(rQ   zp++z++zp--z--)opr"   exprrD   )r   r1   operands      r   visit_UnaryOpCGenerator.visit_UnaryOpH   s    dd !AFF!3 4A66::166B!"~%::166B!"~%::166B$$y))r   z||r   z&&r   |   ^   &   z==   z!=>   z>=<z<=z>>   z<<+   -*	   /%c                    ^ ^ T R                  TR                  UU 4S j5      nT R                  TR                  UU 4S j5      nU STR                   SU 3$ )Nc                   > TR                  U 5      =(       dg    TR                  =(       aT    [        U [        R                  5      =(       a3    TR
                  U R                     TR
                  TR                     :  (       + $ r'   _is_simple_noder   
isinstancer   BinaryOpprecedence_maprX   dr1   r   s    r   <lambda>+CGenerator.visit_BinaryOp.<locals>.<lambda>|   se    $$Q' K** Kq%..1K''-1D1DQTT1JJ	r   c                   > TR                  U 5      =(       dg    TR                  =(       aT    [        U [        R                  5      =(       a3    TR
                  U R                     TR
                  TR                     :  (       + $ r'   rq   rv   s    r   rx   ry      se    $$Q' J** Jq%..1J''-0C0CADD0II	r   r   )_parenthesize_ifleftrightrX   )r   r1   lval_strrval_strs   ``  r   visit_BinaryOpCGenerator.visit_BinaryOpp   s\     ((FF
  ((GG
 1QTTF!H:..r   c                     U R                  UR                  S 5      nU R                  UR                  5       SUR                   SU 3$ )Nc                 6    [        U [        R                  5      $ r'   )rs   r   
Assignment)r1   s    r   rx   -CGenerator.visit_Assignment.<locals>.<lambda>   s    
1e.>.> ?r   r   )r{   rvaluer"   lvaluerX   )r   r1   r   s      r   visit_AssignmentCGenerator.visit_Assignment   sG    ((HH?
 **QXX&'qaz::r   c                 8    SR                  UR                  5      $ r   )r.   namesr4   s     r   visit_IdentifierTypeCGenerator.visit_IdentifierType   s    xx  r   c                     U=[         R                  S` =b  u     SU R                  U5      -   S-   $   =[         R                  S` =b  u   O  =[         R                  S` =b  u   O    O  SU R                  U5      -   S-   $  U R                  U5      $ )N {}rP   rQ   )r   InitListr"   ExprListCompoundr4   s     r   _visit_exprCGenerator._visit_expr   sx    !!TZZ]*S00 "!!!$4ENN$4$44TZZ]*S00zz!}$r   no_typec                    U(       a  UR                   OU R                  U5      nUR                  (       a!  USU R                  UR                  5      -   -  nUR                  (       a!  USU R                  UR                  5      -   -  nU$ )Nz :  = )r9   _generate_declbitsizer"   initr   )r   r1   r   ss       r   
visit_DeclCGenerator.visit_Decl   si     AFF4#6#6q#999AII...A66))!&&111Ar   c                    ^  T R                  UR                  S   5      n[        UR                  5      S:  a.  USSR                  U 4S jUR                  SS   5       5      -   -  nU$ )Nr   r   , c              3   D   >#    U  H  nTR                  US S9v   M     g7f)T)r   N)r   r)   declr   s     r   r,   ,CGenerator.visit_DeclList.<locals>.<genexpr>   s!      "@Kd3s    )r"   declslenr.   r   r1   r   s   `  r   visit_DeclListCGenerator.visit_DeclList   sc    JJqwwqz"qww<!		 "@A"   A r   c                     SnUR                   (       a!  USR                  UR                   5      S-   -  nX R                  UR                  5      -  nU$ )Nr%   r   )storager.   _generate_typerJ   r   s      r   visit_TypedefCGenerator.visit_Typedef   sF    99!))$s**A	  ((r   c                     SU R                  UR                  SS9-   S-   nUS-   U R                  UR                  5      -   $ )NrP   Femit_declnamerQ   r   )r   to_typerD   rY   r   s      r   
visit_CastCGenerator.visit_Cast   sC    $%%aiiu%EEK3w99!&&AAAr   c                     / nUR                    H#  nUR                  U R                  U5      5        M%     SR                  U5      $ Nr   exprsappendr   r.   r   r1   visited_subexprsrY   s       r   visit_ExprListCGenerator.visit_ExprList   ?    GGD##D$4$4T$:; yy)**r   c                     / nUR                    H#  nUR                  U R                  U5      5        M%     SR                  U5      $ r   r   r   s       r   visit_InitListCGenerator.visit_InitList   r   r   c                 "    U R                  USS9$ )Nenumr8   _generate_struct_union_enumr4   s     r   
visit_EnumCGenerator.visit_Enum   s    ///??r   c                 V    SR                  U R                  UR                  5      5      $ )Nz_Alignas({}))formatr"   	alignmentr4   s     r   visit_AlignasCGenerator.visit_Alignas   s     $$TZZ%<==r   c                     UR                   (       d(  SR                  U R                  5       UR                  S9$ SR                  U R                  5       UR                  U R	                  UR                   5      S9$ )Nz{indent}{name},
)indentr9   z{indent}{name} = {value},
)r   r9   r3   )r3   r   r   r9   r"   r4   s     r   visit_EnumeratorCGenerator.visit_Enumerator   sq    ww&--((*VV .  
 177((*VVjj) 8  r   c                 "  ^  T R                  UR                  5      nST l        T R                  UR                  5      nUR                  (       a6  SR                  U 4S jUR                   5       5      nUS-   U-   S-   U-   S-   $ US-   U-   S-   $ )Nr   ;
c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr'   r(   )r)   pr   s     r   r,   +CGenerator.visit_FuncDef.<locals>.<genexpr>   s     !GA$**Q--   !
)r"   r   r   bodyparam_declsr.   )r   r1   r   r   knrdeclss   `    r   visit_FuncDefCGenerator.visit_FuncDef   s    zz!&&!zz!&&!==zz!G!GGH$;)E1D84??$;%,,r   c                    SnUR                    Hx  nU=[        R                  S` =b  u     X R                  U5      -  nM1    [        R                  S` =b  u   X R                  U5      S-   -  nM`     X R                  U5      S-   -  nMz     U$ )Nr%   r   r   r   )extr   FuncDefr"   Pragma)r   r1   r   r   s       r   visit_FileASTCGenerator.visit_FileAST   sz    55C$U]]_C(A %\\^C4//A $C500A  r   c                    ^  T R                  5       S-   nT =R                  S-  sl        UR                  (       a(  USR                  U 4S jUR                   5       5      -  nT =R                  S-  sl        UT R                  5       S-   -  nU$ )N{
r^   r%   c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr'   _generate_stmt)r)   stmtr   s     r   r,   ,CGenerator.visit_Compound.<locals>.<genexpr>   s     M}t,,T22}r   z}
)r   r   block_itemsr.   r   s   `  r   visit_CompoundCGenerator.visit_Compound   sy    %'Q==Mq}}MMMAQ	T 5((r   c                     SU R                  UR                  5      -   S-   U R                  UR                  5      -   S-   $ )NrP   z){r   )r"   rJ   r   r4   s     r   visit_CompoundLiteral CGenerator.visit_CompoundLiteral  s6    TZZ''$.AFF1CCcIIr   c                     g)N;r   r4   s     r   visit_EmptyStatementCGenerator.visit_EmptyStatement  s    r   c                 N   ^  SR                  U 4S jUR                   5       5      $ )Nr   c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr'   r(   )r)   paramr   s     r   r,   -CGenerator.visit_ParamList.<locals>.<genexpr>
  s     AuE**r   )r.   paramsr4   s   ` r   visit_ParamListCGenerator.visit_ParamList	  s    yyAAAAr   c                 t    SnUR                   (       a!  USU R                  UR                   5      -   -  nUS-   $ )Nr   r   r   )rY   r"   r   s      r   visit_ReturnCGenerator.visit_Return  s3    66tzz!&&)))A3wr   c                     g)Nzbreak;r   r4   s     r   visit_BreakCGenerator.visit_Break  s    r   c                     g)Nz	continue;r   r4   s     r   visit_ContinueCGenerator.visit_Continue  s    r   c                     SU R                  UR                  5      -   S-   nUSU R                  UR                  5      -   S-   -  nUSU R                  UR                  5      -   S-   -  nU$ )NrP   z) ? z) : rQ   )r   condiftrueiffalser   s      r   visit_TernaryOpCGenerator.visit_TernaryOp  sk    $""166**V3	S4##AHH--66	S4##AII..44r   c                 ,   SnUR                   (       a  X R                  UR                   5      -  nUS-  nX R                  UR                  SS9-  nUR                  (       a1  X R                  5       S-   -  nX R                  UR                  SS9-  nU$ )Nzif ()
T
add_indentzelse
)r  r"   r   r  r  r   r   s      r   visit_IfCGenerator.visit_If  s    66AFF##A	U
	  d ;;99""$x//A$$QYY4$@@Ar   c                    SnUR                   (       a  X R                  UR                   5      -  nUS-  nUR                  (       a!  USU R                  UR                  5      -   -  nUS-  nUR                  (       a!  USU R                  UR                  5      -   -  nUS-  nX R	                  UR
                  SS9-  nU$ )Nzfor (r   r   r  Tr  )r   r"   r  nextr   r   r   s      r   	visit_ForCGenerator.visit_For)  s    66AFF##A	S66tzz!&&)))A	S66tzz!&&)))A	U
	  D 99r   c                     SnUR                   (       a  X R                  UR                   5      -  nUS-  nX R                  UR                  SS9-  nU$ )Nwhile (r  Tr  )r  r"   r   r   r   s      r   visit_WhileCGenerator.visit_While7  sM    66AFF##A	U
	  D 99r   c                     SnX R                  UR                  SS9-  nX R                  5       S-   -  nUR                  (       a  X R	                  UR                  5      -  nUS-  nU$ )Nzdo
Tr  r  z);)r   r   r   r  r"   r   s      r   visit_DoWhileCGenerator.visit_DoWhile?  sc    	  D 99	 9,,66AFF##A	T	r   c                     SnX R                  UR                  5      -  nUR                  (       a"  US-  nX R                  UR                  5      -  nUS-  nU$ )Nz_Static_assert(,rQ   )r"   r  messager   s      r   visit_StaticAssertCGenerator.visit_StaticAssertH  sO    	ZZ99HAAII&&A	Sr   c                     SU R                  UR                  5      -   S-   nX R                  UR                  SS9-  nU$ )Nzswitch (r  Tr  )r"   r  r   r   r   s      r   visit_SwitchCGenerator.visit_SwitchQ  s?    AFF++e3	  D 99r   c                     SU R                  UR                  5      -   S-   nUR                   H  nX R                  USS9-  nM     U$ )Nzcase :
Tr  )r"   rY   stmtsr   r   r1   r   r   s       r   
visit_CaseCGenerator.visit_CaseV  sI    djj((50GGD$$Td$;;A r   c                 T    SnUR                    H  nX R                  USS9-  nM     U$ )Nz	default:
Tr  )r&  r   r'  s       r   visit_DefaultCGenerator.visit_Default\  s2    GGD$$Td$;;A r   c                 X    UR                   S-   U R                  UR                  5      -   $ )Nr%  )r9   r   r   r4   s     r   visit_LabelCGenerator.visit_Labelb  s$    vv~ 3 3AFF ;;;r   c                 &    SUR                   -   S-   $ )Nzgoto r   r8   r4   s     r   
visit_GotoCGenerator.visit_Gotoe  s    #%%r   c                     g)Nz...r   r4   s     r   visit_EllipsisParamCGenerator.visit_EllipsisParamh  s    r   c                 &    U R                  US5      $ )Nstructr   r4   s     r   visit_StructCGenerator.visit_Structk  s    //8<<r   c                 8    U R                  UR                  5      $ r'   )r   rJ   r4   s     r   visit_TypenameCGenerator.visit_Typenamen  s    ""166**r   c                 &    U R                  US5      $ )Nunionr   r4   s     r   visit_UnionCGenerator.visit_Unionq  s    //7;;r   c                    SnUR                    HP  n[        U[        R                  5      (       a  USUR                   -   -  nM6  USU R	                  U5      -   S-   -  nMR     USU R                  UR                  5      -   -  nU$ )Nr%   .rB   rC   r   )r9   rs   r   IDr"   r   rY   )r   r1   r   r9   s       r   visit_NamedInitializer!CGenerator.visit_NamedInitializert  sz    FFD$))S499_$S4::d++c11	 
 	
UT%%aff---r   c                 $    U R                  U5      $ r'   r   r4   s     r   visit_FuncDeclCGenerator.visit_FuncDecl~  s    ""1%%r   c                 "    U R                  USS9$ NFr   rG  r4   s     r   visit_ArrayDeclCGenerator.visit_ArrayDecl      ""1E"::r   c                 "    U R                  USS9$ rK  rG  r4   s     r   visit_TypeDeclCGenerator.visit_TypeDecl  rN  r   c                 "    U R                  USS9$ rK  rG  r4   s     r   visit_PtrDeclCGenerator.visit_PtrDecl  rN  r   r9   c                 `   US;   aJ  [        U[        R                  [        R                  45      (       d   eUR                  nU R
                  nOZUS:X  d   e[        U[        R                  5      (       d   eUR                  c  SOUR                  R                  nU R                  nUS-   UR                  =(       d    S-   nUbe  US-  nXPR                  5       -  nU =R                  S-  sl        US-  nXT" U5      -  nU =R                  S-  sl        XPR                  5       S	-   -  nU$ )
z\Generates code for structs, unions, and enums. name should be
'struct', 'union', or 'enum'.
)r7  r>  r   Nr   r%   r   r^   r   r   )rs   r   StructUnionr   _generate_struct_union_bodyEnumvaluesenumerators_generate_enum_bodyr9   r   r   )r   r1   r9   membersbody_functionr   s         r   r   &CGenerator._generate_struct_union_enum  s    &&a%,,!<====ggG <<M6>!>a,,,,hh.dAHH4H4HG 44M3J!&&,B' IA""$$A"JAw''A"""$s**Ar   r]  c                 :   ^  SR                  U 4S jU 5       5      $ )Nr%   c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr'   r   r   s     r   r,   9CGenerator._generate_struct_union_body.<locals>.<genexpr>  s     EWTt**400Wr   r.   r   r]  s   ` r   rX  &CGenerator._generate_struct_union_body  s    wwEWEEEr   c                 F   ^  SR                  U 4S jU 5       5      S S S-   $ )Nr%   c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr'   r(   )r)   r3   r   s     r   r,   1CGenerator._generate_enum_body.<locals>.<genexpr>  s     >gUtzz%((gr   r   rc  rd  s   ` r   r\  CGenerator._generate_enum_body  s$    ww>g>>sCdJJr   r  c                 .   U(       a  U =R                   S-  sl         U R                  5       nU(       a  U =R                   S-  sl         U==[        R                  S` =b  u   GO0  =[        R                  S` =b  u   GO  =[        R
                  S` =b  u   O  =[        R                  S` =b  u   O  =[        R                  S` =b  u   O  =[        R                  S` =b  u   O  =[        R                  S` =b  u   O  =[        R                  S` =b  u   O  =[        R                  S` =b  u   Og  =[        R                  S` =b  u   ON  =[        R                  S` =b  u   O5  =[        R                  S` =b  u   O  =[        R                  S` =b  u   O    O    X0R!                  U5      -   S-   $ =[        R"                  S` =b  u     U R!                  U5      $   [        R$                  S` =b  u   X0R!                  U5      -   $    X0R!                  U5      -   S-   $ )zGeneration from a statement node. This method exists as a wrapper
for individual visit_* methods to handle different treatment of
some statements in this context.
r^   r   r   r   )r   r   r   Declr   CastUnaryOprt   	TernaryOpFuncCallArrayRef	StructRefConstantrC  Typedefr   r"   r   If)r   r1   r  r   s       r   r   CGenerator._generate_stmt  st   
 """$"#

$%""$$%**,,!%--//"%..""#%//##"%.."""%..""#%//##"%..""%((**!%--//"%..""#" 

1-55!!
 zz!}$ " 

1-- 

1-44r   c                 n   SnUR                   (       a  SR                  UR                   5      S-   nUR                  (       a!  USR                  UR                  5      S-   -  nUR                  (       a#  X R	                  UR                  S   5      S-   -  nX R                  UR                  5      -  nU$ )zGeneration from a Decl node.r%   r   r   )funcspecr.   r   alignr"   r   rJ   r   s      r   r   CGenerator._generate_decl  s    ::$s*A99!))$s**A77AGGAJ'#--A	  ((r   T	modifiersr   c                    U=[         R                  S` =Gb;  u     SnUR                  (       a!  USR                  UR                  5      S-   -  nX@R	                  UR
                  5      -  nUR                  (       a  U(       a  UR                  OSn[        U5       GH  u  pgU=[         R                  S` =b  u     US:w  a,  [        X&S-
     [         R                  5      (       a  SU-   S-   nUS-  nUR                  (       a!  USR                  UR                  5      S-   -  nUR                  b  XPR	                  UR                  5      -  nUS	-  nM    =[         R                  S` =bm  u     US:w  a,  [        X&S-
     [         R                  5      (       a  SU-   S-   nUR                  b  U R	                  UR                  5      OSnUSU-   S-   -  nGM<    [         R                  S` =bN  u   UR                  (       a3  SR                  UR                  5      n	U(       a  SU 3OSn
S
U	 U
 3nGM  SU-   nGM    GM     U(       a  USU-   -  nU$   =[         R                  S` =b  u     U R!                  UR
                  5      $   =[         R"                  S` =b  u     U R%                  UR
                  US9$   =[         R&                  S` =b!  u     SR                  UR(                  5      S-   $   =[         R                  S` =b  u   O5  =[         R                  S` =b  u   O  =[         R                  S` =b  u   O    O  U R%                  UR
                  X!/-   US9$  U R	                  U5      $ )zRecursive generation from a type node. n is the type node.
modifiers collects the PtrDecl, ArrayDecl and FuncDecl modifiers
encountered on the way down to a TypeDecl, to allow proper
generation from it.
r   r%   r   r   r   rP   rQ   rB   rC   z* rk   r   )r   TypeDeclqualsr.   r"   rJ   declname	enumerate	ArrayDeclrs   PtrDecl	dim_qualsdimFuncDeclrR   rl  r   Typenamer   IdentifierTyper   )r   r1   r{  r   r   nstrimodifierrR   r~  suffixs              r   r   CGenerator._generate_type  s    !!!77!''*S00AZZ''%&ZZMqzzr
 $-Y#7KA".U__. Av*Y1u5Eu}}*U*U'*TzC'7 CKD'11 $1C1C(Ds(J J'||7 $

8<<(@ @ CKD / .U^^- Av*Y1u5Eu}}*U*U'*TzC'7 $,==#< !%

8== 9%' !
 !C$J$44D . #]]_'~~(+(@7;1TF)+E76(';'*Tz -) $86 tOAQ "R **16622 !!**166*OO "'%%'xx(3.. ("""_U]]__7Gu~~7G7GG**FFIO= +   zz!}$r   	conditionc                 R    U R                  U5      nU" U5      (       a  SU-   S-   $ U$ )z|Visits 'n' and returns its string representation, parenthesized
if the condition function applied to the node returns True.
rP   rQ   )r   )r   r1   r  r   s       r   r{   CGenerator._parenthesize_if&  s0     QQ<<7S= Hr   c                 0   ^  T R                  UU 4S j5      $ )z$Common use case for _parenthesize_ifc                 0   > TR                  U 5      (       + $ r'   )rr   )rw   r   s    r   rx   8CGenerator._parenthesize_unless_simple.<locals>.<lambda>4  s    d6J6J16M2Mr   )r{   r4   s   ` r   rD   &CGenerator._parenthesize_unless_simple2  s    $$Q(MNNr   c                     [        U[        R                  [        R                  [        R                  [        R
                  [        R                  45      $ )ziReturns True for nodes that are "simple" - i.e. nodes that always
have higher precedence than operators.
)rs   r   rs  rC  rq  rr  rp  r4   s     r   rr   CGenerator._is_simple_node6  s6     ^^UXXu~~uW
 	
r   r   )F)~r   
__module____qualname____firstlineno____doc__int__annotations__boolr   strr   r   Noder"   r   r    rs  r5   rC  r:   r   r?   rq  rG   rr  rM   rp  rT   rn  r[   ru   rt   r   r   r   r  r   r   rl  r   DeclListr   rt  r   rm  r   r   r   r   r   rY  r   Alignasr   
Enumeratorr   r   r   FileASTr   r   r   CompoundLiteralr   EmptyStatementr   	ParamListr   Returnr   Breakr   Continuer  ro  r	  ru  r  Forr  Whiler  DoWhiler  StaticAssertr  Switchr"  Caser(  Defaultr+  Labelr.  Gotor1  EllipsisParamr4  rV  r8  r  r;  rW  r?  NamedInitializerrD  r  rH  r  rL  r}  rP  r  rS  r   r   rX  r\  r   r   r   r   r{   rD   rr   __static_attributes__r   r   r   r	   r	      s%   
 	54 	5D 	5'c '?%** ? ?K(5::"6 K3 K 3 %(( s ell s < <3 <3 3S 3' '3 '
*u}} * *" 	a 	a	
 	Q 	Q 	Q 	a 	a 	Q 	a 	Q 	a 	a 	a  	Q!" 	Q#$ 	Q%& 	Q'( 	Q)N.#/ #/3 #/J;%"2"2 ;s ;!e&:&: !s !%UZZ %C %	EJJ 	 	# 	 3 u}}  BEJJ B3 B+ +3 ++ +3 +@EJJ @3 @>u}} > >%"2"2 s -u}} - -
u}} 
 
 3 Ju'<'< J Je&:&: s B BS Bell s U[[ S  3  S 	%(( 	s 	599  U[[ S u}}  E$6$6 3 ell s 
EJJ 3 u}}  <U[[ <S <&EJJ &3 &U%8%8 S =ell =s =+ +3 +<U[[ <S <(>(> 3 & &3 &; ;S ;; ;3 ;;u}} ; ;+ejj8@C	8F4

3C F FK40@0@+A Kc K(5

 (5 (5 (5T


 
s 
 ')"	A%::A% 

#A% 	A%
 
A%F

(0%**t1C(D
	
OUZZ OC O
 
 
r   r	   N)typingr   r   r   r%   r   r	   r   r   r   <module>r     s    , + o
 o
r   