+
    JV-jÆ^ ã                   ó^  € ^ RI Ht ^ RIHtHtHtHtHtHtH	t	H
t
Ht ^RIHt ^RIHtHt ^RIHtHt ] ! R R4      4       t ! R R	]4      t ! R
 R4      t0 R*mt/ R^ bR^bR^bR^bR^bR^bR^bR^bR^bR^bR^bR^bR^bR^bR^bR^	bR^	bR^	/Ct0 R+mtRR0t0 R,mt0 R-mt]],          ],          ],          0 R.m,          t0 R/mt0 R0mt R R!0t!0 R1mt"R"0t#0 R2mt$]] ,          ]!,          ]",          ]#,          ]$,          t%0 R3mt& ! R# R$4      t' ! R% R&]
4      t(]R4,          t) ! R' R(]
4      t*R)# )5é    )Ú	dataclass)	ÚAnyÚDictÚListÚLiteralÚNoReturnÚOptionalÚTupleÚ	TypedDictÚcast)Úc_ast)ÚCLexerÚ_Token)Úfix_switch_casesÚfix_atomic_specifiersc                   óF   a € ] tR t^t o RtRtV 3R lR ltV 3R ltRtV t	R# )ÚCoordz[Coordinates of a syntactic element. Consists of:
- File name
- Line number
- Column number
Nc                ó    <€ V ^8„  d   QhRS[ /# ©é   Úreturn)Ústr)ÚformatÚ__classdict__s   "€Úc/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/pycparser/c_parser.pyÚ__annotate__ÚCoord.__annotate__'   s   ø€ ÷ ñ ™ñ ó    c                óŒ   € V P                    R V P                   2pV P                  '       d   VR V P                   2,          pV# )Ú:©ÚfileÚlineÚcolumn)ÚselfÚtexts   & r   Ú__str__ÚCoord.__str__'   s=   € Ø—)‘)�˜A˜dŸi™i˜[Ð)ˆØ�;�;ˆ;Ø�a˜Ÿ™�}Ð%Õ%ˆDØˆr   c                óN   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[S[,          ;R&   # )r   r"   r#   r$   )r   Úintr	   )r   r   s   "€r   r   r      s.   ø‡ ‚ ñ �Iñ ñ �Iñ ñ ‘S�MÑ ò r   © )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r$   r'   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r      s"   ø‡ € ñð !€F÷ð ÷ ƒ r   r   c                   ó   € ] tR t^.tRtR# )Ú
ParseErrorr+   N)r,   r-   r.   r/   r2   r+   r   r   r6   r6   .   s   † Ûr   r6   c                   óÂ  a € ] tR t^2t o RtR]RRRRR3V 3R lR lltRõV 3R	 lR
 lltRöV 3R lR lltV 3R lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R  lR! ltV 3R" lR# ltV 3R$ lR% ltR÷V 3R& lR' lltR÷V 3R( lR) lltV 3R* lR+ ltV 3R, lR- ltRøV 3R. lR/ lltRøV 3R0 lR1 lltV 3R2 lR3 ltV 3R4 lR5 ltV 3R6 lR7 ltV 3R8 lR9 ltV 3R: lR; ltV 3R< lR= lt RöV 3R> lR? llt!RöV 3R@ lRA llt"V 3RB lRC lt#R÷V 3RD lRE llt$V 3RF lRG lt%RùV 3RH lRI llt&V 3RJ lRK lt'V 3RL lRM lt(V 3RN lRO lt)V 3RP lRQ lt*V 3RR lRS lt+V 3RT lRU lt,V 3RV lRW lt-V 3RX lRY lt.V 3RZ lR[ lt/V 3R\ lR] lt0V 3R^ lR_ lt1R÷V 3R` lRa llt2V 3Rb lRc lt3V 3Rd lRe lt4V 3Rf lRg lt5V 3Rh lRi lt6RúV 3Rj lRk llt7R÷V 3Rl lRm llt8V 3Rn lRo lt9V 3Rp lRq lt:V 3Rr lRs lt;V 3Rt lRu lt<V 3Rv lRw lt=V 3Rx lRy lt>V 3Rz lR{ lt?V 3R| lR} lt@V 3R~ lR ltAV 3R€ lR� ltBV 3R‚ lRƒ ltCV 3R„ lR… ltDV 3R† lR‡ ltERûV 3Rˆ lR‰ lltFV 3RŠ lR‹ ltGV 3RŒ lR� ltHRöV 3RŽ lR� lltIV 3R� lR‘ ltJV 3R’ lR“ ltKV 3R” lR• ltLV 3R– lR— ltMV 3R˜ lR™ ltNV 3Rš lR› ltOV 3Rœ lR� ltPV 3Rž lRŸ ltQV 3R  lR¡ ltRV 3R¢ lR£ ltSV 3R¤ lR¥ ltTV 3R¦ lR§ ltUV 3R¨ lR© ltVV 3Rª lR« ltWV 3R¬ lR­ ltXV 3R® lR¯ ltYV 3R° lR± ltZV 3R² lR³ lt[V 3R´ lRµ lt\V 3R¶ lR· lt]V 3R¸ lR¹ lt^V 3Rº lR» lt_V 3R¼ lR½ lt`V 3R¾ lR¿ ltaV 3RÀ lRÁ ltbV 3RÂ lRÃ ltcV 3RÄ lRÅ ltdRüV 3RÆ lRÇ llteV 3RÈ lRÉ ltfV 3RÊ lRË ltgV 3RÌ lRÍ lthV 3RÎ lRÏ ltiV 3RÐ lRÑ ltjV 3RÒ lRÓ ltkV 3RÔ lRÕ ltlV 3RÖ lR× ltmV 3RØ lRÙ ltnV 3RÚ lRÛ ltoV 3RÜ lRÝ ltpV 3RÞ lRß ltqV 3Rà lRá ltrV 3Râ lRã ltsV 3Rä lRå lttV 3Ræ lRç ltuV 3Rè lRé ltvV 3Rê lRë ltwV 3Rì lRí ltxV 3Rî lRï ltyV 3Rð lRñ ltzV 3Rò lRó lt{Rôt|V t}R# )ýÚCParsera*  Recursive-descent C parser.

Usage:
    parser = CParser()
    ast = parser.parse(text, filename)

The `lexer` parameter lets you inject a lexer class (defaults to CLexer).
The parameters after `lexer` are accepted for backward compatibility with
the old PLY-based parser and are otherwise unused.
Tzpycparser.lextabzpycparser.yacctabFÚ c                óX   <€ V ^8„  d   QhRS[ RS[S[,          RS[RS[ RS[RS[ RS[RR	/# )
r   Úlex_optimizeÚlexerÚlextabÚyacc_optimizeÚyacctabÚ
yacc_debugÚtaboutputdirr   N)ÚboolÚtyper   r   )r   r   s   "€r   r   ÚCParser.__annotate__>   s_   ø€ ÷ =ñ =áð=ñ ‘F�|ð=ñ ð	=ñ
 ð=ñ ð=ñ ð=ñ ð=ð 
ñ=r   c                óÌ   € V! V P                   V P                  V P                  V P                  R 7      V n        \        4       .V n        \        V P                  4      V n        R# ))Ú
error_funcÚon_lbrace_funcÚon_rbrace_funcÚtype_lookup_funcN)	Ú_lex_error_funcÚ_lex_on_lbrace_funcÚ_lex_on_rbrace_funcÚ_lex_type_lookup_funcÚclexÚdictÚ_scope_stackÚ_TokenStreamÚ_tokens)r%   r;   r<   r=   r>   r?   r@   rA   s   &&&&&&&&r   Ú__init__ÚCParser.__init__>   sR   € ñ "Ø×+Ñ+Ø×3Ñ3Ø×3Ñ3Ø!×7Ñ7ô	
ˆŒ	ô 59³F°8ˆÔÜ%1°$·)±)Ó%<ˆŽr   c                óF   <€ V ^8„  d   QhRS[ RS[ RS[RS[P                  /# )r   r&   ÚfilenameÚdebugr   )r   rB   r   ÚFileAST)r   r   s   "€r   r   rD   Z   s1   ø€ ÷ ñ ÙðÙ#&ðÙ48ðá	�‰ñr   c                ó4  € \        4       .V n        V P                  P                  W4       \	        V P                  4      V n        V P                  4       pV P                  4       pVe/   V P                  RVP                   2V P                  V4      4       V# )zíParses C code and returns an AST.

text:
    A string containing the C source code

filename:
    Name of the file being parsed (for meaningful
    error messages)

debug:
    Deprecated debug flag (unused); for backwards compatibility.
úbefore: )rO   rP   rN   ÚinputrQ   rR   Ú _parse_translation_unit_or_emptyÚ_peekÚ_parse_errorÚvalueÚ
_tok_coord)r%   r&   rV   rW   ÚastÚtoks   &&&&  r   ÚparseÚCParser.parseZ   sw   € ô "›V˜HˆÔØ�	‰	�‰˜Ô'Ü# D§I¡IÓ.ˆŒà×3Ñ3Ó5ˆØ�j‰j‹lˆØŠ?Ø×Ñ ¨¯©¨Ð4°d·o±oÀcÓ6JÔKØˆ
r   Nc                ó<   <€ V ^8„  d   QhRS[ RS[S[ ,          RS[/# )r   Úlinenor$   r   )r*   r	   r   )r   r   s   "€r   r   rD   v   s+   ø€ ÷ Jñ J™Sð J©(±3­-ð JÁ5ñ Jr   c                óD   € \        V P                  P                  WR 7      # )r!   )r   rN   rV   )r%   rf   r$   s   &&&r   Ú_coordÚCParser._coordv   s   € Ü˜$Ÿ)™)×,Ñ,°6ÔIÐIr   c                óJ   <€ V ^8„  d   QhRS[ RS[S[ ,          R,          RS[/# )r   ÚmsgÚcoordNr   )r   r   r   )r   r   s   "€r   r   rD   y   s+   ø€ ÷ ,ñ ,¡ð ,©E±C­K¸$Õ,>ð ,Á8ñ ,r   c                ó"   € \        V R V 24      h)z: )r6   )r%   rk   rl   s   &&&r   r^   ÚCParser._parse_errory   s   € Ü˜E˜7 " S EÐ*Ó+Ð+r   c                ó   <€ V ^8„  d   QhRR/# ©r   r   Nr+   )r   r   s   "€r   r   rD   |   s   ø€ ÷ )ñ )˜Tñ )r   c                óL   € V P                   P                  \        4       4       R # ©N)rP   ÚappendrO   ©r%   s   &r   Ú_push_scopeÚCParser._push_scope|   s   € Ø×Ñ× Ñ ¤£Ö(r   c                ó   <€ V ^8„  d   QhRR/# rp   r+   )r   r   s   "€r   r   rD      s   ø€ ÷  ñ  ˜Dñ  r   c                ór   € \        V P                  4      ^8”  g   Q hV P                  P                  4        R# )é   N)ÚlenrP   Úpoprt   s   &r   Ú
_pop_scopeÚCParser._pop_scope   s-   € Ü�4×$Ñ$Ó%¨Ô)Ð)Ð)Ø×Ñ×ÑÖr   c                ó:   <€ V ^8„  d   QhRS[ RS[S[,          RR/# ©r   Únamerl   r   N©r   r	   r   )r   r   s   "€r   r   rD   ƒ   s&   ø€ ÷ +ñ +¡cð +±(¹5µ/ð +Àdñ +r   c                ó²   € V P                   R,          P                  VR4      '       g   V P                  RV: R2V4       RV P                   R,          V&   R# )z9Add a new typedef name (ie a TYPEID) to the current scopeTzTypedef z1 previously declared as non-typedef in this scopeNéÿÿÿÿ©rP   Úgetr^   ©r%   r€   rl   s   &&&r   Ú_add_typedef_nameÚCParser._add_typedef_nameƒ   sU   € à× Ñ  Õ$×(Ñ(¨¨t×4Ò4Ø×ÑØ˜4™(Ð"SÐTØôð '+ˆ×Ñ˜"Õ˜dÓ#r   c                ó:   <€ V ^8„  d   QhRS[ RS[S[,          RR/# r   r�   )r   r   s   "€r   r   rD   Œ   s&   ø€ ÷ 	,ñ 	,¡Cð 	,±¹µð 	,ÀDñ 	,r   c                ó²   € V P                   R,          P                  VR4      '       d   V P                  RV: R2V4       RV P                   R,          V&   R# )zPAdd a new object, function, or enum member name (ie an ID) to the
current scope
FzNon-typedef z- previously declared as typedef in this scopeNrƒ   r„   r†   s   &&&r   Ú_add_identifierÚCParser._add_identifierŒ   sW   € ð ×Ñ˜RÕ ×$Ñ$ T¨5×1Ò1Ø×ÑØ˜t™hÐ&SÐTØôð ',ˆ×Ñ˜"Õ˜dÓ#r   c                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r   r€   r   ©r   rB   )r   r   s   "€r   r   rD   —   s   ø€ ÷ ñ ¡cð ©dñ r   c                óp   € \        V P                  4       F  pVP                  V4      pVf   K  Vu # 	  R# )z.Is *name* a typedef-name in the current scope?F)ÚreversedrP   r…   )r%   r€   ÚscopeÚin_scopes   &&  r   Ú_is_type_in_scopeÚCParser._is_type_in_scope—   s6   € ä˜d×/Ñ/Ö0ˆEð —y‘y “ˆHØÔ#Ø’ñ 1ñ r   c                ó0   <€ V ^8„  d   QhRS[ RS[RS[RR/# )r   rk   r#   r$   r   N)r   r*   )r   r   s   "€r   r   rD   ¡   s)   ø€ ÷ :ñ :¡3ð :©cð :¹3ð :À4ñ :r   c                óF   € V P                  WP                  W#4      4       R # rr   )r^   rh   )r%   rk   r#   r$   s   &&&&r   rJ   ÚCParser._lex_error_func¡   s   € Ø×Ñ˜#Ÿ{™{¨4Ó8Ö9r   c                ó   <€ V ^8„  d   QhRR/# rp   r+   )r   r   s   "€r   r   rD   ¤   s   ø€ ÷ ñ  Tñ r   c                ó&   € V P                  4        R # rr   )ru   rt   s   &r   rK   ÚCParser._lex_on_lbrace_func¤   s   € Ø×ÑÖr   c                ó   <€ V ^8„  d   QhRR/# rp   r+   )r   r   s   "€r   r   rD   §   s   ø€ ÷ ñ  Tñ r   c                ó&   € V P                  4        R # rr   )r|   rt   s   &r   rL   ÚCParser._lex_on_rbrace_func§   s   € Ø�‰Ör   c                ó&   <€ V ^8„  d   QhRS[ RS[/# rŽ   r�   )r   r   s   "€r   r   rD   ª   s   ø€ ÷ ,ñ ,©#ð ,±$ñ ,r   c                ó$   € V P                  V4      # )zzLooks up types that were previously defined with
typedef.
Passed to the lexer for recognizing identifiers that
are types.
)r”   )r%   r€   s   &&r   rM   ÚCParser._lex_type_lookup_funcª   s   € ð ×%Ñ% dÓ+Ð+r   c                ó@   <€ V ^8„  d   QhRS[ RS[ RS[P                  /# )r   ÚdeclÚmodifierr   )r   r   ÚNode)r   r   s   "€r   r   rD   Ô   s&   ø€ ÷ ñ ¡cð ±Sð ¹U¿Z¹Zñ r   c                ó@  € TpTpVP                   '       d   VP                   pK   \        V\        P                  4      '       d	   Wn         V# Tp\        VP                   \        P                  4      '       g   VP                   pK8  VP                   Vn         W5n         V# )zTacks a type modifier on a declarator, and returns
the modified declarator.

Note: the declarator and modifier may be modified
)rC   Ú
isinstancer   ÚTypeDecl)r%   r£   r¤   Úmodifier_headÚmodifier_tailÚ	decl_tails   &&&   r   Ú_type_modify_declÚCParser._type_modify_declÔ   s€   € ð !ˆØ ˆð × × Ð Ø)×.Ñ.ŠMô �dœEŸN™N×+Ò+Ø!%ÔØˆOð
 ˆIÜ  §¡´·±×@Ò@Ø%ŸN™N’	à!*§¡ˆMÔØ*ŒNØˆKr   c                óô   <€ V ^8„  d   QhRS[ P                  S[ P                  ,          S[ P                  ,          RS[S[,          RS[ P                  S[ P                  ,          S[ P                  ,          /# )r   r£   Útypenamer   )r   ÚDeclÚTypedefÚTypenamer   r   )r   r   s   "€r   r   rD      sY   ø€ ÷ &ñ &á�j‰j™5Ÿ=™=Õ(©5¯>©>Õ9ð&ñ ‘s•)ð&ñ 
�‰‘e—m‘mÕ	#¡e§n¡nÕ	4ñ	&r   c                ó  € Tp\        V\        P                  4      '       g   VP                  pK.  VP                  Vn        VP                  R,          Vn        V F[  p\        V\        P                  4      '       d   K%  \        V4      ^8”  d   V P                  RVP                  4       KS  WCn        Vu # 	  V'       gq   \        VP                  \        P                  4      '       g   V P                  RVP                  4       \        P                  ! R.VP                  R7      Vn        V# \        P                  ! V UUu. uF  qUP                   F  qfNK  	  K  	  uppV^ ,          P                  R7      Vn        V# u uppi )z#Fixes a declaration. Modifies decl.ºNNNz Invalid multiple types specifiedúMissing type in declarationr*   ©rl   )r§   r   r¨   rC   Údeclnamer€   ÚqualsÚIdentifierTyperz   r^   rl   ÚFuncDeclÚnames)r%   r£   r¯   ÚtypÚtnÚidr€   s   &&&    r   Ú_fix_decl_name_typeÚCParser._fix_decl_name_type   s  € ð ˆÜ˜S¤%§.¡.×1Ò1Ø—(‘(ŠCà—L‘LˆŒ	Ø—J‘J˜q•MˆŒ	ó ˆBÜ˜b¤%×"6Ñ"6×7Ô7Ü�x“= 1Ô$Ø×%Ñ%Ð&HÈ"Ï(É(ÖSà!”HØ’Kñ ÷ ä˜dŸi™i¬¯©×8Ò8Ø×!Ñ!Ð"?ÀÇÁÔLÜ×+Ò+¨U¨G¸4¿:¹:ÔFˆCŒHð ˆô ×+Ò+Ù (Ô>¡˜"·X´X¨T’±X‘¡Ò>ÀhÈqÅk×FWÑFWôˆCŒHð ˆùó ?s   ÅF
c          
      óB   <€ V ^8„  d   QhRS[ R,          RS[RRRS[RR/# )r   ÚdeclspecÚ	_DeclSpecÚnewspecÚkindÚ_DeclSpecKindrs   r   )r	   r   rB   )r   r   s   "€r   r   rD   (  sB   ø€ ÷ ñ á˜;Õ'ðñ ðð ð	ñ
 ðð 
ñr   c                ó¦   € Vf   \        . . . . . R7      pMTpV'       d   WS,          P                  V4       V# WS,          P                  ^ V4       V# )z2See _DeclSpec for the specifier dictionary layout.©ÚqualÚstoragerC   ÚfunctionÚ	alignment)rO   rs   Úinsert)r%   rÂ   rÄ   rÅ   rs   Úspecs   &&&&& r   Ú_add_declaration_specifierÚ"CParser._add_declaration_specifier(  sY   € ð ÒÜ"Ø ¨"°rÀRô‰Dð ˆDçØ�J×Ñ˜gÔ&ð ˆð �J×Ñ˜a Ô)àˆr   c          	      ób   <€ V ^8„  d   QhRRRS[ R,          RS[RS[ S[P                  ,          /# )r   rÎ   rÃ   ÚdeclsÚ	_DeclInfoÚtypedef_namespacer   )r   rB   r   r¥   )r   r   s   "€r   r   rD   >  sG   ø€ ÷ eñ eàðeñ �KÕ ðeñ  ð	eñ
 
‰e�j‰jÕ	ñer   c                óp  € RVR,          9   p. pV^ ,          P                  R4      Ef!   V^ ,          R,          Ef(   \        VR,          4      ^8  g_   \        VR,          R,          P                  4      ^8w  g7   V P                  VR,          R,          P                  ^ ,          4      '       gE   RpVR,           F#  p\	        VR4      '       g   K  VP
                  p M	  V P                  R	V4       \        P                  ! VR,          R,          P                  ^ ,          RRVR
,          VR,          R,          P
                  R7      V^ ,          R&   VR,          R Mæ\        V^ ,          R,          \        P                  \        P                  \        P                  \        P                  34      '       g‹   \        \        V^ ,          R,          4      p\        V\        P                  4      '       g   VP                   pK.  VP"                  f1   VR,          R,          P                  ^ ,          Vn        VR,          R V EFå  p	V	R,          f   Q hV'       dC   \        P$                  ! RVR,          VR,          V	R,          V	R,          P
                  R7      p
Mq\        P&                  ! RVR,          VR
,          VR,          VR,          V	R,          V	P                  R4      V	P                  R4      V	R,          P
                  R7	      p
\        V
P                   \        P                  \        P                  \        P                  \        P                  34      '       d   T
pMV P)                  W¡R,          4      pV'       dV   V'       d(   V P+                  VP,                  VP
                  4       M&V P/                  VP,                  VP
                  4       \1        \        \        P&                  \        P$                  ,          V4      4      pVP3                  V4       EKè  	  V# )zÒBuilds a list of declarations all sharing the given specifiers.
If typedef_namespace is true, each declared name is added
to the "typedef namespace", which also includes objects,
functions, and enum constants.
ÚtypedefrÊ   ÚbitsizeNr£   rC   Ú?rl   úInvalid declarationrÌ   ©r·   rC   r¸   Úalignrl   rÉ   )r€   r¸   rÊ   rC   rl   rË   Úinit©	r€   r¸   rÛ   rÊ   ÚfuncspecrC   rÜ   r×   rl   rƒ   )r…   rz   r»   r”   Úhasattrrl   r^   r   r¨   r§   ÚEnumÚStructÚUnionr¹   r   r   rC   r·   r±   r°   r¿   r‡   r€   r‹   r   rs   )r%   rÎ   rÒ   rÔ   Ú
is_typedefÚdeclarationsrl   ÚtÚdecls_0_tailr£   ÚdeclarationÚ
fixed_decls   &&&&        r   Ú_build_declarationsÚCParser._build_declarations>  sC  € ð  $ y¥/Ñ1ˆ
Øˆð ��8�<‰<˜	Ó"Ó*ð
 �Q�x˜ÕÓ'ä˜˜V�Ó%¨Ô)Ü˜4 �<¨Õ+×1Ñ1Ó2°aÔ7Ø×1Ñ1°$°vµ,¸rÕ2B×2HÑ2HÈÕ2K×LÒLà�EØ! &Ÿ\˜\˜Ü" 1 g×.Ô.Ø$%§G¡G˜EÙ!ñ *ð ×%Ñ%Ð&;¸UÔCô $)§>¢>Ø! &�\¨"Õ-×3Ñ3°AÕ6ØØØ˜{Õ+Ø˜v�, rÕ*×0Ñ0ô$��a•˜Ñ ð ˜•L Ñ$ô  Ø�a•˜Õ Ü—‘œUŸ\™\¬5¯;©;¼×8LÑ8LÐM÷ò ô  $¤C¨¨q­°&Õ)9Ó:�Ü$ \´5·>±>×BÒBØ#/×#4Ñ#4’LØ×(Ñ(Ò0Ø,0°­L¸Õ,<×,BÑ,BÀ1Õ,E�LÔ)Ø˜V� RÐ(äˆDØ˜•<Ò+Ð+Ð+ßÜ#ŸmšmØØ˜v�,Ø  �OØ˜f�Ø˜v�,×,Ñ,ô‘ô $ŸjšjØØ˜v�,Ø˜{Õ+Ø  �OØ! *Õ-Ø˜f�ØŸ™ &Ó)Ø ŸH™H YÓ/Ø˜v�,×,Ñ,ô
�ô Ø× Ñ Ü—‘œUŸ\™\¬5¯;©;¼×8LÑ8LÐM÷ò ð )‘
à!×5Ñ5°kÈÅ<ÓP�
÷ !ßØ×*Ñ*¨:¯?©?¸J×<LÑ<LÕMà×(Ñ(¨¯©¸*×:JÑ:JÔKä.Ü”U—Z‘Z¤%§-¡-Õ/°Ó<óˆJð ×Ñ 
×+ñU ðX Ðr   c          
      ó¦   <€ V ^8„  d   QhRRRS[ P                  RS[S[S[ P                  ,          ,          RS[ P                  RS[ P                  /# )r   rÎ   rÃ   r£   Úparam_declsÚbodyr   )r   r¥   r	   r   )r   r   s   "€r   r   rD   ¥  sW   ø€ ÷ 
ñ 
àð
ñ �j‰jð
ñ ™d¡5§:¡:Õ.Õ/ð	
ñ
 �j‰jð
ñ 
�‰ñ
r   c           	     óê   € RVR,          9   d   V P                  RVP                  4       V P                  V\        VRRR7      .RR7      ^ ,          p\        P
                  ! WSWBP                  R7      # )	zBuilds a function definition.rÖ   rÊ   zInvalid typedefN©r£   rÜ   r×   T©rÎ   rÒ   rÔ   )r£   rì   rí   rl   )r^   rl   ré   rO   r   ÚFuncDef)r%   rÎ   r£   rì   rí   rç   s   &&&&& r   Ú_build_function_definitionÚ"CParser._build_function_definition¥  su   € ð ˜˜Y�Ô'Ø×ÑÐ/°·±Ô<à×.Ñ.ØÜ˜T¨°dÔ;Ð<Ø"ð /ó 
ð õ	ˆô �}Š}Ø¸DÏ
É
ô
ð 	
r   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   Útokenr   )r   rC   )r   r   s   "€r   r   rD   º  s   ø€ ÷ ñ ±ð ¹ñ r   c                óP   € VR8X  d   \         P                  # \         P                  # )zKGiven a token (either STRUCT or UNION), selects the
appropriate AST class.
Ústruct)r   rá   râ   )r%   rõ   s   &&r   Ú_select_struct_union_classÚ"CParser._select_struct_union_classº  s    € ð �HÔÜ—<‘<Ðä—;‘;Ðr   c                ó6   <€ V ^8„  d   QhRS[ RS[S[,          /# ©r   Úkr   ©r*   r	   r   )r   r   s   "€r   r   rD   Æ  s    ø€ ÷ $ñ $‘sð $¡8©FÕ#3ñ $r   c                ó8   € V P                   P                  V4      # )z:Return the k-th next token without consuming it (1-based).)rR   Úpeek©r%   rü   s   &&r   r]   ÚCParser._peekÆ  s   € à�|‰|× Ñ  Ó#Ð#r   c                ó6   <€ V ^8„  d   QhRS[ RS[S[,          /# rû   )r*   r	   r   )r   r   s   "€r   r   rD   Ê  s   ø€ ÷ 5ñ 5™Cð 5©±­ñ 5r   c                óH   € V P                  V4      pVe   VP                  # R# )zDReturn the type of the k-th next token, or None if absent (1-based).N)r]   rC   )r%   rü   rb   s   && r   Ú
_peek_typeÚCParser._peek_typeÊ  s"   € à�j‰j˜‹mˆØš?ˆs�x‰xÐ4°Ð4r   c                ó    <€ V ^8„  d   QhRS[ /# r   )r   )r   r   s   "€r   r   rD   Ï  s   ø€ ÷ ñ ™&ñ r   c                ó’   € V P                   P                  4       pVf)   V P                  RV P                  P                  4       R # V# )NzAt end of input)rR   Únextr^   rN   rV   ©r%   rb   s   & r   Ú_advanceÚCParser._advanceÏ  s9   € Ø�l‰l×ÑÓ!ˆØŠ;Ø×ÑÐ/°·±×1CÑ1CÖDàˆJr   c                ó6   <€ V ^8„  d   QhRS[ RS[S[,          /# ©r   Ú
token_typer   )r   r	   r   )r   r   s   "€r   r   rD   Ö  s    ø€ ÷ 	ñ 	¡#ð 	©(±6Õ*:ñ 	r   c                óp   € V P                  4       pVe"   VP                  V8X  d   V P                  4       # R# )zªConditionally consume next token, only if it's of token_type.

If it is of the expected type, consume and return it.
Otherwise, leaves the token intact and returns None.
N)r]   rC   r
  ©r%   r  rb   s   && r   Ú_acceptÚCParser._acceptÖ  s.   € ð �j‰j‹lˆØŠ?˜sŸx™x¨:Ô5Ø—=‘=“?Ð"Ùr   c                ó&   <€ V ^8„  d   QhRS[ RS[/# r  )r   r   )r   r   s   "€r   r   rD   á  s   ø€ ÷ ñ ¡#ð ©&ñ r   c                ó¤   € V P                  4       pVP                  V8w  d/   V P                  R VP                   2V P	                  V4      4       V# )rZ   )r
  rC   r^   r_   r`   r  s   && r   Ú_expectÚCParser._expectá  sB   € Ø�m‰m‹oˆØ�8‰8�zÔ!Ø×Ñ ¨¯©¨Ð4°d·o±oÀcÓ6JÔKØˆ
r   c                ó    <€ V ^8„  d   QhRS[ /# r   ©r*   )r   r   s   "€r   r   rD   ç  s   ø€ ÷ #ñ #‘sñ #r   c                ó6   € V P                   P                  4       # rr   )rR   Úmarkrt   s   &r   Ú_markÚCParser._markç  s   € Ø�|‰|× Ñ Ó"Ð"r   c                ó$   <€ V ^8„  d   QhRS[ RR/# ©r   r  r   Nr  )r   r   s   "€r   r   rD   ê  s   ø€ ÷ !ñ !™3ð ! 4ñ !r   c                ó<   € V P                   P                  V4       R # rr   )rR   Úreset©r%   r  s   &&r   Ú_resetÚCParser._resetê  s   € Ø�‰×Ñ˜4Ö r   c                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r   rb   r   )r   r   )r   r   s   "€r   r   rD   í  s   ø€ ÷ 3ñ 3™fð 3©ñ 3r   c                óN   € V P                  VP                  VP                  4      # rr   )rh   rf   r$   r	  s   &&r   r`   ÚCParser._tok_coordí  s   € Ø�{‰{˜3Ÿ:™: s§z¡zÓ2Ð2r   c                ó6   <€ V ^8„  d   QhRS[ S[,          RS[/# r%  ©r	   r   rB   )r   r   s   "€r   r   rD   ð  s    ø€ ÷ 'ñ '¡x±Õ'7ð 'Á4ñ 'r   c                óh   € T;'       g    V P                  4       pVf   R# VP                  \        9   # ©NF)r]   rC   Ú_DECL_STARTr	  s   &&r   Ú_starts_declarationÚCParser._starts_declarationð  s,   € Ø×!Ð!�T—Z‘Z“\ˆØŠ;ÙØ�x‰xœ;Ñ&Ð&r   c                ó6   <€ V ^8„  d   QhRS[ S[,          RS[/# r%  r)  )r   r   s   "€r   r   rD   ö  s    ø€ ÷ .ñ .¡h©vÕ&6ð .Á$ñ .r   c                óh   € T;'       g    V P                  4       pVf   R# VP                  \        9   # r+  )r]   rC   Ú_STARTS_EXPRESSIONr	  s   &&r   Ú_starts_expressionÚCParser._starts_expressionö  s-   € Ø×!Ð!�T—Z‘Z“\ˆØŠ;ÙØ�x‰xÔ-Ñ-Ð-r   c                ó    <€ V ^8„  d   QhRS[ /# r   ©rB   )r   r   s   "€r   r   rD   ü  s   ø€ ÷ )ñ )¡4ñ )r   c                óh   € V P                  4       pVf   R# V\        9   d   R# V P                  4       # )NFT)r  Ú_STARTS_STATEMENTr2  ©r%   Útok_types   & r   Ú_starts_statementÚCParser._starts_statementü  s2   € Ø—?‘?Ó$ˆØÒÙØÔ(Ô(ÙØ×&Ñ&Ó(Ð(r   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# )r   Úid_onlyr   r5  )r   r   s   "€r   r   rD     s   ø€ ÷ ,ñ ,©$ð ,¹4ñ ,r   c                ód   € V P                  4       pVf   R# VR9   d   R# V'       d   VR8H  # VR9   # )NFTÚID>   ÚTIMESÚLPAREN>   r?  ÚTYPEID©r  )r%   r=  r9  s   && r   Ú_starts_declaratorÚCParser._starts_declarator  s=   € Ø—?‘?Ó$ˆØÒÙØÐ*Ô*ÙßØ˜tÑ#Ð#ØÐ+Ñ+Ð+r   c                óF   <€ V ^8„  d   QhRS[ S[S[,          S[3,          /# r   ©r
   r	   r   rB   )r   r   s   "€r   r   rD     s"   ø€ ÷ #ñ #©E±(¹3µ-ÁÐ2EÕ,Fñ #r   c                ón   € V P                  4       pV P                  4       w  r#V P                  V4       W#3# rr   )r  Ú_scan_declarator_name_infor"  )r%   r  r9  Ú	saw_parens   &   r   Ú_peek_declarator_name_infoÚ"CParser._peek_declarator_name_info  s3   € Ø�z‰z‹|ˆØ"×=Ñ=Ó?ÑˆØ�‰�DÔØÐ"Ð"r   c                óf   <€ V ^8„  d   QhRS[ RS[ RS[S[S[P                  ,          S[ 3,          /# )r   Úallow_abstractÚtypeid_paren_as_abstractr   )rB   r
   r	   r   r¥   )r   r   s   "€r   r   rD     s8   ø€ ÷ ñ Ù"ðÙFJðá	‰x™Ÿ
™
Õ#¡TÐ)Õ	*ñr   c                óÆ  € V P                  4       w  r4Ve   V'       dy   VR8X  dr   V'       dj   V'       gN   V P                  4       pVe   V P                  V4      MV P                  P                  pV P                  RV4       V P                  4       pVR3# VR8X  d2   V'       d   V P                  4       pVR3# V P                  4       p VR3# V P                  4       pVR3# )NrB  zInvalid declaratorFT)
rK  r]   r`   rN   rV   r^   Ú_parse_abstract_declarator_optÚ _parse_typeid_noparen_declaratorÚ_parse_typeid_declaratorÚ_parse_id_declarator)r%   rN  rO  Ú	name_typerJ  rb   rl   r£   s   &&&     r   Ú_parse_any_declaratorÚCParser._parse_any_declarator  s×   € ð  $×>Ñ>Ó@Ñˆ	ØÒß$¨°hÔ)>Ç9ç!Ø—j‘j“l�Ø03²˜Ÿ™¨Ô,ÀTÇYÁY×EWÑEW�Ø×!Ñ!Ð"6¸Ô>Ø×6Ñ6Ó8ˆDØ˜�;Ðà˜Ô ß'Ø×<Ñ<Ó>�ð
 �TˆzÐð ×4Ñ4Ó6‘ð �TˆzÐð ×,Ñ,Ó.ˆDØ�TˆzÐr   c                óF   <€ V ^8„  d   QhRS[ S[S[,          S[3,          /# r   rG  )r   r   s   "€r   r   rD   /  s"   ø€ ÷ !ñ !©E±(¹3µ-ÁÐ2EÕ,Fñ !r   c                ó   € R pV P                  R4      '       d.   V P                  4       \        9   g   K2  V P                  4        K-  V P	                  4       pVf   RV3# VP
                  R9   d   V P                  4        VP
                  V3# VP
                  R8X  d®   RpV P                  4        V P                  4       w  r4V'       d   Rp^p V P	                  4       pVf   RV3# VP
                  R8X  d   V^,          pM7VP
                  R8X  d'   V^,          pV P                  4        V^ 8X  d    W13# Kk  V P                  4        K}  RV3# )Fr@  NrA  TÚRPAREN>   r?  rB  )r  r  Ú_TYPE_QUALIFIERr
  r]   rC   rI  )r%   rJ  rb   r9  Únested_parenÚdepths   &     r   rI  Ú"CParser._scan_declarator_name_info/  s"  € Øˆ	Ø�l‰l˜7×#Ò#Ø—/‘/Ó#¤Ö6Ø—‘–à�j‰j‹lˆØŠ;Ø˜�?Ð"Ø�8‰8Ð'Ô'Ø�M‰MŒOØ—8‘8˜YÐ&Ð&Ø�8‰8�xÔØˆIØ�M‰MŒOØ%)×%DÑ%DÓ%FÑ"ˆHßØ �	ØˆEØØ—j‘j“l�Ø’;Ø ˜?Ð*Ø—8‘8˜xÔ'Ø˜Q•J‘EØ—X‘X Ô)Ø˜Q•J�EØ—M‘M”OØ ”zØð Ð&Ð&ñ Ø—‘–à�YˆÐr   c                ó    <€ V ^8„  d   QhRS[ /# r   r5  )r   r   s   "€r   r   rD   R  s   ø€ ÷ ;ñ ;±Dñ ;r   c                ó(   € V P                  4       R9   # )rA  >   rA  ÚLBRACKETrC  rt   s   &r   Ú"_starts_direct_abstract_declaratorÚ*CParser._starts_direct_abstract_declaratorR  s   € Ø�‰Ó Ð$:Ñ:Ð:r   c                ó    <€ V ^8„  d   QhRS[ /# r   r5  )r   r   s   "€r   r   rD   U  s   ø€ ÷ ?ñ ?¡4ñ ?r   c                ó`   € V P                  4       pVR J;'       d    VP                  \        9   # rr   )r]   rC   Ú_ASSIGNMENT_OPSr	  s   & r   Ú_is_assignment_opÚCParser._is_assignment_opU  s(   € Ø�j‰j‹lˆØ˜$ˆ×>Ð> 3§8¡8¬Ñ#>Ð>r   c                ó^   <€ V ^8„  d   QhRS[ S[S[P                  S[S[3,          ,          /# r   )r	   r
   r   r²   r*   r   )r   r   s   "€r   r   rD   Y  s*   ø€ ÷ %ñ %á	‘%™Ÿ™©©VÐ3Õ4Õ	5ñ%r   c                ó  € V P                  4       pV P                  R4      pVf   R# V P                  4       '       g   V P                  V4       R# V P	                  4       pV P                  R4      f   V P                  V4       R# W1V3# )a:  Parse and return a parenthesized type name if present.

Returns (typ, mark, lparen_tok) when the next tokens look like
'(' type_name ')', where typ is the parsed type name, mark is the
token-stream position before parsing, and lparen_tok is the LPAREN
token. Returns None if no parenthesized type name is present.
rA  NrZ  )r  r  r-  r"  Ú_parse_type_name)r%   r  Ú
lparen_tokr¼   s   &   r   Ú_try_parse_paren_type_nameÚ"CParser._try_parse_paren_type_nameY  s{   € ð �z‰z‹|ˆØ—\‘\ (Ó+ˆ
ØÒÙØ×'Ñ'×)Ò)Ø�K‰K˜ÔÙØ×#Ñ#Ó%ˆØ�<‰<˜Ó!Ò)Ø�K‰K˜ÔÙØ˜*Ð$Ð$r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   )r   rX   )r   r   s   "€r   r   rD   t  s   ø€ ÷ =ñ =±%·-±-ñ =r   c                óš   € V P                  4       f   \        P                  ! . 4      # \        P                  ! V P                  4       4      # rr   )r]   r   rX   Ú_parse_translation_unitrt   s   &r   r\   Ú(CParser._parse_translation_unit_or_emptyt  s5   € Ø�:‰:‹<ÒÜ—=’= Ó$Ð$Ü�}Š}˜T×9Ñ9Ó;Ó<Ð<r   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r   ©r   r   r¥   )r   r   s   "€r   r   rD   z  s   ø€ ÷ ñ ©©e¯j©jÕ)9ñ r   c                óp   € . pV P                  4       e"   VP                  V P                  4       4       K3  V# rr   )r]   ÚextendÚ_parse_external_declaration)r%   Úexts   & r   rq  ÚCParser._parse_translation_unitz  s-   € ØˆØ�j‰j‹lÒ&Ø�J‰J�t×7Ñ7Ó9Ö:Øˆ
r   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r   rt  )r   r   s   "€r   r   rD   †  s    ø€ ÷ Mñ M©T±%·*±*Õ-=ñ Mr   c           
     óà  € V P                  4       pVf   . # VP                  R8X  d   V P                  4        . # VP                  R9   d   V P                  4       .# V P	                  R4      '       d   . # VP                  R8X  d   V P                  4       # V P                  V4      '       gœ   V P                  4       pR pV P                  4       R8w  d   V P                  RVP                  4       \        . . . \        P                  ! R.VP                  R7      .. R7      pV P                  VVVV P                  4       R	7      pV.# V P!                  R
R7      w  rFpV P#                  4       w  r‰VR8w  d%   V P%                  WF4      p
V P'                  R4       V
# V P                  4       pV P                  4       R8X  g   V P                  4       '       d¬   R pV P                  4       '       d   V P)                  4       pV P                  4       R8w  d   V P                  RVP                  4       VR,          '       g   \        P                  ! R.VR7      .VR&   V P                  VVVV P                  4       R	7      pV.# \        VR R R7      pV P	                  R4      '       d   V P+                  4       VR&   V P-                  VR7      p
V P/                  WJR
R7      p
V P'                  R4       V
# )NÚPPHASHÚSEMIÚ_STATIC_ASSERTÚLBRACEzInvalid function definitionr*   r¶   )rÉ   rÌ   rÊ   rC   rË   )rÎ   r£   rì   rí   T©Úallow_no_typer?  rC   rï   ÚEQUALSrÜ   )Úfirstrð   ¾   Ú_PRAGMAÚPPPRAGMA)r]   rC   Ú_parse_pp_directiveÚ_parse_pppragma_directiver  Ú_parse_static_assertr-  rT  r  r^   rl   rO   r   r¹   rò   Ú_parse_compound_statementÚ_parse_declaration_specifiersrK  Ú_parse_decl_body_with_specr  Ú_parse_declaration_listÚ_parse_initializerÚ_parse_init_declarator_listré   )r%   rb   r£   rì   rÎ   ÚfuncÚsaw_typeÚ
spec_coordrU  Ú_rÒ   Ú	decl_dicts   &           r   rw  Ú#CParser._parse_external_declaration†  s¾  € Ø�j‰j‹lˆØŠ;ØˆIØ�8‰8�xÔØ×$Ñ$Ô&ØˆIØ�8‰8Ð.Ô.Ø×2Ñ2Ó4Ð5Ð5Ø�<‰<˜×ÒØˆIØ�8‰8Ð'Ô'Ø×,Ñ,Ó.Ð.à×'Ñ'¨×,Ò,ð ×,Ñ,Ó.ˆDØˆKØ�‰Ó  HÔ,Ø×!Ñ!Ð"?ÀÇÁÔLÜ"ØØØÜ×*Ò*¨E¨7¸$¿*¹*ÔEÐFØôˆDð ×2Ñ2ØØØ'Ø×3Ñ3Ó5ð	 3ó ˆDð �6ˆMð &*×%GÑ%GØð &Hó &
Ñ"ˆ˜
ð ×6Ñ6Ó8‰ˆ	Ø˜ÔØ×3Ñ3°DÓCˆEØ�L‰L˜Ô ØˆLà×(Ñ(Ó*ˆà�?‰?Ó Ô(¨D×,DÑ,D×,FÒ,FØˆKØ×'Ñ'×)Ò)Ø"×:Ñ:Ó<�Ø�‰Ó  HÔ,Ø×!Ñ!Ð"?ÀÇÁÔLØ˜—<”<Ü %× 4Ò 4°e°WÀJÔ OÐP��V‘Ø×2Ñ2ØØØ'Ø×3Ñ3Ó5ð	 3ó ˆDð �6ˆMä!%¨4°dÀDÔ!Iˆ	Ø�<‰<˜×!Ò!Ø $× 7Ñ 7Ó 9ˆI�fÑØ×0Ñ0°yÐ0ÓAˆØ×(Ñ(¨dÐSWÐ(ÓXˆØ�‰�VÔØˆr   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r   rt  )r   r   s   "€r   r   rD   Ü  s   ø€ ÷ ñ ¡D©¯©Õ$4ñ r   c                óH   € V P                  4       pV P                  R 4       V# ©r}  )Ú_parse_decl_bodyr  ©r%   rÒ   s   & r   Ú_parse_declarationÚCParser._parse_declarationÜ  s!   € Ø×%Ñ%Ó'ˆØ�‰�VÔØˆr   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r   rt  )r   r   s   "€r   r   rD   â  s   ø€ ÷ ?ñ ?¡$¡u§z¡zÕ"2ñ ?r   c                óN   € V P                  R R7      w  rpV P                  W4      # )Tr€  )r‹  rŒ  )r%   rÎ   r‘  r“  s   &   r   r™  ÚCParser._parse_decl_bodyâ  s+   € Ø ×>Ñ>ÈTÐ>ÓRÑˆ˜Ø×.Ñ.¨tÓ>Ð>r   c                óN   <€ V ^8„  d   QhRRRS[ RS[S[P                  ,          /# )r   rÎ   rÃ   r‘  r   )rB   r   r   r¥   )r   r   s   "€r   r   rD   è  s.   ø€ ÷ 'ñ 'Øð'Ù+/ð'á	‰e�j‰jÕ	ñ'r   c                ó   € R pV'       d(   V P                  4       '       d   V P                  4       pM*V P                  RR7      '       d   V P                  RR7      pVfÜ   VR,          p\        P                  \        P                  \        P
                  3p\        V4      ^8X  dp   \        V^ ,          V4      '       dW   \        P                  ! R VR,          VR,          VR,          VR,          V^ ,          R R V^ ,          P                  R7	      .pV# V P                  V\        R R R R	7      .RR
7      p V# V P                  WRR
7      pV# )NT©r=  rC   rÉ   rÌ   rÊ   rË   rÝ   rï   rð   )rD  r�  r   rá   râ   rà   rz   r§   r°   rl   ré   rO   )r%   rÎ   r‘  rÒ   ÚtyÚs_u_or_es   &&&   r   rŒ  Ú"CParser._parse_decl_body_with_specè  s;  € ð ˆßØ×&Ñ&×(Ò(Ø×8Ñ8Ó:�øà×&Ñ&¨tÐ&×4Ò4Ø×8Ñ8ÀÐ8ÓF�àŠ=Ø�f•ˆBÜŸ™¤e§k¡k´5·:±:Ð>ˆHÜ�2‹w˜!Œ|¤
¨2¨a­5°(× ;Ò ;ä—J’JØ!Ø" 6�lØ" ;Õ/Ø $ Y¥Ø!% jÕ!1Ø �UØ!Ø $Ø  �eŸk™kô
ð�ð0 ˆð ×0Ñ0ØÜ T°¸dÔCÐDØ&*ð 1ó ‘ð ˆð	 ×,Ñ,Ø¸$ð -ó ˆEð ˆr   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r   rt  )r   r   s   "€r   r   rD     s   ø€ ÷ ñ ©©e¯j©jÕ)9ñ r   c                óx   € . pV P                  4       '       d"   VP                  V P                  4       4       K7  V# rr   )r-  rv  r›  rš  s   & r   r�  ÚCParser._parse_declaration_list  s0   € ØˆØ×&Ñ&×(Ò(Ø�L‰L˜×0Ñ0Ó2Ö3Øˆr   c                óN   <€ V ^8„  d   QhRS[ RS[RS[ S[S[,          3,          /# )r   r�  r   rÃ   )rB   r
   r	   r   )r   r   s   "€r   r   rD     s1   ø€ ÷ v+ñ v+Ù!ðv+á	ˆ{™D¡(©5¥/Ð1Õ	2ñv+r   c           	     óœ  € RpRpRp V P                  4       pVf   EM`VP                  R8X  d:   Vf   V P                  V4      pV P                  W P	                  4       RRR7      pKa  VP                  R8X  dR   V P                  ^4      R8X  d<   Vf   V P                  V4      pV P                  W P                  4       R	RR7      pRpKÃ  VP                  \        9   dE   Vf   V P                  V4      pV P                  W P                  4       P                  R
RR7      pEK  VP                  \        9   dE   Vf   V P                  V4      pV P                  W P                  4       P                  RRR7      pEKu  VP                  \        9   dE   Vf   V P                  V4      pV P                  W P                  4       P                  RRR7      pEKÎ  VP                  \        9   dp   Vf   V P                  V4      pV P                  4       pV P                  V\        P                  ! VP                  .V P                  V4      R7      R	RR7      pRpEKR  VP                  R8X  dz   V'       d   EM
Vf   V P                  V4      pV P                  4       pV P                  V\        P                  ! VP                  .V P                  V4      R7      R	RR7      pRpEKÜ  VP                  R9   d=   Vf   V P                  V4      pV P                  W P                  4       R	RR7      pRpEK)  VP                  R8X  d=   Vf   V P                  V4      pV P                  W P!                  4       R	RR7      pRpEKv   Vf'   V P#                  RV P$                  P&                  4       V'       g   V'       g   V P#                  RV4       W#V3# )av  Parse declaration-specifier sequence.

allow_no_type:
    If True, allow a missing type specifier without error.

Returns:
    (spec, saw_type, first_coord) where spec is a dict with
    qual/storage/type/function/alignment entries, saw_type is True
    if a type specifier was consumed, and first_coord is the coord
    of the first specifier token (used for diagnostics).
NFTÚ_ALIGNASrÌ   ©rs   Ú_ATOMICrA  rC   rÉ   rÊ   rË   r¶   rB  ÚENUMrÙ   rµ   ¾   ÚUNIONÚSTRUCT)r]   rC   r`   rÏ   Ú_parse_alignment_specifierr  Ú_parse_atomic_specifierr[  r
  r_   Ú_STORAGE_CLASSÚ_FUNCTION_SPECÚ_TYPE_SPEC_SIMPLEr   r¹   Ú _parse_struct_or_union_specifierÚ_parse_enum_specifierr^   rN   rV   )r%   r�  rÎ   r‘  Úfirst_coordrb   s   &&    r   r‹  Ú%CParser._parse_declaration_specifiers  s‰  € ð ˆØˆØˆàØ—*‘*“,ˆCØŠ{Ùà�x‰x˜:Ô%ØÒ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø×9Ñ9Ó;¸[ÐQUð 7ó �ñ à�x‰x˜9Ô$¨¯©¸Ó);¸xÔ)GØÒ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø×6Ñ6Ó8¸&Èð 7ó �ð  �Ùà�x‰xœ?Ô*ØÒ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6ØŸ-™-›/×/Ñ/°Àð 7ó �ò à�x‰xœ>Ô)ØÒ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6ØŸ-™-›/×/Ñ/°À4ð 7ó �ò à�x‰xœ>Ô)ØÒ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6ØŸ-™-›/×/Ñ/°ÀDð 7ó �ò à�x‰xÔ,Ô,ØÒ&Ø"&§/¡/°#Ó"6�KØ—m‘m“o�Ø×6Ñ6ØÜ×(Ò(¨#¯)©)¨¸D¿O¹OÈCÓ<PÔQØØð	 7ó �ð  �Úà�x‰x˜8Ô#ßÙØÒ&Ø"&§/¡/°#Ó"6�KØ—m‘m“o�Ø×6Ñ6ØÜ×(Ò(¨#¯)©)¨¸D¿O¹OÈCÓ<PÔQØØð	 7ó �ð  �Úà�x‰xÐ.Ô.ØÒ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø×?Ñ?ÓAÀ6ÐRVð 7ó �ð  �Úà�x‰x˜6Ô!ØÒ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø×4Ñ4Ó6¸Àtð 7ó �ð  �ÚààŠ<Ø×ÑÐ3°T·Y±Y×5GÑ5GÔHç§Ø×ÑÐ;¸[ÔIà˜{Ð*Ð*r   c                ó   <€ V ^8„  d   QhRR/# )r   r   rÃ   r+   )r   r   s   "€r   r   rD   ˜  s   ø€ ÷ `ñ `°ñ `r   c           	     óœ  € R pRpRpR p V P                  4       pVf   EM°VP                  R8X  d<   Vf   V P                  V4      pV P                  WP	                  4       RRR7      pRpKc  VP                  R8X  dR   V P                  ^4      R8X  d<   Vf   V P                  V4      pV P                  WP                  4       RRR7      pRpKÅ  VP                  \        9   dE   Vf   V P                  V4      pV P                  WP                  4       P                  R	RR7      pEK  VP                  \        9   dp   Vf   V P                  V4      pV P                  4       pV P                  V\        P                  ! VP                  .V P                  V4      R
7      RRR7      pRpEK¢  VP                  R8X  dz   V'       d   EM
Vf   V P                  V4      pV P                  4       pV P                  V\        P                  ! VP                  .V P                  V4      R
7      RRR7      pRpEK,  VP                  R9   d=   Vf   V P                  V4      pV P                  WP                  4       RRR7      pRpEKy  VP                  R8X  d=   Vf   V P                  V4      pV P                  WP                  4       RRR7      pRpEKÆ   Vf'   V P                  RV P                   P"                  4       V'       g   V'       g   V P                  RV4       VP%                  R4      f   . VR&   VP%                  R4      f   . VR&   V# )NFTr«  rÌ   r¬  r­  rA  rC   rÉ   r¶   rB  r®  zInvalid specifier listrµ   rÊ   rË   r¯  )r]   rC   r`   rÏ   r²  r  r³  r[  r
  r_   r¶  r   r¹   r·  r¸  r^   rN   rV   r…   )r%   rÎ   r‘  Úsaw_alignmentr¹  rb   s   &     r   Ú_parse_specifier_qualifier_listÚ'CParser._parse_specifier_qualifier_list˜  s"  € ØˆØˆØˆØˆàØ—*‘*“,ˆCØŠ{Ùà�x‰x˜:Ô%ØÒ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø×9Ñ9Ó;¸[ÐQUð 7ó �ð !%�Ùà�x‰x˜9Ô$¨¯©¸Ó);¸xÔ)GØÒ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø×6Ñ6Ó8¸&Èð 7ó �ð  �Ùà�x‰xœ?Ô*ØÒ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6ØŸ-™-›/×/Ñ/°Àð 7ó �ò à�x‰xÔ,Ô,ØÒ&Ø"&§/¡/°#Ó"6�KØ—m‘m“o�Ø×6Ñ6ØÜ×(Ò(¨#¯)©)¨¸D¿O¹OÈCÓ<PÔQØØð	 7ó �ð  �Úà�x‰x˜8Ô#ßÙØÒ&Ø"&§/¡/°#Ó"6�KØ—m‘m“o�Ø×6Ñ6ØÜ×(Ò(¨#¯)©)¨¸D¿O¹OÈCÓ<PÔQØØð	 7ó �ð  �Úà�x‰xÐ.Ô.ØÒ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø×?Ñ?ÓAÀ6ÐRVð 7ó �ð  �Úà�x‰x˜6Ô!ØÒ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø×4Ñ4Ó6¸Àtð 7ó �ð  �ÚààŠ<Ø×ÑÐ6¸¿	¹	×8JÑ8JÔKç§Ø×ÑÐ;¸[ÔIà�8‰8�IÓÒ&Ø ˆD�‰OØ�8‰8�JÓÒ'Ø!ˆD�Ñàˆr   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r   )r   r   )r   r   s   "€r   r   rD   û  s   ø€ ÷ ñ ©D±­Iñ r   c                ó’   € . pV P                  4       \        9   d,   VP                  V P                  4       P                  4       KD  V# rr   )r  r[  rs   r
  r_   )r%   r¸   s   & r   Ú_parse_type_qualifier_listÚ"CParser._parse_type_qualifier_listû  s3   € ØˆØ�o‰oÓ¤?Ô2Ø�L‰L˜Ÿ™›×.Ñ.Ö/Øˆr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   ©r   r¥   )r   r   s   "€r   r   rD     s   ø€ ÷ 9ñ 9©E¯J©Jñ 9r   c                óŠ  € V P                  R 4      pV P                  R4       V P                  4       '       dG   V P                  4       pV P                  R4       \        P                  ! W P                  V4      4      # V P                  4       pV P                  R4       \        P                  ! W0P                  V4      4      # )r«  rA  rZ  )r  r-  rk  r   ÚAlignasr`   Ú_parse_constant_expression)r%   rb   r¼   Úexprs   &   r   r²  Ú"CParser._parse_alignment_specifier  s�   € Ø�l‰l˜:Ó&ˆØ�‰�XÔà×#Ñ#×%Ò%Ø×'Ñ'Ó)ˆCØ�L‰L˜Ô"Ü—=’= §o¡o°cÓ&:Ó;Ð;à×.Ñ.Ó0ˆØ�‰�XÔÜ�}Š}˜T§?¡?°3Ó#7Ó8Ð8r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD     s   ø€ ÷ ñ ©¯©ñ r   c                óÂ   € V P                  R 4       V P                  R4       V P                  4       pV P                  R4       VP                  P                  R4       V# )r­  rA  rZ  Ú_Atomic)r  rk  r¸   rs   )r%   r¼   s   & r   r³  ÚCParser._parse_atomic_specifier  sK   € Ø�‰�YÔØ�‰�XÔØ×#Ñ#Ó%ˆØ�‰�XÔØ�	‰	×Ñ˜Ô#Øˆ
r   c                óH   <€ V ^8„  d   QhRS[ R,          RS[RS[R,          /# )r   rƒ  rÓ   r=  r   )r	   rB   r   )r   r   s   "€r   r   rD     s/   ø€ ÷ ñ Ù˜kÕ*ðÙ<@ðá	ˆkÕ	ñr   c                ó®   € Ve   V.MV P                  VR7      .pV P                  R4      '       d$   VP                  V P                  VR7      4       K:  V# )Nr¢  ÚCOMMA)Ú_parse_init_declaratorr  rs   )r%   rƒ  r=  rÒ   s   &&& r   r�  Ú#CParser._parse_init_declarator_list  sZ   € ð
 Ò ð ‰Gà×-Ñ-°gÐ-Ó>Ð?ð 	ð �l‰l˜7×#Ò#Ø�L‰L˜×4Ñ4¸WÐ4ÓEÖFØˆr   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   r=  r   rÓ   r5  )r   r   s   "€r   r   rD   '  s   ø€ ÷ 8ñ 8©dð 8¸{ñ 8r   c                ó¾   € V'       d   V P                  4       MV P                  4       pR pV P                  R4      '       d   V P                  4       p\	        W#R R7      # )Nr‚  rï   )rT  Ú_parse_declaratorr  rŽ  rO   )r%   r=  r£   rÜ   s   &&  r   rÒ  ÚCParser._parse_init_declarator'  sL   € ß.5ˆt×(Ñ(Ô*¸4×;QÑ;QÓ;SˆØˆØ�<‰<˜×!Ò!Ø×*Ñ*Ó,ˆDÜ˜°$Ô7Ð7r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   3  s   ø€ ÷ Tñ T±%·*±*ñ Tr   c                ó˜  € V P                  4       pV P                  VP                  4      pV P                  4       R9   dÙ   V P                  4       pV P                  4       R8X  d�   V P                  4        V P	                  R4      '       d%   V! VP                  . V P                  V4      R7      # V P                  4       pV P                  R4       V! VP                  W@P                  V4      R7      # V! VP                  RV P                  V4      R7      # V P                  4       R8X  d|   V P                  4       pV P	                  R4      '       d   V! R. V P                  V4      R7      # V P                  4       pV P                  R4       V! RW@P                  V4      R7      # V P                  RV P                  V4      4       R# )r?  r  ÚRBRACE)r€   rÒ   rl   Nz Invalid struct/union declaration>   r?  rB  )	r
  rø   r_   r  r  r`   Ú_parse_struct_declaration_listr  r^   )r%   rb   ÚklassÚname_tokrÒ   Ú	brace_toks   &     r   r·  Ú(CParser._parse_struct_or_union_specifier3  so  € Ø�m‰m‹oˆØ×/Ñ/°·	±	Ó:ˆà�?‰?ÓÐ 0Ô0Ø—}‘}“ˆHØ�‰Ó  HÔ,Ø—‘”Ø—<‘< ×)Ò)Ù Ø%Ÿ^™^°2¸T¿_¹_ÈXÓ=Vôð ð ×;Ñ;Ó=�Ø—‘˜XÔ&ÙØ!Ÿ™¨u¿O¹OÈHÓ<Uôð ñ Ø—^‘^¨4°t·±ÀxÓ7Pôð ð �?‰?Ó Ô(ØŸ™›ˆIØ�|‰|˜H×%Ò%Ù $¨b¸¿¹È	Ó8RÔSÐSØ×7Ñ7Ó9ˆEØ�L‰L˜Ô"Ù˜d¨%·±ÀyÓ7QÔRÐRà×ÑÐ<¸d¿o¹oÈcÓ>RÖSr   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r   rt  )r   r   s   "€r   r   rD   T  s   ø€ ÷ ñ ±±U·Z±ZÕ0@ñ r   c                ó†   € . pV P                  4       R9  d*   V P                  4       pVf   K+  VP                  V4       K>  V# )N>   NrÚ  )r  Ú_parse_struct_declarationrv  )r%   rÒ   Úitemss   &  r   rÛ  Ú&CParser._parse_struct_declaration_listT  s>   € ØˆØ�o‰oÓÐ'7Ô7Ø×2Ñ2Ó4ˆEØŠ}ÙØ�L‰L˜ÖØˆr   c                óT   <€ V ^8„  d   QhRS[ S[S[P                  ,          ,          /# r   )r	   r   r   r¥   )r   r   s   "€r   r   rD   `  s"   ø€ ÷ 
ñ 
©8±D¹¿¹Õ4DÕ+Eñ 
r   c           	     ó:  € V P                  4       R 8X  d   V P                  4        R# V P                  4       R9   d   V P                  4       .# V P                  4       pRVP	                  R. 4      9  g   Q hRpV P                  4       '       g   V P                  4       R8X  d   V P                  4       pVe$   V P                  R 4       V P                  WR7      # \        VR,          4      ^8X  d{   VR,          ^ ,          p\        V\        P                  4      '       d   TpM\        P                  ! V4      pV P                  R 4       V P                  V\        VRRR7      .R7      # V P                  R 4       V P                  V\        RRRR7      .R7      # )	r}  NrÖ   rÊ   ÚCOLON©rÎ   rÒ   rC   rï   r„  )r  r
  rˆ  r¾  r…   rD  Ú_parse_struct_declarator_listr  ré   rz   r§   r   r¥   r¹   rO   )r%   rÎ   rÒ   ÚnodeÚ	decl_types   &    r   râ  Ú!CParser._parse_struct_declaration`  sl  € Ø�?‰?Ó Ô&Ø�M‰MŒOÙØ�?‰?ÓÐ 7Ô7Ø×2Ñ2Ó4Ð5Ð5à×3Ñ3Ó5ˆØ §¡¨°BÓ 7Ô7Ð7Ð7àˆØ×"Ñ"×$Ò$¨¯©Ó(9¸WÔ(DØ×6Ñ6Ó8ˆEØÒØ�L‰L˜Ô Ø×+Ñ+°Ð+ÓCÐCäˆt�F�|Ó Ô!Ø˜•< •?ˆDÜ˜$¤§
¡
×+Ò+Ø ‘	ä!×0Ò0°Ó6�	Ø�L‰L˜Ô Ø×+Ñ+Ø¤$¨I¸DÈ$Ô"OÐ!Pð ,ó ð ð 	�‰�VÔØ×'Ñ'Øœd¨°4ÀÔFÐGð (ó 
ð 	
r   c                ó.   <€ V ^8„  d   QhRS[ R,          /# ©r   r   rÓ   )r   )r   r   s   "€r   r   rD   ‚  s   ø€ ÷ ñ ©t°KÕ/@ñ r   c                ó˜   € V P                  4       .pV P                  R 4      '       d"   VP                  V P                  4       4       K8  V# ©rÑ  )Ú_parse_struct_declaratorr  rs   rš  s   & r   ré  Ú%CParser._parse_struct_declarator_list‚  s<   € Ø×.Ñ.Ó0Ð1ˆØ�l‰l˜7×#Ò#Ø�L‰L˜×6Ñ6Ó8Ö9Øˆr   c                ó   <€ V ^8„  d   QhRR/# rî  r+   )r   r   s   "€r   r   rD   Š  s   ø€ ÷ =ñ =¨+ñ =r   c                ó  € V P                  R 4      '       d0   V P                  4       pR\        P                  ! RRRR4      RRRV/# V P	                  4       pV P                  R 4      '       d   V P                  4       pRVRRRV/# RVRRRR/# )rç  r£   NrÜ   r×   )r  rÈ  r   r¨   rÖ  )r%   r×   r£   s   &  r   rñ  Ú CParser._parse_struct_declaratorŠ  sš   € Ø�<‰<˜× Ò Ø×5Ñ5Ó7ˆGàœŸš t¨T°4¸Ó>Ø˜Ø˜7ðð ð ×%Ñ%Ó'ˆØ�<‰<˜× Ò Ø×5Ñ5Ó7ˆGØ˜D &¨$°	¸7ÐCÐCà˜˜f d¨I°tÐ<Ð<r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   œ  s   ø€ ÷ =ñ =¡u§z¡zñ =r   c                ól  € V P                  R 4      pV P                  4       R9   d¸   V P                  4       pV P                  4       R8X  db   V P                  4        V P                  4       pV P                  R4       \        P
                  ! VP                  W0P                  V4      4      # \        P
                  ! VP                  RV P                  V4      4      # V P                  R4       V P                  4       pV P                  R4       \        P
                  ! RW0P                  V4      4      # )r®  r  rÚ  N>   r?  rB  )r  r  r
  Ú_parse_enumerator_listr   rà   r_   r`   )r%   rb   rÝ  Úenumss   &   r   r¸  ÚCParser._parse_enum_specifierœ  sÛ   € Ø�l‰l˜6Ó"ˆØ�?‰?ÓÐ 0Ô0Ø—}‘}“ˆHØ�‰Ó  HÔ,Ø—‘”Ø×3Ñ3Ó5�Ø—‘˜XÔ&Ü—z’z (§.¡.°%¿¹ÈÓ9MÓNÐNÜ—:’:˜hŸn™n¨d°D·O±OÀCÓ4HÓIÐIà�‰�XÔØ×+Ñ+Ó-ˆØ�‰�XÔÜ�zŠz˜$ §¡°sÓ';Ó<Ð<r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   ­  s   ø€ ÷ ñ ©¯
©
ñ r   c                ó"  € V P                  4       p\        P                  ! V.VP                  4      pV P	                  R 4      '       dF   V P                  4       R8X  d    V# V P                  4       pVP                  P                  V4       K\  V# ©rÑ  rÚ  )Ú_parse_enumeratorr   ÚEnumeratorListrl   r  r  Úenumeratorsrs   )r%   ÚenumÚ	enum_lists   &  r   rø  ÚCParser._parse_enumerator_list­  s{   € Ø×%Ñ%Ó'ˆÜ×(Ò(¨$¨°·±Ó<ˆ	Ø�l‰l˜7×#Ò#Ø�‰Ó  HÔ,Øð Ðð ×)Ñ)Ó+ˆDØ×!Ñ!×(Ñ(¨Ö.ØÐr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   ¸  s   ø€ ÷ ñ ¡5§:¡:ñ r   c                ó(  € V P                  R 4      pV P                  R4      '       d   V P                  4       pMRp\        P                  ! VP
                  W P                  V4      4      pV P                  VP                  VP                  4       V# )r?  r‚  N)
r  r  rÈ  r   Ú
Enumeratorr_   r`   r‹   r€   rl   )r%   rÝ  r_   r  s   &   r   rþ  ÚCParser._parse_enumerator¸  sn   € Ø—<‘< Ó%ˆØ�<‰<˜×!Ò!Ø×3Ñ3Ó5‰EàˆEÜ×Ò §¡°·±ÀxÓ7PÓQˆØ×Ñ˜TŸY™Y¨¯
©
Ô3Øˆr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   Æ  s   ø€ ÷ ñ ¡5§:¡:ñ r   c                ó<   € V P                  R R R7      w  rVf   Q hV# )F©rN  rO  )rV  )r%   r£   r“  s   &  r   rÖ  ÚCParser._parse_declaratorÆ  s1   € Ø×,Ñ,Ø ¸5ð -ó 
‰ˆð ÒÐÐØˆr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   Î  s   ø€ ÷ Hñ H¡e§j¡jñ Hr   c                ó(   € V P                  R RR7      # )r¾   T©rÅ   Úallow_paren©Ú_parse_declarator_kindrt   s   &r   rT  ÚCParser._parse_id_declaratorÎ  s   € Ø×*Ñ*°À$Ð*ÓGÐGr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   Ò  s   ø€ ÷ Lñ L©%¯*©*ñ Lr   c                ó(   € V P                  R RR7      # )ÚtypeidTr  r  rt   s   &r   rS  Ú CParser._parse_typeid_declaratorÒ  s   € Ø×*Ñ*°ÀdÐ*ÓKÐKr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   Ö  s   ø€ ÷ Mñ M±%·*±*ñ Mr   c                ó(   € V P                  R RR7      # )r  Fr  r  rt   s   &r   rR  Ú(CParser._parse_typeid_noparen_declaratorÖ  s   € Ø×*Ñ*°ÀeÐ*ÓLÐLr   c                ó@   <€ V ^8„  d   QhRS[ RS[RS[P                  /# ©r   rÅ   r  r   ©r   rB   r   r¥   )r   r   s   "€r   r   rD   Ú  s&   ø€ ÷ ñ ©3ð ¹Tð ÁeÇjÁjñ r   c                ó¢   € R pV P                  4       R8X  d   V P                  4       pV P                  WR7      pVe   V P                  WC4      # V# )Nr@  ©r  )r  Ú_parse_pointerÚ_parse_direct_declaratorr¬   )r%   rÅ   r  ÚptrÚdirects   &&&  r   r  ÚCParser._parse_declarator_kindÚ  sR   € ØˆØ�?‰?Ó Ô'Ø×%Ñ%Ó'ˆCØ×.Ñ.¨tÐ.ÓMˆØŠ?Ø×)Ñ)¨&Ó6Ð6Øˆr   c                ó@   <€ V ^8„  d   QhRS[ RS[RS[P                  /# r  r  )r   r   s   "€r   r   rD   æ  s)   ø€ ÷ /ñ /Ùð/Ù&*ð/á	�‰ñ/r   c           	     óh  € V'       d=   V P                  R 4      '       d&   V P                  VRR7      pV P                  R4       M^VR8X  d   V P                  R4      pMV P                  R4      p\        P                  ! VP
                  RRRV P                  V4      R7      pV P                  V4      # )	rA  Tr  rZ  r¾   r?  rB  NrÚ   )r  r  r  r   r¨   r_   r`   Ú_parse_decl_suffixes)r%   rÅ   r  r£   rÝ  s   &&&  r   r   Ú CParser._parse_direct_declaratoræ  s–   € ÷ ˜4Ÿ<™<¨×1Ò1Ø×.Ñ.¨tÀÐ.ÓFˆDØ�L‰L˜Õ"à�tŒ|ØŸ<™<¨Ó-‘àŸ<™<¨Ó1�Ü—>’>Ø!Ÿ™ØØØØ—o‘o hÓ/ôˆDð ×(Ñ(¨Ó.Ð.r   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   r£   r   rÅ  )r   r   s   "€r   r   rD   û  s#   ø€ ÷ ñ ©¯©ð ¹¿
¹
ñ r   c                óê   €  V P                  4       R8X  d#   V P                  WP                  V4      4      pK8  V P                  4       R8X  d%   V P                  V4      pV P                  W4      pKq   V# )zAParse a chain of array/function suffixes and attach them to decl.ra  rA  )r  r¬   Ú_parse_array_declÚ_parse_function_decl)r%   r£   r�  s   && r   r&  ÚCParser._parse_decl_suffixesû  sl   € àØ�‰Ó  JÔ.Ø×-Ñ-¨d×4JÑ4JÈ4Ó4PÓQ�ÙØ�‰Ó  HÔ,Ø×0Ñ0°Ó6�Ø×-Ñ-¨dÓ9�ÙØØˆr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   Ú	base_declr   rÅ  )r   r   s   "€r   r   rD   	  s'   ø€ ÷ Tñ T©5¯:©:ð T¹%¿*¹*ñ Tr   c                ó<   € V P                  R VP                  R7      # ©N)Ú	base_typerl   )Ú_parse_array_decl_commonrl   )r%   r/  s   &&r   r*  ÚCParser._parse_array_decl	  s   € Ø×,Ñ,°tÀ9Ç?Á?Ð,ÓSÐSr   c                ót   <€ V ^8„  d   QhRS[ S[P                  ,          RS[ S[,          RS[P                  /# )r   r2  rl   r   ©r	   r   r¥   r   )r   r   s   "€r   r   rD     s6   ø€ ÷ 7(ñ 7(Ù!¡%§*¡*Õ-ð7(Ù6>¹uµoð7(á	�‰ñ7(r   c                ó°  aa€ V P                  R4      pSf   V P                  V4      oVV3R lpV P                  R4      '       dL   R.V P                  4       ;'       g    . ,           pV P	                  4       pV P                  R4       V! We4      # V P                  4       \        9   Ed   V P                  4       ;'       g    . pV P                  R4      '       d4   VR.,           pV P	                  4       pV P                  R4       V! We4      # V P                  R4      pV'       dJ   V P                  R4       \        P                  ! VP                  V P                  V4      4      pV! We4      # RpV P                  4       '       d   V P	                  4       pV P                  R4       V! We4      # V P                  R4      pV'       dK   V P                  R4       \        P                  ! VP                  V P                  V4      4      pV! V. 4      # RpV P                  4       '       d   V P	                  4       pV P                  R4       V! V. 4      # )a	  Parse an array declarator suffix and return an ArrayDecl node.

base_type:
    Base declarator node to attach (None for direct-declarator parsing,
    TypeDecl for abstract declarators).

coord:
    Coordinate to use for the ArrayDecl. If None, uses the '[' token.
ra  Nc                 ó6   <€ \         P                  ! SWSR 7      # ))rC   ÚdimÚ	dim_qualsrl   )r   Ú	ArrayDecl)r9  r:  r2  rl   s   &&€€r   Úmake_array_declÚ9CParser._parse_array_decl_common.<locals>.make_array_decl  s   ø€ Ü—?’?Ø CÀEôð r   ÚSTATICÚstaticÚRBRACKETr@  )r  r`   r  rÂ  Ú_parse_assignment_expressionr  r[  r   r?  r_   r2  )r%   r2  rl   Ú
lbrack_tokr<  r:  r9  Ú	times_toks   &ff     r   r3  Ú CParser._parse_array_decl_common  sã  ù€ ð —\‘\ *Ó-ˆ
ØŠ=Ø—O‘O JÓ/ˆEö	ð
 �<‰<˜×!Ò!Ø!˜
 d×&EÑ&EÓ&G×&MÐ&MÈ2ÕNˆIØ×3Ñ3Ó5ˆCØ�L‰L˜Ô$Ù" 3Ó2Ð2à�?‰?Ó¤Õ/Ø×7Ñ7Ó9×?Ð?¸RˆIØ�|‰|˜H×%Ò%Ø%¨¨
Õ2�	Ø×7Ñ7Ó9�Ø—‘˜ZÔ(Ù& sÓ6Ð6ØŸ™ WÓ-ˆIßØ—‘˜ZÔ(Ü—h’h˜yŸ™°·±À	Ó0JÓK�Ù& sÓ6Ð6ØˆCØ×&Ñ&×(Ò(Ø×7Ñ7Ó9�Ø�L‰L˜Ô$Ù" 3Ó2Ð2à—L‘L Ó)ˆ	ßØ�L‰L˜Ô$Ü—(’(˜9Ÿ?™?¨D¯O©O¸IÓ,FÓGˆCÙ" 3¨Ó+Ð+àˆØ×"Ñ"×$Ò$Ø×3Ñ3Ó5ˆCØ�‰�ZÔ Ù˜s BÓ'Ð'r   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r.  rÅ  )r   r   s   "€r   r   rD   F  s#   ø€ ÷ ñ ©e¯j©jð ¹U¿Z¹Zñ r   c                óZ  € V P                  R 4       V P                  R4      '       d   RpMGV P                  4       '       d   V P                  4       MV P	                  4       pV P                  R4       \
        P                  ! VRVP                  R7      pV P                  4       R8X  d�   VP                  es   VP                  P                   FX  p\        V\
        P                  4      '       d    V# \        VRR4      pV'       g   K=  V P                  WTP                  4       KZ  	  V# )rA  rZ  N©ÚargsrC   rl   r  r€   )r  r  r-  Ú_parse_parameter_type_listÚ_parse_identifier_list_optr   rº   rl   r  rH  Úparamsr§   ÚEllipsisParamÚgetattrr‹   )r%   r/  rH  r�  Úparamr€   s   &&    r   r+  ÚCParser._parse_function_declF  sî   € Ø�‰�XÔØ�<‰<˜×!Ò!Ø‰Dð ×+Ñ+×-Ò-ð ×/Ñ/Ô1à×4Ñ4Ó6ð ð
 �L‰L˜Ô"ä�~Š~ 4¨d¸)¿/¹/ÔJˆà�?‰?Ó Ô(Ø�y‰yÒ$Ø!ŸY™Y×-Ô-�EÜ! %¬×)<Ñ)<×=Ò=Øð
 ˆô	 # 5¨&°$Ó7�Dß‘tØ×,Ñ,¨T·;±;Ö?ñ .ð ˆr   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r   ©r	   r   r¥   )r   r   s   "€r   r   rD   `  s   ø€ ÷ ñ ¡©¯©Õ 4ñ r   c                ó6  € . pV P                  R 4      pV'       dO   V P                  4       ;'       g    . pVP                  W0P                  V4      34       V P                  R 4      pKV  V'       g   R# RpV F  w  r5\        P
                  ! W4VR7      pK  	  V# )r@  N)r¸   rC   rl   )r  rÂ  rs   r`   r   ÚPtrDecl)r%   ÚstarsrC  r¸   r!  rl   s   &     r   r  ÚCParser._parse_pointer`  s€   € ØˆØ—L‘L Ó)ˆ	ßØ×3Ñ3Ó5×;Ð;¸ˆEØ�L‰L˜%§¡°Ó!;Ð<Ô=ØŸ™ WÓ-ŠIçÙàˆÛ!‰LˆEÜ—-’- e¸UÔCŠCñ "àˆ
r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   ©r   Ú	ParamList)r   r   s   "€r   r   rD   q  s   ø€ ÷ ñ ©E¯O©Oñ r   c                ó8  € V P                  4       pV P                  4       R 8X  du   V P                  ^4      R8X  d_   V P                  4        V P                  4       pVP                  P	                  \
        P                  ! V P                  V4      4      4       V# ©rÑ  ÚELLIPSIS)Ú_parse_parameter_listr  r
  rK  rs   r   rL  r`   )r%   rK  Úell_toks   &  r   rI  Ú"CParser._parse_parameter_type_listq  sn   € Ø×+Ñ+Ó-ˆØ�?‰?Ó Ô'¨D¯O©O¸AÓ,>À*Ô,LØ�M‰MŒOØ—m‘m“oˆGØ�M‰M× Ñ ¤×!4Ò!4°T·_±_ÀWÓ5MÓ!NÔOØˆr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rW  )r   r   s   "€r   r   rD   z  s   ø€ ÷ ñ ¡u§¡ñ r   c                ó6  € V P                  4       p\        P                  ! V.VP                  4      pV P	                  4       R 8X  dR   V P	                  ^4      R8w  d<   V P                  4        VP                  P                  V P                  4       4       Kf  V# rZ  )Ú_parse_parameter_declarationr   rX  rl   r  r
  rK  rs   ©r%   rƒ  rK  s   &  r   r\  ÚCParser._parse_parameter_listz  sn   € Ø×1Ñ1Ó3ˆÜ—’ % ¨%¯+©+Ó6ˆØ�o‰oÓ 7Ô*¨t¯©¸qÓ/AÀZÔ/OØ�M‰MŒOØ�M‰M× Ñ  ×!BÑ!BÓ!DÖEØˆr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   „  s   ø€ ÷ Iñ I©e¯j©jñ Ir   c           	     ó   € V P                  R R7      w  rpVR,          '       g   \        P                  ! R.VR7      .VR&   V P                  4       '       dW   V P	                  R R R7      w  rEV'       d(   V P                  V\        VRRR7      .R7      ^ ,          # V P                  WV4      # V P                  4       pV P                  WV4      # )	Tr€  rC   r*   r¶   r
  Nrï   rè  )	r‹  r   r¹   rD  rV  ré   rO   Ú_build_parameter_declarationrQ  )r%   rÎ   r“  r’  r£   Úis_nameds   &     r   ra  Ú$CParser._parse_parameter_declaration„  sÕ   € Ø"×@Ñ@ÈtÐ@ÓTÑˆ�à�F�|Œ|Ü!×0Ò0°%°À
ÔKÐLˆD�‰Là×"Ñ"×$Ò$Ø!×7Ñ7Ø#¸dð 8ó ‰NˆD÷ Ø×/Ñ/Ø¤d°¸4ÈÔ&NÐ%Oð 0ó àõð ð ×4Ñ4°TÀÓLÐLà×2Ñ2Ó4ˆØ×0Ñ0°¸ZÓHÐHr   c                óx   <€ V ^8„  d   QhRRRS[ S[P                  ,          RS[ S[,          RS[P                  /# )r   rÎ   rÃ   r£   r’  r   r6  )r   r   s   "€r   r   rD   —  s?   ø€ ÷ <ñ <Øð<Ù'/±·
±
Õ';ð<ÙIQÑRWÍð<á	�‰ñ<r   c                óð  € \        VR ,          4      ^8”  d†   \        VR ,          R,          P                  4      ^8X  d^   V P                  VR ,          R,          P                  ^ ,          4      '       d(   V P                  V\	        VRRR7      .R7      ^ ,          # \
        P                  ! RVR,          RT;'       g    \
        P                  ! RRRR4      VR7      pV P                  W!R ,          4      # )rC   Nrï   rè  r9   rÉ   ©r€   r¸   rÛ   rC   rl   rƒ   )	rz   r»   r”   ré   rO   r   r²   r¨   r¿   )r%   rÎ   r£   r’  s   &&&&r   rf  Ú$CParser._build_parameter_declaration—  sØ   € ô ��V•Ó Ô!Ü�D˜•L Õ$×*Ñ*Ó+¨qÔ0Ø×&Ñ& t¨F¥|°BÕ'7×'=Ñ'=¸aÕ'@×AÒAà×+Ñ+Ø¤$¨D°tÀTÔ"JÐ!Kð ,ó àõð ô �~Š~ØØ�v•,ØØ×?Ð?œŸš¨¨d°D¸$Ó?Øô
ˆð ×'Ñ'¨°6­lÓ;Ð;r   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r   rQ  )r   r   s   "€r   r   rD   ­  s   ø€ ÷ -ñ -©H±U·Z±ZÕ,@ñ -r   c                óP   € V P                  4       R 8X  d   R# V P                  4       # ©rZ  N)r  Ú_parse_identifier_listrt   s   &r   rJ  Ú"CParser._parse_identifier_list_opt­  s#   € Ø�?‰?Ó Ô(ÙØ×*Ñ*Ó,Ð,r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   ³  s   ø€ ÷ ñ ©¯
©
ñ r   c                óî   € V P                  4       p\        P                  ! V.VP                  4      pV P	                  R 4      '       d,   VP
                  P                  V P                  4       4       KB  V# rð  )Ú_parse_identifierr   rX  rl   r  rK  rs   rb  s   &  r   rp  ÚCParser._parse_identifier_list³  sU   € Ø×&Ñ&Ó(ˆÜ—’ % ¨%¯+©+Ó6ˆØ�l‰l˜7×#Ò#Ø�M‰M× Ñ  ×!7Ñ!7Ó!9Ö:Øˆr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   )r   r²   )r   r   s   "€r   r   rD   ¾  s   ø€ ÷ Vñ V¡%§.¡.ñ Vr   c                ó®  € V P                  4       pV P                  4       pR pVe   VP                  pM)VR,          '       d   VR,          ^ ,          P                  p\        P                  ! RVR,          R,          R T;'       g    \        P
                  ! R R R R 4      VR7      p\        \        P                  V P                  WAR,          4      4      # )NrC   r9   rÉ   r´   rk  )r¾  rQ  rl   r   r²   r¨   r   r¿   )r%   rÎ   r£   rl   r¯   s   &    r   rk  ÚCParser._parse_type_name¾  s¬   € Ø×3Ñ3Ó5ˆØ×2Ñ2Ó4ˆàˆØÒØ—J‘J‰EØ�&�\Œ\Ø˜•L •O×)Ñ)ˆEä—>’>ØØ�v•,˜q•/ØØ×?Ð?œŸš¨¨d°D¸$Ó?Øô
ˆô ”E—N‘N D×$<Ñ$<¸XÈFÅ|Ó$TÓUÐUr   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r   rQ  )r   r   s   "€r   r   rD   Ò  s   ø€ ÷ ñ ±¹¿¹Õ0Dñ r   c                óJ  € V P                  4       R 8X  dh   V P                  4       pV P                  4       '       d   V P                  4       pM\        P
                  ! RRRR4      pVf   Q hV P                  W!4      # V P                  4       '       d   V P                  4       # R# )r@  N)r  r  rb  Ú!_parse_direct_abstract_declaratorr   r¨   r¬   )r%   r!  r£   s   &  r   rQ  Ú&CParser._parse_abstract_declarator_optÒ  sŒ   € Ø�?‰?Ó Ô'Ø×%Ñ%Ó'ˆCØ×6Ñ6×8Ò8Ø×=Ñ=Ó?‘ä—~’~ d¨D°$¸Ó=�Ø’?Ð"�?Ø×)Ñ)¨$Ó4Ð4à×2Ñ2×4Ò4Ø×9Ñ9Ó;Ð;ár   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   ä  s   ø€ ÷ /ñ /±5·:±:ñ /r   c           	     óV  € V P                  R 4      pV'       dµ   V P                  4       '       g   V P                  4       R8X  db   V P                  4       pV P	                  R4       \
        P                  ! V\
        P                  ! RRRR4      V P                  V4      R7      pMtV P                  4       pV P	                  R4       Vf   Q hMLV P                  4       R8X  d   V P                  4       pM&V P                  RV P                  P                  4       V P                  X4      # )rA  rZ  NrG  ra  zInvalid abstract declarator)r  r-  r  Ú_parse_parameter_type_list_optr  r   rº   r¨   r`   rQ  Ú_parse_abstract_array_baser^   rN   rV   r&  )r%   rl  rK  r£   s   &   r   r{  Ú)CParser._parse_direct_abstract_declaratorä  sê   € Ø—\‘\ (Ó+ˆ
ßØ×'Ñ'×)Ò)¨T¯_©_Ó->À(Ô-JØ×<Ñ<Ó>�Ø—‘˜XÔ&Ü—~’~ØÜŸš¨¨d°D¸$Ó?ØŸ/™/¨*Ó5ô‘ð ×:Ñ:Ó<�Ø—‘˜XÔ&ØÒ'Ð'Ñ'Ø�_‰_Ó *Ô,Ø×2Ñ2Ó4‰Dà×ÑÐ;¸T¿Y¹Y×=OÑ=OÔPà×(Ñ(¨Ó.Ð.r   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r   )r	   r   rX  )r   r   s   "€r   r   rD   û  s   ø€ ÷ 1ñ 1±¹¿¹Õ0Iñ 1r   c                óP   € V P                  4       R 8X  d   R# V P                  4       # ro  )r  rI  rt   s   &r   r  Ú&CParser._parse_parameter_type_list_optû  s#   € Ø�?‰?Ó Ô(ÙØ×.Ñ.Ó0Ð0r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD     s   ø€ ÷ 
ñ 
©E¯J©Jñ 
r   c                óV   € V P                  \        P                  ! R R R R 4      R R7      # r1  )r3  r   r¨   rt   s   &r   r€  Ú"CParser._parse_abstract_array_base  s.   € Ø×,Ñ,Ü—n’n T¨4°°tÓ<ÀDð -ó 
ð 	
r   c                óh   <€ V ^8„  d   QhRS[ P                  S[S[ P                  ,          ,          /# r   ©r   r¥   r   )r   r   s   "€r   r   rD     s&   ø€ ÷ :ñ :¡%§*¡*©t±E·J±JÕ/?Õ"?ñ :r   c                ó   € V P                  4       pT;;R 8X  d   M
;R8X  d   M M  V P                  4       # ;R8X  d(   V P                  ^4      R8X  d    V P                  4       # ;R8X  d    V P                  4       # ;;R8X  d   M
;R8X  d   M M  V P                  4       # ;;R8X  d   M;R8X  d   M
;R	8X  d   M M  V P	                  4       # ;;R
8X  d   M;R8X  d   M;R8X  d   M
;R8X  d   M M  V P                  4       # ;;R8X  d   M
;R8X  d   M M  V P                  4       # R8X  d   V P                  4       #  V P                  4       # )ÚCASEÚDEFAULTr?  rç  r  ÚIFÚSWITCHÚWHILEÚDOÚFORÚGOTOÚBREAKÚCONTINUEÚRETURNr†  r…  r~  )	r  Ú_parse_labeled_statementrŠ  Ú_parse_selection_statementÚ_parse_iteration_statementÚ_parse_jump_statementrˆ  r‰  Ú_parse_expression_statementr8  s   & r   Ú_parse_statementÚCParser._parse_statement  së   € Ø—?‘?Ó$ˆØØ#—Ÿ)Ò#Ù×4Ñ4Ó6Ð6Þ˜Ÿ™¨Ó+¨wÔ6Ù×4Ñ4Ó6Ð6ÞÙ×5Ñ5Ó7Ð7Ø —Ÿ’Ù×6Ñ6Ó8Ð8Ø'—Ÿ4§%Ò'Ù×6Ñ6Ó8Ð8Ø9—Ÿ'§J·Ò9Ù×1Ñ1Ó3Ð3Ø'—ŸiÒ'Ù×5Ñ5Ó7Ð7Ý!Ø×0Ñ0Ó2Ð2ØØ×7Ñ7Ó9Ð9r   c                óh   <€ V ^8„  d   QhRS[ P                  S[S[ P                  ,          ,          /# r   r‰  )r   r   s   "€r   r   rD   $  s&   ø€ ÷ 'ñ '±·
±
¹TÁ%Ç*Á*Õ=MÕ0Mñ 'r   c                óì   € V P                  4       R9   dQ   V P                  4       pV P                  4       p\        P                  ! W.,           V^ ,          P
                  R7      # V P                  4       # )r†  ©Úblock_itemsrl   r„  )r  Ú_parse_pppragma_directive_listr›  r   ÚCompoundrl   )r%   ÚpragmasÚstmts   &  r   Ú_parse_pragmacomp_or_statementÚ&CParser._parse_pragmacomp_or_statement$  s]   € Ø�?‰?ÓÐ 7Ô7Ø×9Ñ9Ó;ˆGØ×(Ñ(Ó*ˆDÜ—>’>¨g¸Õ.>ÀgÈaÅj×FVÑFVÔWÐWØ×$Ñ$Ó&Ð&r   c                óh   <€ V ^8„  d   QhRS[ P                  S[S[ P                  ,          ,          /# r   r‰  )r   r   s   "€r   r   rD   ,  s&   ø€ ÷ 'ñ '¡5§:¡:±±U·Z±ZÕ0@Õ#@ñ 'r   c                ón   € V P                  4       '       d   V P                  4       # V P                  4       # rr   )r-  r›  r›  rt   s   &r   Ú_parse_block_itemÚCParser._parse_block_item,  s/   € Ø×#Ñ#×%Ò%Ø×*Ñ*Ó,Ð,Ø×$Ñ$Ó&Ð&r   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r   rt  )r   r   s   "€r   r   rD   2  s   ø€ ÷ 
ñ 
©©U¯Z©ZÕ(8ñ 
r   c                óà   € . pV P                  4       R9  dW   V P                  4       p\        V\        4      '       d   VR.8X  d   KE  VP	                  V4       KX  VP                  V4       Kk  V# )rÚ  N>   NrÚ  )r  r©  r§   Úlistrv  rs   )r%   rã  Úitems   &  r   Ú_parse_block_item_listÚCParser._parse_block_item_list2  s[   € ØˆØ�o‰oÓÐ'7Ô7Ø×)Ñ)Ó+ˆDÜ˜$¤×%Ò%Ø˜D˜6”>ÙØ—‘˜TÖ"à—‘˜TÖ"Øˆr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   ?  s   ø€ ÷ 
ñ 
©5¯:©:ñ 
r   c                ó.  € V P                  R 4      pV P                  R4      '       d(   \        P                  ! RV P	                  V4      R7      # V P                  4       pV P                  R4       \        P                  ! W P	                  V4      R7      # )r  rÚ  NrŸ  )r  r  r   r¢  r`   r¯  )r%   Ú
lbrace_tokr   s   &  r   rŠ  Ú!CParser._parse_compound_statement?  sp   € Ø—\‘\ (Ó+ˆ
Ø�<‰<˜×!Ò!Ü—>’>¨d¸$¿/¹/È*Ó:UÔVÐVØ×1Ñ1Ó3ˆØ�‰�XÔÜ�~Š~Ø#¯?©?¸:Ó+Fô
ð 	
r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   L  s   ø€ ÷ Sñ S©%¯*©*ñ Sr   c                óL  € V P                  4       pT;R 8X  dŸ    V P                  4       pV P                  R4       V P                  4       '       d   V P	                  4       pM%\
        P                  ! V P                  V4      4      p\
        P                  ! VP                  W0P                  V4      4      # ;R8X  d¦    V P                  4       pV P                  4       pV P                  R4       V P                  4       '       d   V P	                  4       pM%\
        P                  ! V P                  V4      4      p\
        P                  ! WS.V P                  V4      4      # R8X  d•   V P                  4       pV P                  R4       V P                  4       '       d   V P	                  4       pM%\
        P                  ! V P                  V4      4      p\
        P                  ! V.V P                  V4      4      #  V P                  RV P                  P                  4       R# )r?  rç  r‹  rŒ  zInvalid labeled statementN)r  r
  r  r:  r¥  r   ÚEmptyStatementr`   ÚLabelr_   rÈ  ÚCaseÚDefaultr^   rN   rV   )r%   r9  rÝ  r¤  Úcase_tokrÉ  Údef_toks   &      r   r–  Ú CParser._parse_labeled_statementL  sƒ  € Ø—?‘?Ó$ˆØÞÙŸ=™=›?�Ø—‘˜WÔ%Ø×)Ñ)×+Ò+Ø×>Ñ>Ó@‘Dä ×/Ò/°·±ÀÓ0IÓJ�DÜ—{’{ 8§>¡>°4¿¹ÈÓ9RÓSÐSÞÙŸ=™=›?�Ø×6Ñ6Ó8�Ø—‘˜WÔ%Ø×)Ñ)×+Ò+Ø×>Ñ>Ó@‘Dä ×/Ò/°·±ÀÓ0IÓJ�DÜ—z’z $¨°·±ÀÓ0IÓJÐJÝØŸ-™-›/�Ø—‘˜WÔ%Ø×)Ñ)×+Ò+Ø×>Ñ>Ó@‘Dä ×/Ò/°·±ÀÓ0HÓI�DÜ—}’} d V¨T¯_©_¸WÓ-EÓFÐFØØ×!Ñ!Ð"=¸t¿y¹y×?QÑ?QÖRr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   m  s   ø€ ÷ Wñ W©E¯J©Jñ Wr   c           	     óê  € V P                  4       pVP                  ;R 8X  d¸    V P                  R4       V P                  4       pV P                  R4       V P	                  4       pV P                  R4      '       d7   V P	                  4       p\        P                  ! W#W@P                  V4      4      # \        P                  ! W#RV P                  V4      4      # R8X  dr   V P                  R4       V P                  4       pV P                  R4       V P	                  4       p\        \        P                  ! WVV P                  V4      4      4      #  V P                  RV P                  V4      4       R# )r�  rA  rZ  ÚELSENrŽ  zInvalid selection statement)r
  rC   r  Ú_parse_expressionr¥  r  r   ÚIfr`   r   ÚSwitchr^   )r%   rb   ÚcondÚ	then_stmtÚ	else_stmtrÉ  r¤  s   &      r   r—  Ú"CParser._parse_selection_statementm  s  € Ø�m‰m‹oˆØ�h‰hÞÙ—‘˜XÔ&Ø×-Ñ-Ó/�Ø—‘˜XÔ&Ø ×?Ñ?ÓA�	Ø—<‘< ×'Ò'Ø $× CÑ CÓ E�IÜ Ÿ8š8 D°YÇÁÐPSÓ@TÓUÐUÜ—x’x °°t·±ÀsÓ7KÓLÐLÝØ—‘˜XÔ&Ø×-Ñ-Ó/�Ø—‘˜XÔ&Ø×:Ñ:Ó<�Ü'¬¯ª°TÀÇÁÐQTÓAUÓ(VÓWÐWØØ×!Ñ!Ð"?ÀÇÁÐQTÓAUÖVr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   †  s   ø€ ÷ &Wñ &W©E¯J©Jñ &Wr   c           	     óp  € V P                  4       pVP                  ;R 8X  dj    V P                  R4       V P                  4       pV P                  R4       V P	                  4       p\
        P                  ! W#V P                  V4      4      # ;R8X  dŒ    V P	                  4       pV P                  R 4       V P                  R4       V P                  4       pV P                  R4       V P                  R4       \
        P                  ! W#V P                  V4      4      # R8X  Edp   V P                  R4       V P                  4       '       d¯   V P                  4       p\
        P                  ! W@P                  V4      4      pV P                  4       pV P                  R4       V P                  4       pV P                  R4       V P	                  4       p\
        P                  ! WRWcV P                  V4      4      # V P                  4       pV P                  R4       V P                  4       pV P                  R4       V P                  4       pV P                  R4       V P	                  4       p\
        P                  ! WRWcV P                  V4      4      #  V P                  RV P                  V4      4       R# )r�  rA  rZ  r�  r}  r‘  zInvalid iteration statementN)r
  rC   r  rÁ  r¥  r   ÚWhiler`   ÚDoWhiler-  r›  ÚDeclListÚ_parse_expression_optÚForr^   )r%   rb   rÄ  r¤  rÒ   rÜ   Ú	next_exprs   &      r   r˜  Ú"CParser._parse_iteration_statement†  s  € Ø�m‰m‹oˆØ�h‰hÞÙ—‘˜XÔ&Ø×-Ñ-Ó/�Ø—‘˜XÔ&Ø×:Ñ:Ó<�Ü—{’{ 4¨t¯©¸sÓ/CÓDÐDÞÙ×:Ñ:Ó<�Ø—‘˜WÔ%Ø—‘˜XÔ&Ø×-Ñ-Ó/�Ø—‘˜XÔ&Ø—‘˜VÔ$Ü—}’} T°·±ÀÓ1EÓFÐFÞØ—‘˜XÔ&Ø×+Ñ+×-Ò-Ø ×3Ñ3Ó5�EÜ Ÿ>š>¨%·±ÀÓ1EÓF�DØ×5Ñ5Ó7�DØ—L‘L Ô(Ø $× :Ñ :Ó <�IØ—L‘L Ô*Ø×>Ñ>Ó@�DÜ Ÿ9š9 T°À$Ç/Á/ÐRUÓBVÓWÐWà×1Ñ1Ó3�Ø—‘˜VÔ$Ø×1Ñ1Ó3�Ø—‘˜VÔ$Ø ×6Ñ6Ó8�	Ø—‘˜XÔ&Ø×:Ñ:Ó<�Ü—y’y ¨Y¸d¿o¹oÈcÓ>RÓSÐSØØ×!Ñ!Ð"?ÀÇÁÐQTÓAUÖVr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   °  s   ø€ ÷ Rñ R¡u§z¡zñ Rr   c                ó>  € V P                  4       pVP                  ;R 8X  dT    V P                  R4      pV P                  R4       \        P                  ! VP
                  V P                  V4      4      # ;R8X  d8    V P                  R4       \        P                  ! V P                  V4      4      # ;R8X  d8    V P                  R4       \        P                  ! V P                  V4      4      # R8X  d„   V P                  R4      '       d'   \        P                  ! RV P                  V4      4      # V P                  4       pV P                  R4       \        P                  ! W0P                  V4      4      #  V P                  RV P                  V4      4       R# )r’  r?  r}  r“  r”  r•  NzInvalid jump statement)r
  rC   r  r   ÚGotor_   r`   ÚBreakÚContinuer  ÚReturnrÁ  r^   )r%   rb   rÝ  rÉ  s   &   r   r™  ÚCParser._parse_jump_statement°  s  € Ø�m‰m‹oˆØ�h‰hÞÙŸ<™<¨Ó-�Ø—‘˜VÔ$Ü—z’z (§.¡.°$·/±/À#Ó2FÓGÐGÞÙ—‘˜VÔ$Ü—{’{ 4§?¡?°3Ó#7Ó8Ð8ÞÙ—‘˜VÔ$Ü—~’~ d§o¡o°cÓ&:Ó;Ð;ÝØ—<‘< ×'Ò'Ü Ÿ<š<¨¨d¯o©o¸cÓ.BÓCÐCØ×-Ñ-Ó/�Ø—‘˜VÔ$Ü—|’| D¯/©/¸#Ó*>Ó?Ð?ØØ×!Ñ!Ð":¸D¿O¹OÈCÓ<PÖQr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   Ç  s   ø€ ÷ ñ ©U¯Z©Zñ r   c                óš   € V P                  4       pV P                  R 4      pVf&   \        P                  ! V P	                  V4      4      # V# r˜  )rÍ  r  r   r·  r`   )r%   rÉ  Úsemi_toks   &  r   rš  Ú#CParser._parse_expression_statementÇ  sB   € Ø×)Ñ)Ó+ˆØ—<‘< Ó'ˆØŠ<Ü×'Ò'¨¯©¸Ó(AÓBÐBØˆr   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r   rQ  )r   r   s   "€r   r   rD   Ò  s   ø€ ÷ ñ ¡x±·
±
Õ';ñ r   c                óR   € V P                  4       '       d   V P                  4       # R # rr   )r2  rÁ  rt   s   &r   rÍ  ÚCParser._parse_expression_optÒ  s#   € Ø×"Ñ"×$Ò$Ø×)Ñ)Ó+Ð+Ùr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   Ø  s   ø€ ÷ 1ñ 1¡5§:¡:ñ 1r   c                ó&  € V P                  4       pV P                  R 4      '       g   V# WP                  4       .pV P                  R 4      '       d"   VP                  V P                  4       4       K8  \        P                  ! W!P
                  4      # rð  ©rA  r  rs   r   ÚExprListrl   ©r%   rÉ  Úexprss   &  r   rÁ  ÚCParser._parse_expressionØ  sl   € Ø×0Ñ0Ó2ˆØ�|‰|˜G×$Ò$ØˆKØ×8Ñ8Ó:Ð;ˆØ�l‰l˜7×#Ò#Ø�L‰L˜×:Ñ:Ó<Ö=Ü�~Š~˜e§Z¡ZÓ0Ð0r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   ã  s   ø€ ÷ ñ ©e¯j©jñ r   c                ó¤  € V P                  4       R 8X  dJ   V P                  ^4      R8X  d4   V P                  4        V P                  4       pV P                  R4       V# V P	                  4       pV P                  4       '       dL   V P                  4       P                  pV P                  4       p\        P                  ! W2WBP                  4      # V# )rA  r  rZ  )r  r
  rŠ  r  Ú_parse_conditional_expressionrg  r_   rA  r   Ú
Assignmentrl   )r%   ÚcomprÉ  ÚopÚrhss   &    r   rA  Ú$CParser._parse_assignment_expressionã  s¡   € Ø�?‰?Ó Ô(¨T¯_©_¸QÓ-?À8Ô-KØ�M‰MŒOØ×1Ñ1Ó3ˆDØ�L‰L˜Ô"ØˆKà×1Ñ1Ó3ˆØ×!Ñ!×#Ò#Ø—‘“×&Ñ&ˆBØ×3Ñ3Ó5ˆCÜ×#Ò# B¨c·:±:Ó>Ð>Øˆr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   ó  s   ø€ ÷ ñ ©u¯z©zñ r   c                óø   € V P                  4       pV P                  R 4      '       dS   V P                  4       pV P                  R4       V P	                  4       p\
        P                  ! WW1P                  4      # V# )ÚCONDOPrç  )Ú_parse_binary_expressionr  rÁ  r  rè  r   Ú	TernaryOprl   )r%   rÉ  ÚiftrueÚiffalses   &   r   rè  Ú%CParser._parse_conditional_expressionó  sa   € Ø×,Ñ,Ó.ˆØ�<‰<˜×!Ò!Ø×+Ñ+Ó-ˆFØ�L‰L˜Ô!Ø×8Ñ8Ó:ˆGÜ—?’? 4°¿*¹*ÓEÐEØˆr   c                ód   <€ V ^8„  d   QhRS[ RS[S[P                  ,          RS[P                  /# )r   Úmin_precÚlhsr   )r*   r	   r   r¥   )r   r   s   "€r   r   rD   ý  s2   ø€ ÷ ñ ÙðÙ&.©u¯z©zÕ&:ðá	�‰ñr   c                ó  € Vf   V P                  4       p V P                  4       pVe   VP                  \        9  d    V# \        VP                  ,          pWA8  d    V# VP                  pV P                  4        V P                  4       p V P                  4       pVe   VP                  \        9  d   M1\        VP                  ,          pW„8”  d   V P                  W†4      pK[   \        P                  ! WRWbP                  4      pKø  rr   )
Ú_parse_cast_expressionr]   rC   Ú_BINARY_PRECEDENCEr_   r
  rñ  r   ÚBinaryOprl   )	r%   r÷  rø  rb   Úprecrë  rì  Únext_tokÚ	next_precs	   &&&      r   rñ  Ú CParser._parse_binary_expressioný  sß   € ð Š;Ø×-Ñ-Ó/ˆCàØ—*‘*“,ˆCØŠ{˜cŸh™hÔ.@Ô@Øð* ˆ
ô) & c§h¡hÕ/ˆDØŒØð$ ˆ
ð! —‘ˆBØ�M‰MŒOØ×-Ñ-Ó/ˆCàØŸ:™:›<�ØÒ# x§}¡}Ô<NÔ'NØÜ.¨x¯}©}Õ=�	ØÔ#Ø×7Ñ7¸	ÓG’Càä—.’. ¨#¯y©yÓ9ŠCr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD     s   ø€ ÷ .ñ .©¯
©
ñ .r   c                ó,  € V P                  4       pVer   Vw  r#pV P                  4       R8X  d"   V P                  V4       V P                  4       # V P                  4       p\        P
                  ! W%V P                  V4      4      # V P                  4       # )Nr  )rm  r  r"  rú  r   ÚCastr`   Ú_parse_unary_expression)r%   Úresultr¼   r  rl  rÉ  s   &     r   rú  ÚCParser._parse_cast_expression  s‡   € Ø×0Ñ0Ó2ˆØÒØ$*Ñ!ˆC�zØ�‰Ó  HÔ,ð —‘˜DÔ!ð ×+Ñ+Ó-Ð-ð ×2Ñ2Ó4�Ü—z’z #¨T¯_©_¸ZÓ-HÓIÐIØ×+Ñ+Ó-Ð-r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   4  s   ø€ ÷ 0ñ 0©¯©ñ 0r   c                ó¾  € V P                  4       pVR9   dL   V P                  4       pV P                  4       p\        P                  ! VP
                  W3P                  4      # VR9   dL   V P                  4       pV P                  4       p\        P                  ! VP
                  W3P                  4      # VR8X  d›   V P                  4       pV P                  4       pVe7   Vw  p p\        P                  ! VP
                  WPP                  V4      4      # V P                  4       p\        P                  ! VP
                  W0P                  V4      4      # VR8X  ds   V P                  4       pV P                  R4       V P                  4       pV P                  R4       \        P                  ! VP
                  WPP                  V4      4      # V P                  4       # )ÚPLUSPLUSÚSIZEOFÚ_ALIGNOFrA  rZ  ¾   r	  Ú
MINUSMINUS>   ÚANDÚNOTÚLNOTÚPLUSÚMINUSr@  )r  r
  r  r   ÚUnaryOpr_   rl   rú  rm  r`   r  rk  Ú_parse_postfix_expression)r%   r9  rb   rÉ  r  r¼   r“  s   &      r   r  ÚCParser._parse_unary_expression4  sf  € Ø—?‘?Ó$ˆØÐ1Ô1Ø—-‘-“/ˆCØ×/Ñ/Ó1ˆDÜ—=’= §¡¨D·*±*Ó=Ð=àÐGÔGØ—-‘-“/ˆCØ×.Ñ.Ó0ˆDÜ—=’= §¡¨D·*±*Ó=Ð=à�xÔØ—-‘-“/ˆCØ×4Ñ4Ó6ˆFØÒ!Ø"‘	��Q˜Ü—}’} S§Y¡Y°·_±_ÀSÓ5IÓJÐJØ×/Ñ/Ó1ˆDÜ—=’= §¡¨D·/±/À#Ó2FÓGÐGà�zÔ!Ø—-‘-“/ˆCØ�L‰L˜Ô"Ø×'Ñ'Ó)ˆCØ�L‰L˜Ô"Ü—=’= §¡¨C·±ÀÓ1EÓFÐFà×-Ñ-Ó/Ð/r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   T  s   ø€ ÷ .ñ .©5¯:©:ñ .r   c                ó6  € V P                  4       pVev   Vw  r#pV P                  R4      '       dI   V P                  4       pV P                  R4       V P                  R4       \        P
                  ! W%4      # V P                  V4       V P                  4       p V P                  R4      '       dE   V P                  4       pV P                  R4       \        P                  ! WgVP                  4      pK\  V P                  R4      '       dm   V P                  4       R8X  d   V P                  4        R pM!V P                  4       pV P                  R4       \        P                  ! WhVP                  4      pKß  V P                  4       R
9   d±   V P                  4       p	V P                  4       p
V
P                  R9  d"   V P!                  RV P#                  V
4      4       \        P$                  ! V
P&                  V P#                  V
4      4      p\        P(                  ! WiP&                  W¶P                  4      pEK¤  V P                  4       R9   dF   V P                  4       p\        P*                  ! R	VP&                  ,           WfP                  4      pEKþ   V# )Nr  rÑ  rÚ  ra  r@  rA  rZ  zInvalid struct referenceÚp>   ÚARROWÚPERIOD>   r?  rB  r  )rm  r  Ú_parse_initializer_listr  r   ÚCompoundLiteralr"  Ú_parse_primary_expressionrÁ  ÚArrayRefrl   r  r
  Ú_parse_argument_expression_listÚFuncCallrC   r^   r`   r?  r_   Ú	StructRefr  )r%   r  r¼   r  r“  rÜ   rÉ  ÚsubrH  Úop_tokrÝ  Úfieldrb   s   &            r   r  Ú!CParser._parse_postfix_expressionT  sì  € Ø×0Ñ0Ó2ˆØÒØ!‰LˆC�qð �|‰|˜H×%Ò%Ø×3Ñ3Ó5�Ø—‘˜WÔ%Ø—‘˜XÔ&Ü×,Ò,¨SÓ7Ð7à—‘˜DÔ!à×-Ñ-Ó/ˆØØ�|‰|˜J×'Ò'Ø×,Ñ,Ó.�Ø—‘˜ZÔ(Ü—~’~ d°·±Ó<�ÙØ�|‰|˜H×%Ò%Ø—?‘?Ó$¨Ô0Ø—M‘M”OØ‘Dà×?Ñ?ÓA�DØ—L‘L Ô*Ü—~’~ d°$·*±*Ó=�ÙØ�‰Ó Ð$7Ô7ØŸ™›�ØŸ=™=›?�Ø—=‘=Ð(8Ô8Ø×%Ñ%Ø2°D·O±OÀHÓ4Môô Ÿš §¡°·±ÀÓ1JÓK�Ü—’ t¯\©\¸5Ç*Á*ÓM�ÚØ�‰Ó Ð$>Ô>Ø—m‘m“o�Ü—}’} S¨3¯9©9¥_°d¿J¹JÓG�ÚØØˆr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   †  s   ø€ ÷ !Dñ !D©5¯:©:ñ !Dr   c                ór  € V P                  4       pVR 8X  d   V P                  4       # V\        9   g   V\        9   g   V\        9   d   V P                  4       # V\        9   d   V P                  4       # V\        9   d   V P                  4       # VR8X  d4   V P                  4        V P                  4       pV P                  R4       V# VR8X  dÂ   V P                  4       pV P                  R4       V P                  4       pV P                  R4       V P                  4       pV P                  R4       V P                  V4      p\         P"                  ! \         P$                  ! VP&                  V4      \         P(                  ! WE.V4      V4      # V P+                  RV P,                  P.                  4       R# )r?  rA  rZ  ÚOFFSETOFrÑ  zInvalid expressionN)r  rt  Ú
_INT_CONSTÚ_FLOAT_CONSTÚ_CHAR_CONSTÚ_parse_constantÚ_STRING_LITERALÚ_parse_unified_string_literalÚ_WSTR_LITERALÚ_parse_unified_wstring_literalr
  rÁ  r  rk  Ú!_parse_offsetof_member_designatorr`   r   r   r?  r_   râ  r^   rN   rV   )r%   r9  rÉ  Úoff_tokr¼   Ú
designatorrl   s   &      r   r  Ú!CParser._parse_primary_expression†  s_  € Ø—?‘?Ó$ˆØ�tÔØ×)Ñ)Ó+Ð+àœ
Ô"Øœ<Ô'Øœ;Ô&à×'Ñ'Ó)Ð)Ø”Ô&Ø×5Ñ5Ó7Ð7Ø”}Ô$Ø×6Ñ6Ó8Ð8Ø�xÔØ�M‰MŒOØ×)Ñ)Ó+ˆDØ�L‰L˜Ô"ØˆKØ�zÔ!Ø—m‘m“oˆGØ�L‰L˜Ô"Ø×'Ñ'Ó)ˆCØ�L‰L˜Ô!Ø×?Ñ?ÓAˆJØ�L‰L˜Ô"Ø—O‘O GÓ,ˆEÜ—>’>Ü—’˜Ÿ™¨Ó.Ü—’ Ð0°%Ó8Øóð ð 	×ÑÐ.°·	±	×0BÑ0BÖCr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   «  s   ø€ ÷ ñ ±5·:±:ñ r   c                óv  € V P                  4       p V P                  R4      '       d5   V P                  4       p\        P                  ! VRW!P                  4      pKL  V P                  R4      '       dE   V P                  4       pV P                  R4       \        P                  ! WVP                  4      pK§   V# )Tr  Ú.ra  r@  )Ú_parse_identifier_or_typeidr  r   r!  rl   rÁ  r  r  )r%   rê  r$  rÉ  s   &   r   r1  Ú)CParser._parse_offsetof_member_designator«  s‘   € Ø×/Ñ/Ó1ˆØØ�|‰|˜H×%Ò%Ø×8Ñ8Ó:�Ü—’ t¨S°%¿¹ÓD�ÙØ�|‰|˜J×'Ò'Ø×-Ñ-Ó/�Ø—‘˜ZÔ(Ü—~’~ d°$·*±*Ó=�ÙØØˆr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   »  s   ø€ ÷ 1ñ 1±·±ñ 1r   c                óØ   € V P                  4       pV.pV P                  R 4      '       d"   VP                  V P                  4       4       K8  \        P                  ! W!P
                  4      # rð  rá  rã  s   &  r   r  Ú'CParser._parse_argument_expression_list»  sN   € Ø×0Ñ0Ó2ˆØ�ˆØ�l‰l˜7×#Ò#Ø�L‰L˜×:Ñ:Ó<Ö=Ü�~Š~˜e§Z¡ZÓ0Ð0r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   Ã  s   ø€ ÷ 4ñ 4©E¯J©Jñ 4r   c                ó"   € V P                  4       # rr   )rè  rt   s   &r   rÈ  Ú"CParser._parse_constant_expressionÃ  s   € Ø×1Ñ1Ó3Ð3r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   Ê  s   ø€ ÷ 9ñ 9¡5§:¡:ñ 9r   c                ó„   € V P                  R 4      p\        P                  ! VP                  V P	                  V4      4      # )r?  )r  r   r?  r_   r`   r	  s   & r   rt  ÚCParser._parse_identifierÊ  s.   € Ø�l‰l˜4Ó ˆÜ�xŠx˜Ÿ	™	 4§?¡?°3Ó#7Ó8Ð8r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   Ï  s   ø€ ÷ 9ñ 9©U¯Z©Zñ 9r   c                óæ   € V P                  4       pVP                  R9  d"   V P                  RV P                  V4      4       \        P
                  ! VP                  V P                  V4      4      # )r?  zExpected identifier>   r?  rB  )r
  rC   r^   r`   r   r?  r_   r	  s   & r   r8  Ú#CParser._parse_identifier_or_typeidÏ  sR   € Ø�m‰m‹oˆØ�8‰8Ð+Ô+Ø×ÑÐ3°T·_±_ÀSÓ5IÔJÜ�xŠx˜Ÿ	™	 4§?¡?°3Ó#7Ó8Ð8r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   Ö  s   ø€ ÷ Dñ D¡§¡ñ Dr   c                óz  € V P                  4       pVP                  \        9   d²   ^ p^ pVP                  RR  F'  pVR9   d   V^,          pK  VR9   g   K  V^,          pK)  	  V^8”  d   \	        R4      hV^8”  d   \	        R4      hRV,          RV,          ,           p\
        P                  ! VR,           VP                  V P                  V4      4      # VP                  \        9   di   VP                  R,          R9   d   RpMVP                  R,          R9   d   RpMR	p\
        P                  ! WaP                  V P                  V4      4      # VP                  \        9   d2   \
        P                  ! R
VP                  V P                  V4      4      # V P                  RV P                  V4      4       R# )r   Nz.Constant cannot have more than one u/U suffix.z.Constant cannot have more than two l/L suffix.z	unsigned zlong r*   Úfloatzlong doubleÚdoubleÚcharzInvalid constantéýÿÿÿ)ÚlÚL)ÚuÚUrƒ   )ÚfÚF)r
  rC   r)  r_   Ú
ValueErrorr   ÚConstantr`   r*  r+  r^   )r%   rb   Úu_countÚl_countÚchÚprefixrå   s   &      r   r,  ÚCParser._parse_constantÖ  sX  € Ø�m‰m‹oˆØ�8‰8”zÔ!ØˆGØˆGØ—i‘i  “n�Ø˜Ô#Ø˜q•L’GØ˜:Ö%Ø˜q•L’Gñ	 %ð
 ˜Œ{Ü Ð!QÓRÐRØ˜Œ{Ü Ð!QÓRÐRØ  7Õ*¨W°wÕ->Õ>ˆFÜ—>’> &¨5¥.°#·)±)¸T¿_¹_ÈSÓ=QÓRÐRà�8‰8”|Ô#Ø�y‰y˜�} 
Ô*Ø‘Ø—‘˜2• *Ô,Ø!‘à�Ü—>’> !§Y¡Y°·±ÀÓ0DÓEÐEà�8‰8”{Ô"Ü—>’> &¨#¯)©)°T·_±_ÀSÓ5IÓJÐJà×ÑÐ,¨d¯o©o¸cÓ.BÖCr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   ö  s   ø€ ÷ ñ ©u¯z©zñ r   c                ó0  € V P                  R 4      p\        P                  ! RVP                  V P	                  V4      4      pV P                  4       R 8X  d?   V P                  4       pVP                  RR VP                  R,          ,           Vn        KS  V# )ÚSTRING_LITERALÚstringN:ry   NNrƒ   )r  r   rS  r_   r`   r  r
  ©r%   rb   rê  Útok2s   &   r   r.  Ú%CParser._parse_unified_string_literalö  sn   € Ø�l‰lÐ+Ó,ˆÜ�~Š~˜h¨¯	©	°4·?±?À3Ó3GÓHˆØ�o‰oÓÐ#3Ô3Ø—=‘=“?ˆDØŸ™ C R˜¨4¯:©:°b­>Õ9ˆDŽJØˆr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   ÿ  s   ø€ ÷ ñ ±·
±
ñ r   c                ó¾  € V P                  4       pVP                  \        9  d"   V P                  R V P	                  V4      4       \
        P                  ! RVP                  V P	                  V4      4      pV P                  4       \        9   dM   V P                  4       pVP                  P                  4       RR VP                  R,          ,           Vn        Ke  V# )zInvalid string literalr\  N:r   NNrƒ   )
r
  rC   r/  r^   r`   r   rS  r_   r  Úrstripr]  s   &   r   r0  Ú&CParser._parse_unified_wstring_literalÿ  s™   € Ø�m‰m‹oˆØ�8‰8œ=Ô(Ø×ÑÐ6¸¿¹ÈÓ8LÔMÜ�~Š~˜h¨¯	©	°4·?±?À3Ó3GÓHˆØ�o‰oÓ¤=Ô0Ø—=‘=“?ˆDØŸ™×*Ñ*Ó,¨S¨bÐ1°D·J±J¸rµNÕBˆDŽJØˆr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD     s   ø€ ÷ 
3ñ 
3¡E§J¡Jñ 
3r   c                ó6  € V P                  R 4      pV'       dr   V P                  R4      '       d'   \        P                  ! . V P                  V4      4      # V P	                  4       pV P                  R4       V P                  R4       V# V P                  4       # )r  rÚ  rÑ  )r  r   ÚInitListr`   r  r  rA  )r%   r³  Ú	init_lists   &  r   rŽ  ÚCParser._parse_initializer  sw   € Ø—\‘\ (Ó+ˆ
ßØ�|‰|˜H×%Ò%Ü—~’~ b¨$¯/©/¸*Ó*EÓFÐFØ×4Ñ4Ó6ˆIØ�L‰L˜Ô!Ø�L‰L˜Ô"ØÐà×0Ñ0Ó2Ð2r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD     s   ø€ ÷ 5ñ 5©¯©ñ 5r   c                ó  € V P                  4       .pV P                  R 4      '       d8   V P                  4       R8X  d   M!VP                  V P                  4       4       KN  \        P
                  ! W^ ,          P                  4      # rý  )Ú_parse_initializer_itemr  r  rs   r   rf  rl   )r%   rã  s   & r   r  ÚCParser._parse_initializer_list  s`   € Ø×-Ñ-Ó/Ð0ˆØ�l‰l˜7×#Ò#Ø�‰Ó  HÔ,ØØ�L‰L˜×5Ñ5Ó7Ö8Ü�~Š~˜e¨1¥X§^¡^Ó4Ð4r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   %  s   ø€ ÷ ñ ©¯©ñ r   c                ó¨   € R pV P                  4       R9   d   V P                  4       pV P                  4       pVe   \        P                  ! W4      # V# )N¾   r  ra  )r  Ú_parse_designationrŽ  r   ÚNamedInitializer)r%   ÚdesignationrÜ   s   &  r   rk  ÚCParser._parse_initializer_item%  sO   € ØˆØ�?‰?ÓÐ 6Ô6Ø×1Ñ1Ó3ˆKØ×&Ñ&Ó(ˆØÒ"Ü×)Ò)¨+Ó<Ð<Øˆr   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r   rt  )r   r   s   "€r   r   rD   /  s   ø€ ÷ ñ ¡D©¯©Õ$4ñ r   c                óH   € V P                  4       pV P                  R 4       V# )r‚  )Ú_parse_designator_listr  ©r%   Údesignatorss   & r   rp  ÚCParser._parse_designation/  s"   € Ø×1Ñ1Ó3ˆØ�‰�XÔØÐr   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r   rt  )r   r   s   "€r   r   rD   5  s   ø€ ÷ ñ ©©U¯Z©ZÕ(8ñ r   c                óv   € . pV P                  4       R9   d"   VP                  V P                  4       4       K6  V# )ra  ro  )r  rs   Ú_parse_designatorrw  s   & r   rv  ÚCParser._parse_designator_list5  s4   € ØˆØ�o‰oÓÐ#9Ô9Ø×Ñ˜t×5Ñ5Ó7Ö8ØÐr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   =  s   ø€ ÷ Dñ D¡5§:¡:ñ Dr   c                ó  € V P                  R 4      '       d$   V P                  4       pV P                  R4       V# V P                  R4      '       d   V P                  4       # V P	                  RV P
                  P                  4       R# )ra  r@  r  zInvalid designatorN)r  rÈ  r  r8  r^   rN   rV   )r%   rÉ  s   & r   r|  ÚCParser._parse_designator=  si   € Ø�<‰<˜
×#Ò#Ø×2Ñ2Ó4ˆDØ�L‰L˜Ô$ØˆKØ�<‰<˜×!Ò!Ø×3Ñ3Ó5Ð5Ø×ÑÐ.°·	±	×0BÑ0BÖCr   c                ó    <€ V ^8„  d   QhRS[ /# r   )r   )r   r   s   "€r   r   rD   J  s   ø€ ÷ Pñ P¡Xñ Pr   c                ój   € V P                  R 4      pV P                  RV P                  V4      4       R# )r|  zDirectives not supported yetN)r  r^   r`   r	  s   & r   r‡  ÚCParser._parse_pp_directiveJ  s*   € Ø�l‰l˜8Ó$ˆØ×ÑÐ8¸$¿/¹/È#Ó:NÖOr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   rÅ  )r   r   s   "€r   r   rD   P  s   ø€ ÷ @ñ @©5¯:©:ñ @r   c                óŠ  € V P                  4       R 8X  dŒ   V P                  4       pV P                  4       R8X  dA   V P                  4       p\        P                  ! VP                  V P                  V4      4      # \        P                  ! RV P                  V4      4      # V P                  4       R8X  dh   V P                  4       pV P                  R4      pV P                  4       pV P                  R4       \        P                  ! W@P                  V4      4      # V P                  RV P                  P                  4       R# )r†  ÚPPPRAGMASTRr9   r…  rA  rZ  zInvalid pragmaN)r  r
  r   ÚPragmar_   r`   r  r.  r^   rN   rV   )r%   rb   Ústr_tokÚlparenÚliterals   &    r   rˆ  Ú!CParser._parse_pppragma_directiveP  sã   € Ø�?‰?Ó 
Ô*Ø—-‘-“/ˆCØ�‰Ó  MÔ1ØŸ-™-›/�Ü—|’| G§M¡M°4·?±?À7Ó3KÓLÐLÜ—<’<  D§O¡O°CÓ$8Ó9Ð9à�?‰?Ó 	Ô)Ø—-‘-“/ˆCØ—\‘\ (Ó+ˆFØ×8Ñ8Ó:ˆGØ�L‰L˜Ô"Ü—<’< ¯©¸Ó)@ÓAÐAà×ÑÐ*¨D¯I©I×,>Ñ,>Ö?r   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r   rt  )r   r   s   "€r   r   rD   b  s   ø€ ÷ ñ ±±U·Z±ZÕ0@ñ r   c                óv   € . pV P                  4       R9   d"   VP                  V P                  4       4       K6  V# )r†  r„  )r  rs   rˆ  )r%   r£  s   & r   r¡  Ú&CParser._parse_pppragma_directive_listb  s1   € ØˆØ�o‰oÓÐ#:Ô:Ø�N‰N˜4×9Ñ9Ó;Ö<Øˆr   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r   rt  )r   r   s   "€r   r   rD   i  s    ø€ ÷ Eñ E¡d©5¯:©:Õ&6ñ Er   c                ó(  € V P                  R 4      pV P                  R4       V P                  4       pRpV P                  R4      '       d   V P                  4       pV P                  R4       \        P
                  ! W#V P                  V4      4      .# )r~  rA  NrÑ  rZ  )r  rÈ  r  r.  r   ÚStaticAssertr`   )r%   rb   rÄ  rk   s   &   r   r‰  ÚCParser._parse_static_asserti  sx   € Ø�l‰lÐ+Ó,ˆØ�‰�XÔØ×.Ñ.Ó0ˆØˆØ�<‰<˜× Ò Ø×4Ñ4Ó6ˆCØ�‰�XÔÜ×"Ò" 4¨d¯o©o¸cÓ.BÓCÐDÐDr   )rP   rR   rN   )r9   Frr   )F©ry   )FFr+  )T©r   N)~r,   r-   r.   r/   r0   r   rS   rc   rh   r^   ru   r|   r‡   r‹   r”   rJ   rK   rL   rM   r¬   r¿   rÏ   ré   rò   rø   r]   r  r
  r  r  r  r"  r`   r-  r2  r:  rD  rK  rV  rI  rb  rg  rm  r\   rq  rw  r›  r™  rŒ  r�  r‹  r¾  rÂ  r²  r³  r�  rÒ  r·  rÛ  râ  ré  rñ  r¸  rø  rþ  rÖ  rT  rS  rR  r  r   r&  r*  r3  r+  r  rI  r\  ra  rf  rJ  rp  rk  rQ  r{  r  r€  r›  r¥  r©  r¯  rŠ  r–  r—  r˜  r™  rš  rÍ  rÁ  rA  rè  rñ  rú  r  r  r  r1  r  rÈ  rt  r8  r,  r.  r0  rŽ  r  rk  rp  rv  r|  r‡  rˆ  r¡  r‰  r2   r3   r4   s   @r   r8   r8   2   sü  ø‡ € ñ	ð "Ø$Ø(Ø"Ø*Ø Ø÷=ò =÷8ò ÷8Jò J÷,ð ,÷)ð )÷ ð  ÷+ð +÷	,ð 	,÷ð ÷:ð :÷ð ÷ð ÷,ð ,÷Tð ÷X&ð &÷Pò ÷,eò e÷N
ð 
÷*ð ÷$ò $÷5ò 5÷
ð ÷	ð 	÷ð ÷#ð #÷!ð !÷3ð 3÷'ò '÷.ò .÷)ð )÷,ò ,÷#ð #÷ò ÷6!ð !÷F;ð ;÷?ð ?÷%ð %÷6=ð =÷ð ÷Mð M÷lð ÷?ð ?÷'ð '÷Tð ÷v+ò v+÷v`ð `÷Fð ÷9ð 9÷ð ÷ò ÷8ò 8÷Tð T÷Bð ÷
ð 
÷Dð ÷=ð =÷$=ð =÷"ð ÷ð ÷ð ÷Hð H÷Lð L÷Mð M÷ð ÷/ò /÷*ð ÷Tð T÷7(ò 7(÷tð ÷4ð ÷"ð ÷ð ÷Ið I÷&<ð <÷,-ð -÷ð ÷Vð V÷(ð ÷$/ð /÷.1ð 1÷
ð 
÷:ð :÷.'ð '÷'ð '÷
ð 
÷
ð 
÷Sð S÷BWð W÷2&Wð &W÷TRð R÷.ð ÷ð ÷1ð 1÷ð ÷ ð ÷ò ÷D.ð .÷*0ð 0÷@.ð .÷d!Dð !D÷Jð ÷ 1ð 1÷4ð 4÷9ð 9÷
9ð 9÷Dð D÷@ð ÷ð ÷ 
3ð 
3÷5ð 5÷ð ÷ð ÷ð ÷Dð D÷Pð P÷@ð @÷$ð ÷Eö Er   r8   ÚLORÚLANDÚORÚXORr  ÚEQÚNEÚGTÚGEÚLTÚLEÚRSHIFTÚLSHIFTr  r  r@  ÚDIVIDEÚMODÚINLINEÚ	_NORETURNÚFLOAT_CONSTÚHEX_FLOAT_CONSTr[  c                   ó”   a € ] tR tRt o RtV 3R lR ltRV 3R lR lltV 3R lR ltV 3R	 lR
 ltV 3R lR lt	V 3R lR lt
RtV tR# )rQ   iÿ  zœWraps a lexer to provide convenient, buffered access to the underlying
token stream. The lexer is expected to be initialized with the input
string already.
c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   r<   r   N)r   )r   r   s   "€r   r   Ú_TokenStream.__annotate__	  s   ø€ ÷ ñ ™fð ¨ñ r   c                ó.   € Wn         . V n        ^ V n        R# r”  )Ú_lexerÚ_bufferÚ_index)r%   r<   s   &&r   rS   Ú_TokenStream.__init__	  s   € ØŒØ/1ˆŒØˆŽr   c                ó6   <€ V ^8„  d   QhRS[ RS[S[,          /# rû   rý   )r   r   s   "€r   r   r©  
	  s    ø€ ÷ 
1ñ 
1‘cð 
1¡(©6Õ"2ñ 
1r   c                óŒ   € V^ 8:  d   R# V P                  V4       V P                  V P                  V,           ^,
          ,          # )zœPeek at the k-th next token in the stream, without consuming it.

Examples:
    k=1 returns the immediate next token.
    k=2 returns the token after that.
N©Ú_fillr¬  r­  r   s   &&r   rÿ   Ú_TokenStream.peek
	  s5   € ð �Œ6ÙØ�
‰
�1ŒØ�|‰|˜DŸK™K¨!�O¨aÕ/Õ0Ð0r   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r   )r	   r   )r   r   s   "€r   r   r©  	  s   ø€ ÷ ñ ‘h™vÕ&ñ r   c                ó”   € V P                  ^4       V P                  V P                  ,          pV ;P                  ^,          un        V# )z%Consume a single token and return it.r±  r	  s   & r   r  Ú_TokenStream.next	  s2   € à�
‰
�1ŒØ�l‰l˜4Ÿ;™;Õ'ˆØ�Š�qÕ�Øˆ
r   c                ó    <€ V ^8„  d   QhRS[ /# r   r  )r   r   s   "€r   r   r©  "	  s   ø€ ÷ ñ ‘cñ r   c                ó   € V P                   # rr   ©r­  rt   s   &r   r  Ú_TokenStream.mark"	  s   € Ø�{‰{Ðr   c                ó$   <€ V ^8„  d   QhRS[ RR/# r  r  )r   r   s   "€r   r   r©  %	  s   ø€ ÷ ñ ™#ð  $ñ r   c                ó   € Wn         R # rr   r¹  r!  s   &&r   r   Ú_TokenStream.reset%	  s   € ØŽr   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Únr   Nr  )r   r   s   "€r   r   r©  (	  s   ø€ ÷ ñ ‘sð ˜tñ r   c                óÖ   € \        V P                  4      V P                  V,           8  d>   V P                  P	                  4       pV P                  P                  V4       Ve   Kf  R # R # rr   )rz   r¬  r­  r«  rõ   rs   )r%   r¿  rb   s   && r   r²  Ú_TokenStream._fill(	  sL   € Ü�$—,‘,Ó $§+¡+°¥/Ô1Ø—+‘+×#Ñ#Ó%ˆCØ�L‰L×Ñ Ô$ØŒ{Ùñ	 2r   )r¬  r­  r«  Nr“  )r,   r-   r.   r/   r0   rS   rÿ   r  r  r   r²  r2   r3   r4   s   @r   rQ   rQ   ÿ  sF   ø‡ € ñ÷
ð ÷

1ò 
1÷ð ÷ð ÷ð ÷ö r   rQ   c                   ó,   a € ] tR tRt o V 3R ltRtV tR# )rÃ   i6	  c                ó¦   <€ V ^8„  d   Qh/ S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   # )r   rÉ   rÊ   rC   rË   rÌ   )r   r   )r   r   s   "€r   r   Ú_DeclSpec.__annotate__6	  sT   ø‡ ‚ Ù
‰s�)�Oñ á‘#�YÑñ ñ ‰s�)�Oñ ñ ‘3�iÑñ	 ñ
 ‘C�yÑò r   r+   N©r,   r-   r.   r/   r1   r2   r3   r4   s   @r   rÃ   rÃ   6	  ó   ø‡ ‡ „ r   rÃ   c                   ó,   a € ] tR tRt o V 3R ltRtV tR# )rÓ   iA	  c                óª   <€ V ^8„  d   Qh/ S[ S[P                  ,          ;R&   S[ S[P                  ,          ;R&   S[ S[P                  ,          ;R&   # )r   r£   rÜ   r×   rQ  )r   r   s   "€r   r   Ú_DeclInfo.__annotate__A	  sG   ø‡ ‚ ñ
 ‘5—:‘:Õ
Ññ ñ ‘5—:‘:Õ
Ññ ñ ‘e—j‘jÕ!Ñ!ò r   r+   NrÅ  r4   s   @r   rÓ   rÓ   A	  rÆ  r   rÓ   N>   r‚  ÚOREQUALÚANDEQUALÚDIVEQUALÚMODEQUALÚXOREQUALÚ	PLUSEQUALÚ
MINUSEQUALÚ
TIMESEQUALÚLSHIFTEQUALÚRSHIFTEQUAL>   ÚAUTOÚEXTERNr>  ÚTYPEDEFÚREGISTERÚ_THREAD_LOCAL>   ÚCONSTr­  ÚRESTRICTÚVOLATILE>   ÚINTÚCHARÚLONGÚVOIDÚFLOATÚSHORTÚ_BOOLÚDOUBLEÚSIGNEDÚUNSIGNEDÚ_COMPLEXÚ__INT128>   r®  r°  r±  rB  r­  r«  >   r?  r  r  r  r  r  r@  rA  r
  r(  r	  r  r  >   ÚINT_CONST_BINÚINT_CONST_DECÚINT_CONST_HEXÚINT_CONST_OCTÚINT_CONST_CHAR>   Ú
CHAR_CONSTÚWCHAR_CONSTÚU8CHAR_CONSTÚU16CHAR_CONSTÚU32CHAR_CONST>   ÚWSTRING_LITERALÚU8STRING_LITERALÚU16STRING_LITERALÚU32STRING_LITERAL>   r�  r�  r‘  r‹  r’  r}  r“  r�  r  r•  rŽ  rŒ  r…  r”  r†  r~  rÈ   )+Údataclassesr   Útypingr   r   r   r   r   r	   r
   r   r   r9   r   Úc_lexerr   r   Úast_transformsr   r   r   Ú	Exceptionr6   r8   rf  rû  r´  rµ  r[  r¶  r,  Ú_EXPR_STARTr)  r*  r+  r-  r/  r1  r7  rQ   rÃ   rÆ   rÓ   r+   r   r   Ú<module>rü     s.  ðõ "÷
÷ 
õ 
õ ß #ß Cð ÷ð ó ðô$	�ô 	÷ Eñ  EòDB€ð"Ø	ˆ1ðà
ˆAðð 	ˆ!ðð 
ˆ1ð	ð
 
ˆ1ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð ˆaðð ˆaðð ˆAðð ˆQðð  ˆQð!ð" ˆað#ð$ 
ˆ1ñ%Ð ò* V€à˜KÐ(€â>€òÐ ð  Øõàõð õò Cõ	Cð ò€ò €
ð Ð0Ð1€ò€ð $Ð$€ò€ð Øõàõð õð õ	ð
 õð òÐ ÷(.ñ .ôn�	ô ð ÐJÕK€ô"�	ö "r   