Ë
    ªÌjs ã                   óô  — d dl mZ d dlmZmZmZmZmZmZ ddl	m
Z
 ddlmZmZ ddlmZmZ e G d„ d«      «       Z G d	„ d
e«      Z G d„ d«      Zh d£Zi dd “dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d“d!d"“d#d"“d$d%“d&d%“d'd%i¥Zh d(£Zd)d*hZh d+£Zh d,£Zeez  ez  ez  h d-£z  Zh d.£Zh d/£Zd0d1hZh d2£Zh d3£Z eez  ez  ez  e z  Z!h d4£Z" G d5„ d6«      Z# G d7„ d8e«      Z$ed9   Z% G d:„ d;e«      Z&y<)=é    )Ú	dataclass)ÚAnyÚLiteralÚNoReturnÚOptionalÚ	TypedDictÚcasté   )Úc_ast)Úfix_atomic_specifiersÚfix_switch_cases)ÚCLexerÚTokenc                   óF   — e Zd ZU dZeed<   eed<   dZedz  ed<   defd„Zy)ÚCoordzkCoordinates of a syntactic element. Consists of:
    - File name
    - Line number
    - Column number
    ÚfileÚlineNÚcolumnÚreturnc                 óx   — | j                   › d| j                  › �}| j                  �|d| j                  › �z  }|S )Nú:©r   r   r   )ÚselfÚtexts     úO/var/www/photos/backend/venv/lib/python3.12/site-packages/pycparser/c_parser.pyÚ__str__zCoord.__str__$   s>   € Ø—)‘)�˜A˜dŸi™i˜[Ð)ˆØ�;‰;Ð"Ø�a˜Ÿ™�}Ð%Ñ%ˆDØˆó    )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__Úintr   r   © r   r   r   r      s-   … ñð ƒIØ
ƒIØ€FˆC�$‰JÓð˜ô r   r   c                   ó   — e Zd Zy)Ú
ParseErrorN)r   r   r    r%   r   r   r'   r'   +   s   „ Ør   r'   c                   ó  — e Zd ZdZdedddddfdedee   d	ed
ededededdfd„Z	 d³dededede	j                  fd„Zd´dededz  defd„Zdedeez  dz  defd„Zdµd„Zdµd„Zdededz  ddfd„Zdededz  ddfd„Zdedefd „Zded!ededdfd"„Zdµd#„Zdµd$„Zdedefd%„Zd&ed'ede	j6                  fd(„Zd&e	j:                  e	j<                  z  e	j>                  z  d)e e   de	j:                  e	j<                  z  e	j>                  z  fd*„Z!	 d¶d+e"d,   d-ed.d/d0edd,f
d1„Z#	 d¶d2d,d3e d4   d5ede e	j6                     fd6„Z$d2d,d&e	j6                  d7e e	j6                     dz  d8e	j6                  de	j6                  f
d9„Z%d:edefd;„Z&d·d<ede'dz  fd=„Z(d·d<ededz  fd>„Z)de'fd?„Z*d@ede'dz  fdA„Z+d@ede'fdB„Z,defdC„Z-dDeddfdE„Z.dFe'defdG„Z/d´dFe'dz  defdH„Z0d´dFe'dz  defdI„Z1defdJ„Z2d¶dKedefdL„Z3de4edz  ef   fdM„Z5	 d¸dNedOede4e	j6                  dz  ef   fdP„Z6de4edz  ef   fdQ„Z7defdR„Z8defdS„Z9de4e	j>                  ee'f   dz  fdT„Z:de	j                  fdU„Z;de e	j6                     fdV„Z<de e	j6                     fdW„Z=de e	j6                     fdX„Z>de e	j6                     fdY„Z?d2d,dZede e	j6                     fd[„Z@de e	j6                     fd\„ZA	 d¶d]ede4d,eedz  f   fd^„ZBd¹d_„ZCde e   fd`„ZDde	j6                  fda„ZEde	j6                  fdb„ZF	 dºdce"d4   dKede d4   fdd„ZGd¶dKedd4fde„ZHde	j6                  fdf„ZIde e	j6                     fdg„ZJde e	j6                     dz  fdh„ZKde d4   fdi„ZLd»dj„ZMde	j6                  fdk„ZNde	j6                  fdl„ZOde	j6                  fdm„ZPde	j6                  fdn„ZQde	j6                  fdo„ZRde	j6                  fdp„ZSde	j6                  fdq„ZTd.edrede	j6                  fds„ZU	 d¼d.edrede	j6                  fdt„ZVd&e	j6                  de	j6                  fdu„ZWdve	j6                  de	j6                  fdw„ZX	 d´dxe	j6                  dz  dedz  de	j6                  fdy„ZYdve	j6                  de	j6                  fdz„ZZde	j6                  dz  fd{„Z[de	j¸                  fd|„Z]de	j¸                  fd}„Z^de	j6                  fd~„Z_d2d,d&e	j6                  dz  dedz  de	j6                  fd€„Z`de	j6                  dz  fd�„Zade	j6                  fd‚„Zbde	j>                  fdƒ„Zcde	j6                  dz  fd„„Zdde	j6                  fd…„Zede	j¸                  dz  fd†„Zfde	j6                  fd‡„Zgde	j6                  fdˆ„Zhde	j6                  fd‰„Zide	j6                  e e	j6                     z  fdŠ„Zjde e	j6                     fd‹„Zkde	j6                  fdŒ„Zlde	j6                  fd�„Zmde	j6                  fdŽ„Znde	j6                  fd�„Zode	j6                  fd�„Zpde	j6                  fd‘„Zqde	j6                  dz  fd’„Zrde	j6                  fd“„Zsde	j6                  fd”„Ztde	j6                  fd•„Zu	 d½d–ed—e	j6                  dz  de	j6                  fd˜„Zvde	j6                  fd™„Zwde	j6                  fdš„Zxde	j6                  fd›„Zyde	j6                  fdœ„Zzde	jö                  fd�„Z|de	jú                  fdž„Z~de	j6                  fdŸ„Zde	j6                  fd „Z€de	j6                  fd¡„Z�de	j6                  fd¢„Z‚de	j6                  fd£„Zƒde	j6                  fd¤„Z„de	�j
                  fd¥„Z†e‡d¦ed§edefd¨„«       Zˆde	j6                  fd©„Z‰de	j6                  fdª„ZŠde	j6                  fd«„Z‹de e	j6                     fd¬„ZŒde e	j6                     fd­„Z�de	j6                  fd®„ZŽdefd¯„Z�de	j6                  fd°„Z�de e	j6                     fd±„Z‘de	�j$                  fd²„Z“y)¾ÚCParseraF  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Ú Úlex_optimizeÚlexerÚlextabÚyacc_optimizeÚyacctabÚ
yacc_debugÚtaboutputdirr   Nc                 óº   —  || j                   | j                  | j                  | j                  ¬«      | _        i g| _        t        | j                  «      | _        y )N)Ú
error_funcÚon_lbrace_funcÚon_rbrace_funcÚtype_lookup_func)Ú_lex_error_funcÚ_lex_on_lbrace_funcÚ_lex_on_rbrace_funcÚ_lex_type_lookup_funcÚclexÚ_scope_stackÚ_TokenStreamÚ_tokens)r   r+   r,   r-   r.   r/   r0   r1   s           r   Ú__init__zCParser.__init__;   sP   € ñ "Ø×+Ñ+Ø×3Ñ3Ø×3Ñ3Ø!×7Ñ7ô	
ˆŒ	ð 57°4ˆÔÜ%1°$·)±)Ó%<ˆ�r   r   ÚfilenameÚdebugc                 ó"  — i g| _         | j                  j                  ||«       t        | j                  «      | _        | j                  «       }| j                  «       }|�.| j                  d|j                  › �| j                  |«      «       |S )a!  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: )
r<   r;   Úinputr=   r>   Ú _parse_translation_unit_or_emptyÚ_peekÚ_parse_errorÚvalueÚ
_tok_coord)r   r   r@   rA   ÚastÚtoks         r   ÚparsezCParser.parseW   sw   € ð  ˜DˆÔØ�	‰	�‰˜˜hÔ'Ü# D§I¡IÓ.ˆŒà×3Ñ3Ó5ˆØ�j‰j‹lˆØˆ?Ø×Ñ ¨¯©¨Ð4°d·o±oÀcÓ6JÔKØˆ
r   Úlinenor   c                 óF   — t        | j                  j                  ||¬«      S )Nr   )r   r;   r@   )r   rM   r   s      r   Ú_coordzCParser._coordr   s   € Ü˜$Ÿ)™)×,Ñ,°6À&ÔIÐIr   ÚmsgÚcoordc                 ó"   — t        |› d|› �«      ‚)Nz: )r'   )r   rP   rQ   s      r   rG   zCParser._parse_erroru   s   € Ü˜E˜7 " S EÐ*Ó+Ð+r   c                 ó:   — | j                   j                  i «       y ©N)r<   Úappend©r   s    r   Ú_push_scopezCParser._push_scopex   s   € Ø×Ñ× Ñ  Õ$r   c                 ó~   — t        | j                  «      dk  rt        d«      ‚| j                  j                  «        y )Nr
   zUnmatched '}')Úlenr<   r'   ÚpoprV   s    r   Ú
_pop_scopezCParser._pop_scope{   s2   € Üˆt× Ñ Ó! QÒ&Ü˜_Ó-Ð-Ø×Ñ×ÑÕr   Únamec                 ó’   — | j                   d   j                  |d«      s| j                  d|›d�|«       d| j                   d   |<   y)z9Add a new typedef name (ie a TYPEID) to the current scopeéÿÿÿÿTzTypedef z1 previously declared as non-typedef in this scopeN©r<   ÚgetrG   ©r   r\   rQ   s      r   Ú_add_typedef_namezCParser._add_typedef_name€   sR   € à× Ñ  Ñ$×(Ñ(¨¨tÔ4Ø×ÑØ˜4˜(Ð"SÐTØôð '+ˆ×Ñ˜"Ñ˜dÒ#r   c                 ó’   — | j                   d   j                  |d«      r| j                  d|›d�|«       d| j                   d   |<   y)z`Add a new object, function, or enum member name (ie an ID) to the
        current scope
        r^   FzNon-typedef z- previously declared as typedef in this scopeNr_   ra   s      r   Ú_add_identifierzCParser._add_identifier‰   sT   € ð ×Ñ˜RÑ ×$Ñ$ T¨5Ô1Ø×ÑØ˜t˜hÐ&SÐTØôð ',ˆ×Ñ˜"Ñ˜dÒ#r   c                 óN   — t        | j                  «      D ]  }||v sŒ||   c S  y)z.Is *name* a typedef-name in the current scope?F)Úreversedr<   )r   r\   Úscopes      r   Ú_is_type_in_scopezCParser._is_type_in_scope”   s4   € ä˜d×/Ñ/Ó0ò 	#ˆEð �uŠ}Ø˜T‘{Ò"ð		#ð
 r   r   c                 óH   — | j                  || j                  ||«      «       y rT   )rG   rO   )r   rP   r   r   s       r   r7   zCParser._lex_error_func�   s   € Ø×Ñ˜#˜tŸ{™{¨4°Ó8Õ9r   c                 ó$   — | j                  «        y rT   )rW   rV   s    r   r8   zCParser._lex_on_lbrace_func    s   € Ø×ÑÕr   c                 ó$   — | j                  «        y rT   )r[   rV   s    r   r9   zCParser._lex_on_rbrace_func£   s   € Ø�‰Õr   c                 ó$   — | j                  |«      S )z‹Looks up types that were previously defined with typedef.

        Passed to the lexer for recognizing identifiers that are types.
        )rh   )r   r\   s     r   r:   zCParser._lex_type_lookup_func¦   s   € ð
 ×%Ñ% dÓ+Ð+r   ÚdeclÚmodifierc                 ó|  — |}|}|j                   r|j                   }|j                   rŒt        |t        j                  «      r	||_         |S |}t        |j                   t        j                  «      s1|j                   }t        |j                   t        j                  «      sŒ1|j                   |_         ||_         |S )z—Tacks a type modifier on a declarator, and returns
        the modified declarator.

        Note: the declarator and modifier may be modified
        )ÚtypeÚ
isinstancer   ÚTypeDecl)r   rm   rn   Úmodifier_headÚmodifier_tailÚ	decl_tails         r   Ú_type_modify_declzCParser._type_modify_declÏ   sœ   € ð !ˆØ ˆð × Ò Ø)×.Ñ.ˆMð × Ó ô �dœEŸN™NÔ+Ø!%ˆMÔØˆOð
 ˆIÜ  §¡´·±Ô@Ø%ŸN™N�	ô ! §¡´·±Õ@ð "+§¡ˆMÔØ*ˆIŒNØˆKr   Útypenamec                 ó  — |}t        |t        j                  «      s'|j                  }t        |t        j                  «      sŒ'|j                  |_        |j                  dd |_        |D ][  }t        |t        j                  «      rŒt        |«      dkD  r| j                  d|j                  «       ŒI||_        t        |«      c S  |sit        |j                  t        j                  «      s| j                  d|j                  «       t        j                  dg|j                  ¬«      |_        |S t        j                  |D ��cg c]  }|j                  D ]  }|‘Œ Œ c}}|d   j                  ¬«      |_        |S c c}}w )z#Fixes a declaration. Modifies decl.Nr
   z Invalid multiple types specifiedúMissing type in declarationr$   ©rQ   r   )rq   r   rr   rp   Údeclnamer\   ÚqualsÚIdentifierTyperY   rG   rQ   r   ÚFuncDeclÚnames)r   rm   rw   ÚtypÚtnÚidr\   s          r   Ú_fix_decl_name_typezCParser._fix_decl_name_typeû   s9  € ð ˆÜ˜S¤%§.¡.Ô1Ø—(‘(ˆCô ˜S¤%§.¡.Õ1ð —L‘LˆŒ	Ø—J‘J™q�MˆŒ	ð ò 	7ˆBÜ˜b¤%×"6Ñ"6Õ7Ü�x“= 1Ò$Ø×%Ñ%Ð&HÈ"Ï(É(ÕSà!�C”Hô 1°Ó6Ò6ð	7ñ ä˜dŸi™i¬¯©Ô8Ø×!Ñ!Ð"?ÀÇÁÔLÜ×+Ñ+¨U¨G¸4¿:¹:ÔFˆCŒHð ˆô ×+Ñ+Ø (×>˜"°R·X±XÒ>¨T’Ð>�Ó>ÀhÈqÁk×FWÑFWôˆCŒHð ˆùó ?s   ÅF 
ÚdeclspecÚ	_DeclSpecÚnewspecÚkindÚ_DeclSpecKindrU   c                 óz   — |€	g g g g g dœ}n|}|r||   j                  |«       |S ||   j                  d|«       |S )z2See _DeclSpec for the specifier dictionary layout.©ÚqualÚstoragerp   ÚfunctionÚ	alignmentr   )rU   Úinsert)r   r„   r†   r‡   rU   Úspecs         r   Ú_add_declaration_specifierz"CParser._add_declaration_specifier%  s^   € ð ÐàØØØØñ‰Dð ˆDáØ�‰J×Ñ˜gÔ&ð ˆð �‰J×Ñ˜a Ô)àˆr   r�   ÚdeclsÚ	_DeclInfoÚtypedef_namespacec                 ór  — d|d   v }g }|d   j                  d«      �€±|d   d   €Øt        |d   «      dk  sBt        |d   d	   j                  «      d
k7  s$| j                  |d   d	   j                  d   «      s8d}|d   D ]  }t	        |d«      sŒ|j
                  } n | j                  d|«       t        j                  |d   d	   j                  d   dd|d   |d   d	   j
                  ¬«      |d   d<   |d   d	= nÑt        |d   d   t        j                  t        j                  t        j                  t        j                  f«      sƒt        t        |d   d   «      }t        |t        j                  «      s'|j                   }t        |t        j                  «      sŒ'|j"                  € |d   d	   j                  d   |_        |d   d	= |D �]a  }	|	d   €J ‚|r1t        j$                  d|d   |d   |	d   |	d   j
                  ¬«      }
nXt        j&                  d|d   |d   |d   |d   |	d   |	j                  d«      |	j                  d«      |	d   j
                  ¬«	      }
t        |
j                   t        j                  t        j                  t        j                  t        j                  f«      r|
}n| j)                  |
|d   «      }|rO|r'| j+                  |j,                  |j
                  «       n&| j/                  |j,                  |j
                  «       |j1                  |«       �Œd |S )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Œ   r   ÚbitsizeNrm   rp   é   r^   r
   ú?rQ   úInvalid declarationrŽ   ©r{   rp   r|   ÚalignrQ   r‹   )r\   r|   rŒ   rp   rQ   r�   Úinit©	r\   r|   rœ   rŒ   Úfuncspecrp   r�   r—   rQ   )r`   rY   r   rh   ÚhasattrrQ   rG   r   rr   rq   ÚEnumÚStructÚUnionr}   r	   r   rp   r{   ÚTypedefÚDeclrƒ   rb   r\   rd   rU   )r   r�   r’   r”   Ú
is_typedefÚdeclarationsrQ   ÚtÚdecls_0_tailrm   ÚdeclarationÚ
fixed_decls               r   Ú_build_declarationszCParser._build_declarations?  s'  € ð  $ y¡/Ð1ˆ
Øˆð �‰8�<‰<˜	Ó"Ñ*ð
 �Q‰x˜ÑÐ'ä˜˜V™Ó%¨Ò)Ü˜4 ™<¨Ñ+×1Ñ1Ó2°aÒ7Ø×1Ñ1°$°v±,¸rÑ2B×2HÑ2HÈÑ2KÔ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Ø#/×#4Ñ#4�Lô % \´5·>±>ÕBà×(Ñ(Ð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À4ÈÁ<ÓP�
ñ !ÙØ×*Ñ*¨:¯?©?¸J×<LÑ<LÕMà×(Ñ(¨¯©¸*×:JÑ:JÔKà×Ñ 
Ö+ðO'	,ðR Ðr   Úparam_declsÚbodyc                 óÆ   — d|d   v r| j                  d|j                  «       | j                  ||dddœgd¬«      d   }t        j                  ||||j                  ¬	«      S )
zBuilds a function definition.r–   rŒ   zInvalid typedefN©rm   r�   r—   T©r�   r’   r”   r   )rm   r­   r®   rQ   )rG   rQ   r¬   r   ÚFuncDef)r   r�   rm   r­   r®   rª   s         r   Ú_build_function_definitionz"CParser._build_function_definition£  sw   € ð ˜˜Y™Ñ'Ø×ÑÐ/°·±Ô<à×.Ñ.ØØ ¨$¸4Ñ@ÐAØ"ð /ó 
ð ñ	ˆô �}‰}Ø¨+¸DÈÏ
É
ô
ð 	
r   Útokenc                 óL   — |dk(  rt         j                  S t         j                  S )z[Given a token (either STRUCT or UNION), selects the
        appropriate AST class.
        Ústruct)r   r¢   r£   )r   r´   s     r   Ú_select_struct_union_classz"CParser._select_struct_union_class¸  s    € ð �HÒÜ—<‘<Ðä—;‘;Ðr   Úkc                 ó8   — | j                   j                  |«      S )z:Return the k-th next token without consuming it (1-based).)r>   Úpeek©r   r¸   s     r   rF   zCParser._peekÄ  s   € à�|‰|× Ñ  Ó#Ð#r   c                 óD   — | j                  |«      }|�|j                  S dS )zDReturn the type of the k-th next token, or None if absent (1-based).N)rF   rp   )r   r¸   rK   s      r   Ú
_peek_typezCParser._peek_typeÈ  s"   € à�j‰j˜‹mˆØ˜?ˆs�x‰xÐ4°Ð4r   c                 óŒ   — | j                   j                  «       }|€'| j                  d| j                  j                  «       y |S )NúAt end of input)r>   ÚnextrG   r;   r@   ©r   rK   s     r   Ú_advancezCParser._advanceÍ  s9   € Ø�l‰l×ÑÓ!ˆØˆ;Ø×ÑÐ/°·±×1CÑ1CÕDàˆJr   Ú
token_typec                 óf   — | j                  «       }|�|j                  |k(  r| j                  «       S y)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)rF   rp   rÂ   ©r   rÃ   rK   s      r   Ú_acceptzCParser._acceptÔ  s.   € ð �j‰j‹lˆØˆ?˜sŸx™x¨:Ò5Ø—=‘=“?Ð"Ør   c                 ó    — | j                  «       }|j                  |k7  r.| j                  d|j                  › �| j	                  |«      «       |S )NrC   )rÂ   rp   rG   rH   rI   rÅ   s      r   Ú_expectzCParser._expectß  sB   € Ø�m‰m‹oˆØ�8‰8�zÒ!Ø×Ñ ¨¯©¨Ð4°d·o±oÀcÓ6JÔKØˆ
r   c                 ó6   — | j                   j                  «       S rT   )r>   ÚmarkrV   s    r   Ú_markzCParser._markå  s   € Ø�|‰|× Ñ Ó"Ð"r   rÊ   c                 ó:   — | j                   j                  |«       y rT   )r>   Úreset©r   rÊ   s     r   Ú_resetzCParser._resetè  s   € Ø�‰×Ñ˜4Õ r   rK   c                 óN   — | j                  |j                  |j                  «      S rT   )rO   rM   r   rÁ   s     r   rI   zCParser._tok_coordë  s   € Ø�{‰{˜3Ÿ:™: s§z¡zÓ2Ð2r   c                 óT   — |xs | j                  «       }|€y|j                  t        v S ©NF)rF   rp   Ú_DECL_STARTrÁ   s     r   Ú_starts_declarationzCParser._starts_declarationî  s)   € ØÒ!�T—Z‘Z“\ˆØˆ;ØØ�x‰xœ;Ð&Ð&r   c                 óT   — |xs | j                  «       }|€y|j                  t        v S rÒ   )rF   rp   Ú_STARTS_EXPRESSIONrÁ   s     r   Ú_starts_expressionzCParser._starts_expressionô  s*   € ØÒ!�T—Z‘Z“\ˆØˆ;ØØ�x‰xÔ-Ð-Ð-r   c                 óZ   — | j                  «       }|€y|t        v ry| j                  «       S )NFT)r½   Ú_STARTS_STATEMENTr×   ©r   Útok_types     r   Ú_starts_statementzCParser._starts_statementú  s2   € Ø—?‘?Ó$ˆØÐØØÔ(Ñ(ØØ×&Ñ&Ó(Ð(r   Úid_onlyc                 óH   — | j                  «       }|€y|dv ry|r|dk(  S |dv S )NF>   ÚTIMESÚLPARENTÚID>   rá   ÚTYPEID©r½   )r   rÝ   rÛ   s      r   Ú_starts_declaratorzCParser._starts_declarator  s=   € Ø—?‘?Ó$ˆØÐØØÐ*Ñ*ØÙØ˜tÑ#Ð#ØÐ+Ð+Ð+r   c                 ór   — | j                  «       }| j                  «       \  }}| j                  |«       ||fS rT   )rË   Ú_scan_declarator_name_inforÏ   )r   rÊ   rÛ   Ú	saw_parens       r   Ú_peek_declarator_name_infoz"CParser._peek_declarator_name_info  s7   € Ø�z‰z‹|ˆØ"×=Ñ=Ó?Ñˆ�)Ø�‰�DÔØ˜Ð"Ð"r   Úallow_abstractÚtypeid_paren_as_abstractc                 ó†  — | j                  «       \  }}|�	|rh|dk(  rc|ra|sK| j                  «       }|�| j                  |«      n| j                  j                  }| j                  d|«       | j                  «       }|dfS |dk(  r*|r| j                  «       }|dfS | j                  «       }|dfS | j                  «       }|dfS )Nrâ   zInvalid declaratorFT)
rè   rF   rI   r;   r@   rG   Ú_parse_abstract_declarator_optÚ _parse_typeid_noparen_declaratorÚ_parse_typeid_declaratorÚ_parse_id_declarator)r   ré   rê   Ú	name_typerç   rK   rQ   rm   s           r   Ú_parse_any_declaratorzCParser._parse_any_declarator  sÙ   € ð  $×>Ñ>Ó@Ñˆ	�9ØÐÙ$¨°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                 óž  — d}| j                  d«      rO| j                  «       t        v r'| j                  «        | j                  «       t        v rŒ'| j                  d«      rŒO| j	                  «       }|€d |fS |j
                  dv r| j                  «        |j
                  |fS |j
                  dk(  r—d}| j                  «        | j                  «       \  }}|rd}d}	 | j	                  «       }|€d |fS |j
                  dk(  r|dz  }n/|j
                  dk(  r |dz  }| j                  «        |dk(  r	 ||fS Œ[| j                  «        Œkd |fS )	NFrß   >   rá   râ   rà   Tr
   ÚRPARENr   )rÆ   r½   Ú_TYPE_QUALIFIERrÂ   rF   rp   ræ   )r   rç   rK   rÛ   Únested_parenÚdepths         r   ræ   z"CParser._scan_declarator_name_info-  sK  € Øˆ	Ø�l‰l˜7Ô#Ø—/‘/Ó#¤Ñ6Ø—‘”ð —/‘/Ó#¤Ò6ð �l‰l˜7Õ#ð �j‰j‹lˆØˆ;Ø˜�?Ð"Ø�8‰8Ð'Ñ'Ø�M‰MŒOØ—8‘8˜YÐ&Ð&Ø�8‰8�xÒØˆIØ�M‰MŒOØ%)×%DÑ%DÓ%FÑ"ˆH�lÙØ �	ØˆEØØ—j‘j“l�Ø�;Ø ˜?Ð*Ø—8‘8˜xÒ'Ø˜Q‘J‘EØ—X‘X Ò)Ø˜Q‘J�EØ—M‘M”OØ ’zØð ˜YÐ&Ð&ð Ø—‘”ð ð �YˆÐr   c                 ó&   — | j                  «       dv S )N>   rà   ÚLBRACKETrã   rV   s    r   Ú"_starts_direct_abstract_declaratorz*CParser._starts_direct_abstract_declaratorP  s   € Ø�‰Ó Ð$:Ð:Ð:r   c                 óR   — | j                  «       }|d uxr |j                  t        v S rT   )rF   rp   Ú_ASSIGNMENT_OPSrÁ   s     r   Ú_is_assignment_opzCParser._is_assignment_opS  s%   € Ø�j‰j‹lˆØ˜$ˆÒ> 3§8¡8¬Ð#>Ð>r   c                 óþ   — | j                  «       }| j                  d«      }|€y| j                  «       s| j                  |«       y| j	                  «       }| j                  d«      €| j                  |«       y|||fS )ab  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.
        rà   Nró   )rË   rÆ   rÔ   rÏ   Ú_parse_type_name)r   rÊ   Ú
lparen_tokr€   s       r   Ú_try_parse_paren_type_namez"CParser._try_parse_paren_type_nameW  sz   € ð �z‰z‹|ˆØ—\‘\ (Ó+ˆ
ØÐØØ×'Ñ'Ô)Ø�K‰K˜ÔØØ×#Ñ#Ó%ˆØ�<‰<˜Ó!Ð)Ø�K‰K˜ÔØØ�D˜*Ð$Ð$r   c                 ó’   — | j                  «       €t        j                  g «      S t        j                  | j                  «       «      S rT   )rF   r   ÚFileASTÚ_parse_translation_unitrV   s    r   rE   z(CParser._parse_translation_unit_or_emptyr  s5   € Ø�:‰:‹<ÐÜ—=‘= Ó$Ð$Ü�}‰}˜T×9Ñ9Ó;Ó<Ð<r   c                 óŠ   — g }| j                  «       �0|j                  | j                  «       «       | j                  «       �Œ0|S rT   )rF   ÚextendÚ_parse_external_declaration)r   Úexts     r   r  zCParser._parse_translation_unitx  s;   € ØˆØ�j‰j‹lÐ&Ø�J‰J�t×7Ñ7Ó9Ô:ð �j‰j‹lÑ&àˆ
r   c                 óT  — | j                  «       }|€g S |j                  dk(  r| j                  «        g S |j                  dv r| j                  «       gS | j	                  d«      rg S |j                  dk(  r| j                  «       gS | j                  |«      s�| j                  «       }d }| j                  «       dk7  r| j                  d|j                  «       g g g t        j                  dg|j                  ¬«      gg d	œ}| j                  |||| j                  «       ¬
«      }|gS | j                  d¬«      \  }}}| j!                  «       \  }}	|dk7  r%| j#                  ||«      }
| j%                  d«       |
S | j                  «       }| j                  «       dk(  s| j                  «       r˜d }| j                  «       r| j'                  «       }| j                  «       dk7  r| j                  d|j                  «       |d   st        j                  dg|¬«      g|d<   | j                  |||| j                  «       ¬
«      }|gS |d d dœ}| j	                  d«      r| j)                  «       |d<   | j+                  |¬«      }
| j-                  ||
d¬«      }
| j%                  d«       |
S )NÚPPHASH>   Ú_PRAGMAÚPPPRAGMAÚSEMIÚ_STATIC_ASSERTÚLBRACEzInvalid function definitionr$   rz   )r‹   rŽ   rŒ   rp   r�   )r�   rm   r­   r®   T©Úallow_no_typerá   rp   r°   ÚEQUALSr�   )Úfirstr±   )rF   rp   Ú_parse_pp_directiveÚ_parse_pppragma_directiverÆ   Ú_parse_static_assertrÔ   rï   r½   rG   rQ   r   r}   r³   Ú_parse_compound_statementÚ_parse_declaration_specifiersrè   Ú_parse_decl_body_with_specrÈ   Ú_parse_declaration_listÚ_parse_initializerÚ_parse_init_declarator_listr¬   )r   rK   rm   r­   r�   ÚfuncÚsaw_typeÚ
spec_coordrð   Ú_r’   Ú	decl_dicts               r   r  z#CParser._parse_external_declaration„  s³  € Ø�j‰j‹lˆØˆ;ØˆIØ�8‰8�xÒØ×$Ñ$Ô&ØˆIØ�8‰8Ð.Ñ.Ø×2Ñ2Ó4Ð5Ð5Ø�<‰<˜ÔØˆIØ�8‰8Ð'Ò'Ø×-Ñ-Ó/Ð0Ð0à×'Ñ'¨Ô,ð ×,Ñ,Ó.ˆDØˆKØ�‰Ó  HÒ,Ø×!Ñ!Ð"?ÀÇÁÔLàØØÜ×-Ñ-¨u¨g¸T¿Z¹ZÔHÐIØñˆDð ×2Ñ2ØØØ'Ø×3Ñ3Ó5ð	 3ó ˆDð �6ˆMð &*×%GÑ%GØð &Hó &
Ñ"ˆˆh˜
ð ×6Ñ6Ó8‰ˆ	�1Ø˜ÒØ×3Ñ3°D¸(ÓCˆEØ�L‰L˜Ô ØˆLà×(Ñ(Ó*ˆà�?‰?Ó Ò(¨D×,DÑ,DÔ,FØˆKØ×'Ñ'Ô)Ø"×:Ñ:Ó<�Ø�‰Ó  HÒ,Ø×!Ñ!Ð"?ÀÇÁÔLØ˜’<Ü %× 4Ñ 4°e°WÀJÔ OÐP��V‘Ø×2Ñ2ØØØ'Ø×3Ñ3Ó5ð	 3ó ˆDð �6ˆMà(,°dÀtÑLˆ	Ø�<‰<˜Ô!Ø $× 7Ñ 7Ó 9ˆI�fÑØ×0Ñ0°yÐ0ÓAˆØ×(Ñ(¨d¸%ÐSWÐ(ÓXˆØ�‰�VÔØˆr   c                 ó�   — | j                  «       dk(  r| j                  «       gS | j                  «       }| j                  d«       |S )Nr  r  )r½   r  Ú_parse_decl_bodyrÈ   ©r   r’   s     r   Ú_parse_declarationzCParser._parse_declarationÛ  sC   € Ø�?‰?ÓÐ 0Ò0Ø×-Ñ-Ó/Ð0Ð0Ø×%Ñ%Ó'ˆØ�‰�VÔØˆr   c                 óR   — | j                  d¬«      \  }}}| j                  ||«      S )NTr  )r  r  )r   r�   r  r  s       r   r"  zCParser._parse_decl_bodyã  s/   € Ø ×>Ñ>ÈTÐ>ÓRÑˆˆh˜Ø×.Ñ.¨t°XÓ>Ð>r   r  c                 ó  — d }|r!| j                  «       r5| j                  «       }n$| j                  d¬«      r| j                  d¬«      }|€©|d   }t        j                  t        j                  t        j
                  f}t        |«      dk(  rLt        |d   |«      r=t        j                  d |d   |d   |d   |d	   |d   d d |d   j                  ¬
«	      g}|S | j                  |d d d dœgd¬«      }|S | j                  ||d¬«      }|S )NT©rÝ   rp   r
   r   r‹   rŽ   rŒ   r�   rž   r°   r±   )rä   r  r   r¢   r£   r¡   rY   rq   r¥   rQ   r¬   )r   r�   r  Ú
decl_infosÚtyÚs_u_or_er’   s          r   r  z"CParser._parse_decl_body_with_specé  s4  € ð
 .2ˆ
ÙØ×&Ñ&Ô(Ø!×=Ñ=Ó?‘
à×&Ñ&¨tÐ&Ô4Ø!×=Ñ=ÀdÐ=ÓK�
ð ÐØ�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ØØ$(°$À4ÑHÐIØ&*ð 1ó �ð ˆð	 ×,Ñ,Ø ¸tð -ó ˆEð ˆr   c                 óŠ   — g }| j                  «       r0|j                  | j                  «       «       | j                  «       rŒ0|S rT   )rÔ   r  r$  r#  s     r   r  zCParser._parse_declaration_list  s;   € ØˆØ×&Ñ&Ô(Ø�L‰L˜×0Ñ0Ó2Ô3ð ×&Ñ&Õ(àˆr   r  c           	      ó  — d}d}d}	 | j                  «       }|€�n*|j                  dk(  r7|€| j                  |«      }| j                  || j	                  «       dd¬«      }Œ[|j                  dk(  rM| j                  d«      d	k(  r9|€| j                  |«      }| j                  || j                  «       d
d¬«      }d}Œ·|j                  t        v rB|€| j                  |«      }| j                  || j                  «       j                  dd¬«      }�Œ|j                  t        v rB|€| j                  |«      }| j                  || j                  «       j                  dd¬«      }�Œ_|j                  t        v rB|€| j                  |«      }| j                  || j                  «       j                  dd¬«      }�Œ³|j                  t        v rk|€| j                  |«      }| j                  «       }| j                  |t        j                  |j                  g| j                  |«      ¬«      d
d¬«      }d}�Œ0|j                  dk(  rn|rný|€| j                  |«      }| j                  «       }| j                  |t        j                  |j                  g| j                  |«      ¬«      d
d¬«      }d}�Œ­|j                  dv r:|€| j                  |«      }| j                  || j                  «       d
d¬«      }d}�Œõ|j                  dk(  r:|€| j                  |«      }| j                  || j!                  «       d
d¬«      }d}�Œ>	 |€&| j#                  d| j$                  j&                  «       |s|s| j#                  d|«       |||fS )a¶  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Ž   ©rU   Ú_ATOMICr˜   rà   rp   r‹   rŒ   r�   rz   râ   >   ÚUNIONÚSTRUCTÚENUMrš   ry   )rF   rp   rI   r‘   Ú_parse_alignment_specifierr½   Ú_parse_atomic_specifierrô   rÂ   rH   Ú_STORAGE_CLASSÚ_FUNCTION_SPECÚ_TYPE_SPEC_SIMPLEr   r}   Ú _parse_struct_or_union_specifierÚ_parse_enum_specifierrG   r;   r@   )r   r  r�   r  Úfirst_coordrK   s         r   r  z%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à�X˜{Ð*Ð*r   c           	      ó  — d }d}d}d }	 | j                  «       }|€�n„|j                  dk(  r9|€| j                  |«      }| j                  || j	                  «       dd¬«      }d}Œ]|j                  dk(  rM| j                  d«      dk(  r9|€| j                  |«      }| j                  || j                  «       d	d¬«      }d}Œ¹|j                  t        v rB|€| j                  |«      }| j                  || j                  «       j                  d
d¬«      }�Œ|j                  t        v rk|€| j                  |«      }| j                  «       }| j                  |t        j                  |j                  g| j                  |«      ¬«      d	d¬«      }d}�ŒŠ|j                  dk(  rn|rný|€| j                  |«      }| j                  «       }| j                  |t        j                  |j                  g| j                  |«      ¬«      d	d¬«      }d}�Œ|j                  dv r:|€| j                  |«      }| j                  || j                  «       d	d¬«      }d}�ŒO|j                  dk(  r:|€| j                  |«      }| j                  || j                  «       d	d¬«      }d}�Œ˜	 |€&| j                  d| j                   j"                  «       |s|s| j                  d|«       |j%                  d«      €g |d<   |j%                  d«      €g |d<   |S )NFTr-  rŽ   r.  r/  r˜   rà   rp   r‹   rz   râ   >   r0  r1  r2  zInvalid specifier listry   rŒ   r�   )rF   rp   rI   r‘   r3  r½   r4  rô   rÂ   rH   r7  r   r}   r8  r9  rG   r;   r@   r`   )r   r�   r  Úsaw_alignmentr:  rK   s         r   Ú_parse_specifier_qualifier_listz'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                 ó¶   — g }| j                  «       t        v r@|j                  | j                  «       j                  «       | j                  «       t        v rŒ@|S rT   )r½   rô   rU   rÂ   rH   )r   r|   s     r   Ú_parse_type_qualifier_listz"CParser._parse_type_qualifier_listÿ  sD   € ØˆØ�o‰oÓ¤?Ñ2Ø�L‰L˜Ÿ™›×.Ñ.Ô/ð �o‰oÓ¤?Ò2àˆr   c                 ó~  — | j                  d«      }| j                  d«       | j                  «       rF| j                  «       }| j                  d«       t        j                  || j                  |«      «      S | j                  «       }| j                  d«       t        j                  || j                  |«      «      S )Nr-  rà   ró   )rÈ   rÔ   rþ   r   ÚAlignasrI   Ú_parse_constant_expression©r   rK   r€   Úexprs       r   r3  z"CParser._parse_alignment_specifier  s�   € Ø�l‰l˜:Ó&ˆØ�‰�XÔà×#Ñ#Ô%Ø×'Ñ'Ó)ˆCØ�L‰L˜Ô"Ü—=‘=  d§o¡o°cÓ&:Ó;Ð;à×.Ñ.Ó0ˆØ�‰�XÔÜ�}‰}˜T 4§?¡?°3Ó#7Ó8Ð8r   c                 óÂ   — | j                  d«       | j                  d«       | j                  «       }| j                  d«       |j                  j                  d«       |S )Nr/  rà   ró   Ú_Atomic)rÈ   rþ   r|   rU   )r   r€   s     r   r4  zCParser._parse_atomic_specifier  sK   € Ø�‰�YÔØ�‰�XÔØ×#Ñ#Ó%ˆØ�‰�XÔØ�	‰	×Ñ˜Ô#Øˆ
r   r  c                 ó¾   — |�|gn| j                  |¬«      g}| j                  d«      r3|j                  | j                  |¬«      «       | j                  d«      rŒ3|S )Nr'  ÚCOMMA)Ú_parse_init_declaratorrÆ   rU   )r   r  rÝ   r’   s       r   r  z#CParser._parse_init_declarator_list  se   € ð
 Ð ð ‰Gà×-Ñ-°gÐ-Ó>Ð?ð 	ð �l‰l˜7Ô#Ø�L‰L˜×4Ñ4¸WÐ4ÓEÔFð �l‰l˜7Õ#àˆr   c                 ó˜   — |r| j                  «       n| j                  «       }d }| j                  d«      r| j                  «       }||d dœS )Nr  r°   )rï   Ú_parse_declaratorrÆ   r  )r   rÝ   rm   r�   s       r   rI  zCParser._parse_init_declarator+  sI   € Ù.5ˆt×(Ñ(Ô*¸4×;QÑ;QÓ;SˆØˆØ�<‰<˜Ô!Ø×*Ñ*Ó,ˆDØ d°tÑ<Ð<r   c                 ót  — | j                  «       }| j                  |j                  «      }| j                  «       dv rÑ| j                  «       }| j                  «       dk(  rŠ| j                  «        | j	                  d«      r$ ||j                  g | j                  |«      ¬«      S | j                  «       }| j                  d«        ||j                  || j                  |«      ¬«      S  ||j                  d | j                  |«      ¬«      S | j                  «       dk(  rv| j                  «       }| j	                  d«      r |d g | j                  |«      ¬«      S | j                  «       }| j                  d«        |d || j                  |«      ¬«      S | j                  d| j                  |«      «       y )N>   rá   râ   r  ÚRBRACE)r\   r’   rQ   z Invalid struct/union declaration)	rÂ   r·   rH   r½   rÆ   rI   Ú_parse_struct_declaration_listrÈ   rG   )r   rK   ÚklassÚname_tokr’   Ú	brace_toks         r   r8  z(CParser._parse_struct_or_union_specifier7  sm  € Ø�m‰m‹oˆØ×/Ñ/°·	±	Ó:ˆà�?‰?ÓÐ 0Ñ0Ø—}‘}“ˆHØ�‰Ó  HÒ,Ø—‘”Ø—<‘< Ô)Ù Ø%Ÿ^™^°2¸T¿_¹_ÈXÓ=Vôð ð ×;Ñ;Ó=�Ø—‘˜XÔ&ÙØ!Ÿ™¨u¸D¿O¹OÈHÓ<Uôð ñ Ø—^‘^¨4°t·±ÀxÓ7Pôð ð �?‰?Ó Ò(ØŸ™›ˆIØ�|‰|˜HÔ%Ù $¨b¸¿¹È	Ó8RÔSÐSØ×7Ñ7Ó9ˆEØ�L‰L˜Ô"Ù˜d¨%°t·±ÀyÓ7QÔRÐRà×ÑÐ<¸d¿o¹oÈcÓ>RÕSr   c                 óœ   — g }| j                  «       dvr7| j                  «       }|€Œ%|j                  |«       | j                  «       dvrŒ7|S ©N>   NrM  )r½   Ú_parse_struct_declarationr  )r   r’   Úitemss      r   rN  z&CParser._parse_struct_declaration_listX  sR   € ØˆØ�o‰oÓÐ'7Ñ7Ø×2Ñ2Ó4ˆEØˆ}ØØ�L‰L˜Ôð	 �o‰oÓÐ'7Ò7ð
 ˆr   c                 ó  — | j                  «       dk(  r| j                  «       gS | j                  «       dk(  r| j                  «        y | j                  «       dv r| j                  «       gS | j	                  «       }d|j                  dg «      vsJ ‚d }| j                  «       s| j                  «       dk(  r| j                  «       }|�$| j                  d«       | j                  ||¬«      S t        |d   «      d	k(  rc|d   d
   }t        |t        j                  «      r|}nt        j                  |«      }| j                  d«       | j                  ||d d dœg¬«      S | j                  d«       | j                  |d d d dœg¬«      S )Nr  r  >   r
  r  r–   rŒ   ÚCOLON©r�   r’   rp   r
   r   r°   )r½   r  rÂ   r  r=  r`   rä   Ú_parse_struct_declarator_listrÈ   r¬   rY   rq   r   ÚNoder}   )r   r�   r’   ÚnodeÚ	decl_types        r   rT  z!CParser._parse_struct_declarationd  s‡  € Ø�?‰?ÓÐ 0Ò0Ø×-Ñ-Ó/Ð0Ð0Ø�?‰?Ó Ò&Ø�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˜Ô Ø×+Ñ+°¸UÐ+ÓCÐCäˆt�F‰|Ó Ò!Ø˜‘< ‘?ˆDÜ˜$¤§
¡
Ô+Ø ‘	ä!×0Ñ0°Ó6�	Ø�L‰L˜Ô Ø×+Ñ+ØØ )°4ÀDÑIÐJð ,ó ð ð
 	�‰�VÔØ×'Ñ'Ø t°TÀdÑKÐLð (ó 
ð 	
r   c                 ó¬   — | j                  «       g}| j                  d«      r1|j                  | j                  «       «       | j                  d«      rŒ1|S ©NrH  )Ú_parse_struct_declaratorrÆ   rU   r#  s     r   rY  z%CParser._parse_struct_declarator_list‰  sG   € Ø×.Ñ.Ó0Ð1ˆØ�l‰l˜7Ô#Ø�L‰L˜×6Ñ6Ó8Ô9ð �l‰l˜7Õ#àˆr   c                 óö   — | j                  d«      r,| j                  «       }t        j                  d d d d «      d |dœS | j	                  «       }| j                  d«      r| j                  «       }|d |dœS |d d dœS )NrW  r°   )rÆ   rB  r   rr   rK  )r   r—   rm   s      r   r_  z CParser._parse_struct_declarator‘  s‚   € Ø�<‰<˜Ô Ø×5Ñ5Ó7ˆGäŸ™ t¨T°4¸Ó>ØØ"ñð ð ×%Ñ%Ó'ˆØ�<‰<˜Ô Ø×5Ñ5Ó7ˆGØ ¨$¸7ÑCÐCà d°tÑ<Ð<r   c                 ó`  — | j                  d«      }| j                  «       dv r´| j                  «       }| j                  «       dk(  ra| j                  «        | j                  «       }| j                  d«       t	        j
                  |j                  || j                  |«      «      S t	        j
                  |j                  d | j                  |«      «      S | j                  d«       | j                  «       }| j                  d«       t	        j
                  d || j                  |«      «      S )Nr2  >   rá   râ   r  rM  )rÈ   r½   rÂ   Ú_parse_enumerator_listr   r¡   rH   rI   )r   rK   rP  Úenumss       r   r9  z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˜$  t§¡°sÓ';Ó<Ð<r   c                 ó0  — | j                  «       }t        j                  |g|j                  «      }| j	                  d«      rS| j                  «       dk(  r	 |S | j                  «       }|j                  j                  |«       | j	                  d«      rŒS|S )NrH  rM  )Ú_parse_enumeratorr   ÚEnumeratorListrQ   rÆ   r½   ÚenumeratorsrU   )r   ÚenumÚ	enum_lists      r   rb  zCParser._parse_enumerator_list´  sˆ   € Ø×%Ñ%Ó'ˆÜ×(Ñ(¨$¨°·±Ó<ˆ	Ø�l‰l˜7Ô#Ø�‰Ó  HÒ,Øð Ðð ×)Ñ)Ó+ˆDØ×!Ñ!×(Ñ(¨Ô.ð	 �l‰l˜7Õ#ð
 Ðr   c                 ó  — | j                  d«      }| j                  d«      r| j                  «       }nd }t        j                  |j
                  || j                  |«      «      }| j                  |j                  |j                  «       |S )Nrá   r  )
rÈ   rÆ   rB  r   Ú
EnumeratorrH   rI   rd   r\   rQ   )r   rP  rH   rh  s       r   re  zCParser._parse_enumerator¿  sm   € Ø—<‘< Ó%ˆØ�<‰<˜Ô!Ø×3Ñ3Ó5‰EàˆEÜ×Ñ §¡°°t·±ÀxÓ7PÓQˆØ×Ñ˜TŸY™Y¨¯
©
Ô3Øˆr   c                 ó:   — | j                  dd¬«      \  }}|€J ‚|S )NF©ré   rê   )rñ   )r   rm   r  s      r   rK  zCParser._parse_declaratorÍ  s3   € Ø×,Ñ,Ø ¸5ð -ó 
‰ˆˆað ÐÐÐØˆr   c                 ó(   — | j                  dd¬«      S )Nr‚   T©r‡   Úallow_paren©Ú_parse_declarator_kindrV   s    r   rï   zCParser._parse_id_declaratorÕ  s   € Ø×*Ñ*°À$Ð*ÓGÐGr   c                 ó(   — | j                  dd¬«      S )NÚtypeidTro  rq  rV   s    r   rî   z CParser._parse_typeid_declaratorÙ  s   € Ø×*Ñ*°ÀdÐ*ÓKÐKr   c                 ó(   — | j                  dd¬«      S )Nrt  Fro  rq  rV   s    r   rí   z(CParser._parse_typeid_noparen_declaratorÝ  s   € Ø×*Ñ*°ÀeÐ*ÓLÐLr   rp  c                 óž   — d }| j                  «       dk(  r| j                  «       }| j                  ||¬«      }|�| j                  ||«      S |S )Nrß   ©rp  )r½   Ú_parse_pointerÚ_parse_direct_declaratorrv   )r   r‡   rp  ÚptrÚdirects        r   rr  zCParser._parse_declarator_kindá  sV   € ØˆØ�?‰?Ó Ò'Ø×%Ñ%Ó'ˆCØ×.Ñ.¨tÀÐ.ÓMˆØˆ?Ø×)Ñ)¨&°#Ó6Ð6Øˆr   c           	      óJ  — |r6| j                  d«      r%| j                  |d¬«      }| j                  d«       n[|dk(  r| j                  d«      }n| j                  d«      }t        j                  |j
                  d d d | j                  |«      ¬«      }| j                  |«      S )	Nrà   Trw  ró   r‚   rá   râ   r›   )rÆ   rr  rÈ   r   rr   rH   rI   Ú_parse_decl_suffixes)r   r‡   rp  rm   rP  s        r   ry  z CParser._parse_direct_declaratorí  s“   € ñ ˜4Ÿ<™<¨Ô1Ø×.Ñ.¨tÀÐ.ÓFˆDØ�L‰L˜Õ"à�tŠ|ØŸ<™<¨Ó-‘àŸ<™<¨Ó1�Ü—>‘>Ø!Ÿ™ØØØØ—o‘o hÓ/ôˆDð ×(Ñ(¨Ó.Ð.r   c                 óâ   — 	 | j                  «       dk(  r"| j                  || j                  |«      «      }Œ6| j                  «       dk(  r$| j                  |«      }| j                  ||«      }Œm	 |S )zAParse a chain of array/function suffixes and attach them to decl.rø   rà   )r½   rv   Ú_parse_array_declÚ_parse_function_decl)r   rm   r  s      r   r}  zCParser._parse_decl_suffixes  sp   € àØ�‰Ó  JÒ.Ø×-Ñ-¨d°D×4JÑ4JÈ4Ó4PÓQ�ØØ�‰Ó  HÒ,Ø×0Ñ0°Ó6�Ø×-Ñ-¨d°DÓ9�ØØØˆr   Ú	base_declc                 ó<   — | j                  d |j                  ¬«      S ©N)Ú	base_typerQ   )Ú_parse_array_decl_commonrQ   )r   r�  s     r   r  zCParser._parse_array_decl  s   € Ø×,Ñ,°tÀ9Ç?Á?Ð,ÓSÐSr   r„  c                 ó6  ‡‡— | j                  d«      }‰€| j                  |«      Šˆˆfd„}| j                  d«      rBdg| j                  «       xs g z   }| j	                  «       }| j                  d«        |||«      S | j                  «       t        v rí| j                  «       xs g }| j                  d«      r0|dgz   }| j	                  «       }| j                  d«        |||«      S | j                  d«      }|rI| j                  d«       t        j                  |j                  | j                  |«      «      } |||«      S d}| j                  «       r| j	                  «       }| j                  d«        |||«      S | j                  d«      }|rI| j                  d«       t        j                  |j                  | j                  |«      «      } ||g «      S d}| j                  «       r| j	                  «       }| j                  d«        ||g «      S )a9  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.
        rø   Nc                 ó6   •— t        j                  ‰| |‰¬«      S )N)rp   ÚdimÚ	dim_qualsrQ   )r   Ú	ArrayDecl)rˆ  r‰  r„  rQ   s     €€r   Úmake_array_declz9CParser._parse_array_decl_common.<locals>.make_array_decl#  s   ø€ Ü—?‘?Ø C°9ÀEôð r   ÚSTATICÚstaticÚRBRACKETrß   )rÈ   rI   rÆ   r?  Ú_parse_assignment_expressionr½   rô   r   rá   rH   r×   )r   r„  rQ   Ú
lbrack_tokr‹  r‰  rˆ  Ú	times_toks    ``     r   r…  z CParser._parse_array_decl_common  sÙ  ù€ ð —\‘\ *Ó-ˆ
Øˆ=Ø—O‘O JÓ/ˆEõ	ð
 �<‰<˜Ô!Ø!˜
 d×&EÑ&EÓ&GÒ&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¨IÓ6Ð6ØŸ™ WÓ-ˆIÙØ—‘˜ZÔ(Ü—h‘h˜yŸ™°·±À	Ó0JÓK�Ù& s¨IÓ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                 ó  — | j                  d«       | j                  d«      rd }nA| j                  «       r| j                  «       n| j	                  «       }| j                  d«       t        j                  |d |j                  ¬«      }| j                  «       dk(  rp|j                  �d|j                  j                  D ]K  }t        |t
        j                  «      r |S t        |dd «      }|sŒ0| j                  ||j                  «       ŒM |S )Nrà   ró   ©Úargsrp   rQ   r  r\   )rÈ   rÆ   rÔ   Ú_parse_parameter_type_listÚ_parse_identifier_list_optr   r~   rQ   r½   r”  Úparamsrq   ÚEllipsisParamÚgetattrrd   )r   r�  r”  r  Úparamr\   s         r   r€  zCParser._parse_function_declM  sé   € Ø�‰�XÔØ�<‰<˜Ô!Ø‰Dð ×+Ñ+Ô-ð ×/Ñ/Ô1à×4Ñ4Ó6ð ð
 �L‰L˜Ô"ä�~‰~ 4¨d¸)¿/¹/ÔJˆà�?‰?Ó Ò(¨T¯Y©YÐ-BØŸ™×)Ñ)ò <�Ü˜e¤U×%8Ñ%8Ô9Øð
 ˆô	 ˜u f¨dÓ3�ÚØ×(Ñ(¨¨u¯{©{Õ;ð<ð ˆr   c                 ó  — g }| j                  d«      }|rJ| j                  «       xs g }|j                  || j                  |«      f«       | j                  d«      }|rŒJ|sy d }|D ]  \  }}t	        j
                  |||¬«      }Œ |S )Nrß   )r|   rp   rQ   )rÆ   r?  rU   rI   r   ÚPtrDecl)r   Ústarsr‘  r|   rz  rQ   s         r   rx  zCParser._parse_pointerf  s‘   € ØˆØ—L‘L Ó)ˆ	ÙØ×3Ñ3Ó5Ò;¸ˆEØ�L‰L˜% §¡°Ó!;Ð<Ô=ØŸ™ WÓ-ˆIò ñ
 ØàˆØ!ò 	D‰LˆE�5Ü—-‘- e°#¸UÔC‰Cð	Dàˆ
r   c                 ó.  — | j                  «       }| j                  «       dk(  rq| j                  d«      dk(  r]| j                  «        | j                  «       }|j                  j	                  t        j                  | j                  |«      «      «       |S ©NrH  r˜   ÚELLIPSIS)Ú_parse_parameter_listr½   rÂ   r—  rU   r   r˜  rI   )r   r—  Úell_toks      r   r•  z"CParser._parse_parameter_type_listw  sn   € Ø×+Ñ+Ó-ˆØ�?‰?Ó Ò'¨D¯O©O¸AÓ,>À*Ò,LØ�M‰MŒOØ—m‘m“oˆGØ�M‰M× Ñ ¤×!4Ñ!4°T·_±_ÀWÓ5MÓ!NÔOØˆr   c                 óx  — | j                  «       }t        j                  |g|j                  «      }| j	                  «       dk(  ru| j	                  d«      dk7  ra| j                  «        |j                  j                  | j                  «       «       | j	                  «       dk(  r| j	                  d«      dk7  rŒa|S rŸ  )Ú_parse_parameter_declarationr   Ú	ParamListrQ   r½   rÂ   r—  rU   ©r   r  r—  s      r   r¡  zCParser._parse_parameter_list€  s‘   € Ø×1Ñ1Ó3ˆÜ—‘ % ¨%¯+©+Ó6ˆØ�o‰oÓ 7Ò*¨t¯©¸qÓ/AÀZÒ/OØ�M‰MŒOØ�M‰M× Ñ  ×!BÑ!BÓ!DÔEð �o‰oÓ 7Ò*¨t¯©¸qÓ/AÀZÓ/Oð ˆr   c                 ób  — | j                  d¬«      \  }}}|d   st        j                  dg|¬«      g|d<   | j                  «       rF| j	                  dd¬«      \  }}|r| j                  ||d d dœg¬«      d	   S | j                  |||«      S | j                  «       }| j                  |||«      S )
NTr  rp   r$   rz   rm  r°   rX  r   )r  r   r}   rä   rñ   r¬   Ú_build_parameter_declarationrì   )r   r�   r  r  rm   Úis_nameds         r   r¤  z$CParser._parse_parameter_declarationŠ  sÙ   € Ø"×@Ñ@ÈtÐ@ÓTÑˆˆa�à�FŠ|Ü!×0Ñ0°%°À
ÔKÐLˆD�‰Là×"Ñ"Ô$Ø!×7Ñ7Ø#¸dð 8ó ‰NˆD�(ñ Ø×/Ñ/ØØ$(°$À4ÑHÐIð 0ó ð ñð ð ×4Ñ4°T¸4ÀÓLÐLà×2Ñ2Ó4ˆØ×0Ñ0°°t¸ZÓHÐHr   r  c                 óv  — t        |d   «      dkD  r]t        |d   d   j                  «      dk(  r?| j                  |d   d   j                  d   «      r| j                  ||d d dœg¬«      d   S t	        j
                  d|d   d |xs t	        j                  d d d d «      |¬	«      }| j                  ||d   «      S )
Nrp   r
   r^   r   r°   rX  r*   r‹   ©r\   r|   rœ   rp   rQ   )rY   r   rh   r¬   r   ÚTypenamerr   rƒ   )r   r�   rm   r  s       r   r¨  z$CParser._build_parameter_declarationž  sÒ   € ô ��V‘Ó Ò!Ü�D˜‘L Ñ$×*Ñ*Ó+¨qÒ0Ø×&Ñ& t¨F¡|°BÑ'7×'=Ñ'=¸aÑ'@ÔAà×+Ñ+Ø¨4¸È$Ñ"OÐ!Pð ,ó àñð ô �~‰~ØØ�v‘,ØØÒ?œŸ™¨¨d°D¸$Ó?Øô
ˆð ×'Ñ'¨¨d°6©lÓ;Ð;r   c                 óJ   — | j                  «       dk(  ry | j                  «       S ©Nró   )r½   Ú_parse_identifier_listrV   s    r   r–  z"CParser._parse_identifier_list_opt´  s#   € Ø�?‰?Ó Ò(ØØ×*Ñ*Ó,Ð,r   c                 ó   — | j                  «       }t        j                  |g|j                  «      }| j	                  d«      r;|j
                  j                  | j                  «       «       | j	                  d«      rŒ;|S r^  )Ú_parse_identifierr   r¥  rQ   rÆ   r—  rU   r¦  s      r   r¯  zCParser._parse_identifier_listº  s`   € Ø×&Ñ&Ó(ˆÜ—‘ % ¨%¯+©+Ó6ˆØ�l‰l˜7Ô#Ø�M‰M× Ñ  ×!7Ñ!7Ó!9Ô:ð �l‰l˜7Õ#àˆr   c                 ó`  — | j                  «       }| j                  «       }d }|�|j                  }n|d   r|d   d   j                  }t        j                  d|d   d d  d |xs t        j
                  d d d d «      |¬«      }t        t        j                  | j                  ||d   «      «      S )Nrp   r   r*   r‹   r«  )r=  rì   rQ   r   r¬  rr   r	   rƒ   )r   r�   rm   rQ   rw   s        r   rþ   z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ÀtÈFÁ|Ó$TÓUÐUr   c                 ó(  — | j                  «       dk(  r_| j                  «       }| j                  «       r| j                  «       }nt	        j
                  d d d d «      }|€J ‚| j                  ||«      S | j                  «       r| j                  «       S y )Nrß   )r½   rx  rù   Ú!_parse_direct_abstract_declaratorr   rr   rv   )r   rz  rm   s      r   rì   z&CParser._parse_abstract_declarator_optÙ  sˆ   € Ø�?‰?Ó Ò'Ø×%Ñ%Ó'ˆCØ×6Ñ6Ô8Ø×=Ñ=Ó?‘ä—~‘~ d¨D°$¸Ó=�Ø�?Ð"�?Ø×)Ñ)¨$°Ó4Ð4à×2Ñ2Ô4Ø×9Ñ9Ó;Ð;àr   c           	      ó,  — | j                  d«      }|r§| j                  «       s| j                  «       dk(  r_| j                  «       }| j	                  d«       t        j                  |t        j                  d d d d «      | j                  |«      ¬«      }no| j                  «       }| j	                  d«       |€LJ ‚| j                  «       dk(  r| j                  «       }n&| j                  d| j                  j                  «       | j                  «      S )Nrà   ró   r“  rø   zInvalid abstract declarator)rÆ   rÔ   r½   Ú_parse_parameter_type_list_optrÈ   r   r~   rr   rI   rì   Ú_parse_abstract_array_baserG   r;   r@   r}  )r   rÿ   r—  rm   s       r   r´  z)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                 óJ   — | j                  «       dk(  ry | j                  «       S r®  )r½   r•  rV   s    r   r¶  z&CParser._parse_parameter_type_list_opt  s#   € Ø�?‰?Ó Ò(ØØ×.Ñ.Ó0Ð0r   c                 óT   — | j                  t        j                  d d d d «      d ¬«      S rƒ  )r…  r   rr   rV   s    r   r·  z"CParser._parse_abstract_array_base  s.   € Ø×,Ñ,Ü—n‘n T¨4°°tÓ<ÀDð -ó 
ð 	
r   c                 ó0  — | j                  «       }|xxdk(  rnxdk(  rn n  | j                  «       S xdk(  r%| j                  d«      dk(  r | j                  «       S xdk(  r | j                  «       S xxdk(  rnxdk(  rn n  | j                  «       S xxd	k(  rnxd
k(  rnxdk(  rn n  | j	                  «       S xxdk(  rnxdk(  rnxdk(  rnxdk(  rn n  | j                  «       S xdk(  rnxdk(  rn n | j                  «       S 	 | j                  «       S )NÚCASEÚDEFAULTrá   r˜   rW  r  ÚIFÚSWITCHÚWHILEÚDOÚFORÚGOTOÚBREAKÚCONTINUEÚRETURNr  r
  )r½   Ú_parse_labeled_statementr  Ú_parse_selection_statementÚ_parse_iteration_statementÚ_parse_jump_statementr  Ú_parse_expression_statementrÚ   s     r   Ú_parse_statementz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ØØ×7Ñ7Ó9Ð9r   c                 óÖ   — | j                  «       dv rH| j                  «       }| j                  «       }t        j                  ||gz   |d   j
                  ¬«      S | j                  «       S )N>   r
  r  r   ©Úblock_itemsrQ   )r½   Ú_parse_pppragma_directive_listrË  r   ÚCompoundrQ   )r   ÚpragmasÚstmts      r   Ú_parse_pragmacomp_or_statementz&CParser._parse_pragmacomp_or_statement)  s_   € Ø�?‰?ÓÐ 7Ñ7Ø×9Ñ9Ó;ˆGØ×(Ñ(Ó*ˆDÜ—>‘>¨g¸¸Ñ.>ÀgÈaÁj×FVÑFVÔWÐWØ×$Ñ$Ó&Ð&r   c                 ó¨   — | j                  «       dk(  r| j                  «       S | j                  «       r| j                  «       S | j	                  «       S )Nr  )r½   r  rÔ   r$  rË  rV   s    r   Ú_parse_block_itemzCParser._parse_block_item1  sK   € Ø�?‰?ÓÐ 0Ò0Ø×,Ñ,Ó.Ð.Ø×#Ñ#Ô%Ø×*Ñ*Ó,Ð,Ø×$Ñ$Ó&Ð&r   c                 óú   — g }| j                  «       dvrf| j                  «       }t        |t        j                  «      r|j                  |«       n|d gk7  r|j                  |«       | j                  «       dvrŒf|S rS  )r½   rÕ  rq   r   rZ  rU   r  )r   rU  Úitems      r   Ú_parse_block_item_listzCParser._parse_block_item_list9  sm   € Ø"$ˆØ�o‰oÓÐ'7Ñ7Ø×)Ñ)Ó+ˆDÜ˜$¤§
¡
Ô+Ø—‘˜TÕ"Ø˜$˜’Ø—‘˜TÔ"ð �o‰oÓÐ'7Ò7ð ˆr   c                 ó   — | j                  d«      }| j                  d«      r&t        j                  d | j	                  |«      ¬«      S | j                  «       }| j                  d«       t        j                  || j	                  |«      ¬«      S )Nr  rM  rÍ  )rÈ   rÆ   r   rÐ  rI   rØ  )r   Ú
lbrace_tokrÎ  s      r   r  z!CParser._parse_compound_statementD  so   € Ø—\‘\ (Ó+ˆ
Ø�<‰<˜Ô!Ü—>‘>¨d¸$¿/¹/È*Ó:UÔVÐVØ×1Ñ1Ó3ˆØ�‰�XÔÜ�~‰~Ø#¨4¯?©?¸:Ó+Fô
ð 	
r   c                 ó  — | j                  «       }|xdk(  r— | j                  «       }| j                  d«       | j                  «       r| j	                  «       }n$t        j                  | j                  |«      «      }t        j                  |j                  || j                  |«      «      S xdk(  rž | j                  «       }| j                  «       }| j                  d«       | j                  «       r| j	                  «       }n$t        j                  | j                  |«      «      }t        j                  ||g| j                  |«      «      S dk(  rŒ| j                  «       }| j                  d«       | j                  «       r| j	                  «       }n$t        j                  | j                  |«      «      }t        j                  |g| j                  |«      «      S 	 | j                  d| j                  j                  «       y )Nrá   rW  r»  r¼  zInvalid labeled statement)r½   rÂ   rÈ   rÜ   rÓ  r   ÚEmptyStatementrI   ÚLabelrH   rB  ÚCaseÚDefaultrG   r;   r@   )r   rÛ   rP  rÒ  Úcase_tokrD  Údef_toks          r   rÆ  z CParser._parse_labeled_statementQ  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           	      óÖ  — | j                  «       }|j                  xdk(  r² | j                  d«       | j                  «       }| j                  d«       | j	                  «       }| j                  d«      r7| j	                  «       }t        j                  |||| j                  |«      «      S t        j                  ||d | j                  |«      «      S dk(  rq| j                  d«       | j                  «       }| j                  d«       | j	                  «       }t        t        j                  ||| j                  |«      «      «      S 	 | j                  d| j                  |«      «       y )Nr½  rà   ró   ÚELSEr¾  zInvalid selection statement)rÂ   rp   rÈ   Ú_parse_expressionrÓ  rÆ   r   ÚIfrI   r   ÚSwitchrG   )r   rK   ÚcondÚ	then_stmtÚ	else_stmtrD  rÒ  s          r   rÇ  z"CParser._parse_selection_statementr  s  € Ø�m‰m‹oˆØ�h‰hÝØ—‘˜XÔ&Ø×-Ñ-Ó/�Ø—‘˜XÔ&Ø ×?Ñ?ÓA�	Ø—<‘< Ô'Ø $× CÑ CÓ E�IÜ Ÿ8™8 D¨)°YÀÇÁÐPSÓ@TÓUÐUÜ—x‘x  i°°t·±ÀsÓ7KÓLÐLÛØ—‘˜XÔ&Ø×-Ñ-Ó/�Ø—‘˜XÔ&Ø×:Ñ:Ó<�Ü'¬¯©°T¸4ÀÇÁÐQTÓAUÓ(VÓWÐWØØ×!Ñ!Ð"?ÀÇÁÐQTÓAUÕVr   c           	      ó€  — | j                  «       }|j                  xdk(  ri | j                  d«       | j                  «       }| j                  d«       | j	                  «       }t        j                  ||| j                  |«      «      S xdk(  r‹ | j	                  «       }| j                  d«       | j                  d«       | j                  «       }| j                  d«       | j                  d«       t        j                  ||| j                  |«      «      S dk(  �r~| j                  d«       | j                  «       dk(  s| j                  «       r¯| j                  «       }t        j                  || j                  |«      «      }| j                  «       }| j                  d«       | j                  «       }| j                  d«       | j	                  «       }t        j                  ||||| j                  |«      «      S | j                  «       }| j                  d«       | j                  «       }| j                  d«       | j                  «       }| j                  d«       | j	                  «       }t        j                  ||||| j                  |«      «      S 	 | j                  d| j                  |«      «       y )	Nr¿  rà   ró   rÀ  r  rÁ  r  zInvalid iteration statement)rÂ   rp   rÈ   rä  rÓ  r   ÚWhilerI   ÚDoWhiler½   rÔ   r$  ÚDeclListÚ_parse_expression_optÚForrG   )r   rK   rç  rÒ  r’   r�   Ú	next_exprs          r   rÈ  z"CParser._parse_iteration_statement‹  s   € Ø�m‰m‹oˆØ�h‰hÝØ—‘˜XÔ&Ø×-Ñ-Ó/�Ø—‘˜XÔ&Ø×:Ñ:Ó<�Ü—{‘{ 4¨¨t¯©¸sÓ/CÓDÐDÝØ×:Ñ:Ó<�Ø—‘˜WÔ%Ø—‘˜XÔ&Ø×-Ñ-Ó/�Ø—‘˜XÔ&Ø—‘˜VÔ$Ü—}‘} T¨4°·±ÀÓ1EÓFÐFÜØ—‘˜XÔ&Ø—?‘?Ó$Ð(8Ò8¸D×<TÑ<TÔ<VØ ×3Ñ3Ó5�EÜ Ÿ>™>¨%°·±ÀÓ1EÓF�DØ×5Ñ5Ó7�DØ—L‘L Ô(Ø $× :Ñ :Ó <�IØ—L‘L Ô*Ø×>Ñ>Ó@�DÜ Ÿ9™9 T¨4°¸DÀ$Ç/Á/ÐRUÓBVÓWÐWà×1Ñ1Ó3�Ø—‘˜VÔ$Ø×1Ñ1Ó3�Ø—‘˜VÔ$Ø ×6Ñ6Ó8�	Ø—‘˜XÔ&Ø×:Ñ:Ó<�Ü—y‘y  t¨Y¸¸d¿o¹oÈcÓ>RÓSÐSØØ×!Ñ!Ð"?ÀÇÁÐQTÓAUÕVr   c                 ó  — | j                  «       }|j                  xdk(  rR | j                  d«      }| j                  d«       t        j                  |j
                  | j                  |«      «      S xdk(  r6 | j                  d«       t        j                  | j                  |«      «      S xdk(  r6 | j                  d«       t        j                  | j                  |«      «      S dk(  r|| j                  d«      r%t        j                  d | j                  |«      «      S | j                  «       }| j                  d«       t        j                  || j                  |«      «      S 	 | j                  d| j                  |«      «       y )NrÂ  rá   r  rÃ  rÄ  rÅ  zInvalid jump statement)rÂ   rp   rÈ   r   ÚGotorH   rI   ÚBreakÚContinuerÆ   ÚReturnrä  rG   )r   rK   rP  rD  s       r   rÉ  z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                 ó”   — | j                  «       }| j                  d«      }|€$t        j                  | j	                  |«      «      S |S )Nr  )rî  rÈ   r   rÜ  rI   )r   rD  Úsemi_toks      r   rÊ  z#CParser._parse_expression_statementÌ  sB   € Ø×)Ñ)Ó+ˆØ—<‘< Ó'ˆØˆ<Ü×'Ñ'¨¯©¸Ó(AÓBÐBØˆr   c                 óD   — | j                  «       r| j                  «       S y rT   )r×   rä  rV   s    r   rî  zCParser._parse_expression_opt×  s    € Ø×"Ñ"Ô$Ø×)Ñ)Ó+Ð+Ør   c                 ó0  — | j                  «       }| j                  d«      s|S || j                  «       g}| j                  d«      r1|j                  | j                  «       «       | j                  d«      rŒ1t        j                  ||j
                  «      S r^  ©r�  rÆ   rU   r   ÚExprListrQ   ©r   rD  Úexprss      r   rä  zCParser._parse_expressionÝ  sx   € Ø×0Ñ0Ó2ˆØ�|‰|˜GÔ$ØˆKØ�t×8Ñ8Ó:Ð;ˆØ�l‰l˜7Ô#Ø�L‰L˜×:Ñ:Ó<Ô=ð �l‰l˜7Õ#ä�~‰~˜e T§Z¡ZÓ0Ð0r   c                 ó’  — | j                  «       dk(  rG| j                  d«      dk(  r3| j                  «        | j                  «       }| j                  d«       |S | j	                  «       }| j                  «       rL| j                  «       j                  }| j                  «       }t        j                  ||||j                  «      S |S )Nrà   r˜   r  ró   )r½   rÂ   r  rÈ   Ú_parse_conditional_expressionrü   rH   r�  r   Ú
AssignmentrQ   )r   ÚcomprD  ÚopÚrhss        r   r�  z$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°4·:±:Ó>Ð>Øˆr   c                 óî   — | j                  «       }| j                  d«      rS| j                  «       }| j                  d«       | j	                  «       }t        j                  ||||j                  «      S |S )NÚCONDOPrW  )Ú_parse_binary_expressionrÆ   rä  rÈ   rÿ  r   Ú	TernaryOprQ   )r   rD  ÚiftrueÚiffalses       r   rÿ  z%CParser._parse_conditional_expressionø  sb   € Ø×,Ñ,Ó.ˆØ�<‰<˜Ô!Ø×+Ñ+Ó-ˆFØ�L‰L˜Ô!Ø×8Ñ8Ó:ˆGÜ—?‘? 4¨°¸$¿*¹*ÓEÐEØˆr   Úmin_precÚlhsc                 óð  — |€| j                  «       }	 | j                  «       }|�|j                  t        vr	 |S t        |j                     }||k  r	 |S |j                  }| j                  «        | j                  «       }	 | j                  «       }|�|j                  t        vrn-t        |j                     }||kD  r| j                  ||«      }nnŒRt        j                  ||||j                  «      }ŒärT   )
Ú_parse_cast_expressionrF   rp   Ú_BINARY_PRECEDENCErH   rÂ   r  r   ÚBinaryOprQ   )	r   r
  r  rK   Úprecr  r  Únext_tokÚ	next_precs	            r   r  z CParser._parse_binary_expression  sõ   € ð ˆ;Ø×-Ñ-Ó/ˆCàØ—*‘*“,ˆCØˆ{˜cŸh™hÔ.@Ñ@Øð* ˆ
ô) & c§h¡hÑ/ˆDØ�hŠØð$ ˆ
ð! —‘ˆBØ�M‰MŒOØ×-Ñ-Ó/ˆCàØŸ:™:›<�ØÐ# x§}¡}Ô<NÑ'NØÜ.¨x¯}©}Ñ=�	Ø˜tÒ#Ø×7Ñ7¸	À3ÓG‘Càð ô —.‘.  S¨#¨s¯y©yÓ9ˆCð- r   c                 ó&  — | j                  «       }|�p|\  }}}| j                  «       dk(  r!| j                  |«       | j                  «       S | j                  «       }t	        j
                  ||| j                  |«      «      S | j                  «       S )Nr  )r   r½   rÏ   r  r   ÚCastrI   Ú_parse_unary_expression)r   Úresultr€   rÊ   rÿ   rD  s         r   r  zCParser._parse_cast_expression$  s‹   € Ø×0Ñ0Ó2ˆØÐØ$*Ñ!ˆC��zØ�‰Ó  HÒ,ð —‘˜DÔ!ð ×+Ñ+Ó-Ð-ð ×2Ñ2Ó4�Ü—z‘z # t¨T¯_©_¸ZÓ-HÓIÐIØ×+Ñ+Ó-Ð-r   c                 ó¦  — | j                  «       }|dv rK| j                  «       }| j                  «       }t        j                  |j
                  ||j                  «      S |dv rK| j                  «       }| j                  «       }t        j                  |j
                  ||j                  «      S |dk(  r˜| j                  «       }| j                  «       }|�6|\  }}}t        j                  |j
                  || j                  |«      «      S | j                  «       }t        j                  |j
                  || j                  |«      «      S |dk(  rr| j                  «       }| j                  d«       | j                  «       }| j                  d«       t        j                  |j
                  || j                  |«      «      S | j                  «       S )N>   ÚPLUSPLUSÚ
MINUSMINUS>   ÚANDÚNOTÚLNOTÚPLUSÚMINUSrß   ÚSIZEOFÚ_ALIGNOFrà   ró   )r½   rÂ   r  r   ÚUnaryOprH   rQ   r  r   rI   rÈ   rþ   Ú_parse_postfix_expression)r   rÛ   rK   rD  r  r€   r  s          r   r  zCParser._parse_unary_expression9  sp  € Ø—?‘?Ó$ˆØÐ1Ñ1Ø—-‘-“/ˆCØ×/Ñ/Ó1ˆDÜ—=‘= §¡¨D°$·*±*Ó=Ð=àÐGÑGØ—-‘-“/ˆCØ×.Ñ.Ó0ˆDÜ—=‘= §¡¨D°$·*±*Ó=Ð=à�xÒØ—-‘-“/ˆCØ×4Ñ4Ó6ˆFØÐ!Ø"‘	��Q˜Ü—}‘} S§Y¡Y°°T·_±_ÀSÓ5IÓJÐJØ×/Ñ/Ó1ˆDÜ—=‘= §¡¨D°$·/±/À#Ó2FÓGÐGà�zÒ!Ø—-‘-“/ˆCØ�L‰L˜Ô"Ø×'Ñ'Ó)ˆCØ�L‰L˜Ô"Ü—=‘= §¡¨C°·±ÀÓ1EÓFÐFà×-Ñ-Ó/Ð/r   c           	      ó‚  — | j                  «       }|�¼|\  }}}| j                  d«      }|�’| j                  d«      r9t        j                  |t        j                  g | j                  |«      «      «      S | j                  «       }| j                  d«       | j                  d«       t        j                  ||«      S | j                  |«       | j                  «       }	 | j                  d«      rC| j                  «       }| j                  d«       t        j                  |||j                  «      }ŒU| j                  d«      ri| j                  «       dk(  r| j                  «        d }	n!| j                  «       }	| j                  d«       t        j                   ||	|j                  «      }ŒÏ| j                  «       dv r¬| j                  «       }
| j                  «       }|j"                  d	vr!| j%                  d
| j                  |«      «       t        j&                  |j(                  | j                  |«      «      }t        j*                  ||
j(                  ||j                  «      }�Œ�| j                  «       dv r@| j                  «       }t        j,                  d|j(                  z   ||j                  «      }�Œß	 |S )Nr  rM  rH  rø   rŽ  rà   ró   >   ÚARROWÚPERIOD>   rá   râ   zInvalid struct reference>   r  r  Úp)r   rÆ   r   ÚCompoundLiteralÚInitListrI   Ú_parse_initializer_listrÈ   rÏ   Ú_parse_primary_expressionrä  ÚArrayRefrQ   r½   rÂ   Ú_parse_argument_expression_listÚFuncCallrp   rG   rá   rH   Ú	StructRefr!  )r   r  r€   rÊ   r  rÚ  r�   rD  Úsubr”  Úop_tokrP  ÚfieldrK   s                 r   r"  z!CParser._parse_postfix_expressionY  s3  € Ø×0Ñ0Ó2ˆØÐØ!‰LˆC��qð Ÿ™ hÓ/ˆJØÐ%Ø—<‘< Ô)ä ×0Ñ0ØœUŸ^™^¨B°·±À
Ó0KÓLóð ð ×3Ñ3Ó5�Ø—‘˜WÔ%Ø—‘˜XÔ&Ü×,Ñ,¨S°$Ó7Ð7à—‘˜DÔ!à×-Ñ-Ó/ˆØØ�|‰|˜JÔ'Ø×,Ñ,Ó.�Ø—‘˜ZÔ(Ü—~‘~ d¨C°·±Ó<�ØØ�|‰|˜HÔ%Ø—?‘?Ó$¨Ò0Ø—M‘M”OØ‘Dà×?Ñ?ÓA�DØ—L‘L Ô*Ü—~‘~ d¨D°$·*±*Ó=�ØØ�‰Ó Ð$7Ñ7ØŸ™›�ØŸ=™=›?�Ø—=‘=Ð(8Ñ8Ø×%Ñ%Ø2°D·O±OÀHÓ4Môô Ÿ™ §¡°·±ÀÓ1JÓK�Ü—‘ t¨V¯\©\¸5À$Ç*Á*ÓM�ÙØ�‰Ó Ð$>Ñ>Ø—m‘m“o�Ü—}‘} S¨3¯9©9¡_°d¸D¿J¹JÓG�ÙØØˆr   c                 ó<  — | j                  «       }|dk(  r| j                  «       S |t        v s|t        v s|t        v r| j                  «       S |t        v r| j                  «       S |dk(  r3| j                  «        | j                  «       }| j                  d«       |S |dk(  r| j                  «       S |dk(  r¿| j                  «       }| j                  d«       | j                  «       }| j                  d«       | j                  «       }| j                  d«       | j                  |«      }t        j                   t        j"                  |j$                  |«      t        j&                  ||g|«      |«      S | j)                  d| j*                  j,                  «       y )Nrá   rà   ró   Ú_GENERICÚOFFSETOFrH  zInvalid expression)r½   r±  Ú
_INT_CONSTÚ_FLOAT_CONSTÚ_CHAR_CONSTÚ_parse_constantÚ_STRING_LITERALÚ_parse_unified_string_literalrÂ   rä  rÈ   Ú_parse_generic_selectionrþ   Ú!_parse_offsetof_member_designatorrI   r   r-  rá   rH   rû  rG   r;   r@   )r   rÛ   rD  Úoff_tokr€   Ú
designatorrQ   s          r   r*  z!CParser._parse_primary_expression‘  sa  € Ø—?‘?Ó$ˆØ�tÒØ×)Ñ)Ó+Ð+àœ
Ñ"Øœ<Ñ'Øœ;Ñ&à×'Ñ'Ó)Ð)Ø”Ñ&Ø×5Ñ5Ó7Ð7Ø�xÒØ�M‰MŒOØ×)Ñ)Ó+ˆDØ�L‰L˜Ô"ØˆKØ�zÒ!Ø×0Ñ0Ó2Ð2Ø�zÒ!Ø—m‘m“oˆGØ�L‰L˜Ô"Ø×'Ñ'Ó)ˆCØ�L‰L˜Ô!Ø×?Ñ?ÓAˆJØ�L‰L˜Ô"Ø—O‘O GÓ,ˆEÜ—>‘>Ü—‘˜Ÿ™¨Ó.Ü—‘  ZÐ0°%Ó8Øóð ð 	×ÑÐ.°·	±	×0BÑ0BÕCr   c                 óœ  — | j                  d«      }| j                  d«       | j                  «       }| j                  d«       | j                  «       g}| j                  d«      r1|j	                  | j                  «       «       | j                  d«      rŒ1| j                  d«       t        j                  ||| j                  |«      «      S )Nr3  rà   rH  ró   )rÈ   r�  Ú_parse_generic_associationrÆ   rU   r   ÚGenericSelectionrI   )r   rK   rD  Úassociationss       r   r;  z CParser._parse_generic_selection¶  s¢   € Ø�l‰l˜:Ó&ˆØ�‰�XÔØ×0Ñ0Ó2ˆØ�‰�WÔØ×7Ñ7Ó9Ð:ˆØ�l‰l˜7Ô#Ø×Ñ × ?Ñ ?Ó AÔBð �l‰l˜7Õ#à�‰�XÔÜ×%Ñ% d¨L¸$¿/¹/È#Ó:NÓOÐOr   c                 óF  — | j                  «       }|€&| j                  d| j                  j                  «       | j	                  d«      rd n| j                  «       }| j                  d«       | j                  «       }t        j                  ||| j                  |«      «      S )Nr¿   r¼  rW  )rF   rG   r;   r@   rÆ   rþ   rÈ   r�  r   ÚGenericAssociationrI   rC  s       r   r@  z"CParser._parse_generic_associationÃ  s€   € Ø�j‰j‹lˆØˆ;Ø×ÑÐ/°·±×1CÑ1CÔDØ—l‘l 9Ô-‰d°4×3HÑ3HÓ3JˆØ�‰�WÔØ×0Ñ0Ó2ˆÜ×'Ñ'¨¨T°4·?±?À3Ó3GÓHÐHr   c                 óZ  — | j                  «       }	 | j                  d«      r3| j                  «       }t        j                  |d||j                  «      }ŒE| j                  d«      rC| j                  «       }| j                  d«       t        j                  |||j                  «      }Œ™	 |S )Nr%  ú.rø   rŽ  )Ú_parse_identifier_or_typeidrÆ   r   r.  rQ   rä  rÈ   r+  )r   r[  r1  rD  s       r   r<  z)CParser._parse_offsetof_member_designatorÎ  s�   € Ø×/Ñ/Ó1ˆØØ�|‰|˜HÔ%Ø×8Ñ8Ó:�Ü—‘ t¨S°%¸¿¹ÓD�ØØ�|‰|˜JÔ'Ø×-Ñ-Ó/�Ø—‘˜ZÔ(Ü—~‘~ d¨D°$·*±*Ó=�ØØØˆr   c                 óì   — | j                  «       }|g}| j                  d«      r1|j                  | j                  «       «       | j                  d«      rŒ1t        j                  ||j
                  «      S r^  rú  rü  s      r   r,  z'CParser._parse_argument_expression_listÞ  s[   € Ø×0Ñ0Ó2ˆØ�ˆØ�l‰l˜7Ô#Ø�L‰L˜×:Ñ:Ó<Ô=ð �l‰l˜7Õ#ä�~‰~˜e T§Z¡ZÓ0Ð0r   c                 ó"   — | j                  «       S rT   )rÿ  rV   s    r   rB  z"CParser._parse_constant_expressionæ  s   € Ø×1Ñ1Ó3Ð3r   c                 ó‚   — | j                  d«      }t        j                  |j                  | j	                  |«      «      S )Nrá   )rÈ   r   rá   rH   rI   rÁ   s     r   r±  zCParser._parse_identifierí  s.   € Ø�l‰l˜4Ó ˆÜ�x‰x˜Ÿ	™	 4§?¡?°3Ó#7Ó8Ð8r   c                 óÞ   — | j                  «       }|j                  dvr!| j                  d| j                  |«      «       t	        j
                  |j                  | j                  |«      «      S )N>   rá   râ   zExpected identifier)rÂ   rp   rG   rI   r   rá   rH   rÁ   s     r   rG  z#CParser._parse_identifier_or_typeidò  sR   € Ø�m‰m‹oˆØ�8‰8Ð+Ñ+Ø×ÑÐ3°T·_±_ÀSÓ5IÔJÜ�x‰x˜Ÿ	™	 4§?¡?°3Ó#7Ó8Ð8r   c                 óú  — | j                  «       }|j                  t        v rŠd}d}|j                  dd  D ]  }|dv r|dz  }Œ|dv sŒ|dz  }Œ |dkD  rt	        d«      ‚|dkD  rt	        d«      ‚d	|z  d
|z  z   }t        j                  |dz   |j                  | j                  |«      «      S |j                  t        v rZ|j                  d   dv rd}n|j                  d   dv rd}nd}t        j                  ||j                  | j                  |«      «      S |j                  t        v r0t        j                  d|j                  | j                  |«      «      S | j                  d| j                  |«      «       y )Nr   éýÿÿÿ)ÚlÚLr
   )ÚuÚUz.Constant cannot have more than one u/U suffix.r˜   z.Constant cannot have more than two l/L suffix.z	unsigned zlong r$   r^   )ÚfÚFÚfloatzlong doubleÚdoubleÚcharzInvalid constant)rÂ   rp   r5  rH   Ú
ValueErrorr   ÚConstantrI   r6  r7  rG   )r   rK   Úu_countÚl_countÚchÚprefixr¨   s          r   r8  zCParser._parse_constantù  s_  € Ø�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‘ *Ñ,Ø!‘à�Ü—>‘> ! S§Y¡Y°·±ÀÓ0DÓEÐEà�8‰8”{Ñ"Ü—>‘> &¨#¯)©)°T·_±_ÀSÓ5IÓJÐJà×ÑÐ,¨d¯o©o¸cÓ.BÕCr   c                 óˆ  — | j                  «       }|j                  t        vr!| j                  d| j	                  |«      «       |j
                  j                  dd«      \  }}|d d g}| j                  «       t        v r…| j                  «       }|j
                  j                  dd«      \  }}|xs |}|d d }| j                  |d   |«      r|j                  |«       n|dxx   |z  cc<   | j                  «       t        v rŒ…|dz   dj                  |«      z   dz   }t        j                  d|| j	                  |«      «      S )NzInvalid string literalú"r
   r^   z" "Ústring)rÂ   rp   r9  rG   rI   rH   Úsplitr½   Ú_string_literal_needs_separatorrU   Újoinr   rX  )	r   rK   r\  ÚcontentsÚpartsÚtok2Únext_prefixÚnext_contentsrH   s	            r   r:  z%CParser._parse_unified_string_literal  s%  € ð �m‰m‹oˆØ�8‰8œ?Ñ*Ø×ÑÐ6¸¿¹ÈÓ8LÔMð Ÿ9™9Ÿ?™?¨3°Ó2Ñˆ�Ø˜#˜2��ˆØ�o‰oÓ¤?Ñ2Ø—=‘=“?ˆDØ)-¯©×)9Ñ)9¸#¸qÓ)AÑ&ˆK˜ð Ò*˜{ˆFØ)¨#¨2Ð.ˆMð ×3Ñ3°E¸"±I¸}ÔMØ—‘˜]Õ+à�b“	˜]Ñ*“	ð �o‰oÓ¤?Ò2ð$ ˜‘˜uŸz™z¨%Ó0Ñ0°3Ñ6ˆÜ�~‰~˜h¨¨t¯©¸sÓ/CÓDÐDr   ÚleftÚrightc                 óÎ  ‡‡— | r|sy| dd |dd z   Št        ˆfd„dD «       «      ry| j                  d«      }|d	k(  ry|}|d
kD  r!| |dz
     dk(  r|dz  }|d
kD  r| |dz
     dk(  rŒ||z
  dz   dz  d
k(  ry| |dz   d }|j                  d«      r"dŠ|d
   ‰v xr t        ˆfd„|dd D «       «      S dt	        |«      cxk  xr dk  nc xr t        d„ |D «       «      xr |d
   dv S )zAWhether joining two literal bodies would change their C spelling.FéþÿÿÿNr˜   c              3   ó,   •K  — | ]  }d |z   ‰v –— Œ y­w)z??Nr%   )Ú.0r[  Úboundarys     €r   ú	<genexpr>z:CParser._string_literal_needs_separator.<locals>.<genexpr>F  s   øè ø€ Ò;¨ˆt�b‰y˜HÔ$Ñ;ùs   ƒz	=/'()!<>-Tú\r^   r   r
   ÚxÚ0123456789abcdefABCDEFc              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wrT   r%   )rm  r[  Ú
hex_digitss     €r   ro  z:CParser._string_literal_needs_separator.<locals>.<genexpr>Z  s   øè ø€ Ò1XÀr°"¸
Ô2BÑ1Xùs   ƒé   c              3   ó$   K  — | ]  }|d v –— Œ
 y­w)Ú01234567Nr%   )rm  r[  s     r   ro  z:CParser._string_literal_needs_separator.<locals>.<genexpr>`  s   è ø€ Ò6¨�B˜*Ô$Ñ6ùs   ‚rw  )ÚanyÚrfindÚ
startswithÚallrY   )rh  ri  Úescape_startÚ	run_startÚescapern  rt  s        @@r   ra  z'CParser._string_literal_needs_separator=  s3  ù€ ñ ™5Øð ˜˜�9˜u R a˜yÑ(ˆÜÓ;¨{Ô;Ô;Øð —z‘z $Ó'ˆØ˜2ÒØð !ˆ	Ø˜!Šm  Y°¡]Ñ 3°tÒ ;Ø˜‰NˆIð ˜!Šm  Y°¡]Ñ 3°tÓ ;à˜9Ñ$ qÑ(¨AÑ-°Ò2Øà�l QÑ&Ð(Ð)ˆØ×Ñ˜SÔ!à1ˆJØ˜‘8˜zÐ)ÒX¬cÓ1XÈVÐTUÐTVÈZÔ1XÓ.XÐXð
 ”�V“Ö ˜qÔ ò 'ÜÑ6¨vÔ6Ó6ò'à�a‘˜JÐ&ð	
r   c                 ó  — | j                  d«      }|rj| j                  d«      r%t        j                  g | j                  |«      «      S | j	                  «       }| j                  d«       | j                  d«       |S | j                  «       S )Nr  rM  rH  )rÆ   r   r(  rI   r)  rÈ   r�  )r   rÚ  Ú	init_lists      r   r  zCParser._parse_initializerj  st   € Ø—\‘\ (Ó+ˆ
ÙØ�|‰|˜HÔ%Ü—~‘~ b¨$¯/©/¸*Ó*EÓFÐFØ×4Ñ4Ó6ˆIØ�L‰L˜Ô!Ø�L‰L˜Ô"ØÐà×0Ñ0Ó2Ð2r   c                 ó  — | j                  «       g}| j                  d«      rE| j                  «       dk(  rn1|j                  | j                  «       «       | j                  d«      rŒEt	        j
                  ||d   j                  «      S )NrH  rM  r   )Ú_parse_initializer_itemrÆ   r½   rU   r   r(  rQ   )r   rU  s     r   r)  zCParser._parse_initializer_listw  so   € Ø×-Ñ-Ó/Ð0ˆØ�l‰l˜7Ô#Ø�‰Ó  HÒ,ØØ�L‰L˜×5Ñ5Ó7Ô8ð �l‰l˜7Õ#ô �~‰~˜e U¨1¡X§^¡^Ó4Ð4r   c                 óž   — d }| j                  «       dv r| j                  «       }| j                  «       }|�t        j                  ||«      S |S ©N>   r%  rø   )r½   Ú_parse_designationr  r   ÚNamedInitializer)r   Údesignationr�   s      r   r‚  zCParser._parse_initializer_item€  sQ   € ØˆØ�?‰?ÓÐ 6Ñ6Ø×1Ñ1Ó3ˆKØ×&Ñ&Ó(ˆØÐ"Ü×)Ñ)¨+°tÓ<Ð<Øˆr   c                 óH   — | j                  «       }| j                  d«       |S )Nr  )Ú_parse_designator_listrÈ   ©r   Údesignatorss     r   r…  zCParser._parse_designationŠ  s"   € Ø×1Ñ1Ó3ˆØ�‰�XÔØÐr   c                 ó’   — g }| j                  «       dv r2|j                  | j                  «       «       | j                  «       dv rŒ2|S r„  )r½   rU   Ú_parse_designatorrŠ  s     r   r‰  zCParser._parse_designator_list�  sF   € ØˆØ�o‰oÓÐ#9Ñ9Ø×Ñ˜t×5Ñ5Ó7Ô8ð �o‰oÓÐ#9Ò9àÐr   c                 óú   — | j                  d«      r#| j                  «       }| j                  d«       |S | j                  d«      r| j                  «       S | j	                  d| j
                  j                  «       y )Nrø   rŽ  r%  zInvalid designator)rÆ   rB  rÈ   rG  rG   r;   r@   )r   rD  s     r   r�  zCParser._parse_designator˜  sc   € Ø�<‰<˜
Ô#Ø×2Ñ2Ó4ˆDØ�L‰L˜Ô$ØˆKØ�<‰<˜Ô!Ø×3Ñ3Ó5Ð5Ø×ÑÐ.°·	±	×0BÑ0BÕCr   c                 óh   — | j                  d«      }| j                  d| j                  |«      «       y )Nr	  zDirectives not supported yet)rÈ   rG   rI   rÁ   s     r   r  zCParser._parse_pp_directive¥  s*   € Ø�l‰l˜8Ó$ˆØ×ÑÐ8¸$¿/¹/È#Ó:NÕOr   c                 óx  — | j                  «       dk(  r‡| j                  «       }| j                  «       dk(  r?| j                  «       }t        j                  |j                  | j                  |«      «      S t        j                  d| j                  |«      «      S | j                  «       dk(  rg| j                  «       }| j                  d«      }| j                  «       }| j                  d«       t        j                  || j                  |«      «      S | j                  d| j                  j                  «       y )Nr  ÚPPPRAGMASTRr*   r
  rà   ró   zInvalid pragma)r½   rÂ   r   ÚPragmarH   rI   rÈ   r:  rG   r;   r@   )r   rK   Ústr_tokÚlparenÚliterals        r   r  z!CParser._parse_pppragma_directive«  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                 ó’   — g }| j                  «       dv r2|j                  | j                  «       «       | j                  «       dv rŒ2|S )N>   r
  r  )r½   rU   r  )r   rÑ  s     r   rÏ  z&CParser._parse_pppragma_directive_list½  sC   € ØˆØ�o‰oÓÐ#:Ñ:Ø�N‰N˜4×9Ñ9Ó;Ô<ð �o‰oÓÐ#:Ò:àˆr   c                 ó<  — | j                  d«      }| j                  d«       | j                  «       }d }| j                  d«      r| j                  «       }| j                  d«       | j                  d«       t	        j
                  ||| j                  |«      «      S )Nr  rà   rH  ró   r  )rÈ   rB  rÆ   r:  r   ÚStaticAssertrI   )r   rK   rç  rP   s       r   r  zCParser._parse_static_assertÆ  s€   € Ø�l‰lÐ+Ó,ˆØ�‰�XÔØ×.Ñ.Ó0ˆØˆØ�<‰<˜Ô Ø×4Ñ4Ó6ˆCØ�‰�XÔØ�‰�VÔÜ×!Ñ! $¨¨T¯_©_¸SÓ-AÓBÐBr   )r*   FrT   )r   N)F©r
   )FF)r   r…   rÒ   )r   r“   )T)r   N)”r   r   r    r!   r   Úboolrp   r"   r?   r   r  rL   r$   r   rO   r   rG   rW   r[   rb   rd   rh   r7   r8   r9   r:   r   rZ  rv   r¥   r¤   r¬  Úlistrƒ   r   r‘   r¬   r³   r·   r   rF   r½   rÂ   rÆ   rÈ   rË   rÏ   rI   rÔ   r×   rÜ   rä   Útuplerè   rñ   ræ   rù   rü   r   rE   r  r  r$  r"  r  r  r  r=  r?  r3  r4  r  rI  r8  rN  rT  rY  r_  r9  rb  re  rK  rï   rî   rí   rr  ry  r}  r  r…  r€  rx  r¥  r•  r¡  r¤  r¨  r–  r¯  rþ   rì   r´  r¶  r·  rË  rÓ  rÕ  rØ  r  rÆ  rÇ  rÈ  rÉ  rÊ  rî  rä  r�  rÿ  r  r  r  r"  r*  rA  r;  rD  r@  r<  r,  rB  r±  rG  r8  rX  r:  Ústaticmethodra  r  r)  r‚  r…  r‰  r�  r  r  rÏ  r˜  r  r%   r   r   r)   r)   /   s8  „ ñ	ð "Ø$Ø(Ø"Ø*Ø Øñ=àð=ð �F‰|ð=ð ð	=ð
 ð=ð ð=ð ð=ð ð=ð 
ó=ð: <AñØðØ#&ðØ48ðà	�‰óñ6J˜Sð J¨#°©*ð JÀó Jð, ð ,¨E°C©K¸$Ñ,>ð ,À8ó ,ó%ó ð
+ cð +°%¸$±,ð +À4ó +ð	, Cð 	,°¸±ð 	,Àó 	,ð cð ¨dó ð: 3ð :¨cð :¸3ð :À4ó :óóð,¨#ð ,°$ó ,ðR cð °Sð ¸U¿Z¹Zó ðX(à�j‰j˜5Ÿ=™=Ñ(¨5¯>©>Ñ9ð(ð �s‘)ð(ð 
�‰�e—m‘mÑ	# e§n¡nÑ	4ó	(ð^ ñà˜;Ñ'ðð ðð ð	ð
 ðð 
óð< #(ñ	bàðbð �KÑ ðbð  ð	bð
 
ˆe�j‰jÑ	óbðH
àð
ð �j‰jð
ð ˜%Ÿ*™*Ñ%¨Ñ,ð	
ð
 �j‰jð
ð 
�‰ó
ð*°ð ¸ó ñ$�sð $ 5¨4¡<ó $ñ5˜Cð 5¨¨d©
ó 5ð
˜%ó ð	 #ð 	¨%°$©,ó 	ð #ð ¨%ó ð#�só #ð!˜3ð ! 4ó !ð3˜eð 3¨ó 3ñ' u¨t¡|ð '¸tó 'ñ. e¨d¡lð .¸dó .ð) 4ó )ñ,¨$ð ,¸4ó ,ð#¨E°#¸±*¸dÐ2BÑ,Có #ð NSñØ"ðØFJðà	ˆu�z‰z˜DÑ  $Ð&Ñ	'óð6!¨E°#¸±*¸dÐ2BÑ,Có !ðF;°Dó ;ð? 4ó ?ð%à	ˆu�~‰~˜s EÐ)Ñ	*¨TÑ	1ó%ð6=°%·-±-ó =ð¨¨e¯j©jÑ)9ó ðM¨T°%·*±*Ñ-=ó Mðn D¨¯©Ñ$4ó ð? $ u§z¡zÑ"2ó ?ð*Øð*Ø+/ð*à	ˆe�j‰jÑ	ó*ðZ¨¨e¯j©jÑ)9ó ð %*ñv+Ø!ðv+à	ˆ{˜D %¨$¡,Ð.Ñ	/óv+óv`ðF¨D°©Ió ð9¨E¯J©Jó 9ð¨¯©ó ð DIñØ˜kÑ*ðØ<@ðà	ˆkÑ	óñ=¨dð =¸{ó =ðT°%·*±*ó TðB°°U·Z±ZÑ0@ó ð"
¨4°·
±
Ñ+;¸dÑ+Bó "
ðJ¨t°KÑ/@ó ó=ð$= u§z¡zó =ð"¨¯
©
ó ð 5§:¡:ó ð 5§:¡:ó ðH e§j¡jó HðL¨%¯*©*ó LðM°%·*±*ó Mð¨3ð ¸Tð ÀeÇjÁjó ð .2ñ/Øð/Ø&*ð/à	�‰ó/ð*¨¯©ð ¸¿
¹
ó ðT¨5¯:©:ð T¸%¿*¹*ó Tð CGñ7(ØŸ™ dÑ*ð7(Ø38¸4±<ð7(à	�‰ó7(ðt¨e¯j©jð ¸U¿Z¹Zó ð2 §
¡
¨TÑ 1ó ð"¨E¯O©Oó ð u§¡ó ðI¨e¯j©jó Ið(<Øð<Ø',§z¡z°DÑ'8ð<ØFKÈdÁlð<à	�‰ó<ð,-¨E¯J©J¸Ñ,=ó -ð¨¯
©
ó ðV %§.¡.ó Vð(°·
±
¸TÑ0Aó ð$/°5·:±:ó /ð.1°·±À$Ñ0Fó 1ð
¨E¯J©Jó 
ð: %§*¡*ó :ð*'°·
±
ó 'ð' 5§:¡:°°U·Z±ZÑ0@Ñ#@ó 'ð¨¨U¯Z©ZÑ(8ó ð
¨5¯:©:ó 
ðS¨%¯*©*ó SðBW¨E¯J©Jó Wð2&W¨E¯J©Jó &WðTR u§z¡zó Rð.¨U¯Z©Zó ð u§z¡z°DÑ'8ó ð1 5§:¡:ó 1ð¨e¯j©jó ð ¨u¯z©zó ð ;?ñØðØ&+§j¡j°4Ñ&7ðà	�‰óðD.¨¯
©
ó .ð*0¨¯©ó 0ð@4¨5¯:©:ó 4ðp!D¨5¯:©:ó !DðJ	P¨%×*@Ñ*@ó 	PðI¨E×,DÑ,Dó Ið°5·:±:ó ð 1°·±ó 1ð4¨E¯J©Jó 4ð9 5§:¡:ó 9ð
9¨U¯Z©Zó 9ðD §¡ó DðD E¨u¯~ª~ó  EðD ð$
¨cð $
¸#ð $
À$ò $
ó ð$
ðX
3 E§J¡Jó 
3ð5¨¯©ó 5ð¨¯©ó ð D¨¯©Ñ$4ó ð¨¨U¯Z©ZÑ(8ó ðD 5§:¡:ó DðP Xó Pð@¨5¯:©:ó @ð$°°U·Z±ZÑ0@ó ð	C e×&8Ò&8ô 	Cr   r)   >   r  ÚOREQUALÚANDEQUALÚDIVEQUALÚMODEQUALÚXOREQUALÚ	PLUSEQUALÚ
MINUSEQUALÚ
TIMESEQUALÚLSHIFTEQUALÚRSHIFTEQUALÚLORÚLANDÚORr˜   ÚXORru  r  é   ÚEQé   ÚNEÚGTé   ÚGEÚLTÚLEÚRSHIFTé   ÚLSHIFTr  é   r  rß   é	   ÚDIVIDEÚMOD>   ÚAUTOÚEXTERNrŒ  ÚTYPEDEFÚREGISTERÚ_THREAD_LOCALÚINLINEÚ	_NORETURN>   ÚCONSTr/  ÚRESTRICTÚVOLATILE>   ÚINTÚCHARÚLONGÚVOIDÚFLOATÚSHORTÚ_BOOLÚDOUBLEÚSIGNEDÚUNSIGNEDÚ_COMPLEXÚ__INT128>   r2  r0  r1  râ   r/  r-  >   rá   r  r  r  r  r  rß   rà   r  r4  r  r   r3  r  >   ÚINT_CONST_BINÚINT_CONST_DECÚINT_CONST_HEXÚINT_CONST_OCTÚINT_CONST_CHARÚFLOAT_CONSTÚHEX_FLOAT_CONST>   Ú
CHAR_CONSTÚWCHAR_CONSTÚU8CHAR_CONSTÚU16CHAR_CONSTÚU32CHAR_CONST>   ÚSTRING_LITERALÚWSTRING_LITERALÚU8STRING_LITERALÚU16STRING_LITERALÚU32STRING_LITERAL>   rÀ  r½  rÁ  r»  rÂ  r  rÃ  r¿  r  rÅ  r¾  r¼  r
  rÄ  r  c                   óv   — e Zd ZdZdeddfd„Zddededz  fd„Zdedz  fd„Z	defd	„Z
d
eddfd„Zdeddfd„Zy)r=   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.
    r,   r   Nc                 ó.   — || _         g | _        d| _        y )Nr   )Ú_lexerÚ_bufferÚ_index)r   r,   s     r   r?   z_TokenStream.__init__]	  s   € ØˆŒØ+-ˆŒØˆ�r   r¸   c                 ón   — |dk  ry| j                  |«       | j                  | j                  |z   dz
     S )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.
        r   Nr
   ©Ú_fillræ  rç  r»   s     r   rº   z_TokenStream.peekb	  s5   € ð �Š6ØØ�
‰
�1ŒØ�|‰|˜DŸK™K¨!™O¨aÑ/Ñ0Ð0r   c                 ó„   — | j                  d«       | j                  | j                     }| xj                  dz  c_        |S )z%Consume a single token and return it.r
   ré  rÁ   s     r   rÀ   z_TokenStream.nextn	  s2   € à�
‰
�1ŒØ�l‰l˜4Ÿ;™;Ñ'ˆØ�Š�qÑ�Øˆ
r   c                 ó   — | j                   S rT   ©rç  rV   s    r   rÊ   z_TokenStream.markz	  s   € Ø�{‰{Ðr   rÊ   c                 ó   — || _         y rT   rí  rÎ   s     r   rÍ   z_TokenStream.reset}	  s	   € Øˆ�r   Únc                 ó  — t        | j                  «      | j                  |z   k  r_| j                  j	                  «       }| j                  j                  |«       |€y t        | j                  «      | j                  |z   k  rŒ^y y rT   )rY   ræ  rç  rå  r´   rU   )r   rï  rK   s      r   rê  z_TokenStream._fill€	  sb   € Ü�$—,‘,Ó $§+¡+°¡/Ò1Ø—+‘+×#Ñ#Ó%ˆCØ�L‰L×Ñ Ô$Øˆ{Øô	 �$—,‘,Ó $§+¡+°¡/Õ1r   r™  )r   r   r    r!   r   r?   r$   r   rº   rÀ   rÊ   rÍ   rê  r%   r   r   r=   r=   W	  ss   „ ñð
˜fð ¨ó ñ

1�cð 
1 %¨$¡,ó 
1ð�e˜d‘ló ð�có ð˜#ð  $ó ð�sð ˜tô r   r=   c                   ó^   — e Zd ZU ee   ed<   ee   ed<   ee   ed<   ee   ed<   ee   ed<   y)r…   r‹   rŒ   rp   r�   rŽ   N)r   r   r    r›  r   r#   r%   r   r   r…   r…   Ž	  s2   … Ø
ˆs‰)ƒOØ�#‰YÓØ
ˆs‰)ƒOØ�3‰iÓØ�C‰yÔr   r…   rŠ   c                   óz   — e Zd ZU ej                  dz  ed<   ej                  dz  ed<   ej                  dz  ed<   y)r“   Nrm   r�   r—   )r   r   r    r   rZ  r#   r%   r   r   r“   r“   ™	  s1   … ð
 �*‰*�tÑ
ÓØ
�*‰*�tÑ
ÓØ�Z‰Z˜$ÑÔr   r“   N)'Údataclassesr   Útypingr   r   r   r   r   r	   r*   r   Úast_transformsr   r   Úc_lexerr   r   r   Ú	Exceptionr'   r)   rû   r  r5  r6  rô   r7  rÓ   Ú_EXPR_STARTr5  r6  r7  r9  rÖ   rÙ   r=   r…   rˆ   r“   r%   r   r   ú<module>rù     s  ðõ "÷÷ õ ß Cß "ð ÷ð ó ðô$	�ô 	÷`"Cñ `"CòFE€ð"Ø	ˆ1ðà
ˆAðð 	ˆ!ðð 
ˆ1ð	ð
 
ˆ1ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð ˆaðð ˆaðð ˆAðð ˆQðð  ˆQð!ð" ˆað#ð$ 
ˆ1ñ%Ð ò* V€à˜KÐ(€â>€òÐ ð  Øñàñð ñò Cñ	Cð ò€ò"€
ð Ð0Ð1€ò€ò€ð �*Ñ˜|Ñ+¨kÑ9¸OÑKð òÐ ÷&.ñ .ôn�	ô ð ÐJÑK€ô�	õ r   