§
    ×óÉ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&d<S )=é    )Ú	dataclass)ÚAnyÚLiteralÚNoReturnÚOptionalÚ	TypedDictÚcasté   )Úc_ast)Úfix_atomic_specifiersÚfix_switch_cases)ÚCLexerÚTokenc                   óH   — 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dS )ÚCoordzkCoordinates of a syntactic element. Consists of:
    - File name
    - Line number
    - Column number
    ÚfileÚlineNÚcolumnÚreturnc                 óP   — | j         › d| j        › �}| j        �|d| j        › �z  }|S )Nú:©r   r   r   )ÚselfÚtexts     úu/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib/python3.11/site-packages/pycparser/c_parser.pyÚ__str__zCoord.__str__$   s;   € Ø”)Ð)Ð)˜dœiÐ)Ð)ˆØŒ;Ð"ØÐ%˜œÐ%Ð%Ñ%ˆDØˆó    )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__Úintr   r   © r   r   r   r      sc   € € € € € € ðð ð €I€I�IØ
€I€I�IØ€FˆC�$‰JÐÐÑð˜ð ð ð ð ð ð r   r   c                   ó   — e Zd ZdS )Ú
ParseErrorN)r   r   r    r%   r   r   r'   r'   +   s   € € € € € Ø€Dr   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	j        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	j                 fd6„Z$d2d,d&e	j        d7e e	j                 dz  d8e	j        de	j        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*dAede'dz  fdB„Z+dAede'fdC„Z,defdD„Z-dEeddfdF„Z.dGe'defdH„Z/d¶dGe'dz  defdI„Z0d¶dGe'dz  defdJ„Z1defdK„Z2d¸dLedefdM„Z3de4edz  ef         fdN„Z5	 dºdOedPede4e	j        dz  ef         fdQ„Z6de4edz  ef         fdR„Z7defdS„Z8defdT„Z9de4e	j        ee'f         dz  fdU„Z:de	j
        fdV„Z;de e	j                 fdW„Z<de e	j                 fdX„Z=de e	j                 fdY„Z>de e	j                 fdZ„Z?d2d,d[ede e	j                 fd\„Z@de e	j                 fd]„ZA	 d¸d^ede4d,eedz  f         fd_„ZBd»d`„ZCde e         fda„ZDde	j        fdb„ZEde	j        fdc„ZF	 d¼dde"d4         dLede d4         fde„ZGd¸dLedd4fdf„ZHde	j        fdg„ZIde e	j                 fdh„ZJde e	j                 dz  fdi„ZKde d4         fdj„ZLd½dk„ZMde	j        fdl„ZNde	j        fdm„ZOde	j        fdn„ZPde	j        fdo„ZQde	j        fdp„ZRde	j        fdq„ZSde	j        fdr„ZTd.edsede	j        fdt„ZU	 d¾d.edsede	j        fdu„ZVd&e	j        de	j        fdv„ZWdwe	j        de	j        fdx„ZX	 d¶dye	j        dz  dedz  de	j        fdz„ZYdwe	j        de	j        fd{„ZZde	j        dz  fd|„Z[de	j\        fd}„Z]de	j\        fd~„Z^de	j        fd„Z_d2d,d&e	j        dz  d€edz  de	j        fd�„Z`de	j        dz  fd‚„Zade	j        fdƒ„Zbde	j        fd„„Zcde	j        dz  fd…„Zdde	j        fd†„Zede	j\        dz  fd‡„Zfde	j        fdˆ„Zgde	j        fd‰„Zhde	j        fdŠ„Zide	j        e e	j                 z  fd‹„Zjde e	j                 fdŒ„Zkde	j        fd�„Zlde	j        fdŽ„Zmde	j        fd�„Znde	j        fd�„Zode	j        fd‘„Zpde	j        fd’„Zqde	j        dz  fd“„Zrde	j        fd”„Zsde	j        fd•„Ztde	j        fd–„Zu	 d¿d˜ed™e	j        dz  de	j        fdš„Zvde	j        fd›„Zwde	j        fdœ„Zxde	j        fd�„Zyde	j        fdž„Zzde	j{        fdŸ„Z|de	j}        fd „Z~de	j        fd¡„Zde	j        fd¢„Z€de	j        fd£„Z�de	j        fd¤„Z‚de	j        fd¥„Zƒde	j        fd¦„Z„de	j…        fd§„Z†e‡d¨ed©edefdª„¦   «         Zˆde	j        fd«„Z‰de	j        fd¬„ZŠde	j        fd­„Z‹de e	j                 fd®„ZŒde e	j                 fd¯„Z�de	j        fd°„ZŽdefd±„Z�de	j        fd²„Z�de e	j                 fd³„Z‘de	j’        fd´„Z“dS )ÀÚ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        ¦  «        | _        d S )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__;   sU   € ð "˜EØÔ+ØÔ3ØÔ3Ø!Ô7ð	
ñ 
ô 
ˆŒ	ð 57°4ˆÔÝ%1°$´)Ñ%<Ô%<ˆŒˆˆr   r   ÚfilenameÚdebugc                 ó4  — i g| _         | j                             ||¦  «         t          | j        ¦  «        | _        |                      ¦   «         }|                      ¦   «         }|�1|                      d|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.
        Nú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   sŠ   € ð  ˜DˆÔØŒ	�Š˜˜hÑ'Ô'Ð'Ý# D¤IÑ.Ô.ˆŒà×3Ò3Ñ5Ô5ˆØ�jŠj‰lŒlˆØˆ?Ø×ÒÐ4¨¬Ð4Ð4°d·o²oÀcÑ6JÔ6JÑKÔKÐKØˆ
r   Úlinenor   c                 ó:   — t          | j        j        ||¬¦  «        S )Nr   )r   r;   r@   )r   rM   r   s      r   Ú_coordzCParser._coordr   s   € Ý˜$œ)Ô,°6À&ÐIÑIÔIÐIr   ÚmsgÚcoordc                 ó*   — t          |› d|› �¦  «        ‚)Nz: )r'   )r   rP   rQ   s      r   rG   zCParser._parse_erroru   s   € Ý˜EÐ*Ð* SÐ*Ð*Ñ+Ô+Ð+r   c                 ó:   — | j                              i ¦  «         d S ©N)r<   Úappend©r   s    r   Ú_push_scopezCParser._push_scopex   s   € ØÔ× Ò  Ñ$Ô$Ð$Ð$Ð$r   c                 ó†   — t          | j        ¦  «        dk    rt          d¦  «        ‚| j                             ¦   «          d S )Nr
   zUnmatched '}')Úlenr<   r'   ÚpoprV   s    r   Ú
_pop_scopezCParser._pop_scope{   sA   € ÝˆtÔ Ñ!Ô! QÒ&Ð&Ý˜_Ñ-Ô-Ð-ØÔ×ÒÑÔÐÐÐr   Únamec                 óœ   — | j         d                              |d¦  «        s|                      d|›d�|¦  «         d| j         d         |<   dS )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€   se   € àÔ  Ô$×(Ò(¨¨tÑ4Ô4ð 	Ø×ÒØT˜4ÐTÐTÐTØñô ð ð '+ˆÔ˜"Ô˜dÑ#Ð#Ð#r   c                 óœ   — | j         d                              |d¦  «        r|                      d|›d�|¦  «         d| j         d         |<   dS )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‰   sg   € ð Ô˜RÔ ×$Ò$ T¨5Ñ1Ô1ð 	Ø×ÒØT˜tÐTÐTÐTØñô ð ð ',ˆÔ˜"Ô˜dÑ#Ð#Ð#r   c                 óP   — t          | j        ¦  «        D ]}||v r
||         c S ŒdS )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”   sA   € å˜dÔ/Ñ0Ô0ð 	#ð 	#ˆEð �uˆ}ˆ}Ø˜T”{Ð"Ð"Ð"ð àˆur   r   c                 óZ   — |                       ||                      ||¦  «        ¦  «         d S rT   )rG   rO   )r   rP   r   r   s       r   r7   zCParser._lex_error_func�   s,   € Ø×Ò˜#˜tŸ{š{¨4°Ñ8Ô8Ñ9Ô9Ð9Ð9Ð9r   c                 ó.   — |                       ¦   «          d S rT   )rW   rV   s    r   r8   zCParser._lex_on_lbrace_func    s   € Ø×ÒÑÔÐÐÐr   c                 ó.   — |                       ¦   «          d S rT   )r[   rV   s    r   r9   zCParser._lex_on_rbrace_func£   s   € Ø�ŠÑÔÐÐÐr   c                 ó,   — |                       |¦  «        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                 ó2  — |}|}|j         r|j         }|j         °t          |t          j        ¦  «        r	||_         |S |}t          |j         t          j        ¦  «        s&|j         }t          |j         t          j        ¦  «        ¯&|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Ñ+Ô+ð 	Ø!%ˆMÔØˆOð
 ˆIÝ  ¤µ´Ñ@Ô@ð +Ø%œN�	õ ! ¤µ´Ñ@Ô@ð +ð "+¤ˆMÔØ*ˆIŒNØˆKr   Útypenamec                 ó¨  — |}t          |t          j        ¦  «        s!|j        }t          |t          j        ¦  «        ¯!|j        |_        |j        dd…         |_        |D ]c}t          |t          j        ¦  «        sGt          |¦  «        dk    r|  	                    d|j
        ¦  «         ŒK||_        t          |¦  «        c S Œd|s\t          |j        t          j        ¦  «        s|  	                    d|j
        ¦  «         t          j        dg|j
        ¬¦  «        |_        n0t          j        d„ |D ¦   «         |d         j
        ¬¦  «        |_        |S )	z#Fixes a declaration. Modifies decl.Nr
   z Invalid multiple types specifiedúMissing type in declarationr$   ©rQ   c                 ó&   — g | ]}|j         D ]}|‘ŒŒS r%   )Únames)Ú.0Úidr\   s      r   ú
<listcomp>z/CParser._fix_decl_name_type.<locals>.<listcomp>!  s'   € Ð>Ð>Ð>˜"°R´XÐ>Ð>¨T�Ð>Ð>Ð>Ð>r   r   )rq   r   rr   rp   Údeclnamer\   ÚqualsÚIdentifierTyperY   rG   rQ   r   ÚFuncDecl)r   rm   rw   ÚtypÚtns        r   Ú_fix_decl_name_typezCParser._fix_decl_name_typeû   s^  € ð ˆÝ˜S¥%¤.Ñ1Ô1ð 	Ø”(ˆCõ ˜S¥%¤.Ñ1Ô1ð 	ð ”LˆŒ	Ø”J˜q˜q˜q”MˆŒ	ð ð 	7ð 	7ˆBÝ˜b¥%Ô"6Ñ7Ô7ð 7Ý�x‘=”= 1Ò$Ð$Ø×%Ò%Ð&HÈ"Ì(ÑSÔSÐSÐSà!�C”Hõ 1°Ñ6Ô6Ð6Ð6Ð6ð7ð ð 
	å˜dœi­¬Ñ8Ô8ð MØ×!Ò!Ð"?ÀÄÑLÔLÐLÝÔ+¨U¨G¸4¼:ÐFÑFÔFˆCŒHˆHõ Ô+Ø>Ð> Ð>Ñ>Ô>ÀhÈqÄkÔFWðñ ô ˆCŒHð ˆr   ÚdeclspecÚ	_DeclSpecÚnewspecÚkindÚ_DeclSpecKindrU   c                 ó”   — |€	g g g g g dœ}n|}|r||                               |¦  «         n||                              d|¦  «         |S )z2See _DeclSpec for the specifier dictionary layout.N©ÚqualÚstoragerp   ÚfunctionÚ	alignmentr   )rU   Úinsert)r   r‡   r‰   rŠ   rU   Úspecs         r   Ú_add_declaration_specifierz"CParser._add_declaration_specifier%  sp   € ð ÐàØØØØðð ˆDˆDð ˆDàð 	*Ø�ŒJ×Ò˜gÑ&Ô&Ð&Ð&à�ŒJ×Ò˜a Ñ)Ô)Ð)àˆr   r“   ÚdeclsÚ	_DeclInfoÚtypedef_namespacec                 óô  — d|d         v }g }|d                               d¦  «        �€ß|d         d         €ÿt          |d         ¦  «        dk     sPt          |d         d	         j        ¦  «        d
k    s,|                      |d         d	         j        d         ¦  «        s<d}|d         D ]}t	          |d¦  «        r	|j        } nŒ|                      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        ¦  «        ¯!|j        €'|d         d	         j        d         |_        |d         d	= |D �]l}	|	d         €J ‚|r7t          j        d|d         |d         |	d         |	d         j        ¬¦  «        }
nlt          j        d|d         |d         |d         |d         |	d         |	                      d¦  «        |	                      d¦  «        |	d         j        ¬¦	  «	        }
t          |
j        t          j
        t          j        t          j        t          j        f¦  «        r|
}n|                      |
|d         ¦  «        }|rC|r!|                      |j        |j        ¦  «         n |                      |j        |j        ¦  «         |                     |¦  «         �Œn|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Ñ2Ô2°aÒ7Ð7Ø×1Ò1°$°v´,¸rÔ2BÔ2HÈÔ2KÑLÔLð 8ð  �EØ! &œ\ð "ð "˜Ý" 1 gÑ.Ô.ð "Ø$%¤G˜EØ!˜Eð"ð ×%Ò%Ð&;¸UÑCÔCÐCõ $)¤>Ø! &œ\¨"Ô-Ô3°AÔ6ØØØ˜{Ô+Ø˜vœ, rÔ*Ô0ð$ñ $ô $��a”˜Ñ ð ˜”L Ð$Ð$õ  Ø�a”˜Ô Ý”�Uœ\­5¬;½Ô8LÐMñô ð 	)õ  $¥C¨¨q¬°&Ô)9Ñ:Ô:�Ý$ \µ5´>ÑBÔBð 5Ø#/Ô#4�Lõ % \µ5´>ÑBÔBð 5àÔ(Ð0Ø,0°¬L¸Ô,<Ô,BÀ1Ô,E�LÔ)Ø˜Vœ RÐ(àð '	,ñ '	,ˆDØ˜”<Ð+Ð+Ð+Øð Ý#œmØØ˜vœ,Ø  œOØ˜fœØ˜vœ,Ô,ðñ ô ��õ $œjØØ˜vœ,Ø˜{Ô+Ø  œOØ! *Ô-Ø˜fœØŸš &Ñ)Ô)Ø ŸHšH YÑ/Ô/Ø˜vœ,Ô,ð
ñ 
ô 
�õ ØÔ Ý”�Uœ\­5¬;½Ô8LÐMñô ð Qð )�
�
à!×5Ò5°kÀ4ÈÄ<ÑPÔP�
ð !ð LØð LØ×*Ò*¨:¬?¸JÔ<LÑMÔMÐMÐMà×(Ò(¨¬¸*Ô:JÑKÔKÐKà×Ò 
Ñ+Ô+Ð+Ñ+àÐr   Úparam_declsÚbodyc                 óÌ   — d|d         v r|                       d|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£  sŒ   € ð ˜˜YœÐ'Ð'Ø×ÒÐ/°´Ñ<Ô<Ð<à×.Ò.ØØ ¨$¸4Ð@Ð@ÐAØ"ð /ñ 
ô 
ð ô	ˆõ Œ}Ø¨+¸DÈÌ
ð
ñ 
ô 
ð 	
r   Útokenc                 ó>   — |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   r
   Úkc                 ó6   — | 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                 óB   — |                       |¦  «        }|�|j        n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ŒmˆØ˜?ˆsŒxˆx°Ð4r   c                 ó€   — | j                              ¦   «         }|€"|                      d| j        j        ¦  «         d S |S )NúAt end of input)r>   ÚnextrG   r;   r@   ©r   rK   s     r   Ú_advancezCParser._advanceÍ  sA   € ØŒl×ÒÑ!Ô!ˆØˆ;Ø×ÒÐ/°´Ô1CÑDÔDÐDÐDÐDàˆJr   Ú
token_typec                 óp   — |                       ¦   «         }|�|j        |k    r|                      ¦   «         S dS )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Ô  s5   € ð �jŠj‰lŒlˆØˆ?˜sœx¨:Ò5Ð5Ø—=’=‘?”?Ð"Øˆtr   c                 ó¦   — |                       ¦   «         }|j        |k    r1|                      d|j        › �|                      |¦  «        ¦  «         |S )NrC   )rÅ   rp   rG   rH   rI   rÈ   s      r   Ú_expectzCParser._expectß  sN   € Ø�mŠm‰oŒoˆØŒ8�zÒ!Ð!Ø×ÒÐ4¨¬Ð4Ð4°d·o²oÀcÑ6JÔ6JÑKÔKÐKØˆ
r   c                 ó4   — | j                              ¦   «         S rT   )r>   ÚmarkrV   s    r   Ú_markzCParser._markå  s   € ØŒ|× Ò Ñ"Ô"Ð"r   rÍ   c                 ó:   — | j                              |¦  «         d S rT   )r>   Úreset©r   rÍ   s     r   Ú_resetzCParser._resetè  s   € ØŒ×Ò˜4Ñ Ô Ð Ð Ð r   rK   c                 óB   — |                       |j        |j        ¦  «        S rT   )rO   rM   r   rÄ   s     r   rI   zCParser._tok_coordë  s   € Ø�{Š{˜3œ: s¤zÑ2Ô2Ð2r   c                 óR   — |p|                       ¦   «         }|€dS |j        t          v S ©NF)rF   rp   Ú_DECL_STARTrÄ   s     r   Ú_starts_declarationzCParser._starts_declarationî  s+   € ØÐ!�T—Z’Z‘\”\ˆØˆ;Ø�5ØŒx�;Ð&Ð&r   c                 óR   — |p|                       ¦   «         }|€dS |j        t          v S rÕ   )rF   rp   Ú_STARTS_EXPRESSIONrÄ   s     r   Ú_starts_expressionzCParser._starts_expressionô  s,   € ØÐ!�T—Z’Z‘\”\ˆØˆ;Ø�5ØŒxÕ-Ð-Ð-r   c                 óp   — |                       ¦   «         }|€dS |t          v rdS |                      ¦   «         S )NFT)rÀ   Ú_STARTS_STATEMENTrÚ   ©r   Útok_types     r   Ú_starts_statementzCParser._starts_statementú  s?   € Ø—?’?Ñ$Ô$ˆØÐØ�5ØÕ(Ð(Ð(Ø�4Ø×&Ò&Ñ(Ô(Ð(r   Úid_onlyc                 óV   — |                       ¦   «         }|€dS |dv rdS |r|dk    S |dv S )NF>   ÚTIMESÚLPARENTÚID>   rä   ÚTYPEID©rÀ   )r   rà   rÞ   s      r   Ú_starts_declaratorzCParser._starts_declarator  sL   € Ø—?’?Ñ$Ô$ˆØÐØ�5ØÐ*Ð*Ð*Ø�4Øð 	$Ø˜tÒ#Ð#ØÐ+Ð+Ð+r   c                 óŠ   — |                       ¦   «         }|                      ¦   «         \  }}|                      |¦  «         ||fS rT   )rÎ   Ú_scan_declarator_name_inforÒ   )r   rÍ   rÞ   Ú	saw_parens       r   Ú_peek_declarator_name_infoz"CParser._peek_declarator_name_info  sB   € Ø�zŠz‰|Œ|ˆØ"×=Ò=Ñ?Ô?Ñˆ�)Ø�Š�DÑÔÐØ˜Ð"Ð"r   Úallow_abstractÚtypeid_paren_as_abstractc                 óª  — |                       ¦   «         \  }}|�
|ro|dk    ri|rg|sM|                      ¦   «         }|�|                      |¦  «        n| j        j        }|                      d|¦  «         |                      ¦   «         }|dfS |dk    r,|r|                      ¦   «         }n)|                      ¦   «         }n|  	                    ¦   «         }|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ØÐØ$ð Ø)2°hÒ)>Ð)>À9Ð)>à!ð ?Ø—j’j‘l”l�Ø03°˜Ÿš¨Ñ,Ô,Ð,ÀTÄYÔEW�Ø×!Ò!Ð"6¸Ñ>Ô>Ð>Ø×6Ò6Ñ8Ô8ˆDØ˜�;Ðà˜Ò Ð Ø'ð 7Ø×<Ò<Ñ>Ô>��à×4Ò4Ñ6Ô6��à×,Ò,Ñ.Ô.ˆDØ�TˆzÐr   c                 óÔ  — d}|                       d¦  «        r_|                      ¦   «         t          v r/|                      ¦   «          |                      ¦   «         t          v °/|                       d¦  «        °_|                      ¦   «         }|€d |fS |j        dv r|                      ¦   «          |j        |fS |j        dk    r¤d}|                      ¦   «          |                      ¦   «         \  }}|rd}d}	 |                      ¦   «         }|€d |fS |j        dk    r|dz  }n,|j        dk    r!|dz  }|                      ¦   «          |dk    rnŒX|                      ¦   «          Œl||fS d |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-  s‹  € Øˆ	Ø�lŠl˜7Ñ#Ô#ð 	 Ø—/’/Ñ#Ô#¥Ð6Ð6Ø—’‘”�ð —/’/Ñ#Ô#¥Ð6Ð6ð �lŠl˜7Ñ#Ô#ð 	 ð �jŠj‰lŒlˆØˆ;Ø˜�?Ð"ØŒ8Ð'Ð'Ð'Ø�MŠM‰OŒOˆOØ”8˜YÐ&Ð&ØŒ8�xÒÐØˆIØ�MŠM‰OŒOˆOØ%)×%DÒ%DÑ%FÔ%FÑ"ˆH�lØð !Ø �	ØˆEð Ø—j’j‘l”l�Ø�;Ø ˜?Ð*Ø”8˜xÒ'Ð'Ø˜Q‘J�E�EØ”X Ò)Ð)Ø˜Q‘J�EØ—M’M‘O”O�OØ ’z�zØØØ—’‘”�ð ð ˜YÐ&Ð&Ø�YˆÐr   c                 ó.   — |                       ¦   «         dv S )N>   rã   ÚLBRACKETræ   rV   s    r   Ú"_starts_direct_abstract_declaratorz*CParser._starts_direct_abstract_declaratorP  s   € Ø�ŠÑ Ô Ð$:Ð:Ð:r   c                 óN   — |                       ¦   «         }|d uo|j        t          v S rT   )rF   rp   Ú_ASSIGNMENT_OPSrÄ   s     r   Ú_is_assignment_opzCParser._is_assignment_opS  s%   € Ø�jŠj‰lŒlˆØ˜$ˆÐ> 3¤8­Ð#>Ð>r   c                 ó<  — |                       ¦   «         }|                      d¦  «        }|€dS |                      ¦   «         s|                      |¦  «         dS |                      ¦   «         }|                      d¦  «        €|                      |¦  «         dS |||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  sŸ   € ð �zŠz‰|Œ|ˆØ—\’\ (Ñ+Ô+ˆ
ØÐØ�4Ø×'Ò'Ñ)Ô)ð 	Ø�KŠK˜ÑÔÐØ�4Ø×#Ò#Ñ%Ô%ˆØ�<Š<˜Ñ!Ô!Ð)Ø�KŠK˜ÑÔÐØ�4Ø�D˜*Ð$Ð$r   c                 óž   — |                       ¦   «         €t          j        g ¦  «        S t          j        |                      ¦   «         ¦  «        S rT   )rF   r   ÚFileASTÚ_parse_translation_unitrV   s    r   rE   z(CParser._parse_translation_unit_or_emptyr  s<   € Ø�:Š:‰<Œ<ÐÝ”= Ñ$Ô$Ð$ÝŒ}˜T×9Ò9Ñ;Ô;Ñ<Ô<Ð<r   c                 ó¨   — g }|                       ¦   «         �;|                     |                      ¦   «         ¦  «         |                       ¦   «         ­;|S rT   )rF   ÚextendÚ_parse_external_declaration)r   Úexts     r   r  zCParser._parse_translation_unitx  sH   € ØˆØ�jŠj‰lŒlÐ&Ø�JŠJ�t×7Ò7Ñ9Ô9Ñ:Ô:Ð:ð �jŠj‰lŒlÐ&àˆ
r   c                 ó  — |                       ¦   «         }|€g S |j        dk    r|                      ¦   «          g S |j        dv r|                      ¦   «         gS |                      d¦  «        rg S |j        dk    r|                      ¦   «         gS |                      |¦  «        sš|                      ¦   «         }d }|                      ¦   «         dk    r|  	                    d|j
        ¦  «         g g g t          j        dg|j
        ¬¦  «        gg d	œ}|                      ||||                      ¦   «         ¬
¦  «        }|gS |                      d¬¦  «        \  }}}|                      ¦   «         \  }}	|dk    r-|                      ||¦  «        }
|                      d¦  «         |
S |                      ¦   «         }|                      ¦   «         dk    s|                      ¦   «         r®d }|                      ¦   «         r|                      ¦   «         }|                      ¦   «         dk    r|  	                    d|j
        ¦  «         |d         st          j        dg|¬¦  «        g|d<   |                      ||||                      ¦   «         ¬
¦  «        }|gS |d d dœ}|                      d¦  «        r|                      ¦   «         |d<   |                      |¬¦  «        }
|                      ||
d¬¦  «        }
|                      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„  sR  € Ø�jŠj‰lŒlˆØˆ;ØˆIØŒ8�xÒÐØ×$Ò$Ñ&Ô&Ð&ØˆIØŒ8Ð.Ð.Ð.Ø×2Ò2Ñ4Ô4Ð5Ð5Ø�<Š<˜ÑÔð 	ØˆIØŒ8Ð'Ò'Ð'Ø×-Ò-Ñ/Ô/Ð0Ð0à×'Ò'¨Ñ,Ô,ð 	ð ×,Ò,Ñ.Ô.ˆDØˆKØ�ŠÑ Ô  HÒ,Ð,Ø×!Ò!Ð"?ÀÄÑLÔLÐLàØØÝÔ-¨u¨g¸T¼ZÐHÑHÔHÐIØðð ˆDð ×2Ò2ØØØ'Ø×3Ò3Ñ5Ô5ð	 3ñ ô ˆDð �6ˆMð &*×%GÒ%GØð &Hñ &
ô &
Ñ"ˆˆh˜
ð ×6Ò6Ñ8Ô8‰ˆ	�1Ø˜ÒÐØ×3Ò3°D¸(ÑCÔCˆEØ�LŠL˜Ñ Ô Ð ØˆLà×(Ò(Ñ*Ô*ˆà�?Š?ÑÔ Ò(Ð(¨D×,DÒ,DÑ,FÔ,FÐ(ØˆKØ×'Ò'Ñ)Ô)ð =Ø"×:Ò:Ñ<Ô<�Ø�ŠÑ Ô  HÒ,Ð,Ø×!Ò!Ð"?ÀÄÑLÔLÐLØ˜”<ð QÝ %Ô 4°e°WÀJÐ OÑ OÔ OÐP��V‘Ø×2Ò2ØØØ'Ø×3Ò3Ñ5Ô5ð	 3ñ ô ˆDð �6ˆMà(,°dÀtÐLÐLˆ	Ø�<Š<˜Ñ!Ô!ð 	:Ø $× 7Ò 7Ñ 9Ô 9ˆI�fÑØ×0Ò0°yÐ0ÑAÔAˆØ×(Ò(¨d¸%ÐSWÐ(ÑXÔXˆØ�Š�VÑÔÐØˆr   c                 ó²   — |                       ¦   «         dk    r|                      ¦   «         gS |                      ¦   «         }|                      d¦  «         |S )Nr  r  )rÀ   r  Ú_parse_decl_bodyrË   ©r   r•   s     r   Ú_parse_declarationzCParser._parse_declarationÛ  sU   € Ø�?Š?ÑÔÐ 0Ò0Ð0Ø×-Ò-Ñ/Ô/Ð0Ð0Ø×%Ò%Ñ'Ô'ˆØ�Š�VÑÔÐØˆr   c                 ób   — |                       d¬¦  «        \  }}}|                      ||¦  «        S )NTr  )r  r  )r   r“   r!  r#  s       r   r&  zCParser._parse_decl_bodyã  s5   € Ø ×>Ò>ÈTÐ>ÑRÔRÑˆˆh˜Ø×.Ò.¨t°XÑ>Ô>Ð>r   r!  c                 ó`  — d }|r)|                       ¦   «         r|                      ¦   «         }n,|                       d¬¦  «        r|                      d¬¦  «        }|€º|d         }t          j        t          j        t          j        f}t          |¦  «        dk    r^t          |d         |¦  «        rHt          j        d |d         |d         |d         |d	         |d         d d |d         j	        ¬
¦	  «	        g}n6|  
                    |d d d dœgd¬¦  «        }n|  
                    ||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é  s_  € ð
 .2ˆ
Øð 	LØ×&Ò&Ñ(Ô(ð @Ø!×=Ò=Ñ?Ô?�
øà×&Ò&¨tÐ&Ñ4Ô4ð LØ!×=Ò=ÀdÐ=ÑKÔK�
ð ÐØ�f”ˆBÝœ¥e¤kµ5´:Ð>ˆHÝ�2‰wŒw˜!Š|ˆ|¥
¨2¨a¬5°(Ñ ;Ô ;ˆ|å”JØ!Ø" 6œlØ" ;Ô/Ø $ Y¤Ø!% jÔ!1Ø œUØ!Ø $Ø  œeœkð
ñ 
ô 
ð��ð ×0Ò0ØØ$(°$À4ÐHÐHÐIØ&*ð 1ñ ô ��ð ×,Ò,Ø ¸tð -ñ ô ˆEð ˆr   c                 ó¨   — g }|                       ¦   «         r;|                     |                      ¦   «         ¦  «         |                       ¦   «         °;|S rT   )r×   r  r(  r'  s     r   r  zCParser._parse_declaration_list  sT   € ØˆØ×&Ò&Ñ(Ô(ð 	4Ø�LŠL˜×0Ò0Ñ2Ô2Ñ3Ô3Ð3ð ×&Ò&Ñ(Ô(ð 	4àˆr   r  c           	      óŠ  — d}d}d}	 |                       ¦   «         }|€�nd|j        dk    rC|€|                      |¦  «        }|                      ||                      ¦   «         dd¬¦  «        }Œg|j        dk    r^|                      d¦  «        d	k    rE|€|                      |¦  «        }|                      ||                      ¦   «         d
d¬¦  «        }d}ŒÐ|j        t          v rI|€|                      |¦  «        }|                      ||                      ¦   «         j	        dd¬¦  «        }�Œ'|j        t          v rI|€|                      |¦  «        }|                      ||                      ¦   «         j	        dd¬¦  «        }�Œ~|j        t          v rI|€|                      |¦  «        }|                      ||                      ¦   «         j	        dd¬¦  «        }�ŒÕ|j        t          v ru|€|                      |¦  «        }|                      ¦   «         }|                      |t          j        |j	        g|                      |¦  «        ¬¦  «        d
d¬¦  «        }d}�ŒX|j        dk    ry|r�n|€|                      |¦  «        }|                      ¦   «         }|                      |t          j        |j	        g|                      |¦  «        ¬¦  «        d
d¬¦  «        }d}�ŒÜ|j        dv rF|€|                      |¦  «        }|                      ||                      ¦   «         d
d¬¦  «        }d}�Œ+|j        dk    rF|€|                      |¦  «        }|                      ||                      ¦   «         d
d¬¦  «        }d}�Œ|	 |€ |                      d| j        j        ¦  «         |s|s|                      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˜:Ò%Ð%ØÐ&Ø"&§/¢/°#Ñ"6Ô"6�KØ×6Ò6Ø˜$×9Ò9Ñ;Ô;¸[ÐQUð 7ñ ô �ð àŒx˜9Ò$Ð$¨¯ª¸Ñ);Ô);¸xÒ)GÐ)GØÐ&Ø"&§/¢/°#Ñ"6Ô"6�KØ×6Ò6Ø˜$×6Ò6Ñ8Ô8¸&Èð 7ñ ô �ð  �ØàŒx�?Ð*Ð*ØÐ&Ø"&§/¢/°#Ñ"6Ô"6�KØ×6Ò6Ø˜$Ÿ-š-™/œ/Ô/°Àð 7ñ ô �ñ àŒx�>Ð)Ð)ØÐ&Ø"&§/¢/°#Ñ"6Ô"6�KØ×6Ò6Ø˜$Ÿ-š-™/œ/Ô/°À4ð 7ñ ô �ñ àŒx�>Ð)Ð)ØÐ&Ø"&§/¢/°#Ñ"6Ô"6�KØ×6Ò6Ø˜$Ÿ-š-™/œ/Ô/°ÀDð 7ñ ô �ñ àŒxÕ,Ð,Ð,ØÐ&Ø"&§/¢/°#Ñ"6Ô"6�KØ—m’m‘o”o�Ø×6Ò6ØÝÔ(¨#¬)¨¸D¿OºOÈCÑ<PÔ<PÐQÑQÔQØØð	 7ñ ô �ð  �ÙàŒx˜8Ò#Ð#Øð ÙØÐ&Ø"&§/¢/°#Ñ"6Ô"6�KØ—m’m‘o”o�Ø×6Ò6ØÝÔ(¨#¬)¨¸D¿OºOÈCÑ<PÔ<PÐQÑQÔQØØð	 7ñ ô �ð  �ÙàŒxÐ.Ð.Ð.ØÐ&Ø"&§/¢/°#Ñ"6Ô"6�KØ×6Ò6Ø˜$×?Ò?ÑAÔAÀ6ÐRVð 7ñ ô �ð  �ÙàŒx˜6Ò!Ð!ØÐ&Ø"&§/¢/°#Ñ"6Ô"6�KØ×6Ò6Ø˜$×4Ò4Ñ6Ô6¸Àtð 7ñ ô �ð  �Ùààˆ<Ø×ÒÐ3°T´YÔ5GÑHÔHÐHàð 	J ð 	JØ×ÒÐ;¸[ÑIÔIÐIà�X˜{Ð*Ð*r   c           	      ó˜  — d }d}d}d }	 |                       ¦   «         }|€�n¸|j        dk    rE|€|                      |¦  «        }|                      ||                      ¦   «         dd¬¦  «        }d}Œi|j        dk    r^|                      d¦  «        dk    rE|€|                      |¦  «        }|                      ||                      ¦   «         d	d¬¦  «        }d}ŒÒ|j        t          v rI|€|                      |¦  «        }|                      ||                      ¦   «         j	        d
d¬¦  «        }�Œ)|j        t          v ru|€|                      |¦  «        }|                      ¦   «         }|                      |t          j        |j	        g|                      |¦  «        ¬¦  «        d	d¬¦  «        }d}�Œ¬|j        dk    ry|r�n|€|                      |¦  «        }|                      ¦   «         }|                      |t          j        |j	        g|                      |¦  «        ¬¦  «        d	d¬¦  «        }d}�Œ0|j        dv rF|€|                      |¦  «        }|                      ||                      ¦   «         d	d¬¦  «        }d}�Œ|j        dk    rF|€|                      |¦  «        }|                      ||                      ¦   «         d	d¬¦  «        }d}�ŒÐ	 |€ |                      d| j        j        ¦  «         |s|s|                      d|¦  «         |                     d¦  «        €g |d<   |                     d¦  «        €g |d<   |S )NFTr1  r‘   r2  r3  r›   rã   rp   rŽ   rz   rå   r4  r7  zInvalid specifier listry   r�   r�   )rF   rp   rI   r”   r8  rÀ   r9  r÷   rÅ   rH   r<  r   r‚   r=  r>  rG   r;   r@   r`   )r   r“   r!  Úsaw_alignmentr?  rK   s         r   Ú_parse_specifier_qualifier_listz'CParser._parse_specifier_qualifier_listœ  s«  € ØˆØˆØˆØˆðM	Ø—*’*‘,”,ˆCØˆ{ÙàŒx˜:Ò%Ð%ØÐ&Ø"&§/¢/°#Ñ"6Ô"6�KØ×6Ò6Ø˜$×9Ò9Ñ;Ô;¸[ÐQUð 7ñ ô �ð !%�ØàŒx˜9Ò$Ð$¨¯ª¸Ñ);Ô);¸xÒ)GÐ)GØÐ&Ø"&§/¢/°#Ñ"6Ô"6�KØ×6Ò6Ø˜$×6Ò6Ñ8Ô8¸&Èð 7ñ ô �ð  �ØàŒx�?Ð*Ð*ØÐ&Ø"&§/¢/°#Ñ"6Ô"6�KØ×6Ò6Ø˜$Ÿ-š-™/œ/Ô/°Àð 7ñ ô �ñ àŒxÕ,Ð,Ð,ØÐ&Ø"&§/¢/°#Ñ"6Ô"6�KØ—m’m‘o”o�Ø×6Ò6ØÝÔ(¨#¬)¨¸D¿OºOÈCÑ<PÔ<PÐQÑQÔQØØð	 7ñ ô �ð  �ÙàŒx˜8Ò#Ð#Øð ÙØÐ&Ø"&§/¢/°#Ñ"6Ô"6�KØ—m’m‘o”o�Ø×6Ò6ØÝÔ(¨#¬)¨¸D¿OºOÈCÑ<PÔ<PÐQÑQÔQØØð	 7ñ ô �ð  �ÙàŒxÐ.Ð.Ð.ØÐ&Ø"&§/¢/°#Ñ"6Ô"6�KØ×6Ò6Ø˜$×?Ò?ÑAÔAÀ6ÐRVð 7ñ ô �ð  �ÙàŒx˜6Ò!Ð!ØÐ&Ø"&§/¢/°#Ñ"6Ô"6�KØ×6Ò6Ø˜$×4Ò4Ñ6Ô6¸Àtð 7ñ ô �ð  �Ùààˆ<Ø×ÒÐ6¸¼	Ô8JÑKÔKÐKàð 	J ð 	JØ×ÒÐ;¸[ÑIÔIÐIà�8Š8�IÑÔÐ&Ø ˆD�‰OØ�8Š8�JÑÔÐ'Ø!ˆD�Ñàˆr   c                 óÎ   — g }|                       ¦   «         t          v rG|                     |                      ¦   «         j        ¦  «         |                       ¦   «         t          v °G|S rT   )rÀ   r÷   rU   rÅ   rH   )r   r�   s     r   Ú_parse_type_qualifier_listz"CParser._parse_type_qualifier_listÿ  sU   € ØˆØ�oŠoÑÔ¥?Ð2Ð2Ø�LŠL˜Ÿš™œÔ.Ñ/Ô/Ð/ð �oŠoÑÔ¥?Ð2Ð2àˆr   c                 óÂ  — |                       d¦  «        }|                       d¦  «         |                      ¦   «         rQ|                      ¦   «         }|                       d¦  «         t          j        ||                      |¦  «        ¦  «        S |                      ¦   «         }|                       d¦  «         t          j        ||                      |¦  «        ¦  «        S )Nr1  rã   rö   )rË   r×   r  r   ÚAlignasrI   Ú_parse_constant_expression©r   rK   r„   Úexprs       r   r8  z"CParser._parse_alignment_specifier  s»   € Ø�lŠl˜:Ñ&Ô&ˆØ�Š�XÑÔÐà×#Ò#Ñ%Ô%ð 	<Ø×'Ò'Ñ)Ô)ˆCØ�LŠL˜Ñ"Ô"Ð"Ý”=  d§o¢o°cÑ&:Ô&:Ñ;Ô;Ð;à×.Ò.Ñ0Ô0ˆØ�Š�XÑÔÐÝŒ}˜T 4§?¢?°3Ñ#7Ô#7Ñ8Ô8Ð8r   c                 óà   — |                       d¦  «         |                       d¦  «         |                      ¦   «         }|                       d¦  «         |j                             d¦  «         |S )Nr3  rã   rö   Ú_Atomic)rË   r  r�   rU   )r   r„   s     r   r9  zCParser._parse_atomic_specifier  sd   € Ø�Š�YÑÔÐØ�Š�XÑÔÐØ×#Ò#Ñ%Ô%ˆØ�Š�XÑÔÐØŒ	×Ò˜Ñ#Ô#Ð#Øˆ
r   r  c                 óä   — |�|gn|                       |¬¦  «        g}|                      d¦  «        r>|                     |                       |¬¦  «        ¦  «         |                      d¦  «        °>|S )Nr+  ÚCOMMA)Ú_parse_init_declaratorrÉ   rU   )r   r  rà   r•   s       r   r  z#CParser._parse_init_declarator_list  s…   € ð
 Ð ð ˆGˆGà×-Ò-°gÐ-Ñ>Ô>Ð?ð 	ð �lŠl˜7Ñ#Ô#ð 	GØ�LŠL˜×4Ò4¸WÐ4ÑEÔEÑFÔFÐFð �lŠl˜7Ñ#Ô#ð 	Gàˆr   c                 ó¸   — |r|                       ¦   «         n|                      ¦   «         }d }|                      d¦  «        r|                      ¦   «         }||d dœS )Nr  r³   )rò   Ú_parse_declaratorrÉ   r  )r   rà   rm   r    s       r   rN  zCParser._parse_init_declarator+  sc   € Ø.5ÐSˆt×(Ò(Ñ*Ô*Ð*¸4×;QÒ;QÑ;SÔ;SˆØˆØ�<Š<˜Ñ!Ô!ð 	-Ø×*Ò*Ñ,Ô,ˆDØ d°tÐ<Ð<Ð<r   c                 ó  — |                       ¦   «         }|                      |j        ¦  «        }|                      ¦   «         dv rð|                       ¦   «         }|                      ¦   «         dk    rž|                       ¦   «          |                      d¦  «        r& ||j        g |                      |¦  «        ¬¦  «        S |                      ¦   «         }|                      d¦  «          ||j        ||                      |¦  «        ¬¦  «        S  ||j        d |                      |¦  «        ¬¦  «        S |                      ¦   «         dk    r”|                       ¦   «         }|                      d¦  «        r! |d g |                      |¦  «        ¬¦  «        S |                      ¦   «         }|                      d¦  «          |d ||                      |¦  «        ¬¦  «        S |                      d|                      |¦  «        ¦  «         d S )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   r=  z(CParser._parse_struct_or_union_specifier7  sù  € Ø�mŠm‰oŒoˆØ×/Ò/°´	Ñ:Ô:ˆà�?Š?ÑÔÐ 0Ð0Ð0Ø—}’}‘”ˆHØ�ŠÑ Ô  HÒ,Ð,Ø—’‘”�Ø—<’< Ñ)Ô)ð Ø ˜5Ø%œ^°2¸T¿_º_ÈXÑ=VÔ=Vðñ ô ð ð ×;Ò;Ñ=Ô=�Ø—’˜XÑ&Ô&Ð&Ø�uØ!œ¨u¸D¿OºOÈHÑ<UÔ<Uðñ ô ð ð �5Ø”^¨4°t·²ÀxÑ7PÔ7Pðñ ô ð ð �?Š?ÑÔ Ò(Ð(ØŸš™œˆIØ�|Š|˜HÑ%Ô%ð TØ�u $¨b¸¿ºÈ	Ñ8RÔ8RÐSÑSÔSÐSØ×7Ò7Ñ9Ô9ˆEØ�LŠL˜Ñ"Ô"Ð"Ø�5˜d¨%°t·²ÀyÑ7QÔ7QÐRÑRÔRÐRà×ÒÐ<¸d¿oºoÈcÑ>RÔ>RÑSÔSÐSÐSÐSr   c                 óº   — g }|                       ¦   «         dvrB|                      ¦   «         }|€Œ-|                     |¦  «         |                       ¦   «         dv°B|S ©N>   NrR  )rÀ   Ú_parse_struct_declarationr  )r   r•   Úitemss      r   rS  z&CParser._parse_struct_declaration_listX  sg   € ØˆØ�oŠoÑÔÐ'7Ð7Ð7Ø×2Ò2Ñ4Ô4ˆEØˆ}ØØ�LŠL˜ÑÔÐð	 �oŠoÑÔÐ'7Ð7Ð7ð
 ˆr   c                 ó¾  — |                       ¦   «         dk    r|                      ¦   «         gS |                       ¦   «         dk    r|                      ¦   «          d S |                       ¦   «         dv r|                      ¦   «         gS |                      ¦   «         }d|                     dg ¦  «        vsJ ‚d }|                      ¦   «         s|                       ¦   «         dk    r|                      ¦   «         }|�,|                      d¦  «         |  	                    ||¬¦  «        S t          |d         ¦  «        d	k    rp|d         d
         }t          |t          j        ¦  «        r|}nt          j        |¦  «        }|                      d¦  «         |  	                    ||d d dœg¬¦  «        S |                      d¦  «         |  	                    |d d d dœg¬¦  «        S )Nr  r  r  r™   r�   ÚCOLON©r“   r•   rp   r
   r   r³   )rÀ   r  rÅ   r  rB  r`   rç   Ú_parse_struct_declarator_listrË   r¯   rY   rq   r   ÚNoder‚   )r   r“   r•   ÚnodeÚ	decl_types        r   rY  z!CParser._parse_struct_declarationd  sò  € Ø�?Š?ÑÔÐ 0Ò0Ð0Ø×-Ò-Ñ/Ô/Ð0Ð0Ø�?Š?ÑÔ Ò&Ð&Ø�MŠM‰OŒOˆOØ�4Ø�?Š?ÑÔÐ 7Ð7Ð7Ø×2Ò2Ñ4Ô4Ð5Ð5à×3Ò3Ñ5Ô5ˆØ §¢¨°BÑ 7Ô 7Ð7Ð7Ð7Ð7àˆØ×"Ò"Ñ$Ô$ð 	9¨¯ªÑ(9Ô(9¸WÒ(DÐ(DØ×6Ò6Ñ8Ô8ˆEØÐØ�LŠL˜Ñ Ô Ð Ø×+Ò+°¸UÐ+ÑCÔCÐCåˆt�FŒ|ÑÔ Ò!Ð!Ø˜”< ”?ˆDÝ˜$¥¤
Ñ+Ô+ð 7Ø �	�	å!Ô0°Ñ6Ô6�	Ø�LŠL˜Ñ Ô Ð Ø×+Ò+ØØ )°4ÀDÐIÐIÐJð ,ñ ô ð ð
 	�Š�VÑÔÐØ×'Ò'Ø t°TÀdÐKÐKÐLð (ñ 
ô 
ð 	
r   c                 óÒ   — |                       ¦   «         g}|                      d¦  «        r<|                     |                       ¦   «         ¦  «         |                      d¦  «        °<|S ©NrM  )Ú_parse_struct_declaratorrÉ   rU   r'  s     r   r^  z%CParser._parse_struct_declarator_list‰  sc   € Ø×.Ò.Ñ0Ô0Ð1ˆØ�lŠl˜7Ñ#Ô#ð 	:Ø�LŠL˜×6Ò6Ñ8Ô8Ñ9Ô9Ð9ð �lŠl˜7Ñ#Ô#ð 	:àˆr   c                 ó  — |                       d¦  «        r/|                      ¦   «         }t          j        d d d d ¦  «        d |dœS |                      ¦   «         }|                       d¦  «        r|                      ¦   «         }|d |dœS |d d dœS )Nr\  r³   )rÉ   rG  r   rr   rP  )r   rš   rm   s      r   rd  z CParser._parse_struct_declarator‘  s¨   € Ø�<Š<˜Ñ Ô ð 	Ø×5Ò5Ñ7Ô7ˆGåœ t¨T°4¸Ñ>Ô>ØØ"ðð ð ð ×%Ò%Ñ'Ô'ˆØ�<Š<˜Ñ Ô ð 	DØ×5Ò5Ñ7Ô7ˆGØ ¨$¸7ÐCÐCÐCà d°tÐ<Ð<Ð<r   c                 ó°  — |                       d¦  «        }|                      ¦   «         dv rÅ|                      ¦   «         }|                      ¦   «         dk    rk|                      ¦   «          |                      ¦   «         }|                       d¦  «         t	          j        |j        ||                      |¦  «        ¦  «        S t	          j        |j        d |                      |¦  «        ¦  «        S |                       d¦  «         |                      ¦   «         }|                       d¦  «         t	          j        d ||                      |¦  «        ¦  «        S )Nr7  >   rä   rå   r  rR  )rË   rÀ   rÅ   Ú_parse_enumerator_listr   r¤   rH   rI   )r   rK   rU  Úenumss       r   r>  zCParser._parse_enum_specifier£  s  € Ø�lŠl˜6Ñ"Ô"ˆØ�?Š?ÑÔÐ 0Ð0Ð0Ø—}’}‘”ˆHØ�ŠÑ Ô  HÒ,Ð,Ø—’‘”�Ø×3Ò3Ñ5Ô5�Ø—’˜XÑ&Ô&Ð&Ý”z (¤.°%¸¿ºÈÑ9MÔ9MÑNÔNÐNÝ”:˜hœn¨d°D·O²OÀCÑ4HÔ4HÑIÔIÐIà�Š�XÑÔÐØ×+Ò+Ñ-Ô-ˆØ�Š�XÑÔÐÝŒz˜$  t§¢°sÑ';Ô';Ñ<Ô<Ð<r   c                 óF  — |                       ¦   «         }t          j        |g|j        ¦  «        }|                      d¦  «        r\|                      ¦   «         dk    rnC|                       ¦   «         }|j                             |¦  «         |                      d¦  «        °\|S )NrM  rR  )Ú_parse_enumeratorr   ÚEnumeratorListrQ   rÉ   rÀ   ÚenumeratorsrU   )r   ÚenumÚ	enum_lists      r   rg  zCParser._parse_enumerator_list´  s›   € Ø×%Ò%Ñ'Ô'ˆÝÔ(¨$¨°´Ñ<Ô<ˆ	Ø�lŠl˜7Ñ#Ô#ð 	/Ø�ŠÑ Ô  HÒ,Ð,ØØ×)Ò)Ñ+Ô+ˆDØÔ!×(Ò(¨Ñ.Ô.Ð.ð	 �lŠl˜7Ñ#Ô#ð 	/ð
 Ðr   c                 ó$  — |                       d¦  «        }|                      d¦  «        r|                      ¦   «         }nd }t          j        |j        ||                      |¦  «        ¦  «        }|                      |j        |j	        ¦  «         |S )Nrä   r  )
rË   rÉ   rG  r   Ú
EnumeratorrH   rI   rd   r\   rQ   )r   rU  rH   rm  s       r   rj  zCParser._parse_enumerator¿  s€   € Ø—<’< Ñ%Ô%ˆØ�<Š<˜Ñ!Ô!ð 	Ø×3Ò3Ñ5Ô5ˆEˆEàˆEÝÔ ¤°°t·²ÀxÑ7PÔ7PÑQÔQˆØ×Ò˜TœY¨¬
Ñ3Ô3Ð3Øˆr   c                 óB   — |                       dd¬¦  «        \  }}|€J ‚|S )NF©rì   rí   )rô   )r   rm   r#  s      r   rP  zCParser._parse_declaratorÍ  s8   € Ø×,Ò,Ø ¸5ð -ñ 
ô 
‰ˆˆað ÐÐÐØˆr   c                 ó0   — |                       dd¬¦  «        S )Nr~   T©rŠ   Úallow_paren©Ú_parse_declarator_kindrV   s    r   rò   zCParser._parse_id_declaratorÕ  s   € Ø×*Ò*°À$Ð*ÑGÔGÐGr   c                 ó0   — |                       dd¬¦  «        S )NÚtypeidTrt  rv  rV   s    r   rñ   z CParser._parse_typeid_declaratorÙ  s   € Ø×*Ò*°ÀdÐ*ÑKÔKÐKr   c                 ó0   — |                       dd¬¦  «        S )Nry  Frt  rv  rV   s    r   rð   z(CParser._parse_typeid_noparen_declaratorÝ  s   € Ø×*Ò*°ÀeÐ*ÑLÔLÐLr   ru  c                 óÀ   — d }|                       ¦   «         dk    r|                      ¦   «         }|                      ||¬¦  «        }|�|                      ||¦  «        S |S )Nrâ   ©ru  )rÀ   Ú_parse_pointerÚ_parse_direct_declaratorrv   )r   rŠ   ru  ÚptrÚdirects        r   rw  zCParser._parse_declarator_kindá  se   € ØˆØ�?Š?ÑÔ Ò'Ð'Ø×%Ò%Ñ'Ô'ˆCØ×.Ò.¨tÀÐ.ÑMÔMˆØˆ?Ø×)Ò)¨&°#Ñ6Ô6Ð6Øˆr   c           	      óx  — |rB|                       d¦  «        r-|                      |d¬¦  «        }|                      d¦  «         nb|dk    r|                      d¦  «        }n|                      d¦  «        }t          j        |j        d d d |                      |¦  «        ¬¦  «        }|                      |¦  «        S )	Nrã   Tr|  rö   r~   rä   rå   rž   )rÉ   rw  rË   r   rr   rH   rI   Ú_parse_decl_suffixes)r   rŠ   ru  rm   rU  s        r   r~  z CParser._parse_direct_declaratorí  sÂ   € ð ð 	˜4Ÿ<š<¨Ñ1Ô1ð 	Ø×.Ò.¨tÀÐ.ÑFÔFˆDØ�LŠL˜Ñ"Ô"Ð"Ð"à�tŠ|ˆ|ØŸ<š<¨Ñ-Ô-��àŸ<š<¨Ñ1Ô1�Ý”>Ø!œØØØØ—o’o hÑ/Ô/ðñ ô ˆDð ×(Ò(¨Ñ.Ô.Ð.r   c                 ó  — 	 |                       ¦   «         dk    r*|                      ||                      |¦  «        ¦  «        }ŒC|                       ¦   «         dk    r,|                      |¦  «        }|                      ||¦  «        }Œ‡	 |S )zAParse a chain of array/function suffixes and attach them to decl.Trû   rã   )rÀ   rv   Ú_parse_array_declÚ_parse_function_decl)r   rm   r   s      r   r‚  zCParser._parse_decl_suffixes  sŠ   € ð	Ø�ŠÑ Ô  JÒ.Ð.Ø×-Ò-¨d°D×4JÒ4JÈ4Ñ4PÔ4PÑQÔQ�ØØ�ŠÑ Ô  HÒ,Ð,Ø×0Ò0°Ñ6Ô6�Ø×-Ò-¨d°DÑ9Ô9�ØØØˆr   Ú	base_declc                 ó:   — |                       d |j        ¬¦  «        S ©N)Ú	base_typerQ   )Ú_parse_array_decl_commonrQ   )r   r†  s     r   r„  zCParser._parse_array_decl  s   € Ø×,Ò,°tÀ9Ä?Ð,ÑSÔSÐSr   r‰  c                 óö  ‡‡— |                       d¦  «        }‰€|                      |¦  «        Šˆˆfd„}|                      d¦  «        rOdg|                      ¦   «         pg z   }|                      ¦   «         }|                       d¦  «          |||¦  «        S |                      ¦   «         t          v �r|                      ¦   «         pg }|                      d¦  «        r;|dgz   }|                      ¦   «         }|                       d¦  «          |||¦  «        S |                      d¦  «        }|rN|                       d¦  «         t          j        |j	        |                      |¦  «        ¦  «        } |||¦  «        S d}|  
                    ¦   «         r|                      ¦   «         }|                       d¦  «          |||¦  «        S |                      d¦  «        }|rN|                       d¦  «         t          j        |j	        |                      |¦  «        ¦  «        } ||g ¦  «        S d}|  
                    ¦   «         r|                      ¦   «         }|                       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                 ó4   •— 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É   rD  Ú_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ð	ð 	ð 	ð 	ð 	ð 	ð
 �<Š<˜Ñ!Ô!ð 	3Ø!˜
 d×&EÒ&EÑ&GÔ&GÐ&MÈ2ÑNˆIØ×3Ò3Ñ5Ô5ˆCØ�LŠL˜Ñ$Ô$Ð$Ø"�? 3¨	Ñ2Ô2Ð2à�?Š?ÑÔ¥Ð/Ñ/Ø×7Ò7Ñ9Ô9Ð?¸RˆIØ�|Š|˜HÑ%Ô%ð 7Ø%¨¨
Ñ2�	Ø×7Ò7Ñ9Ô9�Ø—’˜ZÑ(Ô(Ð(Ø&� s¨IÑ6Ô6Ð6ØŸš WÑ-Ô-ˆIØð 7Ø—’˜ZÑ(Ô(Ð(Ý”h˜yœ°·²À	Ñ0JÔ0JÑKÔK�Ø&� s¨IÑ6Ô6Ð6ØˆCØ×&Ò&Ñ(Ô(ð :Ø×7Ò7Ñ9Ô9�Ø�LŠL˜Ñ$Ô$Ð$Ø"�? 3¨	Ñ2Ô2Ð2à—L’L Ñ)Ô)ˆ	Øð 	,Ø�LŠL˜Ñ$Ô$Ð$Ý”(˜9œ?¨D¯OªO¸IÑ,FÔ,FÑGÔGˆCØ"�? 3¨Ñ+Ô+Ð+àˆØ×"Ò"Ñ$Ô$ð 	6Ø×3Ò3Ñ5Ô5ˆCØ�Š�ZÑ Ô Ð Øˆ˜s BÑ'Ô'Ð'r   c                 ó*  — |                       d¦  «         |                      d¦  «        rd }nQ|                      ¦   «         r|                      ¦   «         n|                      ¦   «         }|                       d¦  «         t          j        |d |j        ¬¦  «        }|                      ¦   «         dk    r`|j	        �Y|j	        j
        D ]L}t          |t
          j        ¦  «        r n/t          |dd ¦  «        }|r|                      ||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ˆDð ×+Ò+Ñ-Ô-ð7�×/Ò/Ñ1Ô1Ð1à×4Ò4Ñ6Ô6ð ð
 �LŠL˜Ñ"Ô"Ð"åŒ~ 4¨d¸)¼/ÐJÑJÔJˆà�?Š?ÑÔ Ò(Ð(¨T¬YÐ-BØœÔ)ð <ð <�Ý˜e¥UÔ%8Ñ9Ô9ð Ø�EÝ˜u f¨dÑ3Ô3�Øð <Ø×(Ò(¨¨u¬{Ñ;Ô;Ð;øàˆr   c                 ó0  — g }|                       d¦  «        }|rW|                      ¦   «         pg }|                     ||                      |¦  «        f¦  «         |                       d¦  «        }|°W|sd S d }|D ]\  }}t	          j        |||¬¦  «        }Œ|S )Nrâ   )r�   rp   rQ   )rÉ   rD  rU   rI   r   ÚPtrDecl)r   Ústarsr–  r�   r  rQ   s         r   r}  zCParser._parse_pointerf  sº   € ØˆØ—L’L Ñ)Ô)ˆ	Øð 	.Ø×3Ò3Ñ5Ô5Ð;¸ˆEØ�LŠL˜% §¢°Ñ!;Ô!;Ð<Ñ=Ô=Ð=ØŸš WÑ-Ô-ˆIð ð 	.ð
 ð 	Ø�4àˆØ!ð 	Dð 	D‰LˆE�5Ý”- e°#¸UÐCÑCÔCˆCˆCØˆ
r   c                 ó^  — |                       ¦   «         }|                      ¦   «         dk    r€|                      d¦  «        dk    rg|                      ¦   «          |                      ¦   «         }|j                             t          j        |                      |¦  «        ¦  «        ¦  «         |S ©NrM  r›   ÚELLIPSIS)Ú_parse_parameter_listrÀ   rÅ   rœ  rU   r   r�  rI   )r   rœ  Úell_toks      r   rš  z"CParser._parse_parameter_type_listw  sŠ   € Ø×+Ò+Ñ-Ô-ˆØ�?Š?ÑÔ Ò'Ð'¨D¯OªO¸AÑ,>Ô,>À*Ò,LÐ,LØ�MŠM‰OŒOˆOØ—m’m‘o”oˆGØŒM× Ò ¥Ô!4°T·_²_ÀWÑ5MÔ5MÑ!NÔ!NÑOÔOÐOØˆr   c                 ó¨  — |                       ¦   «         }t          j        |g|j        ¦  «        }|                      ¦   «         dk    rŠ|                      d¦  «        dk    rq|                      ¦   «          |j                             |                       ¦   «         ¦  «         |                      ¦   «         dk    r|                      d¦  «        dk    °q|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Ô3ˆÝ” % ¨%¬+Ñ6Ô6ˆØ�oŠoÑÔ 7Ò*Ð*¨t¯ª¸qÑ/AÔ/AÀZÒ/OÐ/OØ�MŠM‰OŒOˆOØŒM× Ò  ×!BÒ!BÑ!DÔ!DÑEÔEÐEð �oŠoÑÔ 7Ò*Ð*¨t¯ª¸qÑ/AÔ/AÀZÒ/OÐ/Oð ˆr   c                 ó¤  — |                       d¬¦  «        \  }}}|d         st          j        dg|¬¦  «        g|d<   |                      ¦   «         rU|                      dd¬¦  «        \  }}|r"|                      ||d d dœg¬¦  «        d	         S |                      |||¦  «        S |                      ¦   «         }|                      |||¦  «        S )
NTr  rp   r$   rz   rr  r³   r]  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ÔTÑˆˆa�à�FŒ|ð 	MÝ!Ô0°%°À
ÐKÑKÔKÐLˆD�‰Là×"Ò"Ñ$Ô$ð 		MØ!×7Ò7Ø#¸dð 8ñ ô ‰NˆD�(ð ð Ø×/Ò/ØØ$(°$À4ÐHÐHÐIð 0ñ ô ð ôð ð ×4Ò4°T¸4ÀÑLÔLÐLà×2Ò2Ñ4Ô4ˆØ×0Ò0°°t¸ZÑHÔHÐHr   r"  c                 ó¼  — t          |d         ¦  «        dk    rrt          |d         d         j        ¦  «        dk    rN|                      |d         d         j        d         ¦  «        r"|                      ||d d dœg¬¦  «        d         S t	          j        d|d         d |pt	          j        d d d d ¦  «        |¬	¦  «        }|                      ||d         ¦  «        S )
Nrp   r
   r^   r   r³   r]  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Ð0Ø×&Ò& t¨F¤|°BÔ'7Ô'=¸aÔ'@ÑAÔAð 1ð ×+Ò+Ø¨4¸È$Ð"OÐ"OÐ!Pð ,ñ ô àôð õ Œ~ØØ�v”,ØØÐ?�œ¨¨d°D¸$Ñ?Ô?Øð
ñ 
ô 
ˆð ×'Ò'¨¨d°6¬lÑ;Ô;Ð;r   c                 ó^   — |                       ¦   «         dk    rd S |                      ¦   «         S ©Nrö   )rÀ   Ú_parse_identifier_listrV   s    r   r›  z"CParser._parse_identifier_list_opt´  s.   € Ø�?Š?ÑÔ Ò(Ð(Ø�4Ø×*Ò*Ñ,Ô,Ð,r   c                 ó  — |                       ¦   «         }t          j        |g|j        ¦  «        }|                      d¦  «        rA|j                             |                       ¦   «         ¦  «         |                      d¦  «        °A|S rc  )Ú_parse_identifierr   rª  rQ   rÉ   rœ  rU   r«  s      r   r´  zCParser._parse_identifier_listº  sy   € Ø×&Ò&Ñ(Ô(ˆÝ” % ¨%¬+Ñ6Ô6ˆØ�lŠl˜7Ñ#Ô#ð 	;ØŒM× Ò  ×!7Ò!7Ñ!9Ô!9Ñ:Ô:Ð:ð �lŠl˜7Ñ#Ô#ð 	;àˆr   c                 ó„  — |                       ¦   «         }|                      ¦   «         }d }|�|j        }n|d         r|d         d         j        }t          j        d|d         d d …         d |pt          j        d d d d ¦  «        |¬¦  «        }t          t          j        |                      ||d         ¦  «        ¦  «        S )Nrp   r   r*   rŽ   r°  )rB  rï   rQ   r   r±  rr   r	   r†   )r   r“   rm   rQ   rw   s        r   r  zCParser._parse_type_nameÅ  sÂ   € Ø×3Ò3Ñ5Ô5ˆØ×2Ò2Ñ4Ô4ˆàˆØÐØ”JˆEˆEØ�&Œ\ð 	*Ø˜”L ”OÔ)ˆEå”>ØØ�v”,˜q˜q˜q”/ØØÐ?�œ¨¨d°D¸$Ñ?Ô?Øð
ñ 
ô 
ˆõ •E”N D×$<Ò$<¸XÀtÈFÄ|Ñ$TÔ$TÑUÔUÐUr   c                 ób  — |                       ¦   «         dk    rn|                      ¦   «         }|                      ¦   «         r|                      ¦   «         }nt	          j        d d d d ¦  «        }|€J ‚|                      ||¦  «        S |                      ¦   «         r|                      ¦   «         S d S )Nrâ   )rÀ   r}  rü   Ú!_parse_direct_abstract_declaratorr   rr   rv   )r   r  rm   s      r   rï   z&CParser._parse_abstract_declarator_optÙ  s®   € Ø�?Š?ÑÔ Ò'Ð'Ø×%Ò%Ñ'Ô'ˆCØ×6Ò6Ñ8Ô8ð >Ø×=Ò=Ñ?Ô?��å”~ d¨D°$¸Ñ=Ô=�Ø�?�?�?Ø×)Ò)¨$°Ñ4Ô4Ð4à×2Ò2Ñ4Ô4ð 	<Ø×9Ò9Ñ;Ô;Ð;àˆtr   c           	      óz  — |                       d¦  «        }|rÃ|                      ¦   «         s|                      ¦   «         dk    ri|                      ¦   «         }|                      d¦  «         t          j        |t          j        d d d d ¦  «        |                      |¦  «        ¬¦  «        }n{|  	                    ¦   «         }|                      d¦  «         |€J ‚nM|                      ¦   «         dk    r|  
                    ¦   «         }n |                      d| 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ë  s0  € Ø—\’\ (Ñ+Ô+ˆ
Øð 	QØ×'Ò'Ñ)Ô)ð (¨T¯_ª_Ñ->Ô->À(Ò-JÐ-JØ×<Ò<Ñ>Ô>�Ø—’˜XÑ&Ô&Ð&Ý”~ØÝœ¨¨d°D¸$Ñ?Ô?ØŸ/š/¨*Ñ5Ô5ðñ ô ��ð ×:Ò:Ñ<Ô<�Ø—’˜XÑ&Ô&Ð&ØÐ'Ð'Ð'Ð'Ø�_Š_ÑÔ *Ò,Ð,Ø×2Ò2Ñ4Ô4ˆDˆDà×ÒÐ;¸T¼YÔ=OÑPÔPÐPà×(Ò(¨Ñ.Ô.Ð.r   c                 ó^   — |                       ¦   «         dk    rd S |                      ¦   «         S r³  )rÀ   rš  rV   s    r   r»  z&CParser._parse_parameter_type_list_opt  s.   € Ø�?Š?ÑÔ Ò(Ð(Ø�4Ø×.Ò.Ñ0Ô0Ð0r   c                 óZ   — |                       t          j        d d d d ¦  «        d ¬¦  «        S rˆ  )rŠ  r   rr   rV   s    r   r¼  z"CParser._parse_abstract_array_base  s4   € Ø×,Ò,Ý”n T¨4°°tÑ<Ô<ÀDð -ñ 
ô 
ð 	
r   c                 ó   — |                       ¦   «         }|xxdk    rn	xdk    rn n  |                      ¦   «         S xdk    r.|                       d¦  «        dk    r |                      ¦   «         S xdk    r |                      ¦   «         S xxdk    rn	xdk    rn n  |                      ¦   «         S xxd	k    rnxd
k    rn	xdk    rn n  |                      ¦   «         S xxdk    rnxdk    rnxdk    rn	xdk    rn n  |                      ¦   «         S xdk    rn	xdk    rn n |                      ¦   «         S 	 |                      ¦   «         S )NÚCASEÚDEFAULTrä   r›   r\  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Ð6Ø�’�˜Ÿš¨Ñ+Ô+¨wÒ6Ð6Ð6Ø×4Ò4Ñ6Ô6Ð6Ø�’��Ø×5Ò5Ñ7Ô7Ð7Ø ��’��˜˜š˜˜˜˜˜˜Ø×6Ò6Ñ8Ô8Ð8Ø'��’��˜4˜4š4˜4˜4 % %¢% % % % % % %Ø×6Ò6Ñ8Ô8Ð8Ø9��’��˜'˜'š'˜'˜' J J¢J J J°°²°°°°°°Ø×1Ò1Ñ3Ô3Ð3Ø�’��˜i˜iši˜i˜i˜i˜i˜iØ×5Ò5Ñ7Ô7Ð7ØØ×7Ò7Ñ9Ô9Ð9r   c                 óð   — |                       ¦   «         dv rM|                      ¦   «         }|                      ¦   «         }t          j        ||gz   |d         j        ¬¦  «        S |                      ¦   «         S )Nr  r   ©Úblock_itemsrQ   )rÀ   Ú_parse_pppragma_directive_listrÐ  r   ÚCompoundrQ   )r   ÚpragmasÚstmts      r   Ú_parse_pragmacomp_or_statementz&CParser._parse_pragmacomp_or_statement)  so   € Ø�?Š?ÑÔÐ 7Ð7Ð7Ø×9Ò9Ñ;Ô;ˆGØ×(Ò(Ñ*Ô*ˆDÝ”>¨g¸¸Ñ.>ÀgÈaÄjÔFVÐWÑWÔWÐWØ×$Ò$Ñ&Ô&Ð&r   c                 óÒ   — |                       ¦   «         dk    r|                      ¦   «         S |                      ¦   «         r|                      ¦   «         S |                      ¦   «         S )Nr  )rÀ   r  r×   r(  rÐ  rV   s    r   Ú_parse_block_itemzCParser._parse_block_item1  sb   € Ø�?Š?ÑÔÐ 0Ò0Ð0Ø×,Ò,Ñ.Ô.Ð.Ø×#Ò#Ñ%Ô%ð 	-Ø×*Ò*Ñ,Ô,Ð,Ø×$Ò$Ñ&Ô&Ð&r   c                 ó"  — g }|                       ¦   «         dvrv|                      ¦   «         }t          |t          j        ¦  «        r|                     |¦  «         n|d gk    r|                     |¦  «         |                       ¦   «         dv°v|S rX  )rÀ   rÚ  rq   r   r_  rU   r  )r   rZ  Úitems      r   Ú_parse_block_item_listzCParser._parse_block_item_list9  s“   € Ø"$ˆØ�oŠoÑÔÐ'7Ð7Ð7Ø×)Ò)Ñ+Ô+ˆDÝ˜$¥¤
Ñ+Ô+ð #Ø—’˜TÑ"Ô"Ð"Ð"Ø˜$˜’�Ø—’˜TÑ"Ô"Ð"ð �oŠoÑÔÐ'7Ð7Ð7ð ˆr   c                 óL  — |                       d¦  «        }|                      d¦  «        r)t          j        d |                      |¦  «        ¬¦  «        S |                      ¦   «         }|                       d¦  «         t          j        ||                      |¦  «        ¬¦  «        S )Nr  rR  rÒ  )rË   rÉ   r   rÕ  rI   rÝ  )r   Ú
lbrace_tokrÓ  s      r   r  z!CParser._parse_compound_statementD  s–   € Ø—\’\ (Ñ+Ô+ˆ
Ø�<Š<˜Ñ!Ô!ð 	WÝ”>¨d¸$¿/º/È*Ñ:UÔ:UÐVÑVÔVÐVØ×1Ò1Ñ3Ô3ˆØ�Š�XÑÔÐÝŒ~Ø#¨4¯?ª?¸:Ñ+FÔ+Fð
ñ 
ô 
ð 	
r   c                 ó˜  — |                       ¦   «         }|xdk    r¨ |                      ¦   «         }|                      d¦  «         |                      ¦   «         r|                      ¦   «         }n't          j        |                      |¦  «        ¦  «        }t          j        |j	        ||                      |¦  «        ¦  «        S xdk    r¸ |                      ¦   «         }|  
                    ¦   «         }|                      d¦  «         |                      ¦   «         r|                      ¦   «         }n't          j        |                      |¦  «        ¦  «        }t          j        ||g|                      |¦  «        ¦  «        S dk    r¢|                      ¦   «         }|                      d¦  «         |                      ¦   «         r|                      ¦   «         }n't          j        |                      |¦  «        ¦  «        }t          j        |g|                      |¦  «        ¦  «        S 	 |                      d| j        j        ¦  «         d S )Nrä   r\  rÀ  rÁ  zInvalid labeled statement)rÀ   rÅ   rË   rß   rØ  r   ÚEmptyStatementrI   ÚLabelrH   rG  ÚCaseÚDefaultrG   r;   r@   )r   rÞ   rU  r×  Úcase_tokrI  Údef_toks          r   rË  z CParser._parse_labeled_statementQ  sô  € Ø—?’?Ñ$Ô$ˆØØ�’��ØŸ=š=™?œ?�Ø—’˜WÑ%Ô%Ð%Ø×)Ò)Ñ+Ô+ð KØ×>Ò>Ñ@Ô@�D�Då Ô/°·²ÀÑ0IÔ0IÑJÔJ�DÝ”{ 8¤>°4¸¿ºÈÑ9RÔ9RÑSÔSÐSØ�’��ØŸ=š=™?œ?�Ø×6Ò6Ñ8Ô8�Ø—’˜WÑ%Ô%Ð%Ø×)Ò)Ñ+Ô+ð KØ×>Ò>Ñ@Ô@�D�Då Ô/°·²ÀÑ0IÔ0IÑJÔJ�DÝ”z $¨¨°·²ÀÑ0IÔ0IÑJÔJÐJØ’�ØŸ-š-™/œ/�Ø—’˜WÑ%Ô%Ð%Ø×)Ò)Ñ+Ô+ð JØ×>Ò>Ñ@Ô@�D�Då Ô/°·²ÀÑ0HÔ0HÑIÔI�DÝ”} d V¨T¯_ª_¸WÑ-EÔ-EÑFÔFÐFØØ×!Ò!Ð"=¸t¼yÔ?QÑRÔRÐRÐRÐRr   c           	      óT  — |                       ¦   «         }|j        xdk    rÐ |                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      ¦   «         }|                      d¦  «        r>|                      ¦   «         }t          j        ||||                      |¦  «        ¦  «        S t          j        ||d |                      |¦  «        ¦  «        S dk    rˆ|                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      ¦   «         }t          t          j
        |||                      |¦  «        ¦  «        ¦  «        S 	 |                      d|                      |¦  «        ¦  «         d S )NrÂ  rã   rö   ÚELSErÃ  zInvalid selection statement)rÅ   rp   rË   Ú_parse_expressionrØ  rÉ   r   ÚIfrI   r   ÚSwitchrG   )r   rK   ÚcondÚ	then_stmtÚ	else_stmtrI  r×  s          r   rÌ  z"CParser._parse_selection_statementr  ss  € Ø�mŠm‰oŒoˆØŒhØ�’��Ø—’˜XÑ&Ô&Ð&Ø×-Ò-Ñ/Ô/�Ø—’˜XÑ&Ô&Ð&Ø ×?Ò?ÑAÔA�	Ø—<’< Ñ'Ô'ð VØ $× CÒ CÑ EÔ E�IÝ œ8 D¨)°YÀÇÂÐPSÑ@TÔ@TÑUÔUÐUÝ”x  i°°t·²ÀsÑ7KÔ7KÑLÔLÐLØ’�Ø—’˜XÑ&Ô&Ð&Ø×-Ò-Ñ/Ô/�Ø—’˜XÑ&Ô&Ð&Ø×:Ò:Ñ<Ô<�Ý'­¬°T¸4ÀÇÂÐQTÑAUÔAUÑ(VÔ(VÑWÔWÐWØØ×!Ò!Ð"?ÀÇÂÐQTÑAUÔAUÑVÔVÐVÐVÐVr   c           	      ó†  — |                       ¦   «         }|j        xdk    r| |                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      ¦   «         }t          j        |||                      |¦  «        ¦  «        S xdk    r¦ |                      ¦   «         }|                      d¦  «         |                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      d¦  «         t          j        |||                      |¦  «        ¦  «        S dk    �rÈ|                      d¦  «         |  	                    ¦   «         dk    s|  
                    ¦   «         rÍ|                      ¦   «         }t          j        ||                      |¦  «        ¦  «        }|                      ¦   «         }|                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      ¦   «         }t          j        |||||                      |¦  «        ¦  «        S |                      ¦   «         }|                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      ¦   «         }t          j        |||||                      |¦  «        ¦  «        S 	 |                      d|                      |¦  «        ¦  «         d S )	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ŒoˆØŒhØ�’��Ø—’˜XÑ&Ô&Ð&Ø×-Ò-Ñ/Ô/�Ø—’˜XÑ&Ô&Ð&Ø×:Ò:Ñ<Ô<�Ý”{ 4¨¨t¯ª¸sÑ/CÔ/CÑDÔDÐDØ�’��Ø×:Ò:Ñ<Ô<�Ø—’˜WÑ%Ô%Ð%Ø—’˜XÑ&Ô&Ð&Ø×-Ò-Ñ/Ô/�Ø—’˜XÑ&Ô&Ð&Ø—’˜VÑ$Ô$Ð$Ý”} T¨4°·²ÀÑ1EÔ1EÑFÔFÐFØ’‘Ø—’˜XÑ&Ô&Ð&Ø—?’?Ñ$Ô$Ð(8Ò8Ð8¸D×<TÒ<TÑ<VÔ<VÐ8Ø ×3Ò3Ñ5Ô5�EÝ œ>¨%°·²ÀÑ1EÔ1EÑFÔF�DØ×5Ò5Ñ7Ô7�DØ—L’L Ñ(Ô(Ð(Ø $× :Ò :Ñ <Ô <�IØ—L’L Ñ*Ô*Ð*Ø×>Ò>Ñ@Ô@�DÝ œ9 T¨4°¸DÀ$Ç/Â/ÐRUÑBVÔBVÑWÔWÐWà×1Ò1Ñ3Ô3�Ø—’˜VÑ$Ô$Ð$Ø×1Ò1Ñ3Ô3�Ø—’˜VÑ$Ô$Ð$Ø ×6Ò6Ñ8Ô8�	Ø—’˜XÑ&Ô&Ð&Ø×:Ò:Ñ<Ô<�Ý”y  t¨Y¸¸d¿oºoÈcÑ>RÔ>RÑSÔSÐSØØ×!Ò!Ð"?ÀÇÂÐQTÑAUÔAUÑVÔVÐVÐVÐVr   c                 ó|  — |                       ¦   «         }|j        xdk    rX |                      d¦  «        }|                      d¦  «         t          j        |j        |                      |¦  «        ¦  «        S xdk    r= |                      d¦  «         t          j        |                      |¦  «        ¦  «        S xdk    r= |                      d¦  «         t          j        |                      |¦  «        ¦  «        S dk    rŽ|  	                    d¦  «        r(t          j
        d |                      |¦  «        ¦  «        S |                      ¦   «         }|                      d¦  «         t          j
        ||                      |¦  «        ¦  «        S 	 |                      d|                      |¦  «        ¦  «         d S )NrÇ  rä   r  rÈ  rÉ  rÊ  zInvalid jump statement)rÅ   rp   rË   r   ÚGotorH   rI   ÚBreakÚContinuerÉ   ÚReturnré  rG   )r   rK   rU  rI  s       r   rÎ  zCParser._parse_jump_statementµ  s{  € Ø�mŠm‰oŒoˆØŒhØ�’��ØŸ<š<¨Ñ-Ô-�Ø—’˜VÑ$Ô$Ð$Ý”z (¤.°$·/²/À#Ñ2FÔ2FÑGÔGÐGØ�’��Ø—’˜VÑ$Ô$Ð$Ý”{ 4§?¢?°3Ñ#7Ô#7Ñ8Ô8Ð8Ø�’��Ø—’˜VÑ$Ô$Ð$Ý”~ d§o¢o°cÑ&:Ô&:Ñ;Ô;Ð;Ø’�Ø—<’< Ñ'Ô'ð DÝ œ<¨¨d¯oªo¸cÑ.BÔ.BÑCÔCÐCØ×-Ò-Ñ/Ô/�Ø—’˜VÑ$Ô$Ð$Ý”| D¨$¯/ª/¸#Ñ*>Ô*>Ñ?Ô?Ð?ØØ×!Ò!Ð":¸D¿OºOÈCÑ<PÔ<PÑQÔQÐQÐQÐQr   c                 óª   — |                       ¦   «         }|                      d¦  «        }|€'t          j        |                      |¦  «        ¦  «        S |S )Nr  )ró  rË   r   rá  rI   )r   rI  Úsemi_toks      r   rÏ  z#CParser._parse_expression_statementÌ  sK   € Ø×)Ò)Ñ+Ô+ˆØ—<’< Ñ'Ô'ˆØˆ<ÝÔ'¨¯ª¸Ñ(AÔ(AÑBÔBÐBØˆr   c                 óV   — |                       ¦   «         r|                      ¦   «         S d S rT   )rÚ   ré  rV   s    r   ró  zCParser._parse_expression_opt×  s-   € Ø×"Ò"Ñ$Ô$ð 	,Ø×)Ò)Ñ+Ô+Ð+Øˆtr   c                 óZ  — |                       ¦   «         }|                      d¦  «        s|S ||                       ¦   «         g}|                      d¦  «        r<|                     |                       ¦   «         ¦  «         |                      d¦  «        °<t          j        ||j        ¦  «        S rc  ©r”  rÉ   rU   r   ÚExprListrQ   ©r   rI  Úexprss      r   ré  zCParser._parse_expressionÝ  sž   € Ø×0Ò0Ñ2Ô2ˆØ�|Š|˜GÑ$Ô$ð 	ØˆKØ�t×8Ò8Ñ:Ô:Ð;ˆØ�lŠl˜7Ñ#Ô#ð 	>Ø�LŠL˜×:Ò:Ñ<Ô<Ñ=Ô=Ð=ð �lŠl˜7Ñ#Ô#ð 	>åŒ~˜e T¤ZÑ0Ô0Ð0r   c                 óÈ  — |                       ¦   «         dk    rX|                       d¦  «        dk    r?|                      ¦   «          |                      ¦   «         }|                      d¦  «         |S |                      ¦   «         }|                      ¦   «         rI|                      ¦   «         j        }|                      ¦   «         }t          j	        ||||j
        ¦  «        S |S )Nrã   r›   r  rö   )rÀ   rÅ   r  rË   Ú_parse_conditional_expressionrÿ   rH   r”  r   Ú
AssignmentrQ   )r   ÚcomprI  ÚopÚrhss        r   r”  z$CParser._parse_assignment_expressionè  sÆ   € Ø�?Š?ÑÔ Ò(Ð(¨T¯_ª_¸QÑ-?Ô-?À8Ò-KÐ-KØ�MŠM‰OŒOˆOØ×1Ò1Ñ3Ô3ˆDØ�LŠL˜Ñ"Ô"Ð"ØˆKà×1Ò1Ñ3Ô3ˆØ×!Ò!Ñ#Ô#ð 	?Ø—’‘”Ô&ˆBØ×3Ò3Ñ5Ô5ˆCÝÔ# B¨¨c°4´:Ñ>Ô>Ð>Øˆr   c                 ó
  — |                       ¦   «         }|                      d¦  «        rY|                      ¦   «         }|                      d¦  «         |                      ¦   «         }t          j        ||||j        ¦  «        S |S )NÚCONDOPr\  )Ú_parse_binary_expressionrÉ   ré  rË   r  r   Ú	TernaryOprQ   )r   rI  ÚiftrueÚiffalses       r   r  z%CParser._parse_conditional_expressionø  sy   € Ø×,Ò,Ñ.Ô.ˆØ�<Š<˜Ñ!Ô!ð 	FØ×+Ò+Ñ-Ô-ˆFØ�LŠL˜Ñ!Ô!Ð!Ø×8Ò8Ñ:Ô:ˆGÝ”? 4¨°¸$¼*ÑEÔEÐEØˆr   r   Úmin_precÚlhsc                 óö  — |€|                       ¦   «         }	 |                      ¦   «         }|�|j        t          vrn¼t          |j                 }||k     rn£|j        }|                      ¦   «          |                       ¦   «         }	 |                      ¦   «         }|�|j        t          vrn1t          |j                 }||k    r|                      ||¦  «        }nnŒVt          j        ||||j	        ¦  «        }Œá|S 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Õ.@Ð@Ð@ØÝ% c¤hÔ/ˆDØ�hŠˆØà”ˆBØ�MŠM‰OŒOˆOØ×-Ò-Ñ/Ô/ˆCðØŸ:š:™<œ<�ØÐ# x¤}Õ<NÐ'NÐ'NØÝ.¨x¬}Ô=�	Ø˜tÒ#Ð#Ø×7Ò7¸	À3ÑGÔG�C�Càðõ ”.  S¨#¨s¬yÑ9Ô9ˆCð-	:ð0 ˆ
r   c                 ó8  — |                       ¦   «         }|�q|\  }}}|                      ¦   «         dk    r|                      |¦  «         n=|                      ¦   «         }t	          j        |||                      |¦  «        ¦  «        S |                      ¦   «         S )Nr  )r  rÀ   rÒ   r  r   ÚCastrI   Ú_parse_unary_expression)r   Úresultr„   rÍ   r  rI  s         r   r  zCParser._parse_cast_expression$  s”   € Ø×0Ò0Ñ2Ô2ˆØÐØ$*Ñ!ˆC��zØ�ŠÑ Ô  HÒ,Ð,ð —’˜DÑ!Ô!Ð!Ð!à×2Ò2Ñ4Ô4�Ý”z # t¨T¯_ª_¸ZÑ-HÔ-HÑIÔIÐIØ×+Ò+Ñ-Ô-Ð-r   c                 óÚ  — |                       ¦   «         }|dv rH|                      ¦   «         }|                      ¦   «         }t          j        |j        ||j        ¦  «        S |dv rH|                      ¦   «         }|                      ¦   «         }t          j        |j        ||j        ¦  «        S |dk    r |                      ¦   «         }|                      ¦   «         }|�4|\  }}}t          j        |j        ||  	                    |¦  «        ¦  «        S |                      ¦   «         }t          j        |j        ||  	                    |¦  «        ¦  «        S |dk    r€|                      ¦   «         }|  
                    d¦  «         |                      ¦   «         }|  
                    d¦  «         t          j        |j        ||  	                    |¦  «        ¦  «        S |                      ¦   «         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   rI  r  r„   r#  s          r   r  zCParser._parse_unary_expression9  s¥  € Ø—?’?Ñ$Ô$ˆØÐ1Ð1Ð1Ø—-’-‘/”/ˆCØ×/Ò/Ñ1Ô1ˆDÝ”= ¤¨D°$´*Ñ=Ô=Ð=àÐGÐGÐGØ—-’-‘/”/ˆCØ×.Ò.Ñ0Ô0ˆDÝ”= ¤¨D°$´*Ñ=Ô=Ð=à�xÒÐØ—-’-‘/”/ˆCØ×4Ò4Ñ6Ô6ˆFØÐ!Ø"‘	��Q˜Ý”} S¤Y°°T·_²_ÀSÑ5IÔ5IÑJÔJÐJØ×/Ò/Ñ1Ô1ˆDÝ”= ¤¨D°$·/²/À#Ñ2FÔ2FÑGÔGÐGà�zÒ!Ð!Ø—-’-‘/”/ˆCØ�LŠL˜Ñ"Ô"Ð"Ø×'Ò'Ñ)Ô)ˆCØ�LŠL˜Ñ"Ô"Ð"Ý”= ¤¨C°·²ÀÑ1EÔ1EÑFÔFÐFà×-Ò-Ñ/Ô/Ð/r   c           	      óì  — |                       ¦   «         }|�Õ|\  }}}|                      d¦  «        }|�£|                      d¦  «        r;t          j        |t          j        g |                      |¦  «        ¦  «        ¦  «        S |                      ¦   «         }|                      d¦  «         |                      d¦  «         t          j        ||¦  «        S |                      |¦  «         |  	                    ¦   «         }	 |                      d¦  «        rE|  
                    ¦   «         }|                      d¦  «         t          j        |||j        ¦  «        }Œ[|                      d¦  «        rt|                      ¦   «         dk    r|                      ¦   «          d }	n)|                      ¦   «         }	|                      d¦  «         t          j        ||	|j        ¦  «        }Œä|                      ¦   «         d	v rª|                      ¦   «         }
|                      ¦   «         }|j        d
vr)|                      d|                      |¦  «        ¦  «         t          j        |j        |                      |¦  «        ¦  «        }t          j        ||
j        ||j        ¦  «        }�Œ¤|                      ¦   «         dv r9|                      ¦   «         }t          j        d|j        z   ||j        ¦  «        }�Œó	 |S )Nr  rR  rM  Trû   r“  rã   rö   >   ÚARROWÚPERIOD>   rä   rå   zInvalid struct referencer  Ú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    rI  Úsubr™  Úop_tokrU  ÚfieldrK   s                 r   r(  z!CParser._parse_postfix_expressionY  s©  € Ø×0Ò0Ñ2Ô2ˆØÐØ!‰LˆC��qð Ÿš hÑ/Ô/ˆJØÐ%Ø—<’< Ñ)Ô)ð å Ô0Ø�Uœ^¨B°·²À
Ñ0KÔ0KÑLÔLñô ð ð ×3Ò3Ñ5Ô5�Ø—’˜WÑ%Ô%Ð%Ø—’˜XÑ&Ô&Ð&ÝÔ,¨S°$Ñ7Ô7Ð7à—’˜DÑ!Ô!Ð!à×-Ò-Ñ/Ô/ˆð	Ø�|Š|˜JÑ'Ô'ð Ø×,Ò,Ñ.Ô.�Ø—’˜ZÑ(Ô(Ð(Ý”~ d¨C°´Ñ<Ô<�ØØ�|Š|˜HÑ%Ô%ð Ø—?’?Ñ$Ô$¨Ò0Ð0Ø—M’M‘O”O�OØ�D�Dà×?Ò?ÑAÔA�DØ—L’L Ñ*Ô*Ð*Ý”~ d¨D°$´*Ñ=Ô=�ØØ�ŠÑ Ô Ð$7Ð7Ð7ØŸš™œ�ØŸ=š=™?œ?�Ø”=Ð(8Ð8Ð8Ø×%Ò%Ø2°D·O²OÀHÑ4MÔ4Mñô ð õ œ ¤°·²ÀÑ1JÔ1JÑKÔK�Ý” t¨V¬\¸5À$Ä*ÑMÔM�ÙØ�ŠÑ Ô Ð$>Ð>Ð>Ø—m’m‘o”o�Ý”} S¨3¬9¡_°d¸D¼JÑGÔG�ÙØØˆr   c                 óª  — |                       ¦   «         }|dk    r|                      ¦   «         S |t          v s|t          v s	|t          v r|                      ¦   «         S |t          v r|                      ¦   «         S |dk    r?|                      ¦   «          |  	                    ¦   «         }|  
                    d¦  «         |S |dk    r|                      ¦   «         S |dk    rÓ|                      ¦   «         }|  
                    d¦  «         |                      ¦   «         }|  
                    d¦  «         |                      ¦   «         }|  
                    d¦  «         |                      |¦  «        }t          j        t          j        |j        |¦  «        t          j        ||g|¦  «        |¦  «        S |                      d| j        j        ¦  «         d S )Nrä   rã   rö   Ú_GENERICÚOFFSETOFrM  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   r3  rä   rH   r   rG   r;   r@   )r   rÞ   rI  Úoff_tokr„   Ú
designatorrQ   s          r   r0  z!CParser._parse_primary_expression‘  s¼  € Ø—?’?Ñ$Ô$ˆØ�tÒÐØ×)Ò)Ñ+Ô+Ð+à�
Ð"Ð"Ø�<Ð'Ð'Ø�;Ð&Ð&à×'Ò'Ñ)Ô)Ð)Ø•Ð&Ð&Ø×5Ò5Ñ7Ô7Ð7Ø�xÒÐØ�MŠM‰OŒOˆOØ×)Ò)Ñ+Ô+ˆDØ�LŠL˜Ñ"Ô"Ð"ØˆKØ�zÒ!Ð!Ø×0Ò0Ñ2Ô2Ð2Ø�zÒ!Ð!Ø—m’m‘o”oˆGØ�LŠL˜Ñ"Ô"Ð"Ø×'Ò'Ñ)Ô)ˆCØ�LŠL˜Ñ!Ô!Ð!Ø×?Ò?ÑAÔAˆJØ�LŠL˜Ñ"Ô"Ð"Ø—O’O GÑ,Ô,ˆEÝ”>Ý”˜œ¨Ñ.Ô.Ý”  ZÐ0°%Ñ8Ô8Øñô ð ð 	×ÒÐ.°´	Ô0BÑCÔCÐCÐCÐCr   c                 óð  — |                       d¦  «        }|                       d¦  «         |                      ¦   «         }|                       d¦  «         |                      ¦   «         g}|                      d¦  «        r<|                     |                      ¦   «         ¦  «         |                      d¦  «        °<|                       d¦  «         t          j        |||                      |¦  «        ¦  «        S )Nr9  rã   rM  rö   )rË   r”  Ú_parse_generic_associationrÉ   rU   r   ÚGenericSelectionrI   )r   rK   rI  Úassociationss       r   rA  z CParser._parse_generic_selection¶  sÛ   € Ø�lŠl˜:Ñ&Ô&ˆØ�Š�XÑÔÐØ×0Ò0Ñ2Ô2ˆØ�Š�WÑÔÐØ×7Ò7Ñ9Ô9Ð:ˆØ�lŠl˜7Ñ#Ô#ð 	CØ×Ò × ?Ò ?Ñ AÔ AÑBÔBÐBð �lŠl˜7Ñ#Ô#ð 	Cà�Š�XÑÔÐÝÔ% d¨L¸$¿/º/È#Ñ:NÔ:NÑOÔOÐOr   c                 óh  — |                       ¦   «         }|€ |                      d| j        j        ¦  «         |                      d¦  «        rd n|                      ¦   «         }|                      d¦  «         |                      ¦   «         }t          j	        |||  
                    |¦  «        ¦  «        S )NrÂ   rÁ  r\  )rF   rG   r;   r@   rÉ   r  rË   r”  r   ÚGenericAssociationrI   rH  s       r   rF  z"CParser._parse_generic_associationÃ  sš   € Ø�jŠj‰lŒlˆØˆ;Ø×ÒÐ/°´Ô1CÑDÔDÐDØ—l’l 9Ñ-Ô-ÐJˆdˆd°4×3HÒ3HÑ3JÔ3JˆØ�Š�WÑÔÐØ×0Ò0Ñ2Ô2ˆÝÔ'¨¨T°4·?²?À3Ñ3GÔ3GÑHÔHÐHr   c                 ór  — |                       ¦   «         }	 |                      d¦  «        r1|                       ¦   «         }t          j        |d||j        ¦  «        }ŒG|                      d¦  «        rE|                      ¦   «         }|                      d¦  «         t          j        |||j        ¦  «        }Œ¡	 |S )NTr+  ú.rû   r“  )Ú_parse_identifier_or_typeidrÉ   r   r4  rQ   ré  rË   r1  )r   r`  r7  rI  s       r   rB  z)CParser._parse_offsetof_member_designatorÎ  s®   € Ø×/Ò/Ñ1Ô1ˆð
	Ø�|Š|˜HÑ%Ô%ð Ø×8Ò8Ñ:Ô:�Ý” t¨S°%¸¼ÑDÔD�ØØ�|Š|˜JÑ'Ô'ð Ø×-Ò-Ñ/Ô/�Ø—’˜ZÑ(Ô(Ð(Ý”~ d¨D°$´*Ñ=Ô=�ØØØˆr   c                 ó  — |                       ¦   «         }|g}|                      d¦  «        r<|                     |                       ¦   «         ¦  «         |                      d¦  «        °<t          j        ||j        ¦  «        S rc  rÿ  r  s      r   r2  z'CParser._parse_argument_expression_listÞ  sv   € Ø×0Ò0Ñ2Ô2ˆØ�ˆØ�lŠl˜7Ñ#Ô#ð 	>Ø�LŠL˜×:Ò:Ñ<Ô<Ñ=Ô=Ð=ð �lŠl˜7Ñ#Ô#ð 	>åŒ~˜e T¤ZÑ0Ô0Ð0r   c                 ó*   — |                       ¦   «         S rT   )r  rV   s    r   rG  z"CParser._parse_constant_expressionæ  s   € Ø×1Ò1Ñ3Ô3Ð3r   c                 ó†   — |                       d¦  «        }t          j        |j        |                      |¦  «        ¦  «        S )Nrä   )rË   r   rä   rH   rI   rÄ   s     r   r¶  zCParser._parse_identifierí  s3   € Ø�lŠl˜4Ñ Ô ˆÝŒx˜œ	 4§?¢?°3Ñ#7Ô#7Ñ8Ô8Ð8r   c                 óè   — |                       ¦   «         }|j        dvr)|                      d|                      |¦  «        ¦  «         t	          j        |j        |                      |¦  «        ¦  «        S )N>   rä   rå   zExpected identifier)rÅ   rp   rG   rI   r   rä   rH   rÄ   s     r   rM  z#CParser._parse_identifier_or_typeidò  s`   € Ø�mŠm‰oŒoˆØŒ8Ð+Ð+Ð+Ø×ÒÐ3°T·_²_ÀSÑ5IÔ5IÑJÔJÐJÝŒx˜œ	 4§?¢?°3Ñ#7Ô#7Ñ8Ô8Ð8r   c                 óö  — |                       ¦   «         }|j        t          v r�d}d}|j        dd …         D ]}|dv r|dz  }Œ|dv r|dz  }Œ|dk    rt	          d¦  «        ‚|dk    rt	          d¦  «        ‚d	|z  d
|z  z   }t          j        |dz   |j        |                      |¦  «        ¦  «        S |j        t          v rT|j        d         dv rd}n|j        d         dv rd}nd}t          j        ||j        |                      |¦  «        ¦  «        S |j        t          v r.t          j        d|j        |                      |¦  «        ¦  «        S |  
                    d|                      |¦  «        ¦  «         d S )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   r;  rH   Ú
ValueErrorr   ÚConstantrI   r<  r=  rG   )r   rK   Úu_countÚl_countÚchÚprefixr«   s          r   r>  zCParser._parse_constantù  s�  € Ø�mŠm‰oŒoˆØŒ8•zÐ!Ð!ØˆGØˆGØ”i   ”nð !ð !�Ø˜Ð#Ð#Ø˜q‘L�G�GØ˜:Ð%Ð%Ø˜q‘L�GøØ˜Š{ˆ{Ý Ð!QÑRÔRÐRØ˜Š{ˆ{Ý Ð!QÑRÔRÐRØ  7Ñ*¨W°wÑ->Ñ>ˆFÝ”> &¨5¡.°#´)¸T¿_º_ÈSÑ=QÔ=QÑRÔRÐRàŒ8•|Ð#Ð#ØŒy˜Œ} 
Ð*Ð*Ø��Ø”˜2” *Ð,Ð,Ø!��à�Ý”> ! S¤Y°·²ÀÑ0DÔ0DÑEÔEÐEàŒ8•{Ð"Ð"Ý”> &¨#¬)°T·_²_ÀSÑ5IÔ5IÑJÔJÐJà×ÒÐ,¨d¯oªo¸cÑ.BÔ.BÑCÔCÐCÐCÐCr   c                 óè  — |                       ¦   «         }|j        t          vr)|                      d|                      |¦  «        ¦  «         |j                             dd¦  «        \  }}|d d…         g}|                      ¦   «         t          v r�|                       ¦   «         }|j                             dd¦  «        \  }}|p|}|d d…         }|                      |d         |¦  «        r| 	                    |¦  «         n|dxx         |z  cc<   |                      ¦   «         t          v °�|dz   d 
                    |¦  «        z   dz   }t          j        d||                      |¦  «        ¦  «        S )NzInvalid string literalú"r
   r^   z" "Ústring)rÅ   rp   r?  rG   rI   rH   ÚsplitrÀ   Ú_string_literal_needs_separatorrU   Újoinr   r^  )	r   rK   rb  ÚcontentsÚpartsÚtok2Únext_prefixÚnext_contentsrH   s	            r   r@  z%CParser._parse_unified_string_literal  se  € ð �mŠm‰oŒoˆØŒ8�?Ð*Ð*Ø×ÒÐ6¸¿ºÈÑ8LÔ8LÑMÔMÐMð œ9Ÿ?š?¨3°Ñ2Ô2Ñˆ�Ø˜#˜2˜#”�ˆØ�oŠoÑÔ¥?Ð2Ð2Ø—=’=‘?”?ˆDØ)-¬×)9Ò)9¸#¸qÑ)AÔ)AÑ&ˆK˜ð Ð*˜{ˆFØ)¨#¨2¨#Ô.ˆMð ×3Ò3°E¸"´I¸}ÑMÔMð +Ø—’˜]Ñ+Ô+Ð+Ð+à�b�	�	”	˜]Ñ*�	�	‘	ð �oŠoÑÔ¥?Ð2Ð2ð$ ˜‘˜uŸzšz¨%Ñ0Ô0Ñ0°3Ñ6ˆÝŒ~˜h¨¨t¯ª¸sÑ/CÔ/CÑDÔDÐDr   ÚleftÚrightc                 óV  ‡‡— | r|sdS | dd…         |dd…         z   Št          ˆfd„dD ¦   «         ¦  «        rdS |                      d¦  «        }|d	k    rdS |}|d
k    r)| |dz
           dk    r|dz  }|d
k    r| |dz
           dk    °||z
  dz   dz  d
k    rdS | |dz   d…         }|                     d¦  «        r/dŠ|d
         ‰v o"t          ˆfd„|dd…         D ¦   «         ¦  «        S dt	          |¦  «        cxk    odk     nc o"t          d„ |D ¦   «         ¦  «        o	|d
         dv S )zAWhether joining two literal bodies would change their C spelling.FéþÿÿÿNr›   c              3   ó&   •K  — | ]}d |z   ‰v V — ŒdS )z??Nr%   )r}   ra  Úboundarys     €r   ú	<genexpr>z:CParser._string_literal_needs_separator.<locals>.<genexpr>F  s,   øè è € Ð;Ð;¨ˆt�b‰y˜HÐ$Ð;Ð;Ð;Ð;Ð;Ð;r   z	=/'()!<>-Tú\r^   r   r
   ÚxÚ0123456789abcdefABCDEFc              3   ó    •K  — | ]}|‰v V — Œ	d S rT   r%   )r}   ra  Ú
hex_digitss     €r   rt  z:CParser._string_literal_needs_separator.<locals>.<genexpr>Z  s(   øè è € Ð1XÐ1XÀr°"¸
Ð2BÐ1XÐ1XÐ1XÐ1XÐ1XÐ1Xr   é   c              3   ó   K  — | ]}|d v V — Œ	dS )Ú01234567Nr%   )r}   ra  s     r   rt  z:CParser._string_literal_needs_separator.<locals>.<genexpr>`  s'   è è € Ð6Ð6¨�B˜*Ð$Ð6Ð6Ð6Ð6Ð6Ð6r   r|  )ÚanyÚrfindÚ
startswithÚallrY   )rn  ro  Úescape_startÚ	run_startÚescapers  ry  s        @@r   rg  z'CParser._string_literal_needs_separator=  sµ  øø€ ð ð 	˜5ð 	Ø�5ð ˜˜˜”9˜u R a RœyÑ(ˆÝÐ;Ð;Ð;Ð;¨{Ð;Ñ;Ô;Ñ;Ô;ð 	Ø�4ð —z’z $Ñ'Ô'ˆØ˜2ÒÐØ�5ð !ˆ	Ø˜!Šmˆm  Y°¡]Ô 3°tÒ ;Ð ;Ø˜‰NˆIð ˜!Šmˆm  Y°¡]Ô 3°tÒ ;Ð ;à˜9Ñ$ qÑ(¨AÑ-°Ò2Ð2Ø�5à�l QÑ&Ð(Ð(Ô)ˆØ×Ò˜SÑ!Ô!ð 	Yà1ˆJØ˜”8˜zÐ)ÐX­cÐ1XÐ1XÐ1XÐ1XÈVÐTUÐTVÐTVÌZÐ1XÑ1XÔ1XÑ.XÔ.XÐXð
 •�V‘”Ð Ð Ò Ð ˜qÒ Ð Ð Ð ð 'ÝÐ6Ð6¨vÐ6Ñ6Ô6Ñ6Ô6ð'à�a”˜JÐ&ð	
r   c                 óR  — |                       d¦  «        }|r}|                       d¦  «        r(t          j        g |                      |¦  «        ¦  «        S |                      ¦   «         }|                       d¦  «         |                      d¦  «         |S |                      ¦   «         S )Nr  rR  rM  )rÉ   r   r.  rI   r/  rË   r”  )r   rß  Ú	init_lists      r   r  zCParser._parse_initializerj  s›   € Ø—\’\ (Ñ+Ô+ˆ
Øð 	Ø�|Š|˜HÑ%Ô%ð GÝ”~ b¨$¯/ª/¸*Ñ*EÔ*EÑFÔFÐFØ×4Ò4Ñ6Ô6ˆIØ�LŠL˜Ñ!Ô!Ð!Ø�LŠL˜Ñ"Ô"Ð"ØÐà×0Ò0Ñ2Ô2Ð2r   c                 ó@  — |                       ¦   «         g}|                      d¦  «        rU|                      ¦   «         dk    rn<|                     |                       ¦   «         ¦  «         |                      d¦  «        °Ut	          j        ||d         j        ¦  «        S )NrM  rR  r   )Ú_parse_initializer_itemrÉ   rÀ   rU   r   r.  rQ   )r   rZ  s     r   r/  zCParser._parse_initializer_listw  s�   € Ø×-Ò-Ñ/Ô/Ð0ˆØ�lŠl˜7Ñ#Ô#ð 	9Ø�ŠÑ Ô  HÒ,Ð,ØØ�LŠL˜×5Ò5Ñ7Ô7Ñ8Ô8Ð8ð �lŠl˜7Ñ#Ô#ð 	9õ Œ~˜e U¨1¤X¤^Ñ4Ô4Ð4r   c                 ó´   — d }|                       ¦   «         dv r|                      ¦   «         }|                      ¦   «         }|�t          j        ||¦  «        S |S ©N>   r+  rû   )rÀ   Ú_parse_designationr  r   ÚNamedInitializer)r   Údesignationr    s      r   r‡  zCParser._parse_initializer_item€  s]   € ØˆØ�?Š?ÑÔÐ 6Ð6Ð6Ø×1Ò1Ñ3Ô3ˆKØ×&Ò&Ñ(Ô(ˆØÐ"ÝÔ)¨+°tÑ<Ô<Ð<Øˆr   c                 óX   — |                       ¦   «         }|                      d¦  «         |S )Nr  )Ú_parse_designator_listrË   ©r   Údesignatorss     r   rŠ  zCParser._parse_designationŠ  s+   € Ø×1Ò1Ñ3Ô3ˆØ�Š�XÑÔÐØÐr   c                 ó°   — g }|                       ¦   «         dv r=|                     |                      ¦   «         ¦  «         |                       ¦   «         dv °=|S r‰  )rÀ   rU   Ú_parse_designatorr�  s     r   rŽ  zCParser._parse_designator_list�  s[   € ØˆØ�oŠoÑÔÐ#9Ð9Ð9Ø×Ò˜t×5Ò5Ñ7Ô7Ñ8Ô8Ð8ð �oŠoÑÔÐ#9Ð9Ð9àÐr   c                 ó  — |                       d¦  «        r+|                      ¦   «         }|                      d¦  «         |S |                       d¦  «        r|                      ¦   «         S |                      d| j        j        ¦  «         d S )Nrû   r“  r+  zInvalid designator)rÉ   rG  rË   rM  rG   r;   r@   )r   rI  s     r   r’  zCParser._parse_designator˜  s†   € Ø�<Š<˜
Ñ#Ô#ð 	Ø×2Ò2Ñ4Ô4ˆDØ�LŠL˜Ñ$Ô$Ð$ØˆKØ�<Š<˜Ñ!Ô!ð 	6Ø×3Ò3Ñ5Ô5Ð5Ø×ÒÐ.°´	Ô0BÑCÔCÐCÐCÐCr   c                 ó‚   — |                       d¦  «        }|                      d|                      |¦  «        ¦  «         d S )Nr  zDirectives not supported yet)rË   rG   rI   rÄ   s     r   r  zCParser._parse_pp_directive¥  s<   € Ø�lŠl˜8Ñ$Ô$ˆØ×ÒÐ8¸$¿/º/È#Ñ:NÔ:NÑOÔOÐOÐOÐOr   c                 óÄ  — |                       ¦   «         dk    r•|                      ¦   «         }|                       ¦   «         dk    rA|                      ¦   «         }t          j        |j        |                      |¦  «        ¦  «        S t          j        d|                      |¦  «        ¦  «        S |                       ¦   «         dk    rz|                      ¦   «         }|                      d¦  «        }|                      ¦   «         }|                      d¦  «         t          j        ||                      |¦  «        ¦  «        S |                      d| j	        j
        ¦  «         d S )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Ð1ØŸ-š-™/œ/�Ý”| G¤M°4·?²?À7Ñ3KÔ3KÑLÔLÐLÝ”<  D§O¢O°CÑ$8Ô$8Ñ9Ô9Ð9à�?Š?ÑÔ 	Ò)Ð)Ø—-’-‘/”/ˆCØ—\’\ (Ñ+Ô+ˆFØ×8Ò8Ñ:Ô:ˆGØ�LŠL˜Ñ"Ô"Ð"Ý”< ¨¯ª¸Ñ)@Ô)@ÑAÔAÐAà×ÒÐ*¨D¬IÔ,>Ñ?Ô?Ð?Ð?Ð?r   c                 ó°   — g }|                       ¦   «         dv r=|                     |                      ¦   «         ¦  «         |                       ¦   «         dv °=|S )Nr  )rÀ   rU   r  )r   rÖ  s     r   rÔ  z&CParser._parse_pppragma_directive_list½  sX   € ØˆØ�oŠoÑÔÐ#:Ð:Ð:Ø�NŠN˜4×9Ò9Ñ;Ô;Ñ<Ô<Ð<ð �oŠoÑÔÐ#:Ð:Ð:àˆr   c                 óz  — |                       d¦  «        }|                       d¦  «         |                      ¦   «         }d }|                      d¦  «        r|                      ¦   «         }|                       d¦  «         |                       d¦  «         t	          j        |||                      |¦  «        ¦  «        S )Nr  rã   rM  rö   r  )rË   rG  rÉ   r@  r   ÚStaticAssertrI   )r   rK   rì  rP   s       r   r  zCParser._parse_static_assertÆ  s¦   € Ø�lŠlÐ+Ñ,Ô,ˆØ�Š�XÑÔÐØ×.Ò.Ñ0Ô0ˆØˆØ�<Š<˜Ñ Ô ð 	7Ø×4Ò4Ñ6Ô6ˆCØ�Š�XÑÔÐØ�Š�VÑÔÐÝÔ! $¨¨T¯_ª_¸SÑ-AÔ-AÑBÔ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   r_  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  rB  rD  r8  r9  r  rN  r=  rS  rY  r^  rd  r>  rg  rj  rP  rò   rñ   rð   rw  r~  r‚  r„  rŠ  r…  r}  rª  rš  r¦  r©  r­  r›  r´  r  rï   r¹  r»  r¼  rÐ  rØ  rÚ  rÝ  r  rË  rÌ  rÍ  rÎ  rÏ  ró  ré  r”  r  r  r  r  r(  r0  rG  rA  rJ  rF  rB  r2  rG  r¶  rM  r>  r^  r@  Ústaticmethodrg  r  r/  r‡  rŠ  rŽ  r’  r  r  rÔ  r�  r  r%   r   r   r)   r)   /   s6  € € € € € ð	ð 	ð "Ø$Ø(Ø"Ø*Ø Øð=ð =àð=ð �FŒ|ð=ð ð	=ð
 ð=ð ð=ð ð=ð ð=ð 
ð=ð =ð =ð =ð: <Aðð ØðØ#&ðØ48ðà	Œðð ð ð ð6Jð J˜Sð J¨#°©*ð JÀð Jð Jð Jð Jð, ð ,¨E°C©K¸$Ñ,>ð ,À8ð ,ð ,ð ,ð ,ð%ð %ð %ð %ð ð  ð  ð  ð
+ cð +°%¸$±,ð +À4ð +ð +ð +ð +ð	, Cð 	,°¸±ð 	,Àð 	,ð 	,ð 	,ð 	,ð cð ¨dð ð ð ð ð: 3ð :¨cð :¸3ð :À4ð :ð :ð :ð :ðð ð ð ðð ð ð ð,¨#ð ,°$ð ,ð ,ð ,ð ,ðR cð °Sð ¸U¼Zð ð ð ð ðX(àŒj˜5œ=Ñ(¨5¬>Ñ9ð(ð �s”)ð(ð 
Œ�e”mÑ	# e¤nÑ	4ð	(ð (ð (ð (ð^ ðð à˜;Ô'ðð ðð ð	ð
 ðð 
ðð ð ð ð< #(ð	bð bàðbð �KÔ ðbð  ð	bð
 
ˆeŒjÔ	ðbð bð bð bðH
àð
ð Œjð
ð ˜%œ*Ô%¨Ñ,ð	
ð
 Œjð
ð 
Œð
ð 
ð 
ð 
ð*°ð ¸ð ð ð ð ð$ð $�sð $ 5¨4¡<ð $ð $ð $ð $ð5ð 5˜Cð 5¨¨d©
ð 5ð 5ð 5ð 5ð
˜%ð ð ð ð ð	 #ð 	¨%°$©,ð 	ð 	ð 	ð 	ð #ð ¨%ð ð ð ð ð#�sð #ð #ð #ð #ð!˜3ð ! 4ð !ð !ð !ð !ð3˜eð 3¨ð 3ð 3ð 3ð 3ð'ð ' u¨t¡|ð '¸tð 'ð 'ð 'ð 'ð.ð . e¨d¡lð .¸dð .ð .ð .ð .ð) 4ð )ð )ð )ð )ð,ð ,¨$ð ,¸4ð ,ð ,ð ,ð ,ð#¨E°#¸±*¸dÐ2BÔ,Cð #ð #ð #ð #ð NSðð Ø"ðØFJðà	ˆuŒz˜DÑ  $Ð&Ô	'ðð ð ð ð6!¨E°#¸±*¸dÐ2BÔ,Cð !ð !ð !ð !ðF;°Dð ;ð ;ð ;ð ;ð? 4ð ?ð ?ð ?ð ?ð%à	ˆuŒ~˜s EÐ)Ô	*¨TÑ	1ð%ð %ð %ð %ð6=°%´-ð =ð =ð =ð =ð¨¨e¬jÔ)9ð ð ð ð ðM¨T°%´*Ô-=ð Mð Mð Mð Mðn D¨¬Ô$4ð ð ð ð ð? $ u¤zÔ"2ð ?ð ?ð ?ð ?ð*Øð*Ø+/ð*à	ˆeŒjÔ	ð*ð *ð *ð *ðZ¨¨e¬jÔ)9ð ð ð ð ð %*ðv+ð v+Ø!ðv+à	ˆ{˜D %¨$¡,Ð.Ô	/ðv+ð v+ð v+ð v+ðv`ð `ð `ð `ðF¨D°¬Ið ð ð ð ð9¨E¬Jð 9ð 9ð 9ð 9ð¨¬ð ð ð ð ð DIðð Ø˜kÔ*ðØ<@ðà	ˆkÔ	ðð ð ð ð=ð =¨dð =¸{ð =ð =ð =ð =ðT°%´*ð Tð Tð Tð TðB°°U´ZÔ0@ð ð ð ð ð"
¨4°´
Ô+;¸dÑ+Bð "
ð "
ð "
ð "
ðJ¨t°KÔ/@ð ð ð ð ð=ð =ð =ð =ð$= u¤zð =ð =ð =ð =ð"¨¬
ð ð ð ð ð 5¤:ð ð ð ð ð 5¤:ð ð ð ð ðH e¤jð Hð Hð Hð HðL¨%¬*ð Lð Lð Lð LðM°%´*ð Mð Mð Mð Mð¨3ð ¸Tð ÀeÄjð ð ð ð ð .2ð/ð /Øð/Ø&*ð/à	Œð/ð /ð /ð /ð*¨¬ð ¸¼
ð ð ð ð ðT¨5¬:ð T¸%¼*ð Tð Tð Tð Tð CGð7(ð 7(Øœ dÑ*ð7(Ø38¸4±<ð7(à	Œð7(ð 7(ð 7(ð 7(ðt¨e¬jð ¸U¼Zð ð ð ð ð2 ¤
¨TÑ 1ð ð ð ð ð"¨E¬Oð ð ð ð ð u¤ð ð ð ð ðI¨e¬jð Ið Ið Ið Ið(<Øð<Ø',¤z°DÑ'8ð<ØFKÈdÁlð<à	Œð<ð <ð <ð <ð,-¨E¬J¸Ñ,=ð -ð -ð -ð -ð¨¬
ð ð ð ð ðV %¤.ð Vð Vð Vð Vð(°´
¸TÑ0Að ð ð ð ð$/°5´:ð /ð /ð /ð /ð.1°´À$Ñ0Fð 1ð 1ð 1ð 1ð
¨E¬Jð 
ð 
ð 
ð 
ð: %¤*ð :ð :ð :ð :ð*'°´
ð 'ð 'ð 'ð 'ð' 5¤:°°U´ZÔ0@Ñ#@ð 'ð 'ð 'ð 'ð¨¨U¬ZÔ(8ð ð ð ð ð
¨5¬:ð 
ð 
ð 
ð 
ðS¨%¬*ð Sð Sð Sð SðBW¨E¬Jð Wð Wð Wð Wð2&W¨E¬Jð &Wð &Wð &Wð &WðTR u¤zð Rð Rð Rð Rð.¨U¬Zð ð ð ð ð u¤z°DÑ'8ð ð ð ð ð1 5¤:ð 1ð 1ð 1ð 1ð¨e¬jð ð ð ð ð ¨u¬zð ð ð ð ð ;?ðð ØðØ&+¤j°4Ñ&7ðà	Œðð ð ð ðD.¨¬
ð .ð .ð .ð .ð*0¨¬ð 0ð 0ð 0ð 0ð@4¨5¬:ð 4ð 4ð 4ð 4ðp!D¨5¬:ð !Dð !Dð !Dð !DðJ	P¨%Ô*@ð 	Pð 	Pð 	Pð 	PðI¨EÔ,Dð Ið Ið Ið Ið°5´:ð ð ð ð ð 1°´ð 1ð 1ð 1ð 1ð4¨E¬Jð 4ð 4ð 4ð 4ð9 5¤:ð 9ð 9ð 9ð 9ð
9¨U¬Zð 9ð 9ð 9ð 9ðD ¤ð Dð Dð Dð DðD E¨u¬~ð  Eð  Eð  Eð  EðD ð$
¨cð $
¸#ð $
À$ð $
ð $
ð $
ñ „\ð$
ðX
3 E¤Jð 
3ð 
3ð 
3ð 
3ð5¨¬ð 5ð 5ð 5ð 5ð¨¬ð ð ð ð ð D¨¬Ô$4ð ð ð ð ð¨¨U¬ZÔ(8ð ð ð ð ðD 5¤:ð Dð Dð Dð DðP Xð Pð Pð Pð Pð@¨5¬:ð @ð @ð @ð @ð$°°U´ZÔ0@ð ð ð ð ð	C eÔ&8ð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cr   r)   >   r  ÚOREQUALÚANDEQUALÚDIVEQUALÚMODEQUALÚXOREQUALÚ	PLUSEQUALÚ
MINUSEQUALÚ
TIMESEQUALÚLSHIFTEQUALÚRSHIFTEQUALÚLORÚLANDÚORr›   ÚXORrz  r   é   ÚEQé   ÚNEÚGTé   ÚGEÚLTÚLEÚRSHIFTé   ÚLSHIFTr#  é   r$  râ   é	   ÚDIVIDEÚMOD>   ÚAUTOÚEXTERNr‘  ÚTYPEDEFÚREGISTERÚ_THREAD_LOCALÚINLINEÚ	_NORETURN>   ÚCONSTr3  ÚRESTRICTÚVOLATILE>   ÚINTÚCHARÚLONGÚVOIDÚFLOATÚSHORTÚ_BOOLÚDOUBLEÚSIGNEDÚUNSIGNEDÚ_COMPLEXÚ__INT128>   r7  r5  r6  rå   r3  r1  >   rä   r   r!  r"  r#  r$  râ   rã   r%  r:  r  r&  r9  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                   óx   — 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dS )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                 ó0   — || _         g | _        d| _        d S )Nr   )Ú_lexerÚ_bufferÚ_index)r   r,   s     r   r?   z_TokenStream.__init__]	  s   € ØˆŒØ+-ˆŒØˆŒˆˆr   r
   r»   c                 ól   — |dk    rdS |                       |¦  «         | 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	  s9   € ð �Š6ˆ6Ø�4Ø�
Š
�1‰ŒˆØŒ|˜DœK¨!™O¨aÑ/Ô0Ð0r   c                 ót   — |                       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	  s4   € à�
Š
�1‰ŒˆØŒl˜4œ;Ô'ˆØˆŒ�qÑˆŒØˆ
r   c                 ó   — | j         S rT   ©rì  rV   s    r   rÍ   z_TokenStream.markz	  s
   € ØŒ{Ðr   rÍ   c                 ó   — || _         d S rT   rò  rÑ   s     r   rÐ   z_TokenStream.reset}	  s   € ØˆŒˆˆr   Únc                 óø   — t          | j        ¦  «        | j        |z   k     rY| j                             ¦   «         }| j                             |¦  «         |€d S t          | j        ¦  «        | j        |z   k     °Wd S d S rT   )rY   rë  rì  rê  r·   rU   )r   rô  rK   s      r   rï  z_TokenStream._fill€	  sy   € Ý�$”,ÑÔ $¤+°¡/Ò1Ð1Ø”+×#Ò#Ñ%Ô%ˆCØŒL×Ò Ñ$Ô$Ð$Øˆ{Ø�õ	 �$”,ÑÔ $¤+°¡/Ò1Ð1Ð1Ð1Ð1Ð1r   rž  )r   r   r    r!   r   r?   r$   r   r½   rÃ   rÍ   rÐ   rï  r%   r   r   r=   r=   W	  sé   € € € € € ðð ð
˜fð ¨ð ð ð ð ð

1ð 
1�cð 
1 %¨$¡,ð 
1ð 
1ð 
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<   dS )rˆ   rŽ   r�   rp   r�   r‘   N)r   r   r    r   r   r#   r%   r   r   rˆ   rˆ   Ž	  s\   € € € € € € Ø
ˆsŒ)€O€O�OØ�#ŒYÐÐÑØ
ˆsŒ)€O€O�OØ�3ŒiÐÐÑØ�CŒyÐÐÑÐÐr   rˆ   r�   c                   ó^   — e Zd ZU ej        dz  ed<   ej        dz  ed<   ej        dz  ed<   dS )r–   Nrm   r    rš   )r   r   r    r   r_  r#   r%   r   r   r–   r–   ™	  sM   € € € € € € ð
 Œ*�tÑ
ÐÐÑØ
Œ*�tÑ
ÐÐÑØŒZ˜$ÑÐÐÑÐÐr   r–   N)'Údataclassesr   Útypingr   r   r   r   r   r	   r*   r   Úast_transformsr   r   Úc_lexerr   r   r   Ú	Exceptionr'   r)   rþ   r  r:  r;  r÷   r<  rÖ   Ú_EXPR_STARTr;  r<  r=  r?  rÙ   rÜ   r=   rˆ   r‹   r–   r%   r   r   ú<module>rþ     s·  ðð "Ð !Ð !Ð !Ð !Ð !ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ "Ð "Ð "Ð "Ð "Ð "Ð "Ð "ð ðð ð ð ð ñ ô ñ „ðð$	ð 	ð 	ð 	ð 	�ñ 	ô 	ð 	ð`"Cð `"Cð `"Cð `"Cð `"Cñ `"Cô `"Cð `"CðFEð ð €ð"Ø	ˆ1ðà
ˆAðð 	ˆ!ðð 
ˆ1ð	ð
 
ˆ1ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð ˆaðð ˆaðð ˆAðð ˆQðð  ˆQð!ð" ˆað#ð$ 
ˆ1ð%ð Ð ð* VÐUÐU€à˜KÐ(€à>Ð>Ð>€ðð ð Ð ð  Øñàñð ñð CÐBÐBñ	Cð ðð ð €ð"ð ð €
ð Ð0Ð1€ðð ð €ðð ð €ð �*Ñ˜|Ñ+¨kÑ9¸OÑKð ðð ð Ð ð&.ð .ð .ð .ð .ñ .ô .ð .ðnð ð ð ð �	ñ ô ð ð ÐJÔK€ðð ð ð ð �	ñ ô ð ð ð r   