§
    ¢”jÆ^ ã                   ó>  — d dl mZ d dlmZmZmZ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"d3hZ#h d4£Z$ee z  e!z  e"z  e#z  e$z  Z%h d5£Z& G d6„ d7¦  «        Z' G d8„ d9e
¦  «        Z(ed:         Z) G d;„ d<e
¦  «        Z*d=S )>é    )Ú	dataclass)	ÚAnyÚDictÚListÚLiteralÚNoReturnÚOptionalÚTupleÚ	TypedDictÚcasté   )Úc_ast)ÚCLexerÚ_Token)Úfix_switch_casesÚfix_atomic_specifiersc                   óN   — e Zd ZU dZeed<   eed<   dZee         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        r|d| j        › �z  }|S )Nú:©r   r   r   )ÚselfÚtexts     úa/var/www/finuniver-perm.ru/html/portfolio/venv/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   r      sc   € € € € € € ðð ð €I€I�IØ
€I€I�IØ €FˆH�SŒMÐ Ð Ñ ð˜ð ð ð ð ð ð 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e         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e         ddfd„Zdedee         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!e	j                          d8e	j        de	j        f
d9„Z%d:edefd;„Z&dµd=edee'         fd>„Z(dµd=edee         fd?„Z)de'fd@„Z*dAedee'         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e'         defdI„Z0d²dGee'         defdJ„Z1defdK„Z2d´dLedefdM„Z3de4ee         ef         fdN„Z5	 d¶dOedPede4ee	j                 ef         fdQ„Z6de4ee         ef         fdR„Z7defdS„Z8defdT„Z9dee4e	j         ee'f                  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e         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!e	j                          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e	j                 dee         de	j        fdz„ZYdwe	j        de	j        fd{„ZZdee	j                 fd|„Z[de	j\        fd}„Z]de	j\        fd~„Z^de	j        fd„Z_d2d,d&ee	j                 d€ee         de	j        fd�„Z`dee	j                 fd‚„Zade	j        fdƒ„Zbde	j         fd„„Zcdee	j                 fd…„Zdde	j        fd†„Zedee	j\                 fd‡„Zfde	j        fdˆ„Zgde	j        e!e	j                 z  fd‰„Zhde	j        e!e	j                 z  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e	j                 fd“„Zrde	j        fd”„Zsde	j        fd•„Ztde	j        fd–„Zu	 d»d˜ed™ee	j                 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ƒ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!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        ¬¦  «        | _        t          ¦   «         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ÚdictÚ_scope_stackÚ_TokenStreamÚ_tokens)r   r.   r/   r0   r1   r2   r3   r4   s           r   Ú__init__zCParser.__init__>   sY   € ð "˜EØÔ+ØÔ3ØÔ3Ø!Ô7ð	
ñ 
ô 
ˆŒ	õ 59±F´F°8ˆÔÝ%1°$´)Ñ%<Ô%<ˆŒˆˆr    r   ÚfilenameÚdebugc                 óL  — t          ¦   «         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@   r>   ÚinputrA   rB   Ú _parse_translation_unit_or_emptyÚ_peekÚ_parse_errorÚvalueÚ
_tok_coord)r   r   rD   rE   ÚastÚtoks         r   ÚparsezCParser.parseZ   sŽ   € õ "™VœV˜HˆÔØŒ	�Š˜˜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>   rD   )r   rQ   r   s      r   Ú_coordzCParser._coordv   s   € Ý˜$œ)Ô,°6À&ÐIÑIÔIÐIr    ÚmsgÚcoordc                 ó*   — t          |› d|› �¦  «        ‚)Nz: )r*   )r   rT   rU   s      r   rK   zCParser._parse_errory   s   € Ý˜EÐ*Ð* SÐ*Ð*Ñ+Ô+Ð+r    c                 óR   — | j                              t          ¦   «         ¦  «         d S ©N)r@   Úappendr?   ©r   s    r   Ú_push_scopezCParser._push_scope|   s#   € ØÔ× Ò ¥¡¤Ñ(Ô(Ð(Ð(Ð(r    c                 ól   — t          | j        ¦  «        dk    sJ ‚| j                             ¦   «          d S )Nr   )Úlenr@   ÚpoprZ   s    r   Ú
_pop_scopezCParser._pop_scope   s9   € Ý�4Ô$Ñ%Ô%¨Ò)Ð)Ð)Ð)ØÔ×ÒÑÔÐÐÐ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@   ÚgetrK   ©r   r`   rU   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
        rb   FzNon-typedef z- previously declared as typedef in this scopeNrc   re   s      r   Ú_add_identifierzCParser._add_identifierŒ   sg   € ð Ô˜RÔ ×$Ò$ T¨5Ñ1Ô1ð 	Ø×ÒØT˜tÐTÐTÐTØñô ð ð ',ˆÔ˜"Ô˜dÑ#Ð#Ð#r    c                 ój   — t          | j        ¦  «        D ]}|                     |¦  «        }|�|c S ŒdS )z.Is *name* a typedef-name in the current scope?NF)Úreversedr@   rd   )r   r`   ÚscopeÚin_scopes       r   Ú_is_type_in_scopezCParser._is_type_in_scope—   sF   € å˜dÔ/Ñ0Ô0ð 	 ð 	 ˆEð —y’y ‘”ˆHØÐ#Ø���ð $àˆur    r   c                 óZ   — |                       ||                      ||¦  «        ¦  «         d S rX   )rK   rS   )r   rT   r   r   s       r   r:   zCParser._lex_error_func¡   s,   € Ø×Ò˜#˜tŸ{š{¨4°Ñ8Ô8Ñ9Ô9Ð9Ð9Ð9r    c                 ó.   — |                       ¦   «          d S rX   )r[   rZ   s    r   r;   zCParser._lex_on_lbrace_func¤   s   € Ø×ÒÑÔÐÐÐr    c                 ó.   — |                       ¦   «          d S rX   )r_   rZ   s    r   r<   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.
        )rm   )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   rr   rs   Ú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 ]V}t          |t          j        ¦  «        s:t          |¦  «        dk    r|  	                    d|j
        ¦  «         ŒK||_        |c S ŒW|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'   ©rU   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   )rv   r   rw   ru   Údeclnamer`   ÚqualsÚIdentifierTyper]   rK   rU   ÚFuncDecl)r   rr   r|   ÚtypÚtns        r   Ú_fix_decl_name_typezCParser._fix_decl_name_type   sQ  € ð ˆÝ˜S¥%¤.Ñ1Ô1ð 	Ø”(ˆCõ ˜S¥%¤.Ñ1Ô1ð 	ð ”LˆŒ	Ø”J˜q˜q˜q”MˆŒ	ð ð 	 ð 	 ˆBÝ˜b¥%Ô"6Ñ7Ô7ð  Ý�x‘=”= 1Ò$Ð$Ø×%Ò%Ð&HÈ"Ì(ÑSÔSÐSÐSà!�C”HØ�K�K�Kð ð ð 
	å˜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Ú_DeclSpecKindrY   c                 ó¬   — |€t          g g g g g ¬¦  «        }n|}|r||                              |¦  «         n||                              d|¦  «         |S )z2See _DeclSpec for the specifier dictionary layout.N©ÚqualÚstorageru   ÚfunctionÚ	alignmentr   )r?   rY   Úinsert)r   rŒ   rŽ   r�   rY   Úspecs         r   Ú_add_declaration_specifierz"CParser._add_declaration_specifier(  st   € ð ÐÝ"Ø ¨"°rÀRðñ ô ˆ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 �] }	|	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        ¦  «         t1          t          t          j        t          j        z  |¦  «        ¦  «        }|                     |¦  «         �Œ¢|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   ÚbitsizeNrr   ru   é   rb   r   ú?rU   úInvalid declarationr–   ©r…   ru   r†   ÚalignrU   r“   )r`   r†   r”   ru   rU   r•   Úinit©	r`   r†   r¤   r”   Úfuncspecru   r¥   rŸ   rU   )rd   r]   r�   rm   ÚhasattrrU   rK   r   rw   rv   ÚEnumÚStructÚUnionr‡   r   r   ru   r…   ÚTypedefÚDeclr‹   rf   r`   rh   r   rY   )r   r˜   rš   rœ   Ú
is_typedefÚdeclarationsrU   ÚtÚdecls_0_tailrr   Ú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å.Ý•U”Z¥%¤-Ñ/°Ñ<Ô<ñô ˆJð ×Ò 
Ñ+Ô+Ð+Ñ+àÐr    Úparam_declsÚbodyc                 óä   — d|d         v r|                       d|j        ¦  «         |                      |t          |dd¬¦  «        gd¬¦  «        d         }t	          j        ||||j        ¬	¦  «        S )
zBuilds a function definition.rž   r”   zInvalid typedefN©rr   r¥   rŸ   T©r˜   rš   rœ   r   )rr   rµ   r¶   rU   )rK   rU   r´   r?   r   ÚFuncDef)r   r˜   rr   rµ   r¶   r²   s         r   Ú_build_function_definitionz"CParser._build_function_definition¥  s‘   € ð ˜˜YœÐ'Ð'Ø×ÒÐ/°´Ñ<Ô<Ð<à×.Ò.ØÝ˜T¨°dÐ;Ñ;Ô;Ð<Ø"ð /ñ 
ô 
ð ô	ˆõ Œ}Ø¨+¸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).)rB   Úpeek©r   rÀ   s     r   rJ   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)rJ   ru   )r   rÀ   rO   s      r   Ú
_peek_typezCParser._peek_typeÊ  s!   € à�jŠj˜‰mŒmˆØ˜?ˆsŒxˆx°Ð4r    c                 ó€   — | j                              ¦   «         }|€"|                      d| j        j        ¦  «         d S |S )NzAt end of input)rB   ÚnextrK   r>   rD   ©r   rO   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)rJ   ru   rÉ   ©r   rÊ   rO   s      r   Ú_acceptzCParser._acceptÖ  s5   € ð �jŠj‰lŒlˆØˆ?˜sœx¨:Ò5Ð5Ø—=’=‘?”?Ð"Øˆtr    c                 ó¦   — |                       ¦   «         }|j        |k    r1|                      d|j        › �|                      |¦  «        ¦  «         |S )NrG   )rÉ   ru   rK   rL   rM   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 rX   )rB   ÚmarkrZ   s    r   Ú_markzCParser._markç  s   € ØŒ|× Ò Ñ"Ô"Ð"r    rÑ   c                 ó:   — | j                              |¦  «         d S rX   )rB   Úreset©r   rÑ   s     r   Ú_resetzCParser._resetê  s   € ØŒ×Ò˜4Ñ Ô Ð Ð Ð r    rO   c                 óB   — |                       |j        |j        ¦  «        S rX   )rS   rQ   r   rÈ   s     r   rM   zCParser._tok_coordí  s   € Ø�{Š{˜3œ: s¤zÑ2Ô2Ð2r    c                 óR   — |p|                       ¦   «         }|€dS |j        t          v S ©NF)rJ   ru   Ú_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Ù   )rJ   ru   Ú_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 rX   )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ï   rJ   rM   r>   rD   rK   Ú_parse_abstract_declarator_optÚ _parse_typeid_noparen_declaratorÚ_parse_typeid_declaratorÚ_parse_id_declarator)r   rð   rñ   Ú	name_typerî   rO   rU   rr   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É   rJ   ru   rí   )r   rî   rO   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ê   rZ   s    r   Ú"_starts_direct_abstract_declaratorz*CParser._starts_direct_abstract_declaratorR  s   € Ø�ŠÑ Ô Ð$:Ð:Ð:r    c                 óN   — |                       ¦   «         }|d uo|j        t          v S rX   )rJ   ru   Ú_ASSIGNMENT_OPSrÈ   s     r   Ú_is_assignment_opzCParser._is_assignment_opU  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_nameY  sŸ   € ð �zŠz‰|Œ|ˆØ—\’\ (Ñ+Ô+ˆ
ØÐØ�4Ø×'Ò'Ñ)Ô)ð 	Ø�KŠK˜ÑÔÐØ�4Ø×#Ò#Ñ%Ô%ˆØ�<Š<˜Ñ!Ô!Ð)Ø�KŠK˜ÑÔÐØ�4Ø�D˜*Ð$Ð$r    c                 óž   — |                       ¦   «         €t          j        g ¦  «        S t          j        |                      ¦   «         ¦  «        S rX   )rJ   r   ÚFileASTÚ_parse_translation_unitrZ   s    r   rI   z(CParser._parse_translation_unit_or_emptyt  s<   € Ø�:Š:‰<Œ<ÐÝ”= Ñ$Ô$Ð$ÝŒ}˜T×9Ò9Ñ;Ô;Ñ<Ô<Ð<r    c                 ó¨   — g }|                       ¦   «         �;|                     |                      ¦   «         ¦  «         |                       ¦   «         ­;|S rX   )rJ   ÚextendÚ_parse_external_declaration)r   Úexts     r   r
  zCParser._parse_translation_unitz  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|                      ¦   «         S |                      |¦  «        s¦|                      ¦   «         }d }|                      ¦   «         dk    r|  	                    d|j
        ¦  «         t          g g g t          j        dg|j
        ¬¦  «        gg ¬	¦  «        }|                      ||||                      ¦   «         ¬
¦  «        }|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 t          |d d ¬¦  «        }|                      d¦  «        r|                      ¦   «         |d<   |                      |¬¦  «        }
|                      ||
d¬¦  «        }
|                      d¦  «         |
S )NÚPPHASH¾   Ú_PRAGMAÚPPPRAGMAÚSEMIÚ_STATIC_ASSERTÚLBRACEzInvalid function definitionr'   r   )r“   r–   r”   ru   r•   )r˜   rr   rµ   r¶   T©Úallow_no_typerè   ru   r¸   ÚEQUALSr¥   )Úfirstr¹   )rJ   ru   Ú_parse_pp_directiveÚ_parse_pppragma_directiverÍ   Ú_parse_static_assertrÛ   rö   rÅ   rK   rU   r?   r   r‡   r»   Ú_parse_compound_statementÚ_parse_declaration_specifiersrï   Ú_parse_decl_body_with_specrÏ   Ú_parse_declaration_listÚ_parse_initializerÚ_parse_init_declarator_listr´   )r   rO   rr   rµ   r˜   ÚfuncÚsaw_typeÚ
spec_coordr÷   Ú_rš   Ú	decl_dicts               r   r  z#CParser._parse_external_declaration†  s\  € Ø�jŠj‰lŒlˆØˆ;ØˆIØŒ8�xÒÐØ×$Ò$Ñ&Ô&Ð&ØˆIØŒ8Ð.Ð.Ð.Ø×2Ò2Ñ4Ô4Ð5Ð5Ø�<Š<˜ÑÔð 	ØˆIØŒ8Ð'Ò'Ð'Ø×,Ò,Ñ.Ô.Ð.à×'Ò'¨Ñ,Ô,ð 	ð ×,Ò,Ñ.Ô.ˆDØˆKØ�ŠÑ Ô  HÒ,Ð,Ø×!Ò!Ð"?ÀÄÑLÔLÐLÝ"ØØØÝÔ*¨E¨7¸$¼*ÐEÑEÔEÐFØðñ ô ˆ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å!%¨4°dÀDÐ!IÑ!IÔ!Iˆ	Ø�<Š<˜Ñ!Ô!ð 	:Ø $× 7Ò 7Ñ 9Ô 9ˆI�fÑØ×0Ò0°yÐ0ÑAÔAˆØ×(Ò(¨d¸%ÐSWÐ(ÑXÔXˆØ�Š�VÑÔÐØˆr    c                 óX   — |                       ¦   «         }|                      d¦  «         |S ©Nr  )Ú_parse_decl_bodyrÏ   ©r   rš   s     r   Ú_parse_declarationzCParser._parse_declarationÜ  s*   € Ø×%Ò%Ñ'Ô'ˆØ�Š�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                 óx  — 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}nB|  
                    |t          d d d ¬¦  «        gd¬¦  «        }n|  
                    ||d¬¦  «        }|S )NT©rä   ru   r   r   r“   r–   r”   r•   r¦   r¸   r¹   )rë   r#  r   rª   r«   r©   r]   rv   r­   rU   r´   r?   )r   r˜   r%  rš   ÚtyÚs_u_or_es         r   r   z"CParser._parse_decl_body_with_specè  s`  € ð ˆØð 	GØ×&Ò&Ñ(Ô(ð ;Ø×8Ò8Ñ:Ô:�øà×&Ò&¨tÐ&Ñ4Ô4ð GØ×8Ò8ÀÐ8ÑFÔF�àˆ=Ø�f”ˆBÝœ¥e¤kµ5´:Ð>ˆHÝ�2‰wŒw˜!Š|ˆ|¥
¨2¨a¬5°(Ñ ;Ô ;ˆ|å”JØ!Ø" 6œlØ" ;Ô/Ø $ Y¤Ø!% jÔ!1Ø œUØ!Ø $Ø  œeœkð
ñ 
ô 
ð��ð ×0Ò0ØÝ T°¸dÐCÑCÔCÐDØ&*ð 1ñ ô ��ð ×,Ò,Ø ¸$ð -ñ ô ˆEð ˆr    c                 ó¨   — g }|                       ¦   «         r;|                     |                      ¦   «         ¦  «         |                       ¦   «         °;|S rX   )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–   ©rY   Ú_ATOMICr    rç   ru   r“   r”   r•   r   ré   ¾   ÚUNIONÚSTRUCTÚENUMr¢   r~   )rJ   ru   rM   r™   Ú_parse_alignment_specifierrÅ   Ú_parse_atomic_specifierrû   rÉ   rL   Ú_STORAGE_CLASSÚ_FUNCTION_SPECÚ_TYPE_SPEC_SIMPLEr   r‡   Ú _parse_struct_or_union_specifierÚ_parse_enum_specifierrK   r>   rD   )r   r  r˜   r%  Úfirst_coordrO   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 )NFTr5  r–   r6  r7  r    rç   ru   r“   r   ré   r8  r;  zInvalid specifier listr~   r”   r•   )rJ   ru   rM   r™   r<  rÅ   r=  rû   rÉ   rL   r@  r   r‡   rA  rB  rK   r>   rD   rd   )r   r˜   r%  Úsaw_alignmentrC  rO   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 rX   )rÅ   rû   rY   rÉ   rL   )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 )Nr5  rç   rú   )rÏ   rÛ   r  r   ÚAlignasrM   Ú_parse_constant_expression)r   rO   r‰   Úexprs       r   r<  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 )Nr7  rç   rú   Ú_Atomic)rÏ   r  r†   rY   )r   r‰   s     r   r=  zCParser._parse_atomic_specifier  sd   € Ø�Š�YÑÔÐØ�Š�XÑÔÐØ×#Ò#Ñ%Ô%ˆØ�Š�XÑÔÐØŒ	×Ò˜Ñ#Ô#Ð#Øˆ
r    r  c                 óä   — |�|gn|                       |¬¦  «        g}|                      d¦  «        r>|                     |                       |¬¦  «        ¦  «         |                      d¦  «        °>|S )Nr0  ÚCOMMA)Ú_parse_init_declaratorrÍ   rY   )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|                      ¦   «         }t	          ||d ¬¦  «        S )Nr  r¸   )rö   Ú_parse_declaratorrÍ   r"  r?   )r   rä   rr   r¥   s       r   rQ  zCParser._parse_init_declarator'  sh   € Ø.5ÐSˆt×(Ò(Ñ*Ô*Ð*¸4×;QÒ;QÑ;SÔ;SˆØˆØ�<Š<˜Ñ!Ô!ð 	-Ø×*Ò*Ñ,Ô,ˆDÝ˜ D°$Ð7Ñ7Ô7Ð7r    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š   rU   z Invalid struct/union declaration)	rÉ   r¿   rL   rÅ   rÍ   rM   Ú_parse_struct_declaration_listrÏ   rK   )r   rO   ÚklassÚname_tokrš   Ú	brace_toks         r   rA  z(CParser._parse_struct_or_union_specifier3  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>   NrU  )rÅ   Ú_parse_struct_declarationr  )r   rš   Úitemss      r   rV  z&CParser._parse_struct_declaration_listT  sg   € ØˆØ�oŠoÑÔÐ'7Ð7Ð7Ø×2Ò2Ñ4Ô4ˆEØˆ}ØØ�LŠL˜ÑÔÐð	 �oŠoÑÔÐ'7Ð7Ð7ð
 ˆr    c                 ó”  — |                       ¦   «         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    r||d         d	         }t          |t          j        ¦  «        r|}nt          j        |¦  «        }|                      d¦  «         |                      |t          |d d ¬
¦  «        g¬¦  «        S |                      d¦  «         |                      |t          d d d ¬
¦  «        g¬¦  «        S )Nr  r  rž   r”   ÚCOLON©r˜   rš   ru   r   r   r¸   )rÅ   rÉ   r  rF  rd   rë   Ú_parse_struct_declarator_listrÏ   r´   r]   rv   r   ÚNoder‡   r?   )r   r˜   rš   ÚnodeÚ	decl_types        r   r\  z!CParser._parse_struct_declaration`  sÐ  € Ø�?Š?ÑÔ Ò&Ð&Ø�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˜Ñ Ô Ð Ø×+Ò+Ø¥$¨I¸DÈ$Ð"OÑ"OÔ"OÐ!Pð ,ñ ô ð ð 	�Š�VÑÔÐØ×'Ò'Ø�d¨°4ÀÐFÑFÔFÐGð (ñ 
ô 
ð 	
r    c                 óÒ   — |                       ¦   «         g}|                      d¦  «        r<|                     |                       ¦   «         ¦  «         |                      d¦  «        °<|S ©NrP  )Ú_parse_struct_declaratorrÍ   rY   r,  s     r   ra  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Í   rK  r   rw   rS  )r   rŸ   rr   s      r   rg  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 )Nr;  >   rè   ré   r  rU  )rÏ   rÅ   rÉ   Ú_parse_enumerator_listr   r©   rL   rM   )r   rO   rX  Úenumss       r   rB  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 )NrP  rU  )Ú_parse_enumeratorr   ÚEnumeratorListrU   rÍ   rÅ   ÚenumeratorsrY   )r   ÚenumÚ	enum_lists      r   rj  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Í   rK  r   Ú
EnumeratorrL   rM   rh   r`   rU   )r   rX  rL   rp  s       r   rm  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   rr   r'  s      r   rS  zCParser._parse_declaratorÆ  s8   € Ø×,Ò,Ø ¸5ð -ñ 
ô 
‰ˆˆað ÐÐÐØˆr    c                 ó0   — |                       dd¬¦  «        S )Nrƒ   T©r�   Úallow_paren©Ú_parse_declarator_kindrZ   s    r   rö   zCParser._parse_id_declaratorÎ  s   € Ø×*Ò*°À$Ð*ÑGÔGÐGr    c                 ó0   — |                       dd¬¦  «        S )NÚtypeidTrw  ry  rZ   s    r   rõ   z CParser._parse_typeid_declaratorÒ  s   € Ø×*Ò*°ÀdÐ*ÑKÔKÐKr    c                 ó0   — |                       dd¬¦  «        S )Nr|  Frw  ry  rZ   s    r   rô   z(CParser._parse_typeid_noparen_declaratorÖ  s   € Ø×*Ò*°ÀeÐ*ÑLÔLÐLr    rx  c                 óÀ   — d }|                       ¦   «         dk    r|                      ¦   «         }|                      ||¬¦  «        }|�|                      ||¦  «        S |S )Nræ   ©rx  )rÅ   Ú_parse_pointerÚ_parse_direct_declaratorr{   )r   r�   rx  ÚptrÚdirects        r   rz  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Í   rz  rÏ   r   rw   rL   rM   Ú_parse_decl_suffixes)r   r�   rx  rr   rX  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Å   r{   Ú_parse_array_declÚ_parse_function_decl)r   rr   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_typerU   )Ú_parse_array_decl_commonrU   )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)ru   ÚdimÚ	dim_qualsrU   )r   Ú	ArrayDecl)r�  r‘  rŒ  rU   s     €€r   Úmake_array_declz9CParser._parse_array_decl_common.<locals>.make_array_decl  s%   ø€ Ý”?Ø C°9ÀEðñ ô ð r    ÚSTATICÚstaticÚRBRACKETræ   )rÏ   rM   rÍ   rH  Ú_parse_assignment_expressionrÅ   rû   r   rè   rL   rÞ   )r   rŒ  rU   Ú
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ú   ©Úargsru   rU   r  r`   )rÏ   rÍ   rÛ   Ú_parse_parameter_type_listÚ_parse_identifier_list_optr   rˆ   rU   rÅ   rœ  Úparamsrv   ÚEllipsisParamÚgetattrrh   )r   r‰  rœ  r$  Úparamr`   s         r   rˆ  zCParser._parse_function_declF  s  € Ø�Š�XÑÔÐØ�<Š<˜Ñ!Ô!ð 	#ØˆDˆDð ×+Ò+Ñ-Ô-ð7�×/Ò/Ñ1Ô1Ð1à×4Ò4Ñ6Ô6ð ð
 �LŠL˜Ñ"Ô"Ð"åŒ~ 4¨d¸)¼/ÐJÑJÔJˆà�?Š?ÑÔ Ò(Ð(ØŒyÐ$Ø!œYÔ-ð @ð @�EÝ! %­Ô)<Ñ=Ô=ð Ø˜Ý" 5¨&°$Ñ7Ô7�DØð @Ø×,Ò,¨T°5´;Ñ?Ô?Ð?øàˆr    c                 ó0  — g }|                       d¦  «        }|rW|                      ¦   «         pg }|                     ||                      |¦  «        f¦  «         |                       d¦  «        }|°W|sd S d }|D ]\  }}t	          j        |||¬¦  «        }Œ|S )Nræ   )r†   ru   rU   )rÍ   rH  rY   rM   r   ÚPtrDecl)r   Ústarsr™  r†   r‚  rU   s         r   r€  zCParser._parse_pointer`  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 ©NrP  r    ÚELLIPSIS)Ú_parse_parameter_listrÅ   rÉ   rŸ  rY   r   r   rM   )r   rŸ  Úell_toks      r   r�  z"CParser._parse_parameter_type_listq  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   Ú	ParamListrU   rÅ   rÉ   rŸ  rY   ©r   r  rŸ  s      r   r©  zCParser._parse_parameter_listz  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<   |                      ¦   «         ra|                      dd¬¦  «        \  }}|r.|                      |t          |d d ¬¦  «        g¬¦  «        d	         S |                      |||¦  «        S |                      ¦   «         }|                      |||¦  «        S )
NTr  ru   r'   r   ru  r¸   r`  r   )	r  r   r‡   rë   rø   r´   r?   Ú_build_parameter_declarationró   )r   r˜   r'  r&  rr   Ú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�(ð ð Ø×/Ò/Ø¥d°¸4ÈÐ&NÑ&NÔ&NÐ%Oð 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    r~t          |d         d         j        ¦  «        dk    rZ|                      |d         d         j        d         ¦  «        r.|                      |t	          |d d ¬¦  «        g¬¦  «        d         S t          j        d|d         d |pt          j        d d d d ¦  «        |¬	¦  «        }|                      ||d         ¦  «        S )
Nru   r   rb   r   r¸   r`  r-   r“   ©r`   r†   r¤   ru   rU   )	r]   r�   rm   r´   r?   r   ÚTypenamerw   r‹   )r   r˜   rr   r&  s       r   r°  z$CParser._build_parameter_declaration—  sû   € õ ��V”ÑÔ Ò!Ð!Ý�D˜”L Ô$Ô*Ñ+Ô+¨qÒ0Ð0Ø×&Ò& t¨F¤|°BÔ'7Ô'=¸aÔ'@ÑAÔAð 1ð ×+Ò+Ø¥$¨D°tÀTÐ"JÑ"JÔ"JÐ!Kð ,ñ ô àôð õ Œ~ØØ�v”,ØØÐ?�œ¨¨d°D¸$Ñ?Ô?Øð
ñ 
ô 
ˆð ×'Ò'¨¨d°6¬lÑ;Ô;Ð;r    c                 ó^   — |                       ¦   «         dk    rd S |                      ¦   «         S ©Nrú   )rÅ   Ú_parse_identifier_listrZ   s    r   rž  z"CParser._parse_identifier_list_opt­  s.   € Ø�?Š?ÑÔ Ò(Ð(Ø�4Ø×*Ò*Ñ,Ô,Ð,r    c                 ó  — |                       ¦   «         }t          j        |g|j        ¦  «        }|                      d¦  «        rA|j                             |                       ¦   «         ¦  «         |                      d¦  «        °A|S rf  )Ú_parse_identifierr   r­  rU   rÍ   rŸ  rY   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 )Nru   r   r-   r“   r³  )rF  ró   rU   r   r´  rw   r   r‹   )r   r˜   rr   rU   r|   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   rw   r{   )r   r‚  rr   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ˆ   rw   rM   ró   Ú_parse_abstract_array_baserK   r>   rD   r…  )r   r  rŸ  rr   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�  rZ   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   rw   rZ   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xdk    rn	xdk    rn n  |                      ¦   «         S dk    r|                      ¦   «         S 	 |                      ¦   «         S )NÚCASEÚDEFAULTrè   r    r_  r  ÚIFÚSWITCHÚWHILEÚDOÚFORÚGOTOÚBREAKÚCONTINUEÚRETURNr  r  r  )	rÅ   Ú_parse_labeled_statementr  Ú_parse_selection_statementÚ_parse_iteration_statementÚ_parse_jump_statementr  r  Ú_parse_expression_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˜iØ×5Ò5Ñ7Ô7Ð7Ø!Ò!Ð!Ø×0Ò0Ñ2Ô2Ð2ØØ×7Ò7Ñ9Ô9Ð9r    c                 óð   — |                       ¦   «         dv rM|                      ¦   «         }|                      ¦   «         }t          j        ||gz   |d         j        ¬¦  «        S |                      ¦   «         S )Nr  r   ©Úblock_itemsrU   )rÅ   Ú_parse_pppragma_directive_listrÓ  r   ÚCompoundrU   )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                 óz   — |                       ¦   «         r|                      ¦   «         S |                      ¦   «         S rX   )rÛ   r-  rÓ  rZ   s    r   Ú_parse_block_itemzCParser._parse_block_item,  s:   € Ø×#Ò#Ñ%Ô%ð 	-Ø×*Ò*Ñ,Ô,Ð,Ø×$Ò$Ñ&Ô&Ð&r    c                 ó  — g }|                       ¦   «         dvrr|                      ¦   «         }t          |t          ¦  «        r|d gk    rŒG|                     |¦  «         n|                     |¦  «         |                       ¦   «         dv°r|S r[  )rÅ   rÝ  rv   Úlistr  rY   )r   r]  Úitems      r   Ú_parse_block_item_listzCParser._parse_block_item_list2  s”   € ØˆØ�oŠoÑÔÐ'7Ð7Ð7Ø×)Ò)Ñ+Ô+ˆDÝ˜$¥Ñ%Ô%ð #Ø˜D˜6’>�>ØØ—’˜TÑ"Ô"Ð"Ð"à—’˜TÑ"Ô"Ð"ð �oŠoÑÔÐ'7Ð7Ð7ð ˆr    c                 óL  — |                       d¦  «        }|                      d¦  «        r)t          j        d |                      |¦  «        ¬¦  «        S |                      ¦   «         }|                       d¦  «         t          j        ||                      |¦  «        ¬¦  «        S )Nr  rU  rÕ  )rÏ   rÍ   r   rØ  rM   rá  )r   Ú
lbrace_tokrÖ  s      r   r  z!CParser._parse_compound_statement?  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   ÚEmptyStatementrM   ÚLabelrL   rK  ÚCaseÚDefaultrK   r>   rD   )r   râ   rX  rÚ  Úcase_tokrL  Údef_toks          r   rÎ  z CParser._parse_labeled_statementL  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É   ru   rÏ   Ú_parse_expressionrÛ  rÍ   r   ÚIfrM   r   ÚSwitchrK   )r   rO   ÚcondÚ	then_stmtÚ	else_stmtrL  rÚ  s          r   rÏ  z"CParser._parse_selection_statementm  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           	      óV  — |                       ¦   «         }|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¦  «         |  	                    ¦   «         rÍ|  
                    ¦   «         }t          j        ||                      |¦  «        ¦  «        }|                      ¦   «         }|                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      ¦   «         }t          j        |||||                      |¦  «        ¦  «        S |                      ¦   «         }|                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      ¦   «         }t          j        |||||                      |¦  «        ¦  «        S 	 |                      d|                      |¦  «        ¦  «         d S )NrÇ  rç   rú   rÈ  r  rÉ  zInvalid iteration statement)rÉ   ru   rÏ   rí  rÛ  r   ÚWhilerM   ÚDoWhilerÛ   r-  ÚDeclListÚ_parse_expression_optÚForrK   )r   rO   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Ñ&Ô&Ð&Ø×+Ò+Ñ-Ô-ð XØ ×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É   ru   rÏ   r   ÚGotorL   rM   ÚBreakÚContinuerÍ   ÚReturnrí  rK   )r   rO   rX  rL  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 r*  )r÷  rÏ   r   rå  rM   )r   rL  Úsemi_toks      r   rÒ  z#CParser._parse_expression_statementÇ  sK   € Ø×)Ò)Ñ+Ô+ˆØ—<’< Ñ'Ô'ˆØˆ<ÝÔ'¨¯ª¸Ñ(AÔ(AÑBÔBÐBØˆr    c                 óV   — |                       ¦   «         r|                      ¦   «         S d S rX   )rÞ   rí  rZ   s    r   r÷  zCParser._parse_expression_optÒ  s-   € Ø×"Ò"Ñ$Ô$ð 	,Ø×)Ò)Ñ+Ô+Ð+Øˆtr    c                 óZ  — |                       ¦   «         }|                      d¦  «        s|S ||                       ¦   «         g}|                      d¦  «        r<|                     |                       ¦   «         ¦  «         |                      d¦  «        °<t          j        ||j        ¦  «        S rf  ©r—  rÍ   rY   r   ÚExprListrU   ©r   rL  Ú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  rL   r—  r   Ú
AssignmentrU   )r   ÚcomprL  Ú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   Ú	TernaryOprU   )r   rL  Ú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 rX   )
Ú_parse_cast_expressionrJ   ru   Ú_BINARY_PRECEDENCErL   rÉ   r  r   ÚBinaryOprU   )	r   r  r  rO   Ú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   ÚCastrM   Ú_parse_unary_expression)r   Úresultr‰   rÑ   r  rL  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   ÚUnaryOprL   rU   r  r  rM   rÏ   r  Ú_parse_postfix_expression)r   râ   rO   rL  r  r‰   r'  s          r   r  zCParser._parse_unary_expression4  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                 óH  — |                       ¦   «         }|�ƒ|\  }}}|                      d¦  «        rS|                      ¦   «         }|                      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  rP  rU  Trÿ   r–  rç   rú   >   ÚARROWÚPERIOD>   rè   ré   zInvalid struct referencer!  Úp)r  rÍ   Ú_parse_initializer_listrÏ   r   ÚCompoundLiteralrÖ   Ú_parse_primary_expressionrí  ÚArrayRefrU   rÅ   rÉ   Ú_parse_argument_expression_listÚFuncCallru   rK   rM   rè   rL   Ú	StructRefr+  )r   r  r‰   rÑ   r'  r¥   rL  Úsubrœ  Úop_tokrX  ÚfieldrO   s                r   r,  z!CParser._parse_postfix_expressionT  s^  € Ø×0Ò0Ñ2Ô2ˆØÐØ!‰LˆC��qð �|Š|˜HÑ%Ô%ð "Ø×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 |t          v r|  	                    ¦   «         S |dk    r?|  
                    ¦   «          |                      ¦   «         }|                      d¦  «         |S |dk    rÓ|  
                    ¦   «         }|                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      |¦  «        }t!          j        t!          j        |j        |¦  «        t!          j        ||g|¦  «        |¦  «        S |                      d| j        j        ¦  «         d S )Nrè   rç   rú   ÚOFFSETOFrP  zInvalid expression)rÅ   r¹  Ú
_INT_CONSTÚ_FLOAT_CONSTÚ_CHAR_CONSTÚ_parse_constantÚ_STRING_LITERALÚ_parse_unified_string_literalÚ_WSTR_LITERALÚ_parse_unified_wstring_literalrÉ   rí  rÏ   r  Ú!_parse_offsetof_member_designatorrM   r   r6  rè   rL   r  rK   r>   rD   )r   râ   rL  Úoff_tokr‰   Ú
designatorrU   s          r   r3  z!CParser._parse_primary_expression†  s¼  € Ø—?’?Ñ$Ô$ˆØ�tÒÐØ×)Ò)Ñ+Ô+Ð+à�
Ð"Ð"Ø�<Ð'Ð'Ø�;Ð&Ð&à×'Ò'Ñ)Ô)Ð)Ø•Ð&Ð&Ø×5Ò5Ñ7Ô7Ð7Ø•}Ð$Ð$Ø×6Ò6Ñ8Ô8Ð8Ø�xÒÐØ�MŠM‰OŒOˆOØ×)Ò)Ñ+Ô+ˆDØ�LŠL˜Ñ"Ô"Ð"ØˆKØ�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                 ór  — |                       ¦   «         }	 |                      d¦  «        r1|                       ¦   «         }t          j        |d||j        ¦  «        }ŒG|                      d¦  «        rE|                      ¦   «         }|                      d¦  «         t          j        |||j        ¦  «        }Œ¡	 |S )NTr/  ú.rÿ   r–  )Ú_parse_identifier_or_typeidrÍ   r   r7  rU   rí  rÏ   r4  )r   rc  r:  rL  s       r   rE  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 rf  r  r  s      r   r5  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 rX   )r  rZ   s    r   rK  z"CParser._parse_constant_expressionÃ  s   € Ø×1Ò1Ñ3Ô3Ð3r    c                 ó†   — |                       d¦  «        }t          j        |j        |                      |¦  «        ¦  «        S )Nrè   )rÏ   r   rè   rL   rM   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É   ru   rK   rM   r   rè   rL   rÈ   s     r   rJ  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'   rb   )ÚfÚFÚfloatzlong doubleÚdoubleÚcharzInvalid constant)rÉ   ru   r=  rL   Ú
ValueErrorr   ÚConstantrM   r>  r?  rK   )r   rO   Ú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                 ó\  — |                       d¦  «        }t          j        d|j        |                      |¦  «        ¦  «        }|                      ¦   «         dk    rP|                      ¦   «         }|j        d d…         |j        dd …         z   |_        |                      ¦   «         dk    °P|S )NÚSTRING_LITERALÚstringrb   r   )rÏ   r   r[  rL   rM   rÅ   rÉ   ©r   rO   rc  Útok2s       r   rB  z%CParser._parse_unified_string_literalö  s—   € Ø�lŠlÐ+Ñ,Ô,ˆÝŒ~˜h¨¬	°4·?²?À3Ñ3GÔ3GÑHÔHˆØ�oŠoÑÔÐ#3Ò3Ð3Ø—=’=‘?”?ˆDØœ C R Cœ¨4¬:°a°b°b¬>Ñ9ˆDŒJð �oŠoÑÔÐ#3Ò3Ð3ð ˆr    c                 óø  — |                       ¦   «         }|j        t          vr)|                      d|                      |¦  «        ¦  «         t          j        d|j        |                      |¦  «        ¦  «        }|                      ¦   «         t          v re|                       ¦   «         }|j         	                    ¦   «         d d…         |j        dd …         z   |_        |                      ¦   «         t          v °e|S )NzInvalid string literalrb  rb   r    )
rÉ   ru   rC  rK   rM   r   r[  rL   rÅ   Úrstriprc  s       r   rD  z&CParser._parse_unified_wstring_literalÿ  sÍ   € Ø�mŠm‰oŒoˆØŒ8�=Ð(Ð(Ø×ÒÐ6¸¿ºÈÑ8LÔ8LÑMÔMÐMÝŒ~˜h¨¬	°4·?²?À3Ñ3GÔ3GÑHÔHˆØ�oŠoÑÔ¥=Ð0Ð0Ø—=’=‘?”?ˆDØœ×*Ò*Ñ,Ô,¨S¨b¨SÔ1°D´J¸q¸r¸r´NÑBˆDŒJð �oŠoÑÔ¥=Ð0Ð0ð ˆr    c                 óR  — |                       d¦  «        }|r}|                       d¦  «        r(t          j        g |                      |¦  «        ¦  «        S |                      ¦   «         }|                       d¦  «         |                      d¦  «         |S |                      ¦   «         S )Nr  rU  rP  )rÍ   r   ÚInitListrM   r1  rÏ   r—  )r   rã  Ú	init_lists      r   r"  zCParser._parse_initializer  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 )NrP  rU  r   )Ú_parse_initializer_itemrÍ   rÅ   rY   r   rh  rU   )r   r]  s     r   r1  zCParser._parse_initializer_list  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   rk  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   rn  zCParser._parse_designation/  s+   € Ø×1Ò1Ñ3Ô3ˆØ�Š�XÑÔÐØÐr    c                 ó°   — g }|                       ¦   «         dv r=|                     |                      ¦   «         ¦  «         |                       ¦   «         dv °=|S rm  )rÅ   rY   Ú_parse_designatorrs  s     r   rr  zCParser._parse_designator_list5  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Í   rK  rÏ   rJ  rK   r>   rD   )r   rL  s     r   rv  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Ï   rK   rM   rÈ   s     r   r  zCParser._parse_pp_directiveJ  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   ÚPragmarL   rM   rÏ   rB  rK   r>   rD   )r   rO   Ústr_tokÚlparenÚliterals        r   r  z!CParser._parse_pppragma_directiveP  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Å   rY   r  )r   rÙ  s     r   r×  z&CParser._parse_pppragma_directive_listb  sX   € ØˆØ�oŠoÑÔÐ#:Ð:Ð:Ø�NŠN˜4×9Ò9Ñ;Ô;Ñ<Ô<Ð<ð �oŠoÑÔÐ#:Ð:Ð:àˆr    c                 óR  — |                       d¦  «        }|                       d¦  «         |                      ¦   «         }d }|                      d¦  «        r|                      ¦   «         }|                       d¦  «         t	          j        |||                      |¦  «        ¦  «        gS )Nr  rç   rP  rú   )rÏ   rK  rÍ   rB  r   ÚStaticAssertrM   )r   rO   rð  rT   s       r   r  zCParser._parse_static_asserti  s—   € Ø�lŠlÐ+Ñ,Ô,ˆØ�Š�XÑÔÐØ×.Ò.Ñ0Ô0ˆØˆØ�<Š<˜Ñ Ô ð 	7Ø×4Ò4Ñ6Ô6ˆCØ�Š�XÑÔÐÝÔ" 4¨¨d¯oªo¸cÑ.BÔ.BÑCÔCÐDÐDr    )r-   FrX   )r   N)F©r   )FF)r   r�   rÙ   )r   r›   )T)r   N)�r!   r"   r#   r$   r   Úboolru   r%   rC   r   r	  rP   r'   r	   r   rS   r   rK   r[   r_   rf   rh   rm   r:   r;   r<   r=   r   rb  r{   r­   r¬   r´  r   r‹   r™   r´   r»   r¿   r   rJ   rÅ   rÉ   rÍ   rÏ   rÒ   rÖ   rM   rÛ   rÞ   rã   rë   r
   rï   rø   rí   r   r  r  rI   r
  r  r-  r+  r   r!  r  rF  rH  r<  r=  r#  rQ  rA  rV  r\  ra  rg  rB  rj  rm  rS  rö   rõ   rô   rz  r�  r…  r‡  r�  rˆ  r€  r­  r�  r©  r¬  r°  rž  r·  r  ró   r¼  r¾  r¿  rÓ  rÛ  rÝ  rá  r  rÎ  rÏ  rÐ  rÑ  rÒ  r÷  rí  r—  r  r  r  r  r,  r3  rE  r5  rK  r¹  rJ  r@  rB  rD  r"  r1  rk  rn  rr  rv  r  r  r×  r  r(   r    r   r,   r,   2   só  € € € € € ð	ð 	ð "Ø$Ø(Ø"Ø*Ø Øð=ð =àð=ð �FŒ|ð=ð ð	=ð
 ð=ð ð=ð ð=ð ð=ð 
ð=ð =ð =ð =ð: <Aðð ØðØ#&ðØ48ðà	Œðð ð ð ð8Jð J˜Sð J¨(°3¬-ð JÀ5ð Jð Jð Jð Jð, ð ,¨E°C©K¸$Ñ,>ð ,À8ð ,ð ,ð ,ð ,ð)ð )ð )ð )ð ð  ð  ð  ð+ cð +°(¸5´/ð +Àdð +ð +ð +ð +ð	, Cð 	,°¸´ð 	,ÀDð 	,ð 	,ð 	,ð 	,ð cð ¨dð ð ð ð ð: 3ð :¨cð :¸3ð :À4ð :ð :ð :ð :ðð ð ð ðð ð ð ð,¨#ð ,°$ð ,ð ,ð ,ð ,ðT cð °Sð ¸U¼Zð ð ð ð ðX&àŒj˜5œ=Ñ(¨5¬>Ñ9ð&ð �s”)ð&ð 
Œ�e”mÑ	# e¤nÑ	4ð	&ð &ð &ð &ðZ ðð à˜;Ô'ðð ðð ð	ð
 ðð 
ðð ð ð ð4 #(ð	eð eàðeð �KÔ ðeð  ð	eð
 
ˆeŒjÔ	ðeð eð eð eðN
àð
ð Œjð
ð ˜d 5¤:Ô.Ô/ð	
ð
 Œjð
ð 
Œð
ð 
ð 
ð 
ð*°ð ¸ð ð ð ð ð$ð $�sð $ 8¨FÔ#3ð $ð $ð $ð $ð5ð 5˜Cð 5¨°¬ð 5ð 5ð 5ð 5ð
˜&ð ð ð ð ð	 #ð 	¨(°6Ô*:ð 	ð 	ð 	ð 	ð #ð ¨&ð ð ð ð ð#�sð #ð #ð #ð #ð!˜3ð ! 4ð !ð !ð !ð !ð3˜fð 3¨ð 3ð 3ð 3ð 3ð'ð ' x°Ô'7ð 'À4ð 'ð 'ð 'ð 'ð.ð . h¨vÔ&6ð .À$ð .ð .ð .ð .ð) 4ð )ð )ð )ð )ð,ð ,¨$ð ,¸4ð ,ð ,ð ,ð ,ð#¨E°(¸3´-ÀÐ2EÔ,Fð #ð #ð #ð #ð NSðð Ø"ðØFJðà	ˆx˜œ
Ô# TÐ)Ô	*ðð ð ð ð6!¨E°(¸3´-ÀÐ2EÔ,Fð !ð !ð !ð !ðF;°Dð ;ð ;ð ;ð ;ð? 4ð ?ð ?ð ?ð ?ð%à	�%˜œ¨¨VÐ3Ô4Ô	5ð%ð %ð %ð %ð6=°%´-ð =ð =ð =ð =ð¨¨e¬jÔ)9ð ð ð ð ðM¨T°%´*Ô-=ð Mð Mð Mð Mðl D¨¬Ô$4ð ð ð ð ð? $ u¤zÔ"2ð ?ð ?ð ?ð ?ð'Øð'Ø+/ð'à	ˆeŒjÔ	ð'ð 'ð 'ð 'ðT¨¨e¬jÔ)9ð ð ð ð ð %*ðv+ð v+Ø!ðv+à	ˆ{˜D (¨5¤/Ð1Ô	2ðv+ð v+ð v+ð v+ðv`ð `ð `ð `ðF¨D°¬Ið ð ð ð ð9¨E¬Jð 9ð 9ð 9ð 9ð¨¬ð ð ð ð ð DIðð Ø˜kÔ*ðØ<@ðà	ˆkÔ	ðð ð ð ð8ð 8¨dð 8¸{ð 8ð 8ð 8ð 8ðT°%´*ð Tð Tð Tð TðB°°U´ZÔ0@ð ð ð ð ð
¨8°D¸¼Ô4DÔ+Eð 
ð 
ð 
ð 
ðD¨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ð IMð7(ð 7(Ø! %¤*Ô-ð7(Ø6>¸u´oð7(à	Œð7(ð 7(ð 7(ð 7(ðt¨e¬jð ¸U¼Zð ð ð ð ð4 ¨¬Ô 4ð ð ð ð ð"¨E¬Oð ð ð ð ð u¤ð ð ð ð ðI¨e¬jð Ið Ið Ið Ið&<Øð<Ø'/°´
Ô';ð<ØIQÐRWÌð<à	Œð<ð <ð <ð <ð,-¨H°U´ZÔ,@ð -ð -ð -ð -ð¨¬
ð ð ð ð ðV %¤.ð Vð Vð Vð Vð(°¸¼Ô0Dð ð ð ð ð$/°5´:ð /ð /ð /ð /ð.1°¸¼Ô0Ið 1ð 1ð 1ð 1ð
¨E¬Jð 
ð 
ð 
ð 
ð: %¤*¨t°E´JÔ/?Ñ"?ð :ð :ð :ð :ð.'°´
¸TÀ%Ä*Ô=MÑ0Mð 'ð 'ð 'ð 'ð' 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ð ð ð ð ð x°´
Ô';ð ð ð ð ð1 5¤:ð 1ð 1ð 1ð 1ð¨e¬jð ð ð ð ð ¨u¬zð ð ð ð ð >Bðð ØðØ&.¨u¬zÔ&:ðà	Œðð ð ð ðD.¨¬
ð .ð .ð .ð .ð*0¨¬ð 0ð 0ð 0ð 0ð@.¨5¬:ð .ð .ð .ð .ðd!D¨5¬:ð !Dð !Dð !Dð !DðJ°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ð@¨u¬zð ð ð ð ð°´
ð ð ð ð ð 
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@ð ð ð ð ðE d¨5¬:Ô&6ð Eð Eð Eð Eð Eð Er    r,   >   r  ÚOREQUALÚANDEQUALÚDIVEQUALÚMODEQUALÚXOREQUALÚ	PLUSEQUALÚ
MINUSEQUALÚ
TIMESEQUALÚLSHIFTEQUALÚRSHIFTEQUALÚLORÚLANDÚORr    ÚXORé   r$  é   ÚEQé   ÚNEÚGTé   ÚGEÚLTÚLEÚRSHIFTé   ÚLSHIFTr'  é   r(  ræ   é	   ÚDIVIDEÚMOD>   ÚAUTOÚEXTERNr”  ÚTYPEDEFÚREGISTERÚ_THREAD_LOCALÚINLINEÚ	_NORETURN>   ÚCONSTr7  ÚRESTRICTÚVOLATILE>   ÚINTÚCHARÚLONGÚVOIDÚFLOATÚSHORTÚ_BOOLÚDOUBLEÚSIGNEDÚUNSIGNEDÚ_COMPLEXÚ__INT128>   r;  r9  r:  ré   r7  r5  >   rè   r$  r%  r&  r'  r(  ræ   rç   r)  r<  r"  r*  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_CONSTra  >   ÚWSTRING_LITERALÚU8STRING_LITERALÚU16STRING_LITERALÚU32STRING_LITERAL>   rÈ  rÅ  rÉ  rÃ  rÊ  r  rË  rÇ  r  rÍ  rÆ  rÄ  r  rÌ  r  r  c                   ó„   — e Zd ZdZdeddfd„Zddedee         fd„Z	dee         fd	„Z
defd
„Zdeddfd„Zdeddfd„ZdS )rA   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   rC   z_TokenStream.__init__	  s   € ØˆŒØ/1ˆŒØˆŒˆˆ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.peek
	  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.next	  s4   € à�
Š
�1‰ŒˆØŒl˜4œ;Ô'ˆØˆŒ�qÑˆŒØˆ
r    c                 ó   — | j         S rX   ©rÍ  rZ   s    r   rÑ   z_TokenStream.mark"	  s
   € ØŒ{Ðr    rÑ   c                 ó   — || _         d S rX   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 rX   )r]   rÌ  rÍ  rË  r¼   rY   )r   rÕ  rO   s      r   rÐ  z_TokenStream._fill(	  sy   € Ý�$”,ÑÔ $¤+°¡/Ò1Ð1Ø”+×#Ò#Ñ%Ô%ˆCØŒL×Ò Ñ$Ô$Ð$Øˆ{Ø�õ	 �$”,ÑÔ $¤+°¡/Ò1Ð1Ð1Ð1Ð1Ð1r    r‚  )r!   r"   r#   r$   r   rC   r'   r	   r   rÂ   rÇ   rÑ   rÔ   rÐ  r(   r    r   rA   rA   ÿ  së   € € € € € ðð ð
˜fð ¨ð ð ð ð ð

1ð 
1�cð 
1 (¨6Ô"2ð 
1ð 
1ð 
1ð 
1ð�h˜vÔ&ð ð ð ð ð�cð ð ð ð ð˜#ð  $ð ð ð ð ð�sð ˜tð ð ð ð ð ð r    rA   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”   ru   r•   r–   N)r!   r"   r#   r   r   r&   r(   r    r   r�   r�   6	  s\   € € € € € € Ø
ˆsŒ)€O€O�OØ�#ŒYÐÐÑØ
ˆsŒ)€O€O�OØ�3ŒiÐÐÑØ�CŒyÐÐÑÐÐr    r�   r’   c                   óp   — e Zd ZU eej                 ed<   eej                 ed<   eej                 ed<   dS )r›   rr   r¥   rŸ   N)r!   r"   r#   r	   r   rb  r&   r(   r    r   r›   r›   A	  sM   € € € € € € ð
 �5”:Ô
ÐÐÑØ
�5”:Ô
ÐÐÑØ�e”jÔ!Ð!Ð!Ñ!Ð!Ð!r    r›   N)+Údataclassesr   Útypingr   r   r   r   r   r	   r
   r   r   r-   r   Úc_lexerr   r   Úast_transformsr   r   r   Ú	Exceptionr*   r,   r  r  r>  r?  rû   r@  rÚ   Ú_EXPR_STARTr=  r>  r?  rA  rC  rÝ   rà   rA   r�   r�   r›   r(   r    r   ú<module>rß     sù  ðð "Ð !Ð !Ð !Ð !Ð !ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cð ðð ð ð ð ñ ô ñ „ðð$	ð 	ð 	ð 	ð 	�ñ 	ô 	ð 	ð Eð  Eð  Eð  Eð  Eñ  Eô  Eð  EðDBð ð €ð"Ø	ˆ1ðà
ˆAðð 	ˆ!ðð 
ˆ1ð	ð
 
ˆ1ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð ˆaðð ˆaðð ˆAðð ˆQðð  ˆQð!ð" ˆað#ð$ 
ˆ1ð%ð Ð ð* VÐUÐU€à˜KÐ(€à>Ð>Ð>€ðð ð Ð ð  Øñàñð ñð CÐBÐBñ	Cð ðð ð €ð ð ð €
ð Ð0Ð1€ðð ð €ð $Ð$€ðð ð €ð Øñàñð ñð ñ	ð
 ñð ðð ð Ð ð(.ð .ð .ð .ð .ñ .ô .ð .ðnð ð ð ð �	ñ ô ð ð ÐJÔK€ð"ð "ð "ð "ð "�	ñ "ô "ð "ð "ð "r    