§
    ×‘ÚjF­ ã                   óÄ  — d dl mZ d dlmZ d dl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mZ  ed¬	¦  «         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d/d0hZh d1£Zej         ej!        ej"        ej#        fZ$eez  ez  ez  ez  h d2£z  Z%h d3£Z&h d4£Z'd5d6hZ(d7d8d9œZ)h d:£Z*h d;£Z+e&e'z  e(z  e*z  e+z  e) ,                    ¦   «         z  Z-h d<£Z. G d=„ d>¦  «        Z/ G d?„ d@e
¦  «        Z0edA         Z1 G dB„ dCe
¦  «        Z2dDS )Eé    )ÚCallable)Ú	dataclass)ÚAnyÚLiteralÚNoReturnÚNotRequiredÚOptionalÚ	TypedDictÚcasté   )Úc_ast)Úfix_atomic_specifiersÚfix_switch_cases)ÚCLexerÚDialectÚTokenT)Úslotsc                   óH   — e Zd ZU dZeed<   eed<   dZedz  ed<   defd„ZdS )ÚCoordzkCoordinates of a syntactic element. Consists of:
    - File name
    - Line number
    - Column number
    ÚfileÚlineNÚcolumnÚreturnc                 óP   — | j         › d| j        › �}| j        �|d| j        › �z  }|S )Nú:©r   r   r   )ÚselfÚtexts     ú„/Users/tedpeters/Documents/Projects/Claude Projects/TPC Houses/house-viewer/.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      sc   € € € € € € ðð ð €I€I�IØ
€I€I�IØ€FˆC�$‰JÐÐÑð˜ð ð ð ð ð ð r!   r   c                   ó   — e Zd ZdS )Ú
ParseErrorN)r"   r#   r$   r)   r!   r   r+   r+   .   s   € € € € € Ø€Dr!   r+   c                   ór  — e Zd ZdZdedddddfddœd	ed
ee         d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edeez  dz  defd„ZdÉd„ZdÉd„Zdededz  ddfd„Zdededz  ddfd„Zdedefd „Zded!ed"eddfd#„Zd$ed%ede
j        fd&„Zd$e
j        e
j        z  e
j        z  d'ee
j                 de
j        e
j        z  e
j        z  fd(„Zd)ed*         d+ee
j        z  d,d-dd*fd.„Z d/d*d$e
j        dz  dedz  de
j        fd0„Z!	 dÊd/d*d1ed2         d3edee
j                 fd4„Z"d/d*d$e
j        d5ee
j                 dz  d6e
j        de
j        f
d7„Z#d8edefd9„Z$dËd;ede%dz  fd<„Z&d=e%dz  ddfd>„Z'dËd;ededz  fd?„Z(de%fd@„Z)dAede%dz  fdB„Z*dAede%fdC„Z+defdD„Z,dEeddfdF„Z-d=e%defdG„Z.dÌd=e%dz  defdH„Z/dÌd=e%dz  defdI„Z0defdJ„Z1dÊdKedefdL„Z2de3edz  ef         fdM„Z4	 dÍdNedOede3e
j        dz  ef         fdP„Z5de3edz  ef         fdQ„Z6defdR„Z7defdS„Z8de3e
j        ee%ee         f         dz  fdT„Z9dee
j:                 fdU„Z;dVee
j                 dWee
j:                 dee
j                 fdX„Z<dYe
j        dWee
j:                 de
j        fdZ„Z=d$e
j        e
j        z  e
j        z  d/d*de
j        e
j        z  e
j        z  fd[„Z>de
j        fd\„Z?dee
j                 fd]„Z@dee
j                 fd^„ZAd/d*d$e
j        de
j        fd_„ZBdee
j                 fd`„ZCd1ee
j                 dee
j                 fda„ZDdee
j                 fdb„ZEd/d*dcedee
j                 fdd„ZFd/d*defde„ZGd/d*dee
j                 fdf„ZHdee
j                 fdg„ZI	 dÊdhede3d*eedz  f         fdi„ZJdÎdj„ZKdkede3dleedz  f         fdm„ZLdee         fdn„ZMde
jN        fdo„ZOde
j        fdp„ZPde
jQ        fdq„ZRde
jS        fdr„ZT	 dÏdsed2         dKeded2         fdt„ZUdÊdKedd2fdu„ZVde
j        fdv„ZWdee
j                 fdw„ZXdee
j                 dz  fdx„ZYded2         fdy„ZZdÐdz„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€„Zade
j        fd�„Zbde
j        fd‚„Zcd,edƒede
j        fd„„Zd	 dÑd,edƒede
j        fd…„Zed$e
j        de
j        fd†„Zfd‡e
j        de
j        fdˆ„Zg	 dÌd‰e
j        dz  dedz  de
j        fdŠ„Zhd‡e
j        de
j        fd‹„Zide
j        dz  fdŒ„Zjde
jk        fd�„Zlde
jk        fdŽ„Zmde
j        fd�„Znde
j        fd�„Zod/d*d$e
j        dz  d‘edz  de
j        fd’„Zpde
j        dz  fd“„Zqde
j        fd”„Zrde
j        fd•„Zsde
j        dz  fd–„Ztde
j        fd—„Zude
jk        dz  fd˜„Zvde
j        fd™„Zwde
j        fdš„Zxde
j        fd›„Zyde
j        ee
j                 z  fdœ„Zzdee
j                 fd�„Z{ddžœdŸe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        dz  fd¦„Z‚de
j        fd§„Zƒde
j        fd¨„Z„de
j        fd©„Z…	 dÒd«ed¬e
j        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
j        fd·„Z’de
j“        fd¸„Z”de
j        fd¹„Z•de
j–        fdº„Z—e˜d»ed¼edefd½„¦   «         Z™de
j        fd¾„Zšde
j        fd¿„Z›de
j        fdÀ„Zœdee
j                 fdÁ„Z�dee
j                 fdÂ„Zžde
j        fdÃ„ZŸdefdÄ„Z de
j        fdÅ„Z¡dee
j                 fdÆ„Z¢de
j£        fdÇ„Z¤dS )ÓÚCParsera!  Recursive-descent C parser.

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

    The `lexer` parameter lets you inject a lexer class (defaults to CLexer).
    The positional parameters other than `lexer` are accepted for backward
    compatibility with the old PLY-based parser and are otherwise unused.

    The keyword-only `dialect` parameter selects keyword recognition: "legacy"
    preserves existing behavior, while "c23" enables C23 spellings, predefined
    constants, and other C23-only features.
    Tzpycparser.lextabzpycparser.yacctabFÚ Úlegacy)ÚdialectÚlex_optimizeÚlexerÚlextabÚyacc_optimizeÚyacctabÚ
yacc_debugÚtaboutputdirr0   r   Nc                óœ   —  || j         |¬¦  «        | _        || _        i g| _        d | _        t          | j        j        ¦  «        | _        d S )N)Ú
error_funcr0   )Ú_lex_error_funcÚclexÚ_dialectÚ_scope_stackÚ_typedef_checked_tokenÚ_TokenStreamÚtokenÚ_tokens)	r   r1   r2   r3   r4   r5   r6   r7   r0   s	            r   Ú__init__zCParser.__init__B   s[   € ð "˜EØÔ+Øð
ñ 
ô 
ˆŒ	ð  ˆŒð 57°4ˆÔð 59ˆÔ#Ý%1°$´)´/Ñ%BÔ%BˆŒˆˆr!   r   ÚfilenameÚdebugc                 óL  — i g| _         d| _        | j                             ||¦  «         t	          | j        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;   Úinputr?   r@   rA   Ú _parse_translation_unit_or_emptyÚ_peekÚ_parse_errorÚvalueÚ
_tok_coord)r   r   rC   rD   ÚastÚtoks         r   ÚparsezCParser.parseb   s”   € ð  ˜DˆÔØ&*ˆÔ#ØŒ	�Š˜˜hÑ'Ô'Ð'Ý# D¤I¤OÑ4Ô4ˆŒà×3Ò3Ñ5Ô5ˆØ�jŠj‰lŒlˆØˆ?Ø×ÒÐ4¨¬Ð4Ð4°d·o²oÀcÑ6JÔ6JÑKÔKÐKØˆ
r!   ÚmsgÚcoordc                 ó*   — t          |› d|› �¦  «        ‚)Nz: )r+   )r   rP   rQ   s      r   rJ   zCParser._parse_error~   s   € Ý˜EÐ*Ð* SÐ*Ð*Ñ+Ô+Ð+r!   c                 óH   — | j                              i ¦  «         d | _        d S ©N)r=   Úappendr>   ©r   s    r   Ú_push_scopezCParser._push_scope�   s'   € ØÔ× Ò  Ñ$Ô$Ð$Ø&*ˆÔ#Ð#Ð#r!   c                 óŠ   — t          | j        ¦  «        dk    s
J d¦   «         ‚| j                             ¦   «          d | _        d S )Nr   zCannot pop the global scope)Úlenr=   Úpopr>   rV   s    r   Ú
_pop_scopezCParser._pop_scope…   sJ   € Ý�4Ô$Ñ%Ô%¨Ò)Ð)Ð)Ð+HÑ)Ô)Ð)ØÔ×ÒÑÔÐØ&*ˆÔ#Ð#Ð#r!   Únamec                 óª   — | j         d                              |d¦  «        s|                      d|›d�|¦  «         d| j         d         |<   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=   ÚgetrJ   r>   ©r   r\   rQ   s      r   Ú_add_typedef_namezCParser._add_typedef_nameŠ   sm   € àÔ  Ô$×(Ò(¨¨tÑ4Ô4ð 	Ø×ÒØT˜4ÐTÐTÐTØñô ð ð '+ˆÔ˜"Ô˜dÑ#Ø&*ˆÔ#Ð#Ð#r!   c                 óª   — | j         d                              |d¦  «        r|                      d|›d�|¦  «         d| j         d         |<   d| _        dS )z`Add a new object, function, or enum member name (ie an ID) to the
        current scope
        r^   FzNon-typedef z- previously declared as typedef in this scopeNr_   ra   s      r   Ú_add_identifierzCParser._add_identifier”   so   € ð Ô˜RÔ ×$Ò$ T¨5Ñ1Ô1ð 	Ø×ÒØT˜tÐTÐTÐTØñô ð ð ',ˆÔ˜"Ô˜dÑ#Ø&*ˆÔ#Ð#Ð#r!   c                 óP   — t          | j        ¦  «        D ]}||v r
||         c S ŒdS )z.Is *name* a typedef-name in the current scope?F)Úreversedr=   )r   r\   Úscopes      r   Ú_is_type_in_scopezCParser._is_type_in_scope    sA   € å˜dÔ/Ñ0Ô0ð 	#ð 	#ˆEð �uˆ}ˆ}Ø˜T”{Ð"Ð"Ð"ð àˆur!   r   r   c                 óf   — |                       |t          | j        j        ||¬¦  «        ¦  «         d S ©Nr   )rJ   r   r;   rC   )r   rP   r   r   s       r   r:   zCParser._lex_error_func©   s3   € Ø×Ò˜#�u¨$¬)Ô*<À4ÐPVÐWÑWÔWÑXÔXÐXÐXÐXr!   Ú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   rk   rl   Ú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…         |_        g }|D �]}t          |t          j        ¦  «        r†d}|D ]X}||u rŒ|€'t          |t          j        ¦  «        r|j	        dgdgfvr|  
                    d|j        ¦  «         |j	        d         }ŒYt          j        |j        ||j        ¦  «        |_        |c S t          |t          j        ¦  «        sGt          |¦  «        dk    r|  
                    d|j        ¦  «         n||_        t          |¦  «        c S |                     |j	        ¦  «         �Œ |s\t          |j        t          j        ¦  «        s|  
                    d|j        ¦  «         t          j        dg|j        ¬	¦  «        |_        n&t          j        ||d         j        ¬	¦  «        |_        |S )
z#Fixes a declaration. Modifies decl.NÚsignedÚunsignedz Invalid multiple types specifiedr   r   úMissing type in declarationr(   ©rQ   )ro   r   rp   rn   Údeclnamer\   ÚqualsÚ
BitIntTypeÚIdentifierTypeÚnamesrJ   rQ   ÚwidthrY   r   ÚextendÚFuncDecl)r   rk   ru   Útypr   ÚtnÚ
signednessÚspecs           r   Ú_fix_decl_name_typezCParser._fix_decl_name_typeú   s  € ð ˆÝ˜S¥%¤.Ñ1Ô1ð 	Ø”(ˆCõ ˜S¥%¤.Ñ1Ô1ð 	ð ”LˆŒ	Ø”J˜q˜q˜q”MˆŒ	ð ˆØð 	#ñ 	#ˆBÝ˜"�eÔ.Ñ/Ô/ð Ø!�
Ø$ð /ð /�DØ˜r�z�zØ à"Ð.Ý)¨$µÔ0DÑEÔEð /àœ:¨x¨j¸:¸,Ð-GÐGÐGà×)Ò)Ø>ÀÄ
ñô ð ð "&¤¨A¤�J�Jõ !Ô+¨B¬H°jÀ"Ä(ÑKÔK�”Ø���å˜b¥%Ô"6Ñ7Ô7ð 7Ý�x‘=”= 1Ò$Ð$Ø×%Ò%Ð&HÈ"Ì(ÑSÔSÐSÐSà!�C”Hõ 1°Ñ6Ô6Ð6Ð6Ð6Ø�LŠL˜œÑ"Ô"Ð"Ñ"àð 	Lå˜dœi­¬Ñ8Ô8ð MØ×!Ò!Ð"?ÀÄÑLÔLÐLÝÔ+¨U¨G¸4¼:ÐFÑFÔFˆCŒHˆHåÔ+¨E¸À!¼Ô9JÐKÑKÔKˆCŒHØˆr!   ÚdeclspecÚ	_DeclSpecÚnewspecÚkindÚ_DeclSpecKindc                 ó~  — |€
g g g g g g dœ}n|}|dk    r8t          |t          j        ¦  «        sJ ‚||                              |¦  «         np|dk    r8t          |t          j        ¦  «        sJ ‚||                              |¦  «         n2t          |t
          ¦  «        sJ ‚||                              |¦  «         |S )zAAppend a specifier in source order; see _DeclSpec for the layout.N)ÚqualÚstoragern   ÚfunctionÚ	alignmentÚtype_attributesrn   r‘   )ro   r   ÚNoderU   ÚAlignasr&   )r   rˆ   rŠ   r‹   r†   s        r   Ú_add_declaration_specifierz"CParser._add_declaration_specifier5  sÞ   € ð ÐàØØØØØ#%ðð ˆDˆDð ˆDà�6Š>ˆ>Ý˜g¥u¤zÑ2Ô2Ð2Ð2Ð2Ø�ŒJ×Ò˜gÑ&Ô&Ð&Ð&Ø�[Ò Ð Ý˜g¥u¤}Ñ5Ô5Ð5Ð5Ð5Ø�ŒJ×Ò˜gÑ&Ô&Ð&Ð&å˜g¥sÑ+Ô+Ð+Ð+Ð+Ø�ŒJ×Ò˜gÑ&Ô&Ð&Øˆr!   r†   c                 ó  — t          j        d|d         dd…         d|pt          j        dddd¦  «        |¬¦  «        }t          t           j        |                      |                      ||d         ¦  «        |¦  «        ¦  «        S )zâBuild and normalize an abstract type, including its attributes.

        Callers select the coordinate according to their grammar context.
        The name, if any, is taken from the declarator by _fix_decl_name_type.
        NrŽ   )r\   r|   Úalignrn   rQ   rn   )r   ÚTypenamerp   r   Ú_attach_type_attributesr‡   )r   r†   rk   rQ   ru   s        r   Ú_build_type_namezCParser._build_type_nameS  s�   € õ ”>ØØ�v”,˜q˜q˜q”/ØØÐ?�œ¨¨d°D¸$Ñ?Ô?Øð
ñ 
ô 
ˆõ ÝŒNØ×(Ò(Ø×(Ò(¨°4¸´<Ñ@Ô@À$ñô ñ
ô 
ð 	
r!   ÚdeclsÚ	_DeclInfoÚtypedef_namespacec                 ó  — d|d         v }g }|d                               d¦  «        �€ù|d         d         �€%t          |d         ¦  «        dk     svt          |d         d	         t          j        ¦  «        rPt          |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          ¦  «        r¤t          t          |d         d         ¦  «        }t          |t          j
        ¦  «        s!|j        }t          |t          j
        ¦  «        ¯!|j        €At          t          j        |d         d	         ¦  «        }	|	j        d         |_        |d         d	= |D �]Y}
|
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          ¦  «        s|}n|                      ||d         ¦  «        }|rC|r!|                      |j        |j        ¦  «         n |                      |j        |j        ¦  «         |                     |                      ||¦  «        ¦  «         �Œ[|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   ÚbitsizeNrk   rn   é   r^   r   ú?rQ   úInvalid declarationr‘   ©r{   rn   r|   r—   rQ   rŽ   )r\   r|   r�   rn   rQ   r�   Úinit©	r\   r|   r—   r�   Úfuncspecrn   r¥   r    rQ   )r`   rY   ro   r   r~   r   rh   ÚhasattrrQ   rJ   rp   Ú_DECLARATOR_NODESr   r   rn   r{   ÚTypedefÚDeclr‡   rb   r\   rd   rU   r™   )r   r†   r›   r�   Ú
is_typedefÚdeclarationsrQ   ÚtÚdecls_0_tailÚ	type_namerk   ÚdeclarationÚ
fixed_decls                r   Ú_build_declarationszCParser._build_declarationsi  s™  € ð  $ y¤/Ð1ˆ
Øˆð �Œ8�<Š<˜	Ñ"Ô"Ñ*ð
 �QŒx˜ÔÑ'å˜˜VœÑ%Ô%¨Ò)Ð)Ý% d¨6¤l°2Ô&6½Ô8LÑMÔMð *å˜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 Ð$Ð$õ ˜E !œH VÔ,Õ.?Ñ@Ô@ð )Ý#¥C¨¨q¬°&Ô)9Ñ:Ô:�Ý$ \µ5´>ÑBÔBð 5Ø#/Ô#4�Lõ % \µ5´>ÑBÔBð 5àÔ(Ð0Ý $¥UÔ%9¸4À¼<ÈÔ;KÑ LÔ L�IØ,5¬O¸AÔ,>�LÔ)Ø˜Vœ RÐ(àð $	Pñ $	PˆDØ˜”<Ð+Ð+Ð+Øð Ý#œmØØ˜vœ,Ø  œOØ˜fœØ˜vœ,Ô,ðñ ô ��õ $œjØØ˜vœ,Ø˜{Ô+Ø  œOØ! *Ô-Ø˜fœØŸš &Ñ)Ô)Ø ŸHšH YÑ/Ô/Ø˜vœ,Ô,ð
ñ 
ô 
�õ ˜kÔ.Õ0AÑBÔBð QØ(�
�
à!×5Ò5°kÀ4ÈÄ<ÑPÔP�
ð !ð LØð LØ×*Ò*¨:¬?¸JÔ<LÑMÔMÐMÐMà×(Ò(¨¬¸*Ô:JÑKÔKÐKà×Ò × <Ò <¸ZÈÑ NÔ NÑOÔOÐOÑOàÐr!   Úparam_declsÚbodyc                 óÈ   — d|d         v r|                       d|j        ¦  «         |                      |d|igd¬¦  «        d         }t          j        ||||j        ¬¦  «        S )	zBuilds a function definition.rŸ   r�   zInvalid typedefrk   T©r†   r›   r�   r   )rk   r´   rµ   rQ   )rJ   rQ   r³   r   ÚFuncDef)r   r†   rk   r´   rµ   r±   s         r   Ú_build_function_definitionz"CParser._build_function_definitionÉ  s†   € ð ˜˜YœÐ'Ð'Ø×ÒÐ/°´Ñ<Ô<Ð<à×.Ò.ØØ˜D�>Ð"Ø"ð /ñ 
ô 
ð ô	ˆõ Œ}Ø¨+¸DÈÌ
ð
ñ 
ô 
ð 	
r!   r@   c                 ó>   — |dk    rt           j        S t           j        S )z[Given a token (either STRUCT or UNION), selects the
        appropriate AST class.
        Ústruct)r   ÚStructÚUnion)r   r@   s     r   Ú_select_struct_union_classz"CParser._select_struct_union_classÞ  s   € ð �HÒÐÝ”<Ðå”;Ðr!   r   Úkc                 óv   — | j                              |¦  «        }|| j        ur|                      |¦  «         |S )z:Return the k-th next token without consuming it (1-based).)rA   Úpeekr>   Ú_classify_identifier©r   r¿   rN   s      r   rI   zCParser._peekê  s>   € àŒl×Ò Ñ"Ô"ˆØ�dÔ1Ð1Ð1Ø×%Ò% cÑ*Ô*Ð*Øˆ
r!   rN   c                 óp   — |�,|j         dv r#|                      |j        ¦  «        rdnd|_         || _        d S )N>   ÚIDÚTYPEIDrÆ   rÅ   )rn   rh   rK   r>   ©r   rN   s     r   rÂ   zCParser._classify_identifierñ  sD   € ð ˆ?˜sœxÐ+;Ð;Ð;Ø#'×#9Ò#9¸#¼)Ñ#DÔ#DÐN�x�xÈ$ˆCŒHØ&)ˆÔ#Ð#Ð#r!   c                 óB   — |                       |¦  «        }|�|j        ndS )zDReturn the type of the k-th next token, or None if absent (1-based).N)rI   rn   rÃ   s      r   Ú
_peek_typezCParser._peek_typeù  s!   € à�jŠj˜‰mŒmˆØ˜?ˆsŒxˆx°Ð4r!   c                 ó¸   — | j                              ¦   «         }|€ |                      d| j        j        ¦  «         || j        ur|                      |¦  «         |S )NúAt end of input)rA   ÚnextrJ   r;   rC   r>   rÂ   rÇ   s     r   Ú_advancezCParser._advanceþ  s]   € ØŒl×ÒÑ!Ô!ˆØˆ;Ø×ÒÐ/°´Ô1CÑDÔDÐDØ�dÔ1Ð1Ð1Ø×%Ò% cÑ*Ô*Ð*Øˆ
r!   Ú
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)rI   rn   rÍ   ©r   rÎ   rN   s      r   Ú_acceptzCParser._accept  s5   € ð �jŠj‰lŒlˆØˆ?˜sœx¨:Ò5Ð5Ø—=’=‘?”?Ð"Øˆtr!   c                 ó¦   — |                       ¦   «         }|j        |k    r1|                      d|j        › �|                      |¦  «        ¦  «         |S )NrF   )rÍ   rn   rJ   rK   rL   rÐ   s      r   Ú_expectzCParser._expect  sN   € Ø�mŠm‰oŒoˆØŒ8�zÒ!Ð!Ø×ÒÐ4¨¬Ð4Ð4°d·o²oÀcÑ6JÔ6JÑKÔKÐKØˆ
r!   c                 ó4   — | j                              ¦   «         S rT   )rA   ÚmarkrV   s    r   Ú_markzCParser._mark  s   € ØŒ|× Ò Ñ"Ô"Ð"r!   rÕ   c                 ó:   — | j                              |¦  «         d S rT   )rA   Úreset©r   rÕ   s     r   Ú_resetzCParser._reset  s   € ØŒ×Ò˜4Ñ Ô Ð Ð Ð r!   c                 óD   — t          |j        |j        |j        ¬¦  «        S rj   )r   rC   Úlinenor   rÇ   s     r   rL   zCParser._tok_coord  s   € Ý˜#œ,¨S¬ZÀÄ
ÐKÑKÔKÐKr!   c                 óR   — |p|                       ¦   «         }|€dS |j        t          v S ©NF)rI   rn   Ú_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Þ   )rI   rn   Ú_STARTS_EXPRESSIONrÇ   s     r   Ú_starts_expressionzCParser._starts_expression&  s,   € ØÐ!�T—Z’Z‘\”\ˆØˆ;Ø�5ØŒxÕ-Ð-Ð-r!   c                 óH  — |                       ¦   «         dk    rT|                      ¦   «         }|                      ¦   «          |                      ¦   «          }|                      |¦  «         |S |                       ¦   «         }|€dS |t
          v rdS |                      ¦   «         S )NÚATTRIBUTE_BEGINFT)rÉ   rÖ   Ú#_parse_attribute_specifier_sequencerà   rÚ   Ú_STARTS_STATEMENTrã   )r   rÕ   ÚstartsÚtok_types       r   Ú_starts_statementzCParser._starts_statement,  sŸ   € Ø�?Š?ÑÔÐ 1Ò1Ð1Ø—:’:‘<”<ˆDØ×4Ò4Ñ6Ô6Ð6Ø×1Ò1Ñ3Ô3Ð3ˆFØ�KŠK˜ÑÔÐØˆMØ—?’?Ñ$Ô$ˆØÐØ�5ØÕ(Ð(Ð(Ø�4Ø×&Ò&Ñ(Ô(Ð(r!   Úid_onlyc                 óV   — |                       ¦   «         }|€dS |dv rdS |r|dk    S |dv S )NF>   ÚTIMESÚLPARENTrÅ   >   rÅ   rÆ   ©rÉ   )r   rë   ré   s      r   Ú_starts_declaratorzCParser._starts_declarator:  sL   € Ø—?’?Ñ$Ô$ˆØÐØ�5ØÐ*Ð*Ð*Ø�4Øð 	$Ø˜tÒ#Ð#ØÐ+Ð+Ð+r!   c                 óŠ   — |                       ¦   «         }|                      ¦   «         \  }}|                      |¦  «         ||fS rT   )rÖ   Ú_scan_declarator_name_inforÚ   )r   rÕ   ré   Ú	saw_parens       r   Ú_peek_declarator_name_infoz"CParser._peek_declarator_name_infoD  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ô   rI   rL   r;   rC   rJ   Ú_parse_abstract_declarator_optÚ _parse_typeid_noparen_declaratorÚ_parse_typeid_declaratorÚ_parse_id_declarator)r   rõ   rö   Ú	name_typeró   rN   rQ   rk   s           r   Ú_parse_any_declaratorzCParser._parse_any_declaratorJ  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¦  «        rs|                      ¦   «          |                      ¦   «         t          v r/|                      ¦   «          |                      ¦   «         t          v °/|                       d¦  «        °s|                      ¦   «         }|€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æ   rÉ   Ú_TYPE_QUALIFIERrÍ   rI   rn   rò   )r   ró   rN   ré   Únested_parenÚdepths         r   rò   z"CParser._scan_declarator_name_infoe  s�  € Øˆ	Ø�lŠl˜7Ñ#Ô#ð 	 Ø×4Ò4Ñ6Ô6Ð6Ø—/’/Ñ#Ô#¥Ð6Ð6Ø—’‘”�ð —/’/Ñ#Ô#¥Ð6Ð6ð �lŠl˜7Ñ#Ô#ð 	 ð
 �jŠj‰lŒlˆØˆ;Ø˜�?Ð"ØŒ8Ð'Ð'Ð'Ø�MŠM‰OŒOˆOØ”8˜YÐ&Ð&ØŒ8�xÒÐØˆIØ�MŠM‰OŒOˆOØ%)×%DÒ%DÑ%FÔ%FÑ"ˆH�lØð !Ø �	ØˆEð Ø—j’j‘l”l�Ø�;Ø ˜?Ð*Ø”8˜xÒ'Ð'Ø˜Q‘J�E�EØ”X Ò)Ð)Ø˜Q‘J�EØ—M’M‘O”O�OØ ’z�zØØØ—’‘”�ð ð ˜YÐ&Ð&Ø�YˆÐr!   c                 ó.   — |                       ¦   «         dv S )N>   rî   ÚLBRACKETrï   rV   s    r   Ú"_starts_direct_abstract_declaratorz*CParser._starts_direct_abstract_declarator‰  s   € Ø�ŠÑ Ô Ð$:Ð:Ð:r!   c                 óN   — |                       ¦   «         }|d uo|j        t          v S rT   )rI   rn   Ú_ASSIGNMENT_OPSrÇ   s     r   Ú_is_assignment_opzCParser._is_assignment_opŒ  s%   € Ø�jŠj‰lŒlˆØ˜$ˆÐ> 3¤8­Ð#>Ð>r!   c                 ó4  — |                       ¦   «         }|�|j        dk    rdS |                      ¦   «         }|                      ¦   «          |                      ¦   «         s|                      |¦  «         dS g }|                      ¦   «         t          v r}|                      ¦   «         }| j        dk    r)|  	                    d|  
                    |¦  «        ¦  «         |                     |j        ¦  «         |                      ¦   «         t          v °}|                      ¦   «         }|                      d¦  «        €|                      |¦  «         dS |rA|                      ¦   «         dk    r)|  	                    d|  
                    |¦  «        ¦  «         ||||fS )aá  Parse and return a parenthesized type name if present.

        Returns (typ, mark, lparen_tok, storage) 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. C23 storage specifiers may precede the type name, but require a
        following '{' for a compound literal. Returns None if no parenthesized
        type name is present.
        Nrî   Úc23z9Storage class specifiers in compound literals require C23rÿ   ÚLBRACEz?Storage class specifiers require a compound literal initializer)rI   rn   rÖ   rÍ   rà   rÚ   rÉ   Ú_STORAGE_CLASSr<   rJ   rL   rU   rK   Ú_parse_type_namerÑ   )r   Ú
lparen_tokrÕ   r�   rN   rƒ   s         r   Ú_try_parse_paren_type_namez"CParser._try_parse_paren_type_name�  s‹  € ð —Z’Z‘\”\ˆ
àÐ ¤°HÒ!<Ð!<Ø�4Ø�zŠz‰|Œ|ˆØ�Š‰ŒˆØ×'Ò'Ñ)Ô)ð 	Ø�KŠK˜ÑÔÐØ�4ØˆØ�oŠoÑÔ¥>Ð1Ð1Ø—-’-‘/”/ˆCØŒ} Ò%Ð%Ø×!Ò!ØOØ—O’O CÑ(Ô(ñô ð ð �NŠN˜3œ9Ñ%Ô%Ð%ð �oŠoÑÔ¥>Ð1Ð1ð ×#Ò#Ñ%Ô%ˆØ�<Š<˜Ñ!Ô!Ð)Ø�KŠK˜ÑÔÐØ�4Øð 	�t—’Ñ(Ô(¨HÒ4Ð4Ø×ÒØQØ—’ 
Ñ+Ô+ñô ð ð �D˜* gÐ-Ð-r!   c                 óŠ  — g }|                       ¦   «         dk    �r§|                      ¦   «         }| j        dk    r)|                      d|                      |¦  «        ¦  «         g }|                       ¦   «         dk    rÜ|                      d¦  «        rŒ.|                      ¦   «         }d }|                      d¦  «        r|j        }|                      ¦   «         }|                      d¦  «        }|                     t          j
        |j        ||�|j        nd |j        ¦  «        ¦  «         |                      d¦  «        sn|                       ¦   «         dk    °Ü|                      d¦  «         |                     t          j        ||                      |¦  «        ¦  «        ¦  «         |                       ¦   «         dk    �°§|S )Nrå   r
  zAttributes require C23ÚATTRIBUTE_ENDÚCOMMAÚ
COLONCOLONÚATTRIBUTE_ARGUMENTS)rÉ   rÍ   r<   rJ   rL   rÑ   Ú_parse_identifier_or_typeidr\   rU   r   Ú	AttributerK   rQ   rÓ   ÚAttributeSpecifier)r   ÚgroupsÚopeningÚ
attributesr\   Ú	namespaceÚ	argumentss          r   ræ   z+CParser._parse_attribute_specifier_sequence¼  s¶  € ØˆØ�oŠoÑÔÐ#4Ò4Ñ4Ø—m’m‘o”oˆGØŒ} Ò%Ð%Ø×!Ò!Ð":¸D¿OºOÈGÑ<TÔ<TÑUÔUÐUØˆJØ—/’/Ñ#Ô# Ò6Ð6Ø—<’< Ñ(Ô(ð ØØ×7Ò7Ñ9Ô9�Ø �	Ø—<’< Ñ-Ô-ð >Ø $¤	�IØ×;Ò;Ñ=Ô=�DØ ŸLšLÐ)>Ñ?Ô?�	Ø×!Ò!Ý”OØœ	Ø!Ø+4Ð+@˜	œ˜ÀdØœ
ñ	ô ñô ð ð —|’| GÑ,Ô,ð Øð% —/’/Ñ#Ô# Ò6Ð6ð& �LŠL˜Ñ)Ô)Ð)Ø�MŠMÝÔ(¨°T·_²_ÀWÑ5MÔ5MÑNÔNñô ð ð3 �oŠoÑÔÐ#4Ò4Ñ4ð8 ˆr!   Únodesr  c                 ó®  — |r t          |d         t          j        ¦  «        r!|                      d|d         j        ¦  «         |D ]Ž}t          |t          j        ¦  «        rŒt          |t          j        ¦  «        r|j        n|}t          |t          j        t          j        f¦  «        s!|                      d|d         j        ¦  «         ||_	        Œ�|S )zCAttach declaration prefixes, shared by comma-separated declarators.r   z%Expected declaration after attributes)
ro   r   ÚPragmarJ   rQ   r¸   rk   r«   rª   r  )r   r  r  Únoderk   s        r   Ú_attribute_declarationszCParser._attribute_declarationsÜ  sÜ   € ð ð 	�
 5¨¤8­U¬\Ñ:Ô:ð 	Ø×ÒØ7¸ÀA¼Ô9Lñô ð ð ð 
	)ð 
	)ˆDõ ˜$¥¤Ñ-Ô-ð ØÝ *¨4µ´Ñ ?Ô ?ÐI�4”9�9ÀTˆDÝ˜d¥U¤Zµ´Ð$?Ñ@Ô@ð Ø×!Ò!Ø;¸ZÈ¼]Ô=Pñô ð ð )ˆDŒOˆOØˆr!   Ústmtc                 ó¸   — t          |t          j        t          j        t          j        f¦  «        r	||_        |S t          j        |||d         j        ¦  «        S ©Nr   )ro   r   ÚLabelÚCaseÚDefaultr  ÚAttributedStatementrQ   )r   r"  r  s      r   Ú_attribute_statementzCParser._attribute_statementñ  sK   € õ �d�Uœ[­%¬*µe´mÐDÑEÔEð 	Ø(ˆDŒOØˆKÝÔ(¨°T¸:Àa¼=Ô;NÑOÔOÐOr!   c                 óŒ  — |d         r»|}t          |j        t          j        t          j        t          j        t          j        f¦  «        rH|j        }t          |j        t          j        t          j        t          j        t          j        f¦  «        °Ht          j        |j        |d         |j        j        ¦  «        |_        |S )zDKeep attributes after the base type, inside pointer/array modifiers.r’   )	ro   rn   r   ÚPtrDeclÚ	ArrayDeclr‚   rp   ÚAttributedTyperQ   )r   rk   r†   Útargets       r   r™   zCParser._attach_type_attributesù  s©   € ð Ð!Ô"ð 		ØˆFÝØ”Ý”¥¤µ´ÅÄÐPñô ð %ð  œ�õ	 Ø”Ý”¥¤µ´ÅÄÐPñô ð %õ
  Ô.Ø”˜TÐ"3Ô4°f´kÔ6Gñô ˆFŒKð ˆr!   c                 óž   — |                       ¦   «         €t          j        g ¦  «        S t          j        |                      ¦   «         ¦  «        S rT   )rI   r   ÚFileASTÚ_parse_translation_unitrV   s    r   rH   z(CParser._parse_translation_unit_or_empty
  s<   € Ø�:Š:‰<Œ<ÐÝ”= Ñ$Ô$Ð$ÝŒ}˜T×9Ò9Ñ;Ô;Ñ<Ô<Ð<r!   c                 ó¨   — g }|                       ¦   «         �;|                     |                      ¦   «         ¦  «         |                       ¦   «         ­;|S rT   )rI   r�   Ú_parse_external_declaration)r   Úexts     r   r1  zCParser._parse_translation_unit  sH   € ØˆØ�jŠj‰lŒlÐ&Ø�JŠJ�t×7Ò7Ñ9Ô9Ñ:Ô:Ð:ð �jŠj‰lŒlÐ&àˆ
r!   c                 ó|  — |                       ¦   «         dk    rr|                      ¦   «         }|                      d¦  «        r!t          j        ||d         j        ¦  «        gS |                      |                      ¦   «         |¦  «        S |                      ¦   «         }|€g S |j	        dk    r|  
                    ¦   «          g S |j	        dv r|                      ¦   «         gS |                      d¦  «        rg S |j	        dk    r|                      ¦   «         gS |                      |¦  «        s‚|                      ¦   «         }|                       ¦   «         dk    r|                      d|j        ¦  «         g g g t          j        d	g|j        ¬
¦  «        gg g dœ}|                      ||¦  «        gS |                      d¬¦  «        \  }}}|                      |¦  «        r*|                      |¦  «        }|                      |¦  «        S |                      ¦   «         \  }}	|dk    r+|                      ||¦  «        }|                      |¦  «        S |                      ¦   «         }|                       ¦   «         dk    s|                      ¦   «         r:|d         st          j        d	g|¬
¦  «        g|d<   |                      ||¦  «        gS d|i}
|                      d¦  «        r|                      ¦   «         |
d<   |                      |
¬¦  «        }|                      ||d¬¦  «        }|                      |¦  «        S )Nrå   ÚSEMIr   ÚPPHASH¾   Ú_PRAGMAÚPPPRAGMAÚ_STATIC_ASSERTr  úInvalid function definitionr(   rz   )rŽ   r‘   r�   rn   r�   r’   T©Úallow_no_typerÅ   rn   rk   ÚEQUALSr¥   )Úfirstr·   )rÉ   ræ   rÑ   r   ÚAttributeDeclarationrQ   r!  r3  rI   rn   Ú_parse_pp_directiveÚ_parse_pppragma_directiveÚ_parse_static_assertrà   rû   rJ   r~   Ú_parse_function_definitionÚ_parse_declaration_specifiersÚ_is_inferred_autoÚ_parse_auto_declarationÚ_parse_declaration_endrô   Ú_parse_decl_body_with_specÚ_parse_initializerÚ_parse_init_declarator_listr³   )r   r  rN   rk   r†   Úsaw_typeÚ
spec_coordr›   rü   Ú_Ú	decl_dicts              r   r3  z#CParser._parse_external_declaration  sj  € Ø�?Š?ÑÔÐ 1Ò1Ð1Ø×AÒAÑCÔCˆJØ�|Š|˜FÑ#Ô#ð UÝÔ2°:¸zÈ!¼}Ô?RÑSÔSÐTÐTØ×/Ò/Ø×0Ò0Ñ2Ô2°Jñô ð ð �jŠj‰lŒlˆØˆ;ØˆIØŒ8�xÒÐØ×$Ò$Ñ&Ô&Ð&ØˆIØŒ8Ð.Ð.Ð.Ø×2Ò2Ñ4Ô4Ð5Ð5Ø�<Š<˜ÑÔð 	ØˆIØŒ8Ð'Ò'Ð'Ø×-Ò-Ñ/Ô/Ð0Ð0à×'Ò'¨Ñ,Ô,ð 	Að ×,Ò,Ñ.Ô.ˆDØ�ŠÑ Ô  HÒ,Ð,Ø×!Ò!Ð"?ÀÄÑLÔLÐLàØØÝÔ-¨u¨g¸T¼ZÐHÑHÔHÐIØØ#%ðð ˆDð ×3Ò3°D¸$Ñ?Ô?Ð@Ð@ð &*×%GÒ%GØð &Hñ &
ô &
Ñ"ˆˆh˜
ð ×!Ò! $Ñ'Ô'ð 	6Ø×0Ò0°Ñ6Ô6ˆEØ×.Ò.¨uÑ5Ô5Ð5à×6Ò6Ñ8Ô8‰ˆ	�1Ø˜ÒÐØ×3Ò3°D¸(ÑCÔCˆEØ×.Ò.¨uÑ5Ô5Ð5à×(Ò(Ñ*Ô*ˆà�?Š?ÑÔ Ò(Ð(¨D×,DÒ,DÑ,FÔ,FÐ(Ø˜”<ð QÝ %Ô 4°e°WÀJÐ OÑ OÔ OÐP��V‘Ø×3Ò3°D¸$Ñ?Ô?Ð@Ð@à &¨˜~ˆ	Ø�<Š<˜Ñ!Ô!ð 	:Ø $× 7Ò 7Ñ 9Ô 9ˆI�fÑØ×0Ò0°yÐ0ÑAÔAˆØ×(Ò(¨d¸%ÐSWÐ(ÑXÔXˆØ×*Ò*¨5Ñ1Ô1Ð1r!   c                 ó$  — |                       ¦   «          t          |t          j        ¦  «        rD|j        �=|j        j        D ]0}t          |dd ¦  «        }|r|                      ||j        ¦  «         Œ1|  	                    ¦   «         r|  
                    ¦   «         nd }|                      ¦   «         dk    r|                      d|j        ¦  «         |                      d¬¦  «        }|                      ¦   «          |                      ||||¦  «        S )Nr\   r  r<  F©Ú	new_scope)rW   ro   r   r‚   ÚargsÚparamsÚgetattrrd   rQ   rà   Ú_parse_declaration_listrÉ   rJ   Ú_parse_compound_statementr[   r¹   )r   r†   rk   Úparamr\   r´   rµ   s          r   rE  z"CParser._parse_function_definitionb  s  € ð
 	×ÒÑÔÐÝ�d�EœNÑ+Ô+ð 	<°´	Ð0EØœÔ)ð <ð <�Ý˜u f¨dÑ3Ô3�Øð <Ø×(Ò(¨¨u¬{Ñ;Ô;Ð;øà.2×.FÒ.FÑ.HÔ.HÐRˆD×(Ò(Ñ*Ô*Ð*Èdð 	ð �?Š?ÑÔ Ò(Ð(Ø×ÒÐ;¸T¼ZÑHÔHÐHØ×-Ò-¸Ð-Ñ>Ô>ˆØ�ŠÑÔÐØ×.Ò.¨t°T¸;ÈÑMÔMÐMr!   c                 óÂ  — |                       ¦   «         dk    rr|                      ¦   «         }|                      d¦  «        r!t          j        ||d         j        ¦  «        gS |                      |                      ¦   «         |¦  «        S |                       ¦   «         dk    r|                      ¦   «         gS |  	                    ¦   «         }|  
                    |¦  «        S ©Nrå   r6  r   r;  )rÉ   ræ   rÑ   r   rA  rQ   r!  Ú_parse_declarationrD  Ú_parse_decl_bodyrI  )r   r  r›   s      r   r\  zCParser._parse_declaration  sÍ   € Ø�?Š?ÑÔÐ 1Ò1Ð1Ø×AÒAÑCÔCˆJØ�|Š|˜FÑ#Ô#ð UÝÔ2°:¸zÈ!¼}Ô?RÑSÔSÐTÐTØ×/Ò/°×0GÒ0GÑ0IÔ0IÈ:ÑVÔVÐVØ�?Š?ÑÔÐ 0Ò0Ð0Ø×-Ò-Ñ/Ô/Ð0Ð0Ø×%Ò%Ñ'Ô'ˆØ×*Ò*¨5Ñ1Ô1Ð1r!   c                 ó^   — |                       ¦   «         }|                      d¦  «         ||z   S )a1  Consume a declaration's semicolon and retain preceding pragmas.

        Macro expansions can place diagnostic pragmas just before the final
        semicolon (issue #478). Represent them after the completed declarations
        in the surrounding list, just like pragmas following the semicolon.
        r6  )Ú_parse_pppragma_directive_listrÓ   )r   r›   Úpragmass      r   rI  zCParser._parse_declaration_endŠ  s1   € ð ×5Ò5Ñ7Ô7ˆØ�Š�VÑÔÐØ�w‰Ðr!   c                 ób   — |                       d¬¦  «        \  }}}|                      ||¦  «        S )NTr=  )rF  rJ  )r   r†   rM  rO  s       r   r]  zCParser._parse_decl_body–  s5   € Ø ×>Ò>ÈTÐ>ÑRÔRÑˆˆh˜Ø×.Ò.¨t°XÑ>Ô>Ð>r!   rM  c                 óÜ  — |                       |¦  «        r|                      |¦  «        S d }|r)|                      ¦   «         r|                      ¦   «         }n,|                      d¬¦  «        r|                      d¬¦  «        }|€Î|d         }t          j        t          j        t          j        f}t          |¦  «        dk    rtt          |d         |¦  «        r^t	          j
        d |d         |d         |d         |d	         |d         d d |d         j        ¬
¦	  «	        }|                      ||¦  «        g}n4|                      |dd igd¬¦  «        }n|                      ||d¬¦  «        }|S )NT©rë   rn   r   r   rŽ   r‘   r�   r�   r¦   rk   r·   )rG  rH  rð   rL  r   r¼   r½   ÚEnumrY   ro   r«   rQ   r™   r³   )r   r†   rM  Ú
decl_infosÚtyÚs_u_or_erk   r›   s           r   rJ  z"CParser._parse_decl_body_with_specœ  s˜  € ð ×!Ò! $Ñ'Ô'ð 	6Ø×/Ò/°Ñ5Ô5Ð5ð .2ˆ
Øð 	LØ×&Ò&Ñ(Ô(ð @Ø!×=Ò=Ñ?Ô?�
øà×&Ò&¨tÐ&Ñ4Ô4ð LØ!×=Ò=ÀdÐ=ÑKÔK�
ð ÐØ�f”ˆBÝœ¥e¤kµ5´:Ð>ˆHÝ�2‰wŒw˜!Š|ˆ|¥
¨2¨a¬5°(Ñ ;Ô ;ˆ|Ý”zØØ˜vœ,Ø˜{Ô+Ø  œOØ! *Ô-Ø˜AœØØ Ø˜Qœ%œ+ð
ñ 
ô 
�ð ×5Ò5°d¸DÑAÔAÐB��à×0Ò0ØØ" D˜>Ð*Ø&*ð 1ñ ô ��ð ×,Ò,Ø ¸tð -ñ ô ˆEð ˆr!   c                 ó>   — | j         dk    od|d         v o|d          S )Nr
  Úautor�   rn   )r<   )r   r†   s     r   rG  zCParser._is_inferred_autoÊ  s*   € ØŒ} Ò%ÐX¨&°D¸´OÐ*CÐXÈDÐQWÌLÐHXÐXr!   c                 óZ  — |                       ¦   «         }t          |t          j        ¦  «        s|                      d|j        ¦  «         |                      d¦  «         |                      ¦   «         }t          j        |j        ¬¦  «        g|d<   |  	                    |||dœgd¬¦  «        S )Nz5Inferred auto declaration requires a plain identifierr?  rz   rn   ©rk   r¥   Tr·   )
rû   ro   r   rp   rJ   rQ   rÓ   Ú_parse_assignment_expressionÚInferredTyper³   )r   r†   rk   r¥   s       r   rH  zCParser._parse_auto_declarationÏ  s¸   € Ø×(Ò(Ñ*Ô*ˆÝ˜$¥¤Ñ/Ô/ð 	Ø×ÒØGÈÌñô ð ð 	�Š�XÑÔÐØ×0Ò0Ñ2Ô2ˆÝÔ*°´Ð<Ñ<Ô<Ð=ˆˆV‰à×'Ò'ØØ ¨$Ð/Ð/Ð0Ø"ð (ñ 
ô 
ð 	
r!   c                 óö   — g }|                       ¦   «         rb|                     |                      ¦   «         ¦  «         |                     |                      ¦   «         ¦  «         |                       ¦   «         °b|S rT   )rà   r�   r\  r_  ©r   r›   s     r   rW  zCParser._parse_declaration_listà  sx   € ØˆØ×&Ò&Ñ(Ô(ð 	@Ø�LŠL˜×0Ò0Ñ2Ô2Ñ3Ô3Ð3ð �LŠL˜×<Ò<Ñ>Ô>Ñ?Ô?Ð?ð	 ×&Ò&Ñ(Ô(ð 	@ð
 ˆr!   r>  c                 ó¸   — |                       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/type_attributes 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).
        T©Úallow_storage_and_functionNr£   ry   ©Ú_parse_specifiersrJ   r;   rC   )r   r>  r†   rM  Úfirst_coords        r   rF  z%CParser._parse_declaration_specifiersî  s€   € ð '+×&<Ò&<Ø'+ð '=ñ '
ô '
Ñ#ˆˆh˜ð ˆ<Ø×ÒÐ3°T´YÔ5GÑHÔHÐHØð 	J ð 	JØ×ÒÐ;¸[ÑIÔIÐIØ�X˜{Ð*Ð*r!   c                 ó¾   — |                       d¬¦  «        \  }}}|€ |                      d| j        j        ¦  «         |s|d         s|                      d|¦  «         |S )NFrq  zInvalid specifier listr‘   ry   rs  )r   r†   rM  ru  s       r   Ú_parse_specifier_qualifier_listz'CParser._parse_specifier_qualifier_list  s{   € Ø&*×&<Ò&<Ø',ð '=ñ '
ô '
Ñ#ˆˆh˜ð ˆ<Ø×ÒÐ6¸¼	Ô8JÑKÔKÐKØð 	J  [Ô 1ð 	JØ×ÒÐ;¸[ÑIÔIÐIØˆr!   rr  z_DeclSpec | Nonec                ó¬  — d}d}d}	 |                       ¦   «         }|€�n1|j        dk    r|�|                      ¦   «         |d<   �n|j        dk    r|r�nü|j        dk    o|                      d¦  «        d	k    }|€|                      |¦  «        }d
}|j        dk    rd}|                      ¦   «         }�n{|r|                      ¦   «         }�nc|j        t          v r|                      ¦   «         }�n?|j        dk    r|  	                    ¦   «         }�n|j        t          v rd}|                      ¦   «         j        }nô|r*|j        t          v rd}|                      ¦   «         j        }nÈ|r*|j        t          v rd}|                      ¦   «         j        }nœ|j        t          v s|j        dk    rD|                      ¦   «         }t!          j        |j        g|                      |¦  «        ¬¦  «        }n?|j        dv r|                      ¦   «         }n!|j        dk    r|                      ¦   «         }nn!|                      |||¦  «        }|d
k    rd}�ŒI|||fS )zàConsume specifiers shared by declarations, members, and type names.

        Storage classes and function specifiers are only accepted in
        declarations. Callers handle their own missing-specifier diagnostics.
        NFTrå   r’   rÆ   Ú_ATOMICr¡   rî   rn   Ú_ALIGNASr‘   Ú_BITINTrŽ   r�   r�   rz   >   ÚUNIONÚSTRUCTÚENUM)rI   rn   ræ   rÉ   rL   Ú_parse_alignment_specifierÚ_parse_atomic_specifierÚ_TYPEOF_SPECÚ_parse_typeof_specifierÚ_parse_bitint_specifierr   rÍ   rK   r  Ú_FUNCTION_SPECÚ_TYPE_SPEC_SIMPLEr   r~   Ú _parse_struct_or_union_specifierÚ_parse_enum_specifierr•   )	r   rr  r†   rM  ru  rN   Úis_atomic_specifierr‹   rŠ   s	            r   rt  zCParser._parse_specifiers  s~  € ð ˆØˆØˆð5	 Ø—*’*‘,”,ˆCØˆ{ÙàŒxÐ,Ò,Ð,°Ð1AØ*.×*RÒ*RÑ*TÔ*T�Ð&Ñ'Ùð Œx˜8Ò#Ð#¨Ð#Ùð ”˜IÒ%ÐH¨$¯/ª/¸!Ñ*<Ô*<ÀÒ*Hð  ð Ð"Ø"Ÿošo¨cÑ2Ô2�à"(ˆDàŒx˜:Ò%Ð%Ø"�Ø×9Ò9Ñ;Ô;�‘Ø$ð Ø×6Ò6Ñ8Ô8�‘Ø”�\Ð)Ð)Ø×6Ò6Ñ8Ô8�‘Ø”˜YÒ&Ð&Ø×6Ò6Ñ8Ô8�‘Ø”�_Ð,Ð,Ø�ØŸ-š-™/œ/Ô/��Ø+ð °´½NÐ0JÐ0JØ �ØŸ-š-™/œ/Ô/��Ø+ð °´½NÐ0JÐ0JØ!�ØŸ-š-™/œ/Ô/��Ø”Õ.Ð.Ð.°#´(¸hÒ2FÐ2FØ—m’m‘o”o�ÝÔ.°´	¨{À$Ç/Â/ÐRUÑBVÔBVÐWÑWÔW��Ø”Ð0Ð0Ð0Ø×?Ò?ÑAÔA��Ø”˜VÒ#Ð#Ø×4Ò4Ñ6Ô6��àà×2Ò2°4¸À$ÑGÔGˆDØ�vŠ~ˆ~Ø�ñk5	 ðn �X˜{Ð*Ð*r!   c                 óÎ   — g }|                       ¦   «         t          v rG|                     |                      ¦   «         j        ¦  «         |                       ¦   «         t          v °G|S rT   )rÉ   r   rU   rÍ   rK   )r   r|   s     r   Ú_parse_type_qualifier_listz"CParser._parse_type_qualifier_listX  sU   € ØˆØ�oŠoÑÔ¥?Ð2Ð2Ø�LŠL˜Ÿš™œÔ.Ñ/Ô/Ð/ð �oŠoÑÔ¥?Ð2Ð2àˆr!   c                 óÂ  — |                       d¦  «        }|                       d¦  «         |                      ¦   «         rQ|                      ¦   «         }|                       d¦  «         t          j        ||                      |¦  «        ¦  «        S |                      ¦   «         }|                       d¦  «         t          j        ||                      |¦  «        ¦  «        S )Nrz  rî   rÿ   )rÓ   rà   r  r   r”   rL   Ú_parse_constant_expression©r   rN   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 )Nry  rî   rÿ   Ú_Atomic)rÓ   r  r|   rU   )r   rƒ   s     r   r€  zCParser._parse_atomic_specifierm  sd   € Ø�Š�YÑÔÐØ�Š�XÑÔÐØ×#Ò#Ñ%Ô%ˆØ�Š�XÑÔÐØŒ	×Ò˜Ñ#Ô#Ð#Øˆ
r!   c                 óT  — |                       ¦   «         }|                      d¦  «         |                      ¦   «         r|                      ¦   «         }n|                      ¦   «         }|                      d¦  «         t          j        |j        ||                      |¦  «        ¦  «        S )Nrî   rÿ   )	rÍ   rÓ   rà   r  Ú_parse_expressionr   ÚTypeOfrK   rL   ©r   rN   rŽ  s      r   r‚  zCParser._parse_typeof_specifierv  s�   € Ø�mŠm‰oŒoˆØ�Š�XÑÔÐØ×#Ò#Ñ%Ô%ð 	,Ø×(Ò(Ñ*Ô*ˆDˆDà×)Ò)Ñ+Ô+ˆDØ�Š�XÑÔÐÝŒ|˜CœI t¨T¯_ª_¸SÑ-AÔ-AÑBÔBÐBr!   c                 óú   — |                       d¦  «        }|                       d¦  «         |                      ¦   «         }|                       d¦  «         t          j        |d |                      |¦  «        ¦  «        S )Nr{  rî   rÿ   )rÓ   rŒ  r   r}   rL   )r   rN   r€   s      r   rƒ  zCParser._parse_bitint_specifier�  si   € Ø�lŠl˜9Ñ%Ô%ˆØ�Š�XÑÔÐØ×/Ò/Ñ1Ô1ˆØ�Š�XÑÔÐÝÔ  t¨T¯_ª_¸SÑ-AÔ-AÑBÔBÐBr!   r@  c                 óä   — |�|gn|                       |¬¦  «        g}|                      d¦  «        r>|                     |                       |¬¦  «        ¦  «         |                      d¦  «        °>|S )Nrc  r  )Ú_parse_init_declaratorrÑ   rU   )r   r@  rë   r›   s       r   rL  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¦  «        r||                      ¦   «         dœS d|iS )Nr?  rk  rk   )rû   Ú_parse_declaratorrÑ   rK  )r   rë   rk   s      r   r—  zCParser._parse_init_declarator—  sb   € Ø.5ÐSˆt×(Ò(Ñ*Ô*Ð*¸4×;QÒ;QÑ;SÔ;SˆØ�<Š<˜Ñ!Ô!ð 	EØ ¨$×*AÒ*AÑ*CÔ*CÐDÐDÐDØ˜ˆ~Ðr!   c                 óJ  — |                       ¦   «         }|                      ¦   «         }|                      |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\   r›   rQ   z Invalid struct/union declaration)
rÍ   ræ   r¾   rK   rÉ   rÑ   rL   Ú_parse_struct_declaration_listrÓ   rJ   )r   rN   r  ÚklassÚname_tokr›   Ú	brace_toks          r   r†  z(CParser._parse_struct_or_union_specifier¢  s8  € Ø�mŠm‰oŒoˆØ×=Ò=Ñ?Ô?ˆ
Ø×/Ò/°´	Ñ:Ô:ˆà�?Š?ÑÔÐ 0Ð0Ð0Ø—}’}‘”ˆHØ�ŠÑ Ô  HÒ,Ð,Ø—’‘”�Ø—<’< Ñ)Ô)ð Ø ˜5Ø#-Ø%œ^Ø Ø"Ÿošo¨hÑ7Ô7ð	ñ ô ð ð ×;Ò;Ñ=Ô=�Ø—’˜XÑ&Ô&Ð&Ø�uØ)Ø!œØØŸ/š/¨(Ñ3Ô3ð	ñ ô ð ð �5Ø%Ø”^ØØ—o’o hÑ/Ô/ð	ñ ô ð ð �?Š?ÑÔ Ò(Ð(ØŸš™œˆIØ�|Š|˜HÑ%Ô%ð Ø�uØ)ØØØŸ/š/¨)Ñ4Ô4ð	ñ ô ð ð ×7Ò7Ñ9Ô9ˆEØ�LŠL˜Ñ"Ô"Ð"Ø�5Ø%ØØØ—o’o iÑ0Ô0ð	ñ ô ð ð 	×ÒÐ<¸d¿oºoÈcÑ>RÔ>RÑSÔSÐSÐSÐSr!   c                 óº   — g }|                       ¦   «         dvrB|                      ¦   «         }|€Œ-|                     |¦  «         |                       ¦   «         dv°B|S ©N>   Nr›  )rÉ   Ú_parse_struct_declarationr�   )r   r›   Úitemss      r   rœ  z&CParser._parse_struct_declaration_list×  sg   € ØˆØ�oŠoÑÔÐ'7Ð7Ð7Ø×2Ò2Ñ4Ô4ˆEØˆ}ØØ�LŠL˜ÑÔÐð	 �oŠoÑÔÐ'7Ð7Ð7ð
 ˆr!   c                 óV  — |                       ¦   «         dk    r>|                      ¦   «         }|                      |                      ¦   «         pg |¦  «        S |                       ¦   «         dk    r|                      ¦   «         gS |                       ¦   «         dk    r|                      ¦   «          d S |                       ¦   «         dv r|                      ¦   «         gS |                      ¦   «         }d|                     dg ¦  «        vsJ ‚d }|  	                    ¦   «         s|                       ¦   «         dk    r|  
                    ¦   «         }|�*|                      |                      ||¬¦  «        ¦  «        S t          |d	         ¦  «        d
k    rl|d	         d         }t          |t          j        ¦  «        r|}nt          j        |¦  «        }|                      |                      |d|ig¬¦  «        ¦  «        S |                      |                      |dd ig¬¦  «        ¦  «        S )Nrå   r;  r6  r8  rŸ   r�   ÚCOLON©r†   r›   rn   r   r   rk   )rÉ   ræ   r!  r¢  rD  rÍ   rC  rw  r`   rð   Ú_parse_struct_declarator_listrI  r³   rY   ro   r   r“   r~   )r   r  r†   r›   r   Ú	decl_types         r   r¢  z!CParser._parse_struct_declarationä  s6  € Ø�?Š?ÑÔÐ 1Ò1Ð1Ø×AÒAÑCÔCˆJØ×/Ò/Ø×.Ò.Ñ0Ô0Ð6°B¸
ñô ð ð �?Š?ÑÔÐ 0Ò0Ð0Ø×-Ò-Ñ/Ô/Ð0Ð0Ø�?Š?ÑÔ Ò&Ð&Ø�MŠM‰OŒOˆOØ�4Ø�?Š?ÑÔÐ 7Ð7Ð7Ø×2Ò2Ñ4Ô4Ð5Ð5à×3Ò3Ñ5Ô5ˆØ §¢¨°BÑ 7Ô 7Ð7Ð7Ð7Ð7àˆØ×"Ò"Ñ$Ô$ð 	9¨¯ªÑ(9Ô(9¸WÒ(DÐ(DØ×6Ò6Ñ8Ô8ˆEØÐØ×.Ò.Ø×(Ò(¨d¸%Ð(Ñ@Ô@ñô ð õ ˆt�FŒ|ÑÔ Ò!Ð!Ø˜”< ”?ˆDÝ˜$¥¤
Ñ+Ô+ð 7Ø �	�	å!Ô0°Ñ6Ô6�	Ø×.Ò.Ø×(Ò(¨d¸FÀIÐ;NÐ:OÐ(ÑPÔPñô ð ð ×*Ò*Ø×$Ò$¨$¸À°~Ð6FÐ$ÑGÔGñ
ô 
ð 	
r!   c                 óÒ   — |                       ¦   «         g}|                      d¦  «        r<|                     |                       ¦   «         ¦  «         |                      d¦  «        °<|S ©Nr  )Ú_parse_struct_declaratorrÑ   rU   ro  s     r   r§  z%CParser._parse_struct_declarator_list  sc   € Ø×.Ò.Ñ0Ô0Ð1ˆØ�lŠl˜7Ñ#Ô#ð 	:Ø�LŠL˜×6Ò6Ñ8Ô8Ñ9Ô9Ð9ð �lŠl˜7Ñ#Ô#ð 	:àˆr!   c                 ó  — |                       d¦  «        r.|                      ¦   «         }t          j        d d d d ¦  «        |dœS |                      ¦   «         }|                       d¦  «        r|                      ¦   «         }||dœS d|iS )Nr¥  )rk   r    rk   )rÑ   rŒ  r   rp   r™  )r   r    rk   s      r   r«  z CParser._parse_struct_declarator  sœ   € Ø�<Š<˜Ñ Ô ð 	Ø×5Ò5Ñ7Ô7ˆGåœ t¨T°4¸Ñ>Ô>Ø"ðð ð ð
 ×%Ò%Ñ'Ô'ˆØ�<Š<˜Ñ Ô ð 	6Ø×5Ò5Ñ7Ô7ˆGØ ¨WÐ5Ð5Ð5à˜ˆ~Ðr!   c                 ón  — |                       d¦  «        }|                      ¦   «         }d }|                      ¦   «         dv r|                      ¦   «         j        }d }|                      ¦   «         dk    r<|                      |                      d¦  «        ¦  «        r|                      ¦   «         }d }|�|                      ¦   «         dk    r>|                       d¦  «         |                      ¦   «         }|                       d¦  «         t          j
        ||||                      |¦  «        |¬¦  «        S )Nr~  >   rÅ   rÆ   r¥  r¡   r  r›  ©r  )rÓ   ræ   rÉ   rÍ   rK   rà   rI   Ú_parse_enum_type_specifierÚ_parse_enumerator_listr   rd  rL   )r   rN   r  r\   Úunderlying_typeÚenumss         r   r‡  zCParser._parse_enum_specifier%  s!  € Ø�lŠl˜6Ñ"Ô"ˆØ×=Ò=Ñ?Ô?ˆ
ØˆØ�?Š?ÑÔÐ 0Ð0Ð0Ø—=’=‘?”?Ô(ˆDàˆð �?Š?ÑÔ Ò'Ð'¨D×,DÒ,DÀTÇZÂZÐPQÁ]Ä]Ñ,SÔ,SÐ'Ø"×=Ò=Ñ?Ô?ˆOàˆØˆ<˜4Ÿ?š?Ñ,Ô,°Ò8Ð8Ø�LŠL˜Ñ"Ô"Ð"Ø×/Ò/Ñ1Ô1ˆEØ�LŠL˜Ñ"Ô"Ð"ÝŒzØØØØ�OŠO˜CÑ Ô Ø!ð
ñ 
ô 
ð 	
r!   c                 óJ  — |                       d¦  «        }| j        dk    r)|                      d|                      |¦  «        ¦  «         |                      ¦   «         }|d         r|d         d         j        n|                      |¦  «        }|                      |d |¦  «        S )Nr¥  r
  z'Fixed underlying enum types require C23rn   r   )rÓ   r<   rJ   rL   rw  rQ   rš   )r   Úcolonr†   rQ   s       r   r¯  z"CParser._parse_enum_type_specifier@  sž   € Ø—’˜WÑ%Ô%ˆØŒ=˜EÒ!Ð!Ø×ÒØ9¸4¿?º?È5Ñ;QÔ;Qñô ð ð
 ×3Ò3Ñ5Ô5ˆØ)-¨f¬ÐQ��V”˜Q”Ô%Ð%¸4¿?º?È5Ñ;QÔ;QˆØ×$Ò$ T¨4°Ñ7Ô7Ð7r!   c                 ó   — |                       ¦   «         }|                      ¦   «         }|                     |¦  «         |j        }	 |                     |                       ¦   «         ¦  «         |                      d¦  «        snh|                     |                       ¦   «         ¦  «         |                      ¦   «         dk    rn(|                     |                      ¦   «         ¦  «         Œ¥t          j        ||¦  «        S )NTr  r›  )	r_  Ú_parse_enumeratorrU   rQ   r�   rÑ   rÉ   r   ÚEnumeratorList)r   ÚmembersÚenumrQ   s       r   r°  zCParser._parse_enumerator_listO  sé   € Ø×5Ò5Ñ7Ô7ˆð ×%Ò%Ñ'Ô'ˆØ�Š�tÑÔÐØ”
ˆð		5ð �NŠN˜4×>Ò>Ñ@Ô@ÑAÔAÐAØ—<’< Ñ(Ô(ð ØØ�NŠN˜4×>Ò>Ñ@Ô@ÑAÔAÐAØ�ŠÑ Ô  HÒ,Ð,ØØ�NŠN˜4×1Ò1Ñ3Ô3Ñ4Ô4Ð4ð		5õ Ô# G¨UÑ3Ô3Ð3r!   c                 óP  — |                       d¦  «        }|                      ¦   «         }|                      d¦  «        r|                      ¦   «         }nd }t	          j        |j        ||                      |¦  «        |¬¦  «        }|                      |j	        |j
        ¦  «         |S )NrÅ   r?  r®  )rÓ   ræ   rÑ   rŒ  r   Ú
EnumeratorrK   rL   rd   r\   rQ   )r   rž  r  rK   r¹  s        r   r¶  zCParser._parse_enumeratorc  s¢   € Ø—<’< Ñ%Ô%ˆØ×=Ò=Ñ?Ô?ˆ
Ø�<Š<˜Ñ!Ô!ð 	Ø×3Ò3Ñ5Ô5ˆEˆEàˆEÝÔØŒNØØ�OŠO˜HÑ%Ô%Ø!ð	
ñ 
ô 
ˆð 	×Ò˜TœY¨¬
Ñ3Ô3Ð3Øˆr!   c                 óB   — |                       dd¬¦  «        \  }}|€J ‚|S )NF©rõ   rö   )rý   )r   rk   rO  s      r   r™  zCParser._parse_declaratorw  s8   € Ø×,Ò,Ø ¸5ð -ñ 
ô 
‰ˆˆað ÐÐÐØˆr!   c                 ó0   — |                       dd¬¦  «        S )NÚidT©r‹   Úallow_paren©Ú_parse_declarator_kindrV   s    r   rû   zCParser._parse_id_declarator  s   € Ø×*Ò*°À$Ð*ÑGÔGÐGr!   c                 ó0   — |                       dd¬¦  «        S )NÚtypeidTrÀ  rÂ  rV   s    r   rú   z CParser._parse_typeid_declaratorƒ  s   € Ø×*Ò*°ÀdÐ*ÑKÔKÐKr!   c                 ó0   — |                       dd¬¦  «        S )NrÅ  FrÀ  rÂ  rV   s    r   rù   z(CParser._parse_typeid_noparen_declarator‡  s   € Ø×*Ò*°ÀeÐ*ÑLÔLÐLr!   rÁ  c                 óÀ   — d }|                       ¦   «         dk    r|                      ¦   «         }|                      ||¬¦  «        }|�|                      ||¦  «        S |S )Nrí   ©rÁ  )rÉ   Ú_parse_pointerÚ_parse_direct_declaratorrt   )r   r‹   rÁ  ÚptrÚdirects        r   rÃ  zCParser._parse_declarator_kind‹  se   € ØˆØ�?Š?ÑÔ Ò'Ð'Ø×%Ò%Ñ'Ô'ˆCØ×.Ò.¨tÀÐ.ÑMÔMˆØˆ?Ø×)Ò)¨&°#Ñ6Ô6Ð6Øˆr!   c           	      óª  — |rB|                       d¦  «        r-|                      |d¬¦  «        }|                      d¦  «         n{|dk    r|                      d¦  «        }n|                      d¦  «        }t          j        |j        d d d |                      |¦  «        ¬¦  «        }|                      ¦   «         |_        |  	                    |¦  «        S )	Nrî   TrÈ  rÿ   r¿  rÅ   rÆ   r¤   )
rÑ   rÃ  rÓ   r   rp   rK   rL   ræ   r  Ú_parse_decl_suffixes)r   r‹   rÁ  rk   rž  s        r   rÊ  z CParser._parse_direct_declarator—  s×   € ð ð 	I˜4Ÿ<š<¨Ñ1Ô1ð 	IØ×.Ò.¨tÀÐ.ÑFÔFˆDØ�LŠL˜Ñ"Ô"Ð"Ð"à�tŠ|ˆ|ØŸ<š<¨Ñ-Ô-��àŸ<š<¨Ñ1Ô1�Ý”>Ø!œØØØØ—o’o hÑ/Ô/ðñ ô ˆDð #×FÒFÑHÔHˆDŒOà×(Ò(¨Ñ.Ô.Ð.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É   rt   Ú_parse_array_declÚ_parse_function_decl)r   rk   Úfuncs      r   rÎ  zCParser._parse_decl_suffixes­  sŠ   € ð	Ø�ŠÑ Ô  JÒ.Ð.Ø×-Ò-¨d°D×4JÒ4JÈ4Ñ4PÔ4PÑQÔQ�ØØ�ŠÑ Ô  HÒ,Ð,Ø×0Ò0°Ñ6Ô6�Ø×-Ò-¨d°DÑ9Ô9�ØØØˆr!   Ú	base_declc                 ó:   — |                       d |j        ¬¦  «        S ©N)Ú	base_typerQ   )Ú_parse_array_decl_commonrQ   )r   rÓ  s     r   rÐ  zCParser._parse_array_decl»  s   € Ø×,Ò,°tÀ9Ä?Ð,ÑSÔSÐSr!   rÖ  c                 óú  ‡ ‡‡— ‰                       d¦  «        }‰€‰                      |¦  «        Šˆˆˆ fd„}‰                      d¦  «        rOdg‰                      ¦   «         pg z   }‰                      ¦   «         }‰                       d¦  «          |||¦  «        S ‰                      ¦   «         t          v �r‰                      ¦   «         pg }‰                      d¦  «        r;|dgz   }‰                      ¦   «         }‰                       d¦  «          |||¦  «        S ‰                      d¦  «        }|rN‰                       d¦  «         t          j        |j	        ‰                      |¦  «        ¦  «        } |||¦  «        S d}‰  
                    ¦   «         r‰                      ¦   «         }‰                       d¦  «          |||¦  «        S ‰                      d¦  «        }|rN‰                       d¦  «         t          j        |j	        ‰                      |¦  «        ¦  «        } ||g ¦  «        S d}‰  
                    ¦   «         r‰                      ¦   «         }‰                       d¦  «          ||g ¦  «        S )a9  Parse an array declarator suffix and return an ArrayDecl node.

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

        coord:
            Coordinate to use for the ArrayDecl. If None, uses the '[' token.
        r  Nc                 óZ   •— t          j        ‰| |‰‰                     ¦   «         ¬¦  «        S )N)rn   ÚdimÚ	dim_qualsrQ   r  )r   r,  ræ   )rÚ  rÛ  rÖ  rQ   r   s     €€€r   Úmake_array_declz9CParser._parse_array_decl_common.<locals>.make_array_declÎ  s7   ø€ Ý”?ØØØ#ØØ×CÒCÑEÔEðñ ô ð r!   ÚSTATICÚstaticÚRBRACKETrí   )rÓ   rL   rÑ   rŠ  rl  rÉ   r   r   rÅ   rK   rã   )r   rÖ  rQ   Ú
lbrack_tokrÜ  rÛ  rÚ  Ú	times_toks   ```     r   r×  z CParser._parse_array_decl_common¾  s�  øøø€ ð —\’\ *Ñ-Ô-ˆ
Øˆ=Ø—O’O JÑ/Ô/ˆEð	ð 	ð 	ð 	ð 	ð 	ð 	ð �<Š<˜Ñ!Ô!ð 	3Ø!˜
 d×&EÒ&EÑ&GÔ&GÐ&MÈ2ÑNˆIØ×3Ò3Ñ5Ô5ˆCØ�LŠL˜Ñ$Ô$Ð$Ø"�? 3¨	Ñ2Ô2Ð2à�?Š?ÑÔ¥Ð/Ñ/Ø×7Ò7Ñ9Ô9Ð?¸RˆIØ�|Š|˜HÑ%Ô%ð 7Ø%¨¨
Ñ2�	Ø×7Ò7Ñ9Ô9�Ø—’˜ZÑ(Ô(Ð(Ø&� s¨IÑ6Ô6Ð6ØŸš WÑ-Ô-ˆIØð 7Ø—’˜ZÑ(Ô(Ð(Ý”h˜yœ°·²À	Ñ0JÔ0JÑKÔK�Ø&� s¨IÑ6Ô6Ð6ØˆCØ×&Ò&Ñ(Ô(ð :Ø×7Ò7Ñ9Ô9�Ø�LŠL˜Ñ$Ô$Ð$Ø"�? 3¨	Ñ2Ô2Ð2à—L’L Ñ)Ô)ˆ	Øð 	,Ø�LŠL˜Ñ$Ô$Ð$Ý”(˜9œ?¨D¯OªO¸IÑ,FÔ,FÑGÔGˆCØ"�? 3¨Ñ+Ô+Ð+àˆØ×"Ò"Ñ$Ô$ð 	6Ø×3Ò3Ñ5Ô5ˆCØ�Š�ZÑ Ô Ð Øˆ˜s BÑ'Ô'Ð'r!   c                 ó�  — |                       d¦  «         |                      d¦  «        rd }ni|                      ¦   «         s|                      ¦   «         dk    r|                      ¦   «         n|                      ¦   «         }|                       d¦  «         t          j        |d |j        |  	                    ¦   «         ¬¦  «        }|S )Nrî   rÿ   ÚELLIPSIS©rT  rn   rQ   r  )
rÓ   rÑ   rà   rÉ   Ú_parse_parameter_type_listÚ_parse_identifier_list_optr   r‚   rQ   ræ   )r   rÓ  rT  rÒ  s       r   rÑ  zCParser._parse_function_declü  sÍ   € Ø�Š�XÑÔÐØ�<Š<˜Ñ!Ô!ð 	#ØˆDˆDð ×+Ò+Ñ-Ô-ð7Ø15·²Ñ1BÔ1BÀjÒ1PÐ1Pð ×/Ò/Ñ1Ô1Ð1à×4Ò4Ñ6Ô6ð ð
 �LŠL˜Ñ"Ô"Ð"åŒ~ØØØ”/Ø×?Ò?ÑAÔAð	
ñ 
ô 
ˆð ˆr!   c                 ó^  — g }|                       d¦  «        }|rl|                      ¦   «         }|                      ¦   «         pg }|                     ||                      |¦  «        |f¦  «         |                       d¦  «        }|°l|sd S d }|D ]\  }}}t          j        ||||¬¦  «        }Œ|S )Nrí   )r|   rn   rQ   r  )rÑ   ræ   rŠ  rU   rL   r   r+  )r   Ústarsrá  r  r|   rË  rQ   s          r   rÉ  zCParser._parse_pointer  sÙ   € ØˆØ—L’L Ñ)Ô)ˆ	Øð 	.Ø×AÒAÑCÔCˆJØ×3Ò3Ñ5Ô5Ð;¸ˆEØ�LŠL˜% §¢°Ñ!;Ô!;¸ZÐHÑIÔIÐIØŸš WÑ-Ô-ˆIð	 ð 	.ð ð 	Ø�4àˆØ(-ð 	ð 	Ñ$ˆE�5˜*Ý”-Ø #¨U¸zðñ ô ˆCˆCð ˆ
r!   c                 óH  — |                       d¦  «        }|r^|                      |¦  «        }| j        dk    r|                      d|¦  «         t	          j        t	          j        |¦  «        g|¦  «        S |                      ¦   «         }|                      ¦   «         dk    r€|                      d¦  «        dk    rg|  	                    ¦   «          |  	                    ¦   «         }|j
                             t	          j        |                      |¦  «        ¦  «        ¦  «         |S )Nrã  r
  z)Ellipsis-only parameter lists require C23r  r¡   )rÑ   rL   r<   rJ   r   Ú	ParamListÚEllipsisParamÚ_parse_parameter_listrÉ   rÍ   rU  rU   )r   Úell_tokrQ   rU  s       r   rå  z"CParser._parse_parameter_type_list'  sù   € à—,’,˜zÑ*Ô*ˆØð 	HØ—O’O GÑ,Ô,ˆEØŒ} Ò%Ð%Ø×!Ò!Ð"MÈuÑUÔUÐUÝ”?¥EÔ$7¸Ñ$>Ô$>Ð#?ÀÑGÔGÐGà×+Ò+Ñ-Ô-ˆØ�?Š?ÑÔ Ò'Ð'¨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 )Nr  r¡   rã  )Ú_parse_parameter_declarationr   rê  rQ   rÉ   rÍ   rU  rU   ©r   r@  rU  s      r   rì  zCParser._parse_parameter_list8  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                 ó´   — |                       ¦   «         }|                      ¦   «         }t          |t          j        t          j        f¦  «        sJ ‚||_        |S rT   )ræ   Ú!_parse_parameter_declaration_bodyro   r   r«   r˜   r  )r   r  rk   s      r   rï  z$CParser._parse_parameter_declarationB  sO   € Ø×=Ò=Ñ?Ô?ˆ
Ø×5Ò5Ñ7Ô7ˆÝ˜$¥¤­U¬^Ð <Ñ=Ô=Ð=Ð=Ð=Ø$ˆŒØˆr!   c                 ó6  — |                       d¬¦  «        \  }}}|                      |¦  «        r|                      d|¦  «         d|d         v r|                      d|¦  «         |d         st          j        dg|¬	¦  «        g|d<   |                      ¦   «         rS|                      dd¬
¦  «        \  }}|r |                      |d|ig¬¦  «        d         S |                      |||¦  «        S |  	                    ¦   «         }|                      |||¦  «        S )NTr=  z$Cannot infer the type of a parameterrŸ   r�   z%Invalid storage class for a parameterrn   r(   rz   r½  rk   r¦  r   )
rF  rG  rJ   r   r~   rð   rý   r³   Ú_build_parameter_declarationrø   )r   r†   rO  rN  rk   Úis_nameds         r   rò  z)CParser._parse_parameter_declaration_bodyI  sW  € Ø"×@Ò@ÈtÐ@ÑTÔTÑˆˆa�à×!Ò! $Ñ'Ô'ð 	RØ×ÒÐDÀjÑQÔQÐQà˜˜YœÐ'Ð'Ø×ÒÐEÀzÑRÔRÐRà�FŒ|ð 	MÝ!Ô0°%°À
ÐKÑKÔKÐLˆD�‰Là×"Ò"Ñ$Ô$ð 		MØ!×7Ò7Ø#¸dð 8ñ ô ‰NˆD�(ð ð Ø×/Ò/ØØ" D˜>Ð*ð 0ñ ô ð ôð ð ×4Ò4°T¸4ÀÑLÔLÐLà×2Ò2Ñ4Ô4ˆØ×0Ò0°°t¸ZÑHÔHÐHr!   rN  c                 óŽ  — t          |d         ¦  «        dk    r–t          |d         d         t          j        ¦  «        rpt          |d         d         j        ¦  «        dk    rL|                      |d         d         j        d         ¦  «        r |                      |d|ig¬¦  «        d         S |                      |||¦  «        S )Nrn   r   r^   r   rk   r¦  )rY   ro   r   r~   r   rh   r³   rš   )r   r†   rk   rN  s       r   rô  z$CParser._build_parameter_declarationc  s¾   € õ ��V”ÑÔ Ò!Ð!Ý˜4 œ<¨Ô+­UÔ-AÑBÔBð "å�D˜”L Ô$Ô*Ñ+Ô+¨qÒ0Ð0Ø×&Ò& t¨F¤|°BÔ'7Ô'=¸aÔ'@ÑAÔAð 1ð ×+Ò+°¸vÀt¸nÐ=MÐ+ÑNÔNÈqÔQÐQà×$Ò$ T¨4°Ñ<Ô<Ð<r!   c                 ó^   — |                       ¦   «         dk    rd S |                      ¦   «         S ©Nrÿ   )rÉ   Ú_parse_identifier_listrV   s    r   ræ  z"CParser._parse_identifier_list_optq  s.   € Ø�?Š?ÑÔ Ò(Ð(Ø�4Ø×*Ò*Ñ,Ô,Ð,r!   c                 ó  — |                       ¦   «         }t          j        |g|j        ¦  «        }|                      d¦  «        rA|j                             |                       ¦   «         ¦  «         |                      d¦  «        °A|S rª  )Ú_parse_identifierr   rê  rQ   rÑ   rU  rU   rð  s      r   rù  zCParser._parse_identifier_listw  sy   € Ø×&Ò&Ñ(Ô(ˆÝ” % ¨%¬+Ñ6Ô6ˆØ�lŠl˜7Ñ#Ô#ð 	;ØŒM× Ò  ×!7Ò!7Ñ!9Ô!9Ñ:Ô:Ð:ð �lŠl˜7Ñ#Ô#ð 	;àˆr!   c                 óÎ   — |                       ¦   «         }|                      ¦   «         }d }|�|j        }n|d         r|d         d         j        }|                      |||¦  «        S )Nrn   r   )rw  rø   rQ   rš   )r   r†   rk   rQ   s       r   r  zCParser._parse_type_name‚  sl   € Ø×3Ò3Ñ5Ô5ˆØ×2Ò2Ñ4Ô4ˆàˆØÐØ”JˆEˆEØ�&Œ\ð 	*Ø˜”L ”OÔ)ˆEà×$Ò$ T¨4°Ñ7Ô7Ð7r!   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   rp   rt   )r   rË  rk   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           	      óœ  — |                       d¦  «        }|rÔ|                      ¦   «         s|                      ¦   «         dv r||                      ¦   «         }|                      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ÿ   rä  r  zInvalid abstract declarator)rÑ   rà   rÉ   Ú_parse_parameter_type_list_optrÓ   r   r‚   rp   rL   ræ   rø   Ú_parse_abstract_array_baserJ   r;   rC   rÎ  )r   r  rU  rk   s       r   rþ  z)CParser._parse_direct_abstract_declarator¡  sI  € Ø—\’\ (Ñ+Ô+ˆ
Øð 	QØ×'Ò'Ñ)Ô)ð (¨T¯_ª_Ñ->Ô->ð Cð .ð .ð ×<Ò<Ñ>Ô>�Ø—’˜XÑ&Ô&Ð&Ý”~ØÝœ¨¨d°D¸$Ñ?Ô?ØŸ/š/¨*Ñ5Ô5Ø#×GÒGÑIÔIð	ñ ô ��ð ×:Ò:Ñ<Ô<�Ø—’˜XÑ&Ô&Ð&ØÐ'Ð'Ð'Ð'Ø�_Š_ÑÔ *Ò,Ð,Ø×2Ò2Ñ4Ô4ˆDˆDà×ÒÐ;¸T¼YÔ=OÑPÔPÐPà×(Ò(¨Ñ.Ô.Ð.r!   c                 ó^   — |                       ¦   «         dk    rd S |                      ¦   «         S rø  )rÉ   rå  rV   s    r   r   z&CParser._parse_parameter_type_list_opt¼  s.   € Ø�?Š?ÑÔ Ò(Ð(Ø�4Ø×.Ò.Ñ0Ô0Ð0r!   c                 óZ   — |                       t          j        d d d d ¦  «        d ¬¦  «        S rÕ  )r×  r   rp   rV   s    r   r  z"CParser._parse_abstract_array_baseÂ  s4   € Ø×,Ò,Ý”n T¨4°°tÑ<Ô<ÀDð -ñ 
ô 
ð 	
r!   c                 ó²  — |                       ¦   «         dk    rq|                      ¦   «         }|                      d¦  «        r t          j        ||d         j        ¦  «        S |                      |                      ¦   «         |¦  «        S |                       ¦   «         }|xxdk    rn	xdk    rn n  |                      ¦   «         S xdk    r.|                       d¦  «        dk    r |                      ¦   «         S xd	k    r |  	                    ¦   «         S xxd
k    rn	xdk    rn n  |  
                    ¦   «         S xxdk    rnxdk    rn	xdk    rn n  |                      ¦   «         S xxdk    rnxdk    rnxdk    rn	xdk    rn n  |                      ¦   «         S xdk    rn	xdk    rn n |                      ¦   «         S 	 |                      ¦   «         S )Nrå   r6  r   ÚCASEÚDEFAULTrÅ   r¡   r¥  r  ÚIFÚSWITCHÚWHILEÚDOÚFORÚGOTOÚBREAKÚCONTINUEÚRETURNr:  r9  )rÉ   ræ   rÑ   r   rA  rQ   r)  Ú_parse_statementÚ_parse_labeled_statementrX  Ú_parse_selection_statementÚ_parse_iteration_statementÚ_parse_jump_statementrC  Ú_parse_expression_statement)r   r  ré   s      r   r  zCParser._parse_statementÎ  s  € Ø�?Š?ÑÔÐ 1Ò1Ð1Ø×AÒAÑCÔCˆJØ�|Š|˜FÑ#Ô#ð SÝÔ1°*¸jÈ¼mÔ>QÑRÔRÐRØ×,Ò,¨T×-BÒ-BÑ-DÔ-DÀjÑQÔQÐQØ—?’?Ñ$Ô$ˆØØ#��’��˜)˜)š)˜)˜)˜)˜)˜)˜)Ø×4Ò4Ñ6Ô6Ð6Ø�’�˜Ÿš¨Ñ+Ô+¨wÒ6Ð6Ð6Ø×4Ò4Ñ6Ô6Ð6Ø�’��Ø×5Ò5Ñ7Ô7Ð7Ø ��’��˜˜š˜˜˜˜˜˜Ø×6Ò6Ñ8Ô8Ð8Ø'��’��˜4˜4š4˜4˜4 % %¢% % % % % % %Ø×6Ò6Ñ8Ô8Ð8Ø9��’��˜'˜'š'˜'˜' J J¢J J J°°²°°°°°°Ø×1Ò1Ñ3Ô3Ð3Ø�’��˜i˜iši˜i˜i˜i˜i˜iØ×5Ò5Ñ7Ô7Ð7ØØ×7Ò7Ñ9Ô9Ð9r!   c                 óð   — |                       ¦   «         dv rM|                      ¦   «         }|                      ¦   «         }t          j        ||gz   |d         j        ¬¦  «        S |                      ¦   «         S )Nr8  r   ©Úblock_itemsrQ   )rÉ   r_  r  r   ÚCompoundrQ   )r   r`  r"  s      r   Ú_parse_pragmacomp_or_statementz&CParser._parse_pragmacomp_or_statementè  so   € Ø�?Š?ÑÔÐ 7Ð7Ð7Ø×9Ò9Ñ;Ô;ˆGØ×(Ò(Ñ*Ô*ˆDÝ”>¨g¸¸Ñ.>ÀgÈaÄjÔFVÐWÑWÔWÐWØ×$Ò$Ñ&Ô&Ð&r!   c                 ó\  — |                       ¦   «         dk    r­|                      ¦   «         }|                      d¦  «        r t          j        ||d         j        ¦  «        S |                      ¦   «         r(|                      |                      ¦   «         |¦  «        S |  	                    |  
                    ¦   «         |¦  «        S |                       ¦   «         dk    r|                      ¦   «         S |                      ¦   «         r|                      ¦   «         S |  
                    ¦   «         S r[  )rÉ   ræ   rÑ   r   rA  rQ   rà   r!  r\  r)  r  rD  )r   r  s     r   Ú_parse_block_itemzCParser._parse_block_itemð  s  € Ø�?Š?ÑÔÐ 1Ò1Ð1Ø×AÒAÑCÔCˆJØ�|Š|˜FÑ#Ô#ð SÝÔ1°*¸jÈ¼mÔ>QÑRÔRÐRØ×'Ò'Ñ)Ô)ð Ø×3Ò3Ø×+Ò+Ñ-Ô-¨zñô ð ð ×,Ò,¨T×-BÒ-BÑ-DÔ-DÀjÑQÔQÐQØ�?Š?ÑÔÐ 0Ò0Ð0Ø×,Ò,Ñ.Ô.Ð.Ø×#Ò#Ñ%Ô%ð 	-Ø×*Ò*Ñ,Ô,Ð,Ø×$Ò$Ñ&Ô&Ð&r!   c                 ó"  — g }|                       ¦   «         dvrv|                      ¦   «         }t          |t          j        ¦  «        r|                     |¦  «         n|d gk    r|                     |¦  «         |                       ¦   «         dv°v|S r¡  )rÉ   r  ro   r   r“   rU   r�   )r   r£  Úitems      r   Ú_parse_block_item_listzCParser._parse_block_item_list  s“   € Ø"$ˆØ�oŠoÑÔÐ'7Ð7Ð7Ø×)Ò)Ñ+Ô+ˆDÝ˜$¥¤
Ñ+Ô+ð #Ø—’˜TÑ"Ô"Ð"Ð"Ø˜$˜’�Ø—’˜TÑ"Ô"Ð"ð �oŠoÑÔÐ'7Ð7Ð7ð ˆr!   rR  rS  c                óV  — |                       d¦  «        }|r|                      ¦   «          d }|                      d¦  «        s)|                      ¦   «         }|                       d¦  «         |r|                      ¦   «          t          j        ||                      |¦  «        ¬¦  «        S )Nr  r›  r  )rÓ   rW   rÑ   r  r[   r   r  rL   )r   rS  Ú
lbrace_tokr  s       r   rX  z!CParser._parse_compound_statement  s«   € Ø—\’\ (Ñ+Ô+ˆ
Øð 	Ø×ÒÑÔÐØˆØ�|Š|˜HÑ%Ô%ð 	#Ø×5Ò5Ñ7Ô7ˆKØ�LŠL˜Ñ"Ô"Ð"Øð 	Ø�OŠOÑÔÐÝŒ~Ø#¨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   ÚEmptyStatementrL   r%  rK   rŒ  r&  r'  rJ   r;   rC   )r   ré   rž  r"  Úcase_tokrŽ  Údef_toks          r   r  z CParser._parse_labeled_statement  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Í   rn   rÓ   r’  r  rÑ   r   ÚIfrL   r   ÚSwitchrJ   )r   rN   ÚcondÚ	then_stmtÚ	else_stmtrŽ  r"  s          r   r  z"CParser._parse_selection_statement>  ss  € Ø�mŠm‰oŒoˆØŒhØ�’��Ø—’˜XÑ&Ô&Ð&Ø×-Ò-Ñ/Ô/�Ø—’˜XÑ&Ô&Ð&Ø ×?Ò?ÑAÔA�	Ø—<’< Ñ'Ô'ð VØ $× CÒ CÑ EÔ E�IÝ œ8 D¨)°YÀÇÂÐPSÑ@TÔ@TÑUÔUÐUÝ”x  i°°t·²ÀsÑ7KÔ7KÑLÔLÐLØ’�Ø—’˜XÑ&Ô&Ð&Ø×-Ò-Ñ/Ô/�Ø—’˜XÑ&Ô&Ð&Ø×:Ò:Ñ<Ô<�Ý'­¬°T¸4ÀÇÂÐQTÑAUÔAUÑ(VÔ(VÑWÔWÐWØØ×!Ò!Ð"?ÀÇÂÐQTÑAUÔAUÑVÔVÐVÐVÐVr!   c           	      óÖ  — |                       ¦   «         }|j        xdk    r| |                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      ¦   «         }t          j        |||                      |¦  «        ¦  «        S xdk    r¦ |                      ¦   «         }|                      d¦  «         |                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      d¦  «         t          j        |||                      |¦  «        ¦  «        S dk    �rð|                      d¦  «         |  	                    ¦   «         dk    s|  
                    ¦   «         rõ|                      ¦   «          |                      ¦   «         }t          j        ||                      |¦  «        ¦  «        }|                      ¦   «         }|                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      ¦   «         }|                      ¦   «          t          j        |||||                      |¦  «        ¦  «        S |                      ¦   «         }|                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      ¦   «         }t          j        |||||                      |¦  «        ¦  «        S 	 |                      d|                      |¦  «        ¦  «         d S )	Nr	  rî   rÿ   r
  r6  r  r;  zInvalid iteration statement)rÍ   rn   rÓ   r’  r  r   ÚWhilerL   ÚDoWhilerÉ   rà   rW   r\  ÚDeclListÚ_parse_expression_optr[   ÚForrJ   )r   rN   r*  r"  r›   r¥   Ú	next_exprs          r   r  z"CParser._parse_iteration_statementW  sñ  € Ø�mŠm‰oŒoˆØŒhØ�’��Ø—’˜XÑ&Ô&Ð&Ø×-Ò-Ñ/Ô/�Ø—’˜XÑ&Ô&Ð&Ø×:Ò:Ñ<Ô<�Ý”{ 4¨¨t¯ª¸sÑ/CÔ/CÑDÔDÐDØ�’��Ø×:Ò:Ñ<Ô<�Ø—’˜WÑ%Ô%Ð%Ø—’˜XÑ&Ô&Ð&Ø×-Ò-Ñ/Ô/�Ø—’˜XÑ&Ô&Ð&Ø—’˜VÑ$Ô$Ð$Ý”} T¨4°·²ÀÑ1EÔ1EÑFÔFÐFØ’‘Ø—’˜XÑ&Ô&Ð&Ø—?’?Ñ$Ô$Ð(8Ò8Ð8¸D×<TÒ<TÑ<VÔ<VÐ8à×$Ò$Ñ&Ô&Ð&Ø ×3Ò3Ñ5Ô5�EÝ œ>¨%°·²ÀÑ1EÔ1EÑFÔF�DØ×5Ò5Ñ7Ô7�DØ—L’L Ñ(Ô(Ð(Ø $× :Ò :Ñ <Ô <�IØ—L’L Ñ*Ô*Ð*Ø×>Ò>Ñ@Ô@�DØ—O’OÑ%Ô%Ð%Ý œ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Å   r6  r  r  r  zInvalid jump statement)rÍ   rn   rÓ   r   ÚGotorK   rL   ÚBreakÚContinuerÑ   ÚReturnr’  rJ   )r   rN   rž  rŽ  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 )Nr6  )r1  rÓ   r   r#  rL   )r   rŽ  Úsemi_toks      r   r  z#CParser._parse_expression_statement›  sK   € Ø×)Ò)Ñ+Ô+ˆØ—<’< Ñ'Ô'ˆØˆ<ÝÔ'¨¯ª¸Ñ(AÔ(AÑBÔBÐBØˆr!   c                 óV   — |                       ¦   «         r|                      ¦   «         S d S rT   )rã   r’  rV   s    r   r1  zCParser._parse_expression_opt¦  s-   € Ø×"Ò"Ñ$Ô$ð 	,Ø×)Ò)Ñ+Ô+Ð+Øˆtr!   c                 óZ  — |                       ¦   «         }|                      d¦  «        s|S ||                       ¦   «         g}|                      d¦  «        r<|                     |                       ¦   «         ¦  «         |                      d¦  «        °<t          j        ||j        ¦  «        S rª  ©rl  rÑ   rU   r   ÚExprListrQ   ©r   rŽ  Ú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                 óè   — |                       ¦   «         }|                      ¦   «         rI|                      ¦   «         j        }|                      ¦   «         }t          j        ||||j        ¦  «        S |S rT   )Ú_parse_conditional_expressionr  rÍ   rK   rl  r   Ú
AssignmentrQ   )r   rŽ  ÚopÚrhss       r   rl  z$CParser._parse_assignment_expression·  sf   € Ø×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Ó   rB  r   Ú	TernaryOprQ   )r   rŽ  ÚiftrueÚiffalses       r   rB  z%CParser._parse_conditional_expressionÁ  sy   € Ø×,Ò,Ñ.Ô.ˆØ�<Š<˜Ñ!Ô!ð 	FØ×+Ò+Ñ-Ô-ˆFØ�LŠL˜Ñ!Ô!Ð!Ø×8Ò8Ñ:Ô:ˆGÝ”? 4¨°¸$¼*ÑEÔEÐEØˆr!   r   Úmin_precÚlhsc                 óö  — |€|                       ¦   «         }	 |                      ¦   «         }|�|j        t          vrn¼t          |j                 }||k     rn£|j        }|                      ¦   «          |                       ¦   «         }	 |                      ¦   «         }|�|j        t          vrn1t          |j                 }||k    r|                      ||¦  «        }nnŒVt          j        ||||j	        ¦  «        }Œá|S rT   )
Ú_parse_cast_expressionrI   rn   Ú_BINARY_PRECEDENCErK   rÍ   rH  r   ÚBinaryOprQ   )	r   rL  rM  rN   ÚprecrD  rE  Únext_tokÚ	next_precs	            r   rH  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                 ó:  — |                       ¦   «         }|�r|\  }}}}|                      ¦   «         dk    r|                      |¦  «         n=|                      ¦   «         }t	          j        |||                      |¦  «        ¦  «        S |                      ¦   «         S )Nr  )r  rÉ   rÚ   rO  r   ÚCastrL   Ú_parse_unary_expression)r   Úresultrƒ   rÕ   r  rO  rŽ  s          r   rO  zCParser._parse_cast_expressioní  s–   € Ø×0Ò0Ñ2Ô2ˆØÐØ'-Ñ$ˆC��z 1Ø�ŠÑ Ô  HÒ,Ð,ð —’˜DÑ!Ô!Ð!Ð!à×2Ò2Ñ4Ô4�Ý”z # t¨T¯_ª_¸ZÑ-HÔ-HÑIÔIÐIØ×+Ò+Ñ-Ô-Ð-r!   c                 ó6  — |                       ¦   «         }|dv rH|                      ¦   «         }|                      ¦   «         }t          j        |j        ||j        ¦  «        S |dv rH|                      ¦   «         }|                      ¦   «         }t          j        |j        ||j        ¦  «        S |dk    rÎ|                      ¦   «         }|                      ¦   «         }|�b|\  }}}}|                       ¦   «         dk    r.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í   ÚSIZEOFr  Ú_ALIGNOFrî   rÿ   )rÉ   rÍ   rW  r   ÚUnaryOprK   rQ   rO  r  rL   rÚ   rÓ   r  Ú_parse_postfix_expression)r   ré   rN   rŽ  rX  rƒ   rÕ   rO  s           r   rW  zCParser._parse_unary_expression  sÐ  € Ø—?’?Ñ$Ô$ˆØÐ1Ð1Ð1Ø—-’-‘/”/ˆCØ×/Ò/Ñ1Ô1ˆDÝ”= ¤¨D°$´*Ñ=Ô=Ð=àÐGÐGÐGØ—-’-‘/”/ˆCØ×.Ò.Ñ0Ô0ˆDÝ”= ¤¨D°$´*Ñ=Ô=Ð=à�xÒÐØ—-’-‘/”/ˆCØ×4Ò4Ñ6Ô6ˆFØÐ!Ø"(‘��T˜1˜aØ—?’?Ñ$Ô$¨Ò0Ð0Ý œ=¨¬°C¸¿ºÈÑ9MÔ9MÑNÔNÐNð —’˜DÑ!Ô!Ð!Ø×/Ò/Ñ1Ô1ˆDÝ”= ¤¨D°$·/²/À#Ñ2FÔ2FÑGÔGÐGà�zÒ!Ð!Ø—-’-‘/”/ˆCØ�LŠL˜Ñ"Ô"Ð"Ø×'Ò'Ñ)Ô)ˆCØ�LŠL˜Ñ"Ô"Ð"Ý”= ¤¨C°·²ÀÑ1EÔ1EÑFÔFÐFà×-Ò-Ñ/Ô/Ð/r!   c                 ó&  — d }|                       ¦   «         }|�s|\  }}}}|                      ¦   «         dk    r?|                      ¦   «         }t          j        ||||                      |¦  «        ¦  «        }n|                      |¦  «         |€|                      ¦   «         }	 |                      ¦   «         }|dk    rY|                      ¦   «          |  	                    ¦   «         }	|  
                    d¦  «         t          j        ||	|j        ¦  «        }Œt|dk    r‰|                      ¦   «          |                      ¦   «         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  Tr  rß  rî   rÿ   >   ÚARROWÚPERIOD>   rÅ   rÆ   zInvalid struct referencerZ  Úp)r  rÉ   rK  r   ÚCompoundLiteralrL   rÚ   Ú_parse_primary_expressionrÍ   r’  rÓ   ÚArrayRefrQ   Ú_parse_argument_expression_listÚFuncCallrn   rJ   rÅ   rK   Ú	StructRefrd  )r   rŽ  rX  rƒ   rÕ   r  r�   r¥   ré   ÚsubrT  Úop_tokrž  ÚfieldrN   s                  r   re  z!CParser._parse_postfix_expression(  sc  € ØˆØ×0Ò0Ñ2Ô2ˆØÐØ-3Ñ*ˆC��z 7ð �ŠÑ Ô  HÒ,Ð,Ø×.Ò.Ñ0Ô0�ÝÔ,Ø˜˜w¨¯ª¸
Ñ(CÔ(Cñô ��ð —’˜DÑ!Ô!Ð!àˆ<Ø×1Ò1Ñ3Ô3ˆDð 	Ø—’Ñ(Ô(ˆHØ˜:Ò%Ð%Ø—’‘”�Ø×,Ò,Ñ.Ô.�Ø—’˜ZÑ(Ô(Ð(Ý”~ d¨C°´Ñ<Ô<�ØØ˜8Ò#Ð#Ø—’‘”�Ø—?’?Ñ$Ô$¨Ò0Ð0Ø—M’M‘O”O�OØ�D�Dà×?Ò?ÑAÔA�DØ—L’L Ñ*Ô*Ð*Ý”~ d¨D°$´*Ñ=Ô=�ÙØÐ.Ð.Ð.ØŸš™œ�ØŸ=š=™?œ?�Ø”=Ð(8Ð8Ð8Ø×%Ò%Ø2°D·O²OÀHÑ4MÔ4Mñô ð õ œ ¤°·²ÀÑ1JÔ1JÑKÔK�Ý” t¨V¬\¸5À$Ä*ÑMÔM�ÙØÐ5Ð5Ð5Ø—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 s	|t
          v r|                      ¦   «         S |t          v r|                      ¦   «         S |dk    rl|  	                    ¦   «          |                       ¦   «         dk    r|  
                    ¦   «         }n|                      ¦   «         }|                      d¦  «         |S |dk    r|                      ¦   «         S |dk    rÓ|  	                    ¦   «         }|                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      |¦  «        }t#          j        t#          j        |j        |¦  «        t#          j        ||g|¦  «        |¦  «        S |dk    rÓ|  	                    ¦   «         }|                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      ¦   «         }|                      d¦  «         |                      |¦  «        }t#          j        t#          j        |j        |¦  «        t#          j        ||g|¦  «        |¦  «        S |                      d	| j        j        ¦  «         d S )
NrÅ   rî   r  rÿ   Ú_GENERICÚ__BUILTIN_VA_ARGr  ÚOFFSETOFzInvalid expression)rÉ   rû  Ú
_INT_CONSTÚ_FLOAT_CONSTÚ_CHAR_CONSTÚ_PREDEFINED_CONSTÚ_parse_constantÚ_STRING_LITERALÚ_parse_unified_string_literalrÍ   rX  r’  rÓ   Ú_parse_generic_selectionrl  r  rL   r   rn  rÅ   rK   r>  Ú!_parse_offsetof_member_designatorrJ   r;   rC   )r   ré   rŽ  rN   rƒ   rQ   Úoff_tokÚ
designators           r   rk  z!CParser._parse_primary_expressionb  s±  € Ø—?’?Ñ$Ô$ˆØ�tÒÐØ×)Ò)Ñ+Ô+Ð+à�
Ð"Ð"Ø�<Ð'Ð'Ø�;Ð&Ð&ØÕ,Ð,Ð,à×'Ò'Ñ)Ô)Ð)Ø•Ð&Ð&Ø×5Ò5Ñ7Ô7Ð7Ø�xÒÐØ�MŠM‰OŒOˆOØ�ŠÑ Ô  HÒ,Ð,ð ×5Ò5Ñ7Ô7��à×-Ò-Ñ/Ô/�Ø�LŠL˜Ñ"Ô"Ð"ØˆKØ�zÒ!Ð!Ø×0Ò0Ñ2Ô2Ð2ØÐ)Ò)Ð)Ø—-’-‘/”/ˆCØ�LŠL˜Ñ"Ô"Ð"Ø×4Ò4Ñ6Ô6ˆDØ�LŠL˜Ñ!Ô!Ð!Ø×'Ò'Ñ)Ô)ˆCØ�LŠL˜Ñ"Ô"Ð"Ø—O’O CÑ(Ô(ˆEÝ”>Ý”˜œ EÑ*Ô*Ý”  c˜{¨EÑ2Ô2Øñô ð ð
 �zÒ!Ð!Ø—m’m‘o”oˆGØ�LŠL˜Ñ"Ô"Ð"Ø×'Ò'Ñ)Ô)ˆCØ�LŠL˜Ñ!Ô!Ð!Ø×?Ò?ÑAÔAˆJØ�LŠL˜Ñ"Ô"Ð"Ø—O’O GÑ,Ô,ˆEÝ”>Ý”˜œ¨Ñ.Ô.Ý”  ZÐ0°%Ñ8Ô8Øñô ð ð 	×ÒÐ.°´	Ô0BÑCÔCÐCÐCÐCr!   c                 óð  — |                       d¦  «        }|                       d¦  «         |                      ¦   «         }|                       d¦  «         |                      ¦   «         g}|                      d¦  «        r<|                     |                      ¦   «         ¦  «         |                      d¦  «        °<|                       d¦  «         t          j        |||                      |¦  «        ¦  «        S )Nrt  rî   r  rÿ   )rÓ   rl  Ú_parse_generic_associationrÑ   rU   r   ÚGenericSelectionrL   )r   rN   rŽ  Úassociationss       r   r~  z CParser._parse_generic_selectionš  sÛ   € Ø�lŠl˜:Ñ&Ô&ˆØ�Š�XÑÔÐØ×0Ò0Ñ2Ô2ˆØ�Š�WÑÔÐØ×7Ò7Ñ9Ô9Ð:ˆØ�lŠl˜7Ñ#Ô#ð 	CØ×Ò × ?Ò ?Ñ AÔ AÑBÔBÐBð �lŠl˜7Ñ#Ô#ð 	Cà�Š�XÑÔÐÝÔ% d¨L¸$¿/º/È#Ñ:NÔ:NÑOÔOÐOr!   c                 óh  — |                       ¦   «         }|€ |                      d| j        j        ¦  «         |                      d¦  «        rd n|                      ¦   «         }|                      d¦  «         |                      ¦   «         }t          j	        |||  
                    |¦  «        ¦  «        S )NrË   r  r¥  )rI   rJ   r;   rC   rÑ   r  rÓ   rl  r   ÚGenericAssociationrL   r�  s       r   rƒ  z"CParser._parse_generic_association§  sš   € Ø�jŠj‰lŒlˆØˆ;Ø×ÒÐ/°´Ô1CÑDÔDÐDØ—l’l 9Ñ-Ô-ÐJˆdˆd°4×3HÒ3HÑ3JÔ3JˆØ�Š�WÑÔÐØ×0Ò0Ñ2Ô2ˆÝÔ'¨¨T°4·?²?À3Ñ3GÔ3GÑHÔHÐHr!   c                 ór  — |                       ¦   «         }	 |                      d¦  «        r1|                       ¦   «         }t          j        |d||j        ¦  «        }ŒG|                      d¦  «        rE|                      ¦   «         }|                      d¦  «         t          j        |||j        ¦  «        }Œ¡	 |S )NTrh  ú.r  rß  )r  rÑ   r   ro  rQ   r’  rÓ   rl  )r   r   rr  rŽ  s       r   r  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 rª  r=  r?  s      r   rm  z'CParser._parse_argument_expression_listÂ  sv   € Ø×0Ò0Ñ2Ô2ˆØ�ˆØ�lŠl˜7Ñ#Ô#ð 	>Ø�LŠL˜×:Ò:Ñ<Ô<Ñ=Ô=Ð=ð �lŠl˜7Ñ#Ô#ð 	>åŒ~˜e T¤ZÑ0Ô0Ð0r!   c                 ó*   — |                       ¦   «         S rT   )rB  rV   s    r   rŒ  z"CParser._parse_constant_expressionÊ  s   € Ø×1Ò1Ñ3Ô3Ð3r!   c                 ó†   — |                       d¦  «        }t          j        |j        |                      |¦  «        ¦  «        S )NrÅ   )rÓ   r   rÅ   rK   rL   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Í   rn   rJ   rL   r   rÅ   rK   rÇ   s     r   r  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>t          j        t          |j                 |j        |                      |¦  «        ¦  «        S |j        t          v �r/|j        dd …                              ¦   «         }| 	                    d¦  «        rj| j
        dk    r)|                      d|                      |¦  «        ¦  «         d|v rdnd}t          j        ||j        |                      |¦  «        ¦  «        S 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 rÈ|j        dd …         dv rd}nN|j        dd …         dv rd}n:|j        dd …         dv rd}n&|j        d         dv rd}n|j        d         d	v rd}nd}|dv r4| j
        dk    r)|                      d|                      |¦  «        ¦  «         t          j        ||j        |                      |¦  «        ¦  «        S |j        t          v r.t          j        d |j        |                      |¦  «        ¦  «        S |                      d!|                      |¦  «        ¦  «         d S )"Néýÿÿÿ)ÚwbÚwbur
  z)Bit-precise integer constants require C23Úuzunsigned _BitIntÚ_BitIntr   )ÚlÚLr   )r’  Ú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(   éþÿÿÿ>   ÚDFÚdfÚ
_Decimal32>   ÚDDÚddÚ
_Decimal64>   ÚDLÚdlÚ_Decimal128r^   )ÚfÚFÚfloatzlong doubleÚdouble>   rš  r�  r   z&Decimal floating constants require C23ÚcharzInvalid constant)rÍ   rn   rz  r   ÚConstantrK   rL   rw  ÚlowerÚendswithr<   rJ   Ú
ValueErrorrx  ry  )r   rN   Úsuffixr®   Úu_countÚl_countÚchÚprefixs           r   r{  zCParser._parse_constantÝ  s  € Ø�mŠm‰oŒoˆØŒ8Õ(Ð(Ð(Ý”>Ý! #¤(Ô+¨S¬Y¸¿ºÈÑ8LÔ8Lñô ð ð Œ8•zÐ!Ñ!à”Y˜r˜s˜s”^×)Ò)Ñ+Ô+ˆFØ�Š˜}Ñ-Ô-ð 	JØ”= EÒ)Ð)Ø×%Ò%ØCØŸš¨Ñ,Ô,ñô ð ð +.°¨-¨-Ð&Ð&¸Y�Ý”~ a¨¬°D·O²OÀCÑ4HÔ4HÑIÔIÐIàˆ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˜3˜3” <Ð/Ð/Ø ��Ø”˜2˜3˜3” <Ð/Ð/Ø!��Ø”˜2” *Ð,Ð,Ø��Ø”˜2” *Ð,Ð,Ø!��à�àÐ@Ð@Ð@Ø”M UÒ*Ð*à×!Ò!Ø<¸d¿oºoÈcÑ>RÔ>Rñô ð õ ”> ! S¤Y°·²ÀÑ0DÔ0DÑEÔEÐEàŒ8•{Ð"Ð"Ý”> &¨#¬)°T·_²_ÀSÑ5IÔ5IÑJÔJÐJà×ÒÐ,¨d¯oªo¸cÑ.BÔ.BÑCÔCÐCÐCÐCr!   c                 óè  — |                       ¦   «         }|j        t          vr)|                      d|                      |¦  «        ¦  «         |j                             dd¦  «        \  }}|d d…         g}|                      ¦   «         t          v r�|                       ¦   «         }|j                             dd¦  «        \  }}|p|}|d d…         }|                      |d         |¦  «        r| 	                    |¦  «         n|dxx         |z  cc<   |                      ¦   «         t          v °�|dz   d 
                    |¦  «        z   dz   }t          j        d||                      |¦  «        ¦  «        S )NzInvalid string literalú"r   r^   z" "Ústring)rÍ   rn   r|  rJ   rL   rK   ÚsplitrÉ   Ú_string_literal_needs_separatorrU   Újoinr   r¦  )	r   rN   r®  ÚcontentsÚpartsÚtok2Únext_prefixÚnext_contentsrK   s	            r   r}  z%CParser._parse_unified_string_literal	  se  € ð �mŠm‰oŒoˆØŒ8�?Ð*Ð*Ø×ÒÐ6¸¿ºÈÑ8LÔ8LÑMÔMÐMð œ9Ÿ?š?¨3°Ñ2Ô2Ñˆ�Ø˜#˜2˜#”�ˆØ�oŠoÑÔ¥?Ð2Ð2Ø—=’=‘?”?ˆDØ)-¬×)9Ò)9¸#¸qÑ)AÔ)AÑ&ˆK˜ð Ð*˜{ˆFØ)¨#¨2¨#Ô.ˆMð ×3Ò3°E¸"´I¸}ÑMÔMð +Ø—’˜]Ñ+Ô+Ð+Ð+à�b�	�	”	˜]Ñ*�	�	‘	ð �oŠoÑÔ¥?Ð2Ð2ð$ ˜‘˜uŸzšz¨%Ñ0Ô0Ñ0°3Ñ6ˆÝŒ~˜h¨¨t¯ª¸sÑ/CÔ/CÑDÔDÐDr!   ÚleftÚrightc                 óV  ‡‡— | r|sdS | dd…         |dd…         z   Št          ˆfd„dD ¦   «         ¦  «        rdS |                      d¦  «        }|d	k    rdS |}|d
k    r)| |dz
           dk    r|dz  }|d
k    r| |dz
           dk    °||z
  dz   dz  d
k    rdS | |dz   d…         }|                     d¦  «        r/dŠ|d
         ‰v o"t          ˆfd„|dd…         D ¦   «         ¦  «        S dt	          |¦  «        cxk    odk     nc o"t          d„ |D ¦   «         ¦  «        o	|d
         dv S )zAWhether joining two literal bodies would change their C spelling.Fr—  Nr¡   c              3   ó&   •K  — | ]}d |z   ‰v V — ŒdS )z??Nr)   )Ú.0r­  Úboundarys     €r   ú	<genexpr>z:CParser._string_literal_needs_separator.<locals>.<genexpr>I	  s,   øè è € Ð;Ð;¨ˆt�b‰y˜HÐ$Ð;Ð;Ð;Ð;Ð;Ð;r!   z	=/'()!<>-Tú\r^   r   r   ÚxÚ0123456789abcdefABCDEFc              3   ó    •K  — | ]}|‰v V — Œ	d S rT   r)   )r¾  r­  Ú
hex_digitss     €r   rÀ  z:CParser._string_literal_needs_separator.<locals>.<genexpr>]	  s(   øè è € Ð1XÐ1XÀr°"¸
Ð2BÐ1XÐ1XÐ1XÐ1XÐ1XÐ1Xr!   é   c              3   ó   K  — | ]}|d v V — Œ	dS )Ú01234567Nr)   )r¾  r­  s     r   rÀ  z:CParser._string_literal_needs_separator.<locals>.<genexpr>c	  s'   è è € Ð6Ð6¨�B˜*Ð$Ð6Ð6Ð6Ð6Ð6Ð6r!   rÈ  )ÚanyÚrfindÚ
startswithÚallrY   )rº  r»  Úescape_startÚ	run_startÚescaper¿  rÅ  s        @@r   r³  z'CParser._string_literal_needs_separator@	  sµ  øø€ ð ð 	˜5ð 	Ø�5ð ˜˜˜”9˜u R a RœyÑ(ˆÝÐ;Ð;Ð;Ð;¨{Ð;Ñ;Ô;Ñ;Ô;ð 	Ø�4ð —z’z $Ñ'Ô'ˆØ˜2ÒÐØ�5ð !ˆ	Ø˜!Šmˆm  Y°¡]Ô 3°tÒ ;Ð ;Ø˜‰NˆIð ˜!Šmˆm  Y°¡]Ô 3°tÒ ;Ð ;à˜9Ñ$ qÑ(¨AÑ-°Ò2Ð2Ø�5à�l QÑ&Ð(Ð(Ô)ˆØ×Ò˜SÑ!Ô!ð 	Yà1ˆJØ˜”8˜zÐ)ÐX­cÐ1XÐ1XÐ1XÐ1XÈVÐTUÐTVÐTVÌZÐ1XÑ1XÔ1XÑ.XÔ.XÐXð
 •�V‘”Ð Ð Ò Ð ˜qÒ Ð Ð Ð ð 'ÝÐ6Ð6¨vÐ6Ñ6Ô6Ñ6Ô6ð'à�a”˜JÐ&ð	
r!   c                 óR  — |                       d¦  «        }|r}|                       d¦  «        r(t          j        g |                      |¦  «        ¦  «        S |                      ¦   «         }|                       d¦  «         |                      d¦  «         |S |                      ¦   «         S )Nr  r›  r  )rÑ   r   ÚInitListrL   Ú_parse_initializer_listrÓ   rl  )r   r!  Ú	init_lists      r   rK  zCParser._parse_initializerm	  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 )Nr  r›  r   )Ú_parse_initializer_itemrÑ   rÉ   rU   r   rÑ  rQ   )r   r£  s     r   rÒ  zCParser._parse_initializer_listz	  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>   rh  r  )rÉ   Ú_parse_designationrK  r   ÚNamedInitializer)r   Údesignationr¥   s      r   rÕ  zCParser._parse_initializer_itemƒ	  s]   € ØˆØ�?Š?ÑÔÐ 6Ð6Ð6Ø×1Ò1Ñ3Ô3ˆKØ×&Ò&Ñ(Ô(ˆØÐ"ÝÔ)¨+°tÑ<Ô<Ð<Øˆr!   c                 óX   — |                       ¦   «         }|                      d¦  «         |S )Nr?  )Ú_parse_designator_listrÓ   ©r   Údesignatorss     r   rØ  zCParser._parse_designation�	  s+   € Ø×1Ò1Ñ3Ô3ˆØ�Š�XÑÔÐØÐr!   c                 ó°   — g }|                       ¦   «         dv r=|                     |                      ¦   «         ¦  «         |                       ¦   «         dv °=|S r×  )rÉ   rU   Ú_parse_designatorrÝ  s     r   rÜ  zCParser._parse_designator_list“	  s[   € ØˆØ�oŠoÑÔÐ#9Ð9Ð9Ø×Ò˜t×5Ò5Ñ7Ô7Ñ8Ô8Ð8ð �oŠoÑÔÐ#9Ð9Ð9àÐr!   c                 óh  — |                       d¦  «        x}rQ|                      ¦   «         }|                      d¦  «         t          j        ||                      |¦  «        ¦  «        S |                       d¦  «        r|                      ¦   «         S |                      d| j        j	        ¦  «         d S )Nr  rß  rh  zInvalid designator)
rÑ   rŒ  rÓ   r   ÚArrayDesignatorrL   r  rJ   r;   rC   r”  s      r   rà  zCParser._parse_designator›	  s¦   € Ø—,’,˜zÑ*Ô*Ð*ˆ3ð 	EØ×2Ò2Ñ4Ô4ˆDØ�LŠL˜Ñ$Ô$Ð$ÝÔ(¨¨t¯ª¸sÑ/CÔ/CÑDÔDÐDØ�<Š<˜Ñ!Ô!ð 	6Ø×3Ò3Ñ5Ô5Ð5Ø×ÒÐ.°´	Ô0BÑCÔCÐCÐCÐCr!   c                 ó‚   — |                       d¦  «        }|                      d|                      |¦  «        ¦  «         d S )Nr7  zDirectives not supported yet)rÓ   rJ   rL   rÇ   s     r   rB  zCParser._parse_pp_directive¨	  s<   € Ø�lŠl˜8Ñ$Ô$ˆØ×ÒÐ8¸$¿/º/È#Ñ:NÔ:NÑOÔOÐOÐOÐOr!   c                 óÄ  — |                       ¦   «         dk    r•|                      ¦   «         }|                       ¦   «         dk    rA|                      ¦   «         }t          j        |j        |                      |¦  «        ¦  «        S t          j        d|                      |¦  «        ¦  «        S |                       ¦   «         dk    rz|                      ¦   «         }|                      d¦  «        }|                      ¦   «         }|                      d¦  «         t          j        ||                      |¦  «        ¦  «        S |                      d| j	        j
        ¦  «         d S )Nr:  ÚPPPRAGMASTRr.   r9  rî   rÿ   zInvalid pragma)rÉ   rÍ   r   r  rK   rL   rÓ   r}  rJ   r;   rC   )r   rN   Ústr_tokÚlparenÚliterals        r   rC  z!CParser._parse_pppragma_directive®	  s  € Ø�?Š?ÑÔ 
Ò*Ð*Ø—-’-‘/”/ˆCØ�ŠÑ Ô  MÒ1Ð1ØŸ-š-™/œ/�Ý”| G¤M°4·?²?À7Ñ3KÔ3KÑLÔLÐLÝ”<  D§O¢O°CÑ$8Ô$8Ñ9Ô9Ð9à�?Š?ÑÔ 	Ò)Ð)Ø—-’-‘/”/ˆCØ—\’\ (Ñ+Ô+ˆFØ×8Ò8Ñ:Ô:ˆGØ�LŠL˜Ñ"Ô"Ð"Ý”< ¨¯ª¸Ñ)@Ô)@ÑAÔAÐAà×ÒÐ*¨D¬IÔ,>Ñ?Ô?Ð?Ð?Ð?r!   c                 ó°   — g }|                       ¦   «         dv r=|                     |                      ¦   «         ¦  «         |                       ¦   «         dv °=|S )Nr8  )rÉ   rU   rC  )r   r`  s     r   r_  z&CParser._parse_pppragma_directive_listÀ	  sX   € ØˆØ�oŠoÑÔÐ#:Ð:Ð:Ø�NŠN˜4×9Ò9Ñ;Ô;Ñ<Ô<Ð<ð �oŠoÑÔÐ#:Ð:Ð:àˆr!   c                 óz  — |                       d¦  «        }|                       d¦  «         |                      ¦   «         }d }|                      d¦  «        r|                      ¦   «         }|                       d¦  «         |                       d¦  «         t	          j        |||                      |¦  «        ¦  «        S )Nr;  rî   r  rÿ   r6  )rÓ   rŒ  rÑ   r}  r   ÚStaticAssertrL   )r   rN   r*  rP   s       r   rD  zCParser._parse_static_assertÉ	  s¦   € Ø�lŠlÐ+Ñ,Ô,ˆØ�Š�XÑÔÐØ×.Ò.Ñ0Ô0ˆØˆØ�<Š<˜Ñ Ô ð 	7Ø×4Ò4Ñ6Ô6ˆCØ�Š�XÑÔÐØ�Š�VÑÔÐÝÔ! $¨¨T¯_ª_¸SÑ-AÔ-AÑBÔBÐBr!   )r.   F)r   N)F©r   rT   )FF)r   r‰   rÞ   )r   rœ   )T)r   N)¥r"   r#   r$   r%   r   Úboolrn   r&   r   rB   r   r0  rO   r   r   rJ   rW   r[   rb   rd   rh   r(   r:   r   r“   rt   r«   rª   r˜   Úlistr‡   r	   r•   rš   r³   r¹   r¾   r   rI   rÂ   rÉ   rÍ   rÑ   rÓ   rÖ   rÚ   rL   rà   rã   rê   rð   Útuplerô   rý   rò   r  r  r  r  ræ   r!  r)  r™   rH   r1  r3  rE  r\  rI  r]  rJ  rG  rH  rW  rF  rw  rt  rŠ  r”   r  r€  r“  r‚  r}   rƒ  rL  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  r  r  rX  r  r  r  r  r  r1  r’  rl  rB  rH  rO  rW  re  rk  r„  r~  r‡  rƒ  r  rm  rŒ  rû  rÅ   r  r{  r¦  r}  Ústaticmethodr³  rK  rÒ  rÕ  rØ  rÜ  rà  rB  rC  r_  rë  rD  r)   r!   r   r-   r-   2   s·  € € € € € ðð ð" "Ø$Ø(Ø"Ø*Ø ØðCð $ðCð Cð CàðCð �FŒ|ðCð ð	Cð
 ðCð ðCð ðCð ðCð ðCð 
ðCð Cð Cð CðB <Aðð ØðØ#&ðØ48ðà	Œðð ð ð ð8, ð ,¨E°C©K¸$Ñ,>ð ,À8ð ,ð ,ð ,ð ,ð+ð +ð +ð +ð+ð +ð +ð +ð
+ cð +°%¸$±,ð +À4ð +ð +ð +ð +ð
+ Cð 
+°¸±ð 
+Àð 
+ð 
+ð 
+ð 
+ð cð ¨dð ð ð ð ðY 3ð Y¨cð Y¸3ð YÀ4ð Yð Yð Yð YðJ cð °Sð ¸U¼Zð ð ð ð ðX9àŒj˜5œ=Ñ(¨5¬>Ñ9ð9ð �u”zÔ"ð9ð 
Œ�e”mÑ	# e¤nÑ	4ð	9ð 9ð 9ð 9ðvà˜;Ô'ðð �u”zÑ!ðð ð	ð
 
ðð ð ð ð<
Øð
Ø',¤z°DÑ'8ð
ØAFÈÁð
à	Œð
ð 
ð 
ð 
ð4 #(ð	^ð ^àð^ð �KÔ ð^ð  ð	^ð
 
ˆeŒjÔ	ð^ð ^ð ^ð ^ð@
àð
ð Œjð
ð ˜%œ*Ô%¨Ñ,ð	
ð
 Œjð
ð 
Œð
ð 
ð 
ð 
ð*°ð ¸ð ð ð ð ðð �sð  5¨4¡<ð ð ð ð ð*¨°©ð *¸ð *ð *ð *ð *ð5ð 5˜Cð 5¨¨d©
ð 5ð 5ð 5ð 5ð
˜%ð ð ð ð ð	 #ð 	¨%°$©,ð 	ð 	ð 	ð 	ð #ð ¨%ð ð ð ð ð#�sð #ð #ð #ð #ð!˜3ð ! 4ð !ð !ð !ð !ðL˜eð L¨ð Lð Lð Lð Lð'ð ' u¨t¡|ð '¸tð 'ð 'ð 'ð 'ð.ð . e¨d¡lð .¸dð .ð .ð .ð .ð) 4ð )ð )ð )ð )ð,ð ,¨$ð ,¸4ð ,ð ,ð ,ð ,ð#¨E°#¸±*¸dÐ2BÔ,Cð #ð #ð #ð #ð NSðð Ø"ðØFJðà	ˆuŒz˜DÑ  $Ð&Ô	'ðð ð ð ð6"¨E°#¸±*¸dÐ2BÔ,Cð "ð "ð "ð "ðH;°Dð ;ð ;ð ;ð ;ð? 4ð ?ð ?ð ?ð ?ð'.à	ˆuŒ~˜s E¨4°¬9Ð4Ô	5¸Ñ	<ð'.ð '.ð '.ð '.ðX°T¸%Ô:RÔ5Sð ð ð ð ð@Ø˜%œ*Ô%ðØ37¸Ô8PÔ3Qðà	ˆeŒjÔ	ðð ð ð ð*PØ”JðPØ,0°Ô1IÔ,JðPà	ŒðPð Pð Pð PðØ”J ¤Ñ.°´Ñ?ðØGRðà	Œ�e”mÑ	# e¤nÑ	4ðð ð ð ð"=°%´-ð =ð =ð =ð =ð¨¨e¬jÔ)9ð ð ð ð ðD2¨T°%´*Ô-=ð D2ð D2ð D2ð D2ðLNØðNØ',¤zðNà	ŒðNð Nð Nð Nð:	2 D¨¬Ô$4ð 	2ð 	2ð 	2ð 	2ð	¨D°´Ô,<ð 	ÀÀeÄjÔAQð 	ð 	ð 	ð 	ð? $ u¤zÔ"2ð ?ð ?ð ?ð ?ð,Øð,Ø+/ð,à	ˆeŒjÔ	ð,ð ,ð ,ð ,ð\Y kð Y°dð Yð Yð Yð Yð

¨Kð 
¸DÀÄÔ<Lð 
ð 
ð 
ð 
ð"¨¨e¬jÔ)9ð ð ð ð ð %*ð+ð +Ø!ð+à	ˆ{˜D %¨$¡,Ð.Ô	/ð+ð +ð +ð +ð4ð ð ð ðC+Ø-1ðC+à	Ð! 4¨°©Ð5Ô	6ðC+ð C+ð C+ð C+ðL¨D°¬Ið ð ð ð ð9¨E¬Mð 9ð 9ð 9ð 9ð¨¬ð ð ð ð ðC¨¬ð Cð Cð Cð CðC¨Ô)9ð Cð Cð Cð Cð DIðð Ø˜kÔ*ðØ<@ðà	ˆkÔ	ðð ð ð ðð ¨dð ¸{ð ð ð ð ð2T°%´*ð 2Tð 2Tð 2Tð 2Tðj°°U´ZÔ0@ð ð ð ð ð%
¨4°´
Ô+;¸dÑ+Bð %
ð %
ð %
ð %
ðP¨t°KÔ/@ð ð ð ð ðð ð ð ð"
 u¤zð 
ð 
ð 
ð 
ð6
8¨E¬Nð 
8ð 
8ð 
8ð 
8ð4¨¬
ð 4ð 4ð 4ð 4ð( 5¤:ð ð ð ð ð( 5¤:ð ð ð ð ðH e¤jð Hð Hð Hð HðL¨%¬*ð Lð Lð Lð LðM°%´*ð Mð Mð Mð Mð¨3ð ¸Tð ÀeÄjð ð ð ð ð .2ð/ð /Øð/Ø&*ð/à	Œð/ð /ð /ð /ð,¨¬ð ¸¼
ð ð ð ð ðT¨5¬:ð T¸%¼*ð Tð Tð Tð Tð CGð;(ð ;(Øœ dÑ*ð;(Ø38¸4±<ð;(à	Œð;(ð ;(ð ;(ð ;(ð|¨e¬jð ¸U¼Zð ð ð ð ð, ¤
¨TÑ 1ð ð ð ð ð*¨E¬Oð ð ð ð ð" u¤ð ð ð ð ð¨e¬jð ð ð ð ðI°5´:ð Ið Ið Ið Ið4=Øð=Ø',¤z°DÑ'8ð=ØFKÈdÁlð=à	Œð=ð =ð =ð =ð-¨E¬J¸Ñ,=ð -ð -ð -ð -ð¨¬
ð ð ð ð ð
8 %¤.ð 
8ð 
8ð 
8ð 
8ð°´
¸TÑ0Að ð ð ð ð$/°5´:ð /ð /ð /ð /ð61°´À$Ñ0Fð 1ð 1ð 1ð 1ð
¨E¬Jð 
ð 
ð 
ð 
ð: %¤*ð :ð :ð :ð :ð4'°´
ð 'ð 'ð 'ð 'ð' 5¤:°°U´ZÔ0@Ñ#@ð 'ð 'ð 'ð 'ð"¨¨U¬ZÔ(8ð ð ð ð ð >Bð 
ð 
ð 
°dð 
ÀeÄjð 
ð 
ð 
ð 
ð"S¨%¬*ð Sð Sð Sð SðBW¨E¬Jð Wð Wð Wð Wð2)W¨E¬Jð )Wð )Wð )Wð )WðZR u¤zð Rð Rð Rð Rð.¨U¬Zð ð ð ð ð u¤z°DÑ'8ð ð ð ð ð1 5¤:ð 1ð 1ð 1ð 1ð¨e¬jð ð ð ð ð¨u¬zð ð ð ð ð ;?ðð ØðØ&+¤j°4Ñ&7ðà	Œðð ð ð ðD.¨¬
ð .ð .ð .ð .ð* 0¨¬ð  0ð  0ð  0ð  0ðL3¨5¬:ð 3ð 3ð 3ð 3ðt4D¨5¬:ð 4Dð 4Dð 4Dð 4Dðp	P¨%Ô*@ð 	Pð 	Pð 	Pð 	PðI¨EÔ,Dð Ið Ið Ið Ið°5´:ð ð ð ð ð 1°´ð 1ð 1ð 1ð 1ð4¨E¬Jð 4ð 4ð 4ð 4ð9 5¤:ð 9ð 9ð 9ð 9ð
9¨U¬Xð 9ð 9ð 9ð 9ð<D ¤ð <Dð <Dð <Dð <DðB E¨u¬~ð  Eð  Eð  Eð  EðD ð$
¨cð $
¸#ð $
À$ð $
ð $
ð $
ñ „\ð$
ðX
3 E¤Jð 
3ð 
3ð 
3ð 
3ð5¨¬ð 5ð 5ð 5ð 5ð¨¬ð ð ð ð ð D¨¬Ô$4ð ð ð ð ð¨¨U¬ZÔ(8ð ð ð ð ðD 5¤:ð Dð Dð Dð DðP Xð Pð Pð Pð Pð@¨5¬:ð @ð @ð @ð @ð$°°U´ZÔ0@ð ð ð ð ð	C eÔ&8ð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cr!   r-   >   r?  ÚOREQUALÚANDEQUALÚDIVEQUALÚMODEQUALÚXOREQUALÚ	PLUSEQUALÚ
MINUSEQUALÚ
TIMESEQUALÚLSHIFTEQUALÚRSHIFTEQUALÚLORÚLANDÚORr¡   ÚXORrÆ  r]  é   ÚEQé   ÚNEÚGTé   ÚGEÚLTÚLEÚRSHIFTé   ÚLSHIFTr`  é   ra  rí   é	   ÚDIVIDEÚMOD>   ÚAUTOÚEXTERNrÝ  ÚTYPEDEFÚREGISTERÚ	CONSTEXPRÚ_THREAD_LOCALÚINLINEÚ	_NORETURN>   ÚCONSTry  ÚRESTRICTÚVOLATILEÚTYPEOFÚTYPEOF_UNQUAL>   ÚINTÚCHARÚLONGÚVOIDÚFLOATÚSHORTÚ_BOOLÚDOUBLEÚSIGNEDÚUNSIGNEDÚ_COMPLEXÚ__INT128Ú
_DECIMAL32Ú
_DECIMAL64Ú_DECIMAL128>   r~  r|  r}  rÆ   ry  r{  rz  rå   >   rÅ   r]  r^  r_  r`  ra  rí   rî   rb  rv  r[  rc  rt  r\  ru  >   ÚINT_CONST_BINÚINT_CONST_DECÚINT_CONST_HEXÚINT_CONST_OCTÚINT_CONST_CHARÚFLOAT_CONSTÚHEX_FLOAT_CONSTrí  Ú	nullptr_t)Ú
BOOL_CONSTÚNULLPTR>   Ú
CHAR_CONSTÚWCHAR_CONSTÚU8CHAR_CONSTÚU16CHAR_CONSTÚU32CHAR_CONST>   ÚSTRING_LITERALÚWSTRING_LITERALÚU8STRING_LITERALÚU16STRING_LITERALÚU32STRING_LITERAL>   r
  r  r  r  r  r6  r  r	  r  r  r  r  r9  r  r:  c                   óŽ   — e Zd ZdZdeg edz  f         ddfd„Zddededz  fd„Zdedz  fd	„Z	defd
„Z
deddfd„Zdeddfd„ZdS )r?   z8Provides buffered access to tokens supplied by a reader.Ú
read_tokenNr   c                 ó0   — || _         g | _        d| _        d S r$  )Ú_read_tokenÚ_bufferÚ_index)r   r@  s     r   rB   z_TokenStream.__init__
  s   € Ø%ˆÔØ+-ˆŒØˆŒˆˆr!   r   r¿   c                 ó    — |dk    rdS | j         |z   dz
  }|t          | j        ¦  «        k    r|                      |¦  «         | j        |         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   ©rD  rY   rC  Ú_fill)r   r¿   Úposs      r   rÁ   z_TokenStream.peek„
  sS   € ð �Š6ˆ6Ø�4ØŒk˜A‰o Ñ!ˆØ•#�d”lÑ#Ô#Ò#Ð#Ø�JŠJ�q‰MŒMˆMØŒ|˜CÔ Ð r!   c                 ó®   — | j         t          | j        ¦  «        k    r|                      d¦  «         | j        | j                  }| xj         dz  c_         |S )z%Consume a single token and return it.r   rF  rÇ   s     r   rÌ   z_TokenStream.next’
  sK   € àŒ;�#˜dœlÑ+Ô+Ò+Ð+Ø�JŠJ�q‰MŒMˆMØŒl˜4œ;Ô'ˆØˆŒ�qÑˆŒØˆ
r!   c                 ó   — | j         S rT   ©rD  rV   s    r   rÕ   z_TokenStream.markŸ
  s
   € ØŒ{Ðr!   rÕ   c                 ó   — || _         d S rT   rK  rÙ   s     r   rØ   z_TokenStream.reset¢
  s   € ØˆŒˆˆr!   Únc                 óî   — t          | j        ¦  «        | j        |z   k     rT|                      ¦   «         }| j                             |¦  «         |€d S t          | j        ¦  «        | j        |z   k     °Rd S d S rT   )rY   rC  rD  rB  rU   )r   rM  rN   s      r   rG  z_TokenStream._fill¥
  sw   € Ý�$”,ÑÔ $¤+°¡/Ò1Ð1Ø×"Ò"Ñ$Ô$ˆCØŒL×Ò Ñ$Ô$Ð$Øˆ{Ø�õ	 �$”,ÑÔ $¤+°¡/Ò1Ð1Ð1Ð1Ð1Ð1r!   rì  )r"   r#   r$   r%   r   r   rB   r(   rÁ   rÌ   rÕ   rØ   rG  r)   r!   r   r?   r?   |
  só   € € € € € ØBÐBð 8¨B°¸±Ð,<Ô#=ð À$ð ð ð ð ð
!ð !�cð ! %¨$¡,ð !ð !ð !ð !ð�e˜d‘lð ð ð ð ð�cð ð ð ð ð˜#ð  $ð ð ð ð ð�sð ˜tð ð ð ð ð ð r!   r?   c                   ó²   — e Zd ZU ee         ed<   ee         ed<   eej                 ed<   ee         ed<   eej                 ed<   eej	                 ed<   dS )r‰   rŽ   r�   rn   r�   r‘   r’   N)
r"   r#   r$   rî  r&   r'   r   r“   r”   r  r)   r!   r   r‰   r‰   ´
  sy   € € € € € € Ø
ˆsŒ)€O€O�OØ�#ŒYÐÐÑØ
ˆuŒzÔ
ÐÐÑØ�3ŒiÐÐÑØ�E”MÔ"Ð"Ð"Ñ"Ø˜%Ô2Ô3Ð3Ð3Ñ3Ð3Ð3r!   r‰   )rŽ   r�   rn   r�   r‘   c                   óv   — e Zd ZU ej        dz  ed<   eej        dz           ed<   eej        dz           ed<   dS )rœ   Nrk   r¥   r    )r"   r#   r$   r   r“   r'   r   r)   r!   r   rœ   rœ   À
  sW   € € € € € € ð
 Œ*�tÑ
ÐÐÑØ
�e”j 4Ñ'Ô
(Ð(Ð(Ñ(Ø˜œ dÑ*Ô+Ð+Ð+Ñ+Ð+Ð+r!   rœ   N)3Úcollections.abcr   Údataclassesr   Útypingr   r   r   r   r	   r
   r   r.   r   Úast_transformsr   r   Úc_lexerr   r   r   r   Ú	Exceptionr+   r-   r  rP  r  r„  r   r�  r…  rp   r+  r,  r‚   r©   rß   Ú_EXPR_STARTrw  rx  rz  ry  r|  Úkeysrâ   rç   r?   r‰   rŒ   rœ   r)   r!   r   ú<module>rY     sO  ðð %Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +ð €�ÐÑÔðð ð ð ð ñ ô ñ Ôðð$	ð 	ð 	ð 	ð 	�ñ 	ô 	ð 	ð`&Cð `&Cð `&Cð `&Cð `&Cñ `&Cô `&Cð `&CðFMð ð €ð"Ø	ˆ1ðà
ˆAðð 	ˆ!ðð 
ˆ1ð	ð
 
ˆ1ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð ˆaðð ˆaðð ˆAðð ˆQðð  ˆQð!ð" ˆað#ð$ 
ˆ1ð%ð Ð ð*ð ð €ð ˜KÐ(€à>Ð>Ð>€à˜/Ð*€ðð ð Ð ð& ”^ U¤]°E´OÀUÄ^ÐTÐ ð Øñàñð ñð ñ	ð
	ð 	ð 	ñð ð$ð ð €ð$ð ð €
ð Ð0Ð1€à#)°kÐBÐBÐ ðð ð €ðð ð €ð Øñàñð ñð ñ	ð
 ×ÒÑÔñð ðð ð Ð ð&.ð .ð .ð .ð .ñ .ô .ð .ðp4ð 4ð 4ð 4ð 4�	ñ 4ô 4ð 4ð ÐJÔK€ð,ð ,ð ,ð ,ð ,�	ñ ,ô ,ð ,ð ,ð ,r!   