Ë
    òU.jÆ^ ã                   ó  — d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
mZ ddlmZ ddlmZmZ ddlmZmZ e G d„ d«      «       Z G d	„ d
e«      Z G d„ d«      Zh d£Zi dd “dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d“d!d"“d#d"“d$d%“d&d%“d'd%i¥Zh d(£Zd)d*hZh d+£Zh d,£Zeez  ez  ez  h d-£z  Zh d.£Zh d/£Z d0d1hZ!h d2£Z"d3hZ#h d4£Z$ee z  e!z  e"z  e#z  e$z  Z%h d5£Z& G d6„ d7«      Z' G d8„ d9e
«      Z(ed:   Z) G d;„ d<e
«      Z*y=)>é    )Ú	dataclass)	ÚAnyÚDictÚListÚLiteralÚNoReturnÚOptionalÚTupleÚ	TypedDictÚcasté   )Úc_ast)ÚCLexerÚ_Token)Úfix_switch_casesÚfix_atomic_specifiersc                   óF   — e Zd ZU dZeed<   eed<   dZee   ed<   defd„Z	y)ÚCoordzkCoordinates of a syntactic element. Consists of:
    - File name
    - Line number
    - Column number
    ÚfileÚlineNÚcolumnÚreturnc                 óx   — | j                   › d| j                  › �}| j                  r|d| j                  › �z  }|S )NÚ:©r   r   r   )ÚselfÚtexts     úTC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\pycparser/c_parser.pyÚ__str__zCoord.__str__'   s;   € Ø—)‘)�˜A˜dŸi™i˜[Ð)ˆØ�;Š;Ø�a˜Ÿ™�}Ð%Ñ%ˆDØˆó    )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__Úintr   r	   r   © r    r   r   r      s-   … ñð ƒIØ
ƒIØ €FˆH�S‰MÓ ð˜ô r    r   c                   ó   — e Zd Zy)Ú
ParseErrorN)r!   r"   r#   r(   r    r   r*   r*   .   s   „ Ør    r*   c                   ó  — e Zd ZdZdedddddfdedee   d	ed
ededededdfd„Z	 d¯dededede	j                  fd„Zd°dedee   defd„Zdedeez  dz  defd„Zd±d„Zd±d„Zdedee   ddfd„Zdedee   ddfd„Zdedefd „Zded!ededdfd"„Zd±d#„Zd±d$„Zdedefd%„Zd&ed'ede	j8                  fd(„Zd&e	j<                  e	j>                  z  e	j@                  z  d)e!e   de	j<                  e	j>                  z  e	j@                  z  fd*„Z"	 d²d+ed,   d-ed.d/d0edd,f
d1„Z#	 d²d2d,d3e!d4   d5ede!e	j8                     fd6„Z$d2d,d&e	j8                  d7ee!e	j8                        d8e	j8                  de	j8                  f
d9„Z%d:edefd;„Z&d³d<edee'   fd=„Z(d³d<edee   fd>„Z)de'fd?„Z*d@edee'   fdA„Z+d@ede'fdB„Z,defdC„Z-dDeddfdE„Z.dFe'defdG„Z/d°dFee'   defdH„Z0d°dFee'   defdI„Z1defdJ„Z2d²dKedefdL„Z3de4ee   ef   fdM„Z5	 d´dNedOede4ee	j8                     ef   fdP„Z6de4ee   ef   fdQ„Z7defdR„Z8defdS„Z9dee4e	j@                  ee'f      fdT„Z:de	j                  fdU„Z;de!e	j8                     fdV„Z<de!e	j8                     fdW„Z=de!e	j8                     fdX„Z>de!e	j8                     fdY„Z?d2d,dZede!e	j8                     fd[„Z@de!e	j8                     fd\„ZA	 d²d]ede4d,eee   f   fd^„ZBdµd_„ZCde!e   fd`„ZDde	j8                  fda„ZEde	j8                  fdb„ZF	 d¶dced4   dKede!d4   fdd„ZGd²dKedd4fde„ZHde	j8                  fdf„ZIde!e	j8                     fdg„ZJdee!e	j8                        fdh„ZKde!d4   fdi„ZLd·dj„ZMde	j8                  fdk„ZNde	j8                  fdl„ZOde	j8                  fdm„ZPde	j8                  fdn„ZQde	j8                  fdo„ZRde	j8                  fdp„ZSde	j8                  fdq„ZTd.edrede	j8                  fds„ZU	 d¸d.edrede	j8                  fdt„ZVd&e	j8                  de	j8                  fdu„ZWdve	j8                  de	j8                  fdw„ZX	 d°dxee	j8                     dee   de	j8                  fdy„ZYdve	j8                  de	j8                  fdz„ZZdee	j8                     fd{„Z[de	j¸                  fd|„Z]de	j¸                  fd}„Z^de	j8                  fd~„Z_d2d,d&ee	j8                     dee   de	j8                  fd€„Z`dee	j8                     fd�„Zade	j8                  fd‚„Zbde	j@                  fdƒ„Zcdee	j8                     fd„„Zdde	j8                  fd…„Zedee	j¸                     fd†„Zfde	j8                  fd‡„Zgde	j8                  e!e	j8                     z  fdˆ„Zhde	j8                  e!e	j8                     z  fd‰„Zide	j8                  e!e	j8                     z  fdŠ„Zjde!e	j8                     fd‹„Zkde	j8                  fdŒ„Zlde	j8                  fd�„Zmde	j8                  fdŽ„Znde	j8                  fd�„Zode	j8                  fd�„Zpde	j8                  fd‘„Zqdee	j8                     fd’„Zrde	j8                  fd“„Zsde	j8                  fd”„Ztde	j8                  fd•„Zu	 d¹d–ed—ee	j8                     de	j8                  fd˜„Zvde	j8                  fd™„Zwde	j8                  fdš„Zxde	j8                  fd›„Zyde	j8                  fdœ„Zzde	j8                  fd�„Z{de	j8                  fdž„Z|de	j8                  fdŸ„Z}de	j8                  fd „Z~de	j8                  fd¡„Zde	j8                  fd¢„Z€de	j8                  fd£„Z�de	j8                  fd¤„Z‚de	j8                  fd¥„Zƒde	j8                  fd¦„Z„de	j8                  fd§„Z…de!e	j8                     fd¨„Z†de!e	j8                     fd©„Z‡de	j8                  fdª„Zˆdefd«„Z‰de	j8                  fd¬„ZŠde!e	j8                     fd­„Z‹de!e	j8                     fd®„ZŒy)ºÚCParseraF  Recursive-descent C parser.

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

    The `lexer` parameter lets you inject a lexer class (defaults to CLexer).
    The parameters after `lexer` are accepted for backward compatibility with
    the old PLY-based parser and are otherwise unused.
    Tzpycparser.lextabzpycparser.yacctabFÚ Úlex_optimizeÚlexerÚlextabÚyacc_optimizeÚyacctabÚ
yacc_debugÚtaboutputdirr   Nc                 óÊ   —  || j                   | j                  | j                  | j                  ¬«      | _        t        «       g| _        t        | j                  «      | _        y )N)Ú
error_funcÚon_lbrace_funcÚon_rbrace_funcÚtype_lookup_func)	Ú_lex_error_funcÚ_lex_on_lbrace_funcÚ_lex_on_rbrace_funcÚ_lex_type_lookup_funcÚclexÚdictÚ_scope_stackÚ_TokenStreamÚ_tokens)r   r.   r/   r0   r1   r2   r3   r4   s           r   Ú__init__zCParser.__init__>   sR   € ñ "Ø×+Ñ+Ø×3Ñ3Ø×3Ñ3Ø!×7Ñ7ô	
ˆŒ	ô 59³F°8ˆÔÜ%1°$·)±)Ó%<ˆ�r    r   ÚfilenameÚdebugc                 ó2  — t        «       g| _        | j                  j                  ||«       t	        | j                  «      | _        | j                  «       }| j                  «       }|�.| j                  d|j                  › �| j                  |«      «       |S )a-  Parses C code and returns an AST.

        text:
            A string containing the C source code

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

        debug:
            Deprecated debug flag (unused); for backwards compatibility.
        úbefore: )r?   r@   r>   ÚinputrA   rB   Ú _parse_translation_unit_or_emptyÚ_peekÚ_parse_errorÚvalueÚ
_tok_coord)r   r   rD   rE   ÚastÚtoks         r   ÚparsezCParser.parseZ   sy   € ô "›V˜HˆÔØ�	‰	�‰˜˜hÔ'Ü# D§I¡IÓ.ˆŒà×3Ñ3Ó5ˆØ�j‰j‹lˆØˆ?Ø×Ñ ¨¯©¨Ð4°d·o±oÀcÓ6JÔKØˆ
r    Úlinenor   c                 óF   — t        | j                  j                  ||¬«      S )Nr   )r   r>   rD   )r   rQ   r   s      r   Ú_coordzCParser._coordv   s   € Ü˜$Ÿ)™)×,Ñ,°6À&ÔIÐIr    ÚmsgÚcoordc                 ó"   — t        |› d|› �«      ‚)Nz: )r*   )r   rT   rU   s      r   rK   zCParser._parse_errory   s   € Ü˜E˜7 " S EÐ*Ó+Ð+r    c                 óJ   — | j                   j                  t        «       «       y ©N)r@   Úappendr?   ©r   s    r   Ú_push_scopezCParser._push_scope|   s   € Ø×Ñ× Ñ ¤£Õ(r    c                 ól   — t        | j                  «      dkD  sJ ‚| j                  j                  «        y )Nr   )Úlenr@   ÚpoprZ   s    r   Ú
_pop_scopezCParser._pop_scope   s-   € Ü�4×$Ñ$Ó%¨Ò)Ð)Ð)Ø×Ñ×ÑÕr    Únamec                 ó’   — | j                   d   j                  |d«      s| j                  d|›d�|«       d| j                   d   |<   y)z9Add a new typedef name (ie a TYPEID) to the current scopeéÿÿÿÿTzTypedef z1 previously declared as non-typedef in this scopeN©r@   ÚgetrK   ©r   r`   rU   s      r   Ú_add_typedef_namezCParser._add_typedef_nameƒ   sR   € à× Ñ  Ñ$×(Ñ(¨¨tÔ4Ø×ÑØ˜4˜(Ð"SÐTØôð '+ˆ×Ñ˜"Ñ˜dÒ#r    c                 ó’   — | j                   d   j                  |d«      r| j                  d|›d�|«       d| j                   d   |<   y)z`Add a new object, function, or enum member name (ie an ID) to the
        current scope
        rb   FzNon-typedef z- previously declared as typedef in this scopeNrc   re   s      r   Ú_add_identifierzCParser._add_identifierŒ   sT   € ð ×Ñ˜RÑ ×$Ñ$ T¨5Ô1Ø×ÑØ˜t˜hÐ&SÐTØôð ',ˆ×Ñ˜"Ñ˜dÒ#r    c                 óf   — t        | j                  «      D ]  }|j                  |«      }|€Œ|c S  y)z.Is *name* a typedef-name in the current scope?F)Úreversedr@   rd   )r   r`   ÚscopeÚin_scopes       r   Ú_is_type_in_scopezCParser._is_type_in_scope—   s6   € ä˜d×/Ñ/Ö0ˆEð —y‘y “ˆHØÑ#Ø’ð 1ð r    r   c                 óH   — | j                  || j                  ||«      «       y rX   )rK   rS   )r   rT   r   r   s       r   r:   zCParser._lex_error_func¡   s   € Ø×Ñ˜#˜tŸ{™{¨4°Ó8Õ9r    c                 ó$   — | j                  «        y rX   )r[   rZ   s    r   r;   zCParser._lex_on_lbrace_func¤   s   € Ø×ÑÕr    c                 ó$   — | j                  «        y rX   )r_   rZ   s    r   r<   zCParser._lex_on_rbrace_func§   s   € Ø�‰Õr    c                 ó$   — | j                  |«      S )zšLooks up types that were previously defined with
        typedef.
        Passed to the lexer for recognizing identifiers that
        are types.
        )rm   )r   r`   s     r   r=   zCParser._lex_type_lookup_funcª   s   € ð ×%Ñ% dÓ+Ð+r    ÚdeclÚmodifierc                 ó|  — |}|}|j                   r|j                   }|j                   rŒt        |t        j                  «      r	||_         |S |}t        |j                   t        j                  «      s1|j                   }t        |j                   t        j                  «      sŒ1|j                   |_         ||_         |S )z—Tacks a type modifier on a declarator, and returns
        the modified declarator.

        Note: the declarator and modifier may be modified
        )ÚtypeÚ
isinstancer   ÚTypeDecl)r   rr   rs   Úmodifier_headÚmodifier_tailÚ	decl_tails         r   Ú_type_modify_declzCParser._type_modify_declÔ   sœ   € ð !ˆØ ˆð × Ò Ø)×.Ñ.ˆMð × Ó ô �dœEŸN™NÔ+Ø!%ˆMÔØˆOð
 ˆIÜ  §¡´·±Ô@Ø%ŸN™N�	ô ! §¡´·±Õ@ð "+§¡ˆMÔØ*ˆIŒNØˆKr    Útypenamec                 óú  — |}t        |t        j                  «      s'|j                  }t        |t        j                  «      sŒ'|j                  |_        |j                  dd |_        |D ]R  }t        |t        j                  «      rŒt        |«      dkD  r| j                  d|j                  «       ŒI||_        |c S  |sit        |j                  t        j                  «      s| j                  d|j                  «       t        j                  dg|j                  ¬«      |_        |S t        j                  |D ��cg c]  }|j                  D ]  }|‘Œ Œ c}}|d   j                  ¬«      |_        |S c c}}w )z#Fixes a declaration. Modifies decl.Nr   z Invalid multiple types specifiedúMissing type in declarationr'   ©rU   r   )rv   r   rw   ru   Údeclnamer`   ÚqualsÚIdentifierTyper]   rK   rU   ÚFuncDeclÚnames)r   rr   r|   ÚtypÚtnÚidr`   s          r   Ú_fix_decl_name_typezCParser._fix_decl_name_type   s,  € ð ˆÜ˜S¤%§.¡.Ô1Ø—(‘(ˆCô ˜S¤%§.¡.Õ1ð —L‘LˆŒ	Ø—J‘J™q�MˆŒ	ó ˆBÜ˜b¤%×"6Ñ"6Õ7Ü�x“= 1Ò$Ø×%Ñ%Ð&HÈ"Ï(É(ÕSà!�C”HØ’Kð ñ ä˜dŸi™i¬¯©Ô8Ø×!Ñ!Ð"?ÀÇÁÔLÜ×+Ñ+¨U¨G¸4¿:¹:ÔFˆCŒHð ˆô ×+Ñ+Ù (Ô>¡˜"°R·X´X¨T’°X� Ò>ÀhÈqÁk×FWÑFWôˆCŒHð ˆùó ?s   Ä?E7
ÚdeclspecÚ	_DeclSpecÚnewspecÚkindÚ_DeclSpecKindrY   c                 óŠ   — |€t        g g g g g ¬«      }n|}|r||   j                  |«       |S ||   j                  d|«       |S )z2See _DeclSpec for the specifier dictionary layout.©ÚqualÚstorageru   ÚfunctionÚ	alignmentr   )r?   rY   Úinsert)r   r‰   r‹   rŒ   rY   Úspecs         r   Ú_add_declaration_specifierz"CParser._add_declaration_specifier(  s]   € ð ÐÜ"Ø ¨"°rÀRô‰Dð ˆDáØ�‰J×Ñ˜gÔ&ð ˆð �‰J×Ñ˜a Ô)àˆr    r•   ÚdeclsÚ	_DeclInfoÚtypedef_namespacec                 óÚ  — d|d   v }g }|d   j                  d«      �€±|d   d   €Øt        |d   «      dk  sBt        |d   d	   j                  «      d
k7  s$| j                  |d   d	   j                  d   «      s8d}|d   D ]  }t	        |d«      sŒ|j
                  } n | j                  d|«       t        j                  |d   d	   j                  d   dd|d   |d   d	   j
                  ¬«      |d   d<   |d   d	= nÑt        |d   d   t        j                  t        j                  t        j                  t        j                  f«      sƒt        t        |d   d   «      }t        |t        j                  «      s'|j                   }t        |t        j                  «      sŒ'|j"                  € |d   d	   j                  d   |_        |d   d	= |D �]•  }	|	d   €J ‚|r1t        j$                  d|d   |d   |	d   |	d   j
                  ¬«      }
nXt        j&                  d|d   |d   |d   |d   |	d   |	j                  d«      |	j                  d«      |	d   j
                  ¬«	      }
t        |
j                   t        j                  t        j                  t        j                  t        j                  f«      r|
}n| j)                  |
|d   «      }|rO|r'| j+                  |j,                  |j
                  «       n&| j/                  |j,                  |j
                  «       t1        t        t        j&                  t        j$                  z  |«      «      }|j3                  |«       �Œ˜ |S )zòBuilds a list of declarations all sharing the given specifiers.
        If typedef_namespace is true, each declared name is added
        to the "typedef namespace", which also includes objects,
        functions, and enum constants.
        Útypedefr‘   r   ÚbitsizeNrr   ru   é   rb   r   Ú?rU   úInvalid declarationr“   ©r€   ru   r�   ÚalignrU   r�   )r`   r�   r‘   ru   rU   r’   Úinit©	r`   r�   r¡   r‘   Úfuncspecru   r¢   rœ   rU   )rd   r]   r„   rm   ÚhasattrrU   rK   r   rw   rv   ÚEnumÚStructÚUnionr‚   r   r   ru   r€   ÚTypedefÚDeclrˆ   rf   r`   rh   r   rY   )r   r•   r—   r™   Ú
is_typedefÚdeclarationsrU   ÚtÚdecls_0_tailrr   ÚdeclarationÚ
fixed_decls               r   Ú_build_declarationszCParser._build_declarations>  s@  € ð  $ y¡/Ð1ˆ
Øˆð �‰8�<‰<˜	Ó"Ñ*ð
 �Q‰x˜ÑÐ'ä˜˜V™Ó%¨Ò)Ü˜4 ™<¨Ñ+×1Ñ1Ó2°aÒ7Ø×1Ñ1°$°v±,¸rÑ2B×2HÑ2HÈÑ2KÔLà�EØ! &œ\˜Ü" 1 gÕ.Ø$%§G¡G˜EÙ!ð *ð ×%Ñ%Ð&;¸UÔCô $)§>¡>Ø! &™\¨"Ñ-×3Ñ3°AÑ6ØØØ˜{Ñ+Ø˜v™, rÑ*×0Ñ0ô$��a‘˜Ñ ð ˜‘L Ñ$ô  Ø�a‘˜Ñ Ü—‘œUŸ\™\¬5¯;©;¼×8LÑ8LÐMôô  $¤C¨¨q©°&Ñ)9Ó:�Ü$ \´5·>±>ÔBØ#/×#4Ñ#4�Lô % \´5·>±>ÕBà×(Ñ(Ð0Ø,0°©L¸Ñ,<×,BÑ,BÀ1Ñ,E�LÔ)Ø˜V™ RÐ(äˆDØ˜‘<Ð+Ð+Ð+ÙÜ#Ÿm™mØØ˜v™,Ø  ™OØ˜f™Ø˜v™,×,Ñ,ô‘ô $Ÿj™jØØ˜v™,Ø˜{Ñ+Ø  ™OØ! *Ñ-Ø˜f™ØŸ™ &Ó)Ø ŸH™H YÓ/Ø˜v™,×,Ñ,ô
�ô Ø× Ñ Ü—‘œUŸ\™\¬5¯;©;¼×8LÑ8LÐMôð )‘
à!×5Ñ5°kÀ4ÈÁ<ÓP�
ñ !ÙØ×*Ñ*¨:¯?©?¸J×<LÑ<LÕMà×(Ñ(¨¯©¸*×:JÑ:JÔKä.Ü”U—Z‘Z¤%§-¡-Ñ/°Ó<óˆJð ×Ñ 
Ö+ðU ðX Ðr    Úparam_declsÚbodyc                 óÖ   — d|d   v r| j                  d|j                  «       | j                  |t        |dd¬«      gd¬«      d   }t	        j
                  ||||j                  ¬	«      S )
zBuilds a function definition.r›   r‘   zInvalid typedefN©rr   r¢   rœ   T©r•   r—   r™   r   )rr   r²   r³   rU   )rK   rU   r±   r?   r   ÚFuncDef)r   r•   rr   r²   r³   r¯   s         r   Ú_build_function_definitionz"CParser._build_function_definition¥  sy   € ð ˜˜Y™Ñ'Ø×ÑÐ/°·±Ô<à×.Ñ.ØÜ˜T¨°dÔ;Ð<Ø"ð /ó 
ð ñ	ˆô �}‰}Ø¨+¸DÈÏ
É
ô
ð 	
r    Útokenc                 óL   — |dk(  rt         j                  S t         j                  S )z[Given a token (either STRUCT or UNION), selects the
        appropriate AST class.
        Ústruct)r   r§   r¨   )r   r¹   s     r   Ú_select_struct_union_classz"CParser._select_struct_union_classº  s    € ð �HÒÜ—<‘<Ðä—;‘;Ðr    Úkc                 ó8   — | j                   j                  |«      S )z:Return the k-th next token without consuming it (1-based).)rB   Úpeek©r   r½   s     r   rJ   zCParser._peekÆ  s   € à�|‰|× Ñ  Ó#Ð#r    c                 óD   — | j                  |«      }|�|j                  S dS )zDReturn the type of the k-th next token, or None if absent (1-based).N)rJ   ru   )r   r½   rO   s      r   Ú
_peek_typezCParser._peek_typeÊ  s"   € à�j‰j˜‹mˆØ˜?ˆs�x‰xÐ4°Ð4r    c                 óŒ   — | j                   j                  «       }|€'| j                  d| j                  j                  «       y |S )NzAt end of input)rB   ÚnextrK   r>   rD   ©r   rO   s     r   Ú_advancezCParser._advanceÏ  s9   € Ø�l‰l×ÑÓ!ˆØˆ;Ø×ÑÐ/°·±×1CÑ1CÕDàˆJr    Ú
token_typec                 óf   — | j                  «       }|�|j                  |k(  r| j                  «       S y)zÂConditionally consume next token, only if it's of token_type.

        If it is of the expected type, consume and return it.
        Otherwise, leaves the token intact and returns None.
        N)rJ   ru   rÆ   ©r   rÇ   rO   s      r   Ú_acceptzCParser._acceptÖ  s.   € ð �j‰j‹lˆØˆ?˜sŸx™x¨:Ò5Ø—=‘=“?Ð"Ør    c                 ó    — | j                  «       }|j                  |k7  r.| j                  d|j                  › �| j	                  |«      «       |S )NrG   )rÆ   ru   rK   rL   rM   rÉ   s      r   Ú_expectzCParser._expectá  sB   € Ø�m‰m‹oˆØ�8‰8�zÒ!Ø×Ñ ¨¯©¨Ð4°d·o±oÀcÓ6JÔKØˆ
r    c                 ó6   — | j                   j                  «       S rX   )rB   ÚmarkrZ   s    r   Ú_markzCParser._markç  s   € Ø�|‰|× Ñ Ó"Ð"r    rÎ   c                 ó:   — | j                   j                  |«       y rX   )rB   Úreset©r   rÎ   s     r   Ú_resetzCParser._resetê  s   € Ø�‰×Ñ˜4Õ r    rO   c                 óN   — | j                  |j                  |j                  «      S rX   )rS   rQ   r   rÅ   s     r   rM   zCParser._tok_coordí  s   € Ø�{‰{˜3Ÿ:™: s§z¡zÓ2Ð2r    c                 óT   — |xs | j                  «       }|€y|j                  t        v S ©NF)rJ   ru   Ú_DECL_STARTrÅ   s     r   Ú_starts_declarationzCParser._starts_declarationð  s)   € ØÒ!�T—Z‘Z“\ˆØˆ;ØØ�x‰xœ;Ð&Ð&r    c                 óT   — |xs | j                  «       }|€y|j                  t        v S rÖ   )rJ   ru   Ú_STARTS_EXPRESSIONrÅ   s     r   Ú_starts_expressionzCParser._starts_expressionö  s*   € ØÒ!�T—Z‘Z“\ˆØˆ;ØØ�x‰xÔ-Ð-Ð-r    c                 óZ   — | j                  «       }|€y|t        v ry| j                  «       S )NFT)rÂ   Ú_STARTS_STATEMENTrÛ   ©r   Útok_types     r   Ú_starts_statementzCParser._starts_statementü  s2   € Ø—?‘?Ó$ˆØÐØØÔ(Ñ(ØØ×&Ñ&Ó(Ð(r    Úid_onlyc                 óH   — | j                  «       }|€y|dv ry|r|dk(  S |dv S )NF>   ÚTIMESÚLPARENTÚID>   rå   ÚTYPEID©rÂ   )r   rá   rß   s      r   Ú_starts_declaratorzCParser._starts_declarator  s=   € Ø—?‘?Ó$ˆØÐØØÐ*Ñ*ØÙØ˜tÑ#Ð#ØÐ+Ð+Ð+r    c                 ór   — | j                  «       }| j                  «       \  }}| j                  |«       ||fS rX   )rÏ   Ú_scan_declarator_name_inforÓ   )r   rÎ   rß   Ú	saw_parens       r   Ú_peek_declarator_name_infoz"CParser._peek_declarator_name_info  s7   € Ø�z‰z‹|ˆØ"×=Ñ=Ó?Ñˆ�)Ø�‰�DÔØ˜Ð"Ð"r    Úallow_abstractÚtypeid_paren_as_abstractc                 ó†  — | j                  «       \  }}|�	|rh|dk(  rc|ra|sK| j                  «       }|�| j                  |«      n| j                  j                  }| j                  d|«       | j                  «       }|dfS |dk(  r*|r| j                  «       }|dfS | j                  «       }|dfS | j                  «       }|dfS )Nræ   zInvalid declaratorFT)
rì   rJ   rM   r>   rD   rK   Ú_parse_abstract_declarator_optÚ _parse_typeid_noparen_declaratorÚ_parse_typeid_declaratorÚ_parse_id_declarator)r   rí   rî   Ú	name_typerë   rO   rU   rr   s           r   Ú_parse_any_declaratorzCParser._parse_any_declarator  sÙ   € ð  $×>Ñ>Ó@Ñˆ	�9ØÐÙ$¨°hÒ)>Á9á!Ø—j‘j“l�Ø03°˜Ÿ™¨Ô,ÀTÇYÁY×EWÑEW�Ø×!Ñ!Ð"6¸Ô>Ø×6Ñ6Ó8ˆDØ˜�;Ðà˜Ò Ù'Ø×<Ñ<Ó>�ð
 �TˆzÐð ×4Ñ4Ó6�ð �TˆzÐð ×,Ñ,Ó.ˆDØ�TˆzÐr    c                 óž  — d}| j                  d«      rO| j                  «       t        v r'| j                  «        | j                  «       t        v rŒ'| j                  d«      rŒO| j	                  «       }|€d |fS |j
                  dv r| j                  «        |j
                  |fS |j
                  dk(  r—d}| j                  «        | j                  «       \  }}|rd}d}	 | j	                  «       }|€d |fS |j
                  dk(  r|dz  }n/|j
                  dk(  r |dz  }| j                  «        |dk(  r	 ||fS Œ[| j                  «        Œkd |fS )	NFrã   >   rå   ræ   rä   Tr   ÚRPARENr   )rÊ   rÂ   Ú_TYPE_QUALIFIERrÆ   rJ   ru   rê   )r   rë   rO   rß   Únested_parenÚdepths         r   rê   z"CParser._scan_declarator_name_info/  sK  € Øˆ	Ø�l‰l˜7Ô#Ø—/‘/Ó#¤Ñ6Ø—‘”ð —/‘/Ó#¤Ò6ð �l‰l˜7Õ#ð �j‰j‹lˆØˆ;Ø˜�?Ð"Ø�8‰8Ð'Ñ'Ø�M‰MŒOØ—8‘8˜YÐ&Ð&Ø�8‰8�xÒØˆIØ�M‰MŒOØ%)×%DÑ%DÓ%FÑ"ˆH�lÙØ �	ØˆEØØ—j‘j“l�Ø�;Ø ˜?Ð*Ø—8‘8˜xÒ'Ø˜Q‘J‘EØ—X‘X Ò)Ø˜Q‘J�EØ—M‘M”OØ ’zØð ˜YÐ&Ð&ð Ø—‘”ð ð �YˆÐr    c                 ó&   — | j                  «       dv S )N>   rä   ÚLBRACKETrç   rZ   s    r   Ú"_starts_direct_abstract_declaratorz*CParser._starts_direct_abstract_declaratorR  s   € Ø�‰Ó Ð$:Ð:Ð:r    c                 óR   — | j                  «       }|d uxr |j                  t        v S rX   )rJ   ru   Ú_ASSIGNMENT_OPSrÅ   s     r   Ú_is_assignment_opzCParser._is_assignment_opU  s%   € Ø�j‰j‹lˆØ˜$ˆÒ> 3§8¡8¬Ð#>Ð>r    c                 óþ   — | j                  «       }| j                  d«      }|€y| j                  «       s| j                  |«       y| j	                  «       }| j                  d«      €| j                  |«       y|||fS )ab  Parse and return a parenthesized type name if present.

        Returns (typ, mark, lparen_tok) when the next tokens look like
        '(' type_name ')', where typ is the parsed type name, mark is the
        token-stream position before parsing, and lparen_tok is the LPAREN
        token. Returns None if no parenthesized type name is present.
        rä   Nr÷   )rÏ   rÊ   rØ   rÓ   Ú_parse_type_name)r   rÎ   Ú
lparen_tokr…   s       r   Ú_try_parse_paren_type_namez"CParser._try_parse_paren_type_nameY  sz   € ð �z‰z‹|ˆØ—\‘\ (Ó+ˆ
ØÐØØ×'Ñ'Ô)Ø�K‰K˜ÔØØ×#Ñ#Ó%ˆØ�<‰<˜Ó!Ð)Ø�K‰K˜ÔØØ�D˜*Ð$Ð$r    c                 ó’   — | j                  «       €t        j                  g «      S t        j                  | j                  «       «      S rX   )rJ   r   ÚFileASTÚ_parse_translation_unitrZ   s    r   rI   z(CParser._parse_translation_unit_or_emptyt  s5   € Ø�:‰:‹<ÐÜ—=‘= Ó$Ð$Ü�}‰}˜T×9Ñ9Ó;Ó<Ð<r    c                 óŠ   — g }| j                  «       �0|j                  | j                  «       «       | j                  «       �Œ0|S rX   )rJ   ÚextendÚ_parse_external_declaration)r   Úexts     r   r  zCParser._parse_translation_unitz  s;   € ØˆØ�j‰j‹lÐ&Ø�J‰J�t×7Ñ7Ó9Ô:ð �j‰j‹lÑ&àˆ
r    c           	      ór  — | j                  «       }|€g S |j                  dk(  r| j                  «        g S |j                  dv r| j                  «       gS | j	                  d«      rg S |j                  dk(  r| j                  «       S | j                  |«      s˜| j                  «       }d }| j                  «       dk7  r| j                  d|j                  «       t        g g g t        j                  dg|j                  ¬«      gg ¬	«      }| j                  |||| j                  «       ¬
«      }|gS | j!                  d¬«      \  }}}| j#                  «       \  }}	|dk7  r%| j%                  ||«      }
| j'                  d«       |
S | j                  «       }| j                  «       dk(  s| j                  «       r˜d }| j                  «       r| j)                  «       }| j                  «       dk7  r| j                  d|j                  «       |d   st        j                  dg|¬«      g|d<   | j                  |||| j                  «       ¬
«      }|gS t        |d d ¬«      }| j	                  d«      r| j+                  «       |d<   | j-                  |¬«      }
| j/                  ||
d¬«      }
| j'                  d«       |
S )NÚPPHASH¾   Ú_PRAGMAÚPPPRAGMAÚSEMIÚ_STATIC_ASSERTÚLBRACEzInvalid function definitionr'   r   )r�   r“   r‘   ru   r’   )r•   rr   r²   r³   T©Úallow_no_typerå   ru   rµ   ÚEQUALSr¢   )Úfirstr¶   )rJ   ru   Ú_parse_pp_directiveÚ_parse_pppragma_directiverÊ   Ú_parse_static_assertrØ   ró   rÂ   rK   rU   r?   r   r‚   r¸   Ú_parse_compound_statementÚ_parse_declaration_specifiersrì   Ú_parse_decl_body_with_specrÌ   Ú_parse_declaration_listÚ_parse_initializerÚ_parse_init_declarator_listr±   )r   rO   rr   r²   r•   ÚfuncÚsaw_typeÚ
spec_coordrô   Ú_r—   Ú	decl_dicts               r   r
  z#CParser._parse_external_declaration†  sµ  € Ø�j‰j‹lˆØˆ;ØˆIØ�8‰8�xÒØ×$Ñ$Ô&ØˆIØ�8‰8Ð.Ñ.Ø×2Ñ2Ó4Ð5Ð5Ø�<‰<˜ÔØˆIØ�8‰8Ð'Ò'Ø×,Ñ,Ó.Ð.à×'Ñ'¨Ô,ð ×,Ñ,Ó.ˆDØˆKØ�‰Ó  HÒ,Ø×!Ñ!Ð"?ÀÇÁÔLÜ"ØØØÜ×*Ñ*¨E¨7¸$¿*¹*ÔEÐFØôˆDð ×2Ñ2ØØØ'Ø×3Ñ3Ó5ð	 3ó ˆDð �6ˆMð &*×%GÑ%GØð &Hó &
Ñ"ˆˆh˜
ð ×6Ñ6Ó8‰ˆ	�1Ø˜ÒØ×3Ñ3°D¸(ÓCˆEØ�L‰L˜Ô ØˆLà×(Ñ(Ó*ˆà�?‰?Ó Ò(¨D×,DÑ,DÔ,FØˆKØ×'Ñ'Ô)Ø"×:Ñ:Ó<�Ø�‰Ó  HÒ,Ø×!Ñ!Ð"?ÀÇÁÔLØ˜’<Ü %× 4Ñ 4°e°WÀJÔ OÐP��V‘Ø×2Ñ2ØØØ'Ø×3Ñ3Ó5ð	 3ó ˆDð �6ˆMä!%¨4°dÀDÔ!Iˆ	Ø�<‰<˜Ô!Ø $× 7Ñ 7Ó 9ˆI�fÑØ×0Ñ0°yÐ0ÓAˆØ×(Ñ(¨d¸%ÐSWÐ(ÓXˆØ�‰�VÔØˆr    c                 óH   — | j                  «       }| j                  d«       |S ©Nr  )Ú_parse_decl_bodyrÌ   ©r   r—   s     r   Ú_parse_declarationzCParser._parse_declarationÜ  s!   € Ø×%Ñ%Ó'ˆØ�‰�VÔØˆr    c                 óR   — | j                  d¬«      \  }}}| j                  ||«      S )NTr  )r  r  )r   r•   r"  r$  s       r   r(  zCParser._parse_decl_bodyâ  s/   € Ø ×>Ñ>ÈTÐ>ÓRÑˆˆh˜Ø×.Ñ.¨t°XÓ>Ð>r    r"  c                 ó&  — d }|r!| j                  «       r5| j                  «       }n$| j                  d¬«      r| j                  d¬«      }|€±|d   }t        j                  t        j                  t        j
                  f}t        |«      dk(  rLt        |d   |«      r=t        j                  d |d   |d   |d   |d	   |d   d d |d   j                  ¬
«	      g}|S | j                  |t        d d d ¬«      gd¬«      }|S | j                  ||d¬«      }|S )NT©rá   ru   r   r   r�   r“   r‘   r’   r£   rµ   r¶   )rè   r   r   r§   r¨   r¦   r]   rv   rª   rU   r±   r?   )r   r•   r"  r—   ÚtyÚs_u_or_es         r   r  z"CParser._parse_decl_body_with_specè  s3  € ð ˆÙØ×&Ñ&Ô(Ø×8Ñ8Ó:‘à×&Ñ&¨tÐ&Ô4Ø×8Ñ8ÀÐ8ÓF�àˆ=Ø�f‘ˆBÜŸ™¤e§k¡k´5·:±:Ð>ˆHÜ�2‹w˜!Š|¤
¨2¨a©5°(Ô ;ä—J‘JØ!Ø" 6™lØ" ;Ñ/Ø $ Y¡Ø!% jÑ!1Ø ™UØ!Ø $Ø  ™eŸk™kô
ð�ð0 ˆð ×0Ñ0ØÜ T°¸dÔCÐDØ&*ð 1ó �ð ˆð	 ×,Ñ,Ø ¸$ð -ó ˆEð ˆr    c                 óŠ   — g }| j                  «       r0|j                  | j                  «       «       | j                  «       rŒ0|S rX   )rØ   r	  r*  r)  s     r   r  zCParser._parse_declaration_list  s;   € ØˆØ×&Ñ&Ô(Ø�L‰L˜×0Ñ0Ó2Ô3ð ×&Ñ&Õ(àˆr    r  c           	      ó  — d}d}d}	 | j                  «       }|€�n*|j                  dk(  r7|€| j                  |«      }| j                  || j	                  «       dd¬«      }Œ[|j                  dk(  rM| j                  d«      d	k(  r9|€| j                  |«      }| j                  || j                  «       d
d¬«      }d}Œ·|j                  t        v rB|€| j                  |«      }| j                  || j                  «       j                  dd¬«      }�Œ|j                  t        v rB|€| j                  |«      }| j                  || j                  «       j                  dd¬«      }�Œ_|j                  t        v rB|€| j                  |«      }| j                  || j                  «       j                  dd¬«      }�Œ³|j                  t        v rk|€| j                  |«      }| j                  «       }| j                  |t        j                  |j                  g| j                  |«      ¬«      d
d¬«      }d}�Œ0|j                  dk(  rn|rný|€| j                  |«      }| j                  «       }| j                  |t        j                  |j                  g| j                  |«      ¬«      d
d¬«      }d}�Œ­|j                  dv r:|€| j                  |«      }| j                  || j                  «       d
d¬«      }d}�Œõ|j                  dk(  r:|€| j                  |«      }| j                  || j!                  «       d
d¬«      }d}�Œ>	 |€&| j#                  d| j$                  j&                  «       |s|s| j#                  d|«       |||fS )a¶  Parse declaration-specifier sequence.

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

        Returns:
            (spec, saw_type, first_coord) where spec is a dict with
            qual/storage/type/function/alignment entries, saw_type is True
            if a type specifier was consumed, and first_coord is the coord
            of the first specifier token (used for diagnostics).
        NFTÚ_ALIGNASr“   ©rY   Ú_ATOMICr�   rä   ru   r�   r‘   r’   r   ræ   ¾   ÚUNIONÚSTRUCTÚENUMrŸ   r~   )rJ   ru   rM   r–   Ú_parse_alignment_specifierrÂ   Ú_parse_atomic_specifierrø   rÆ   rL   Ú_STORAGE_CLASSÚ_FUNCTION_SPECÚ_TYPE_SPEC_SIMPLEr   r‚   Ú _parse_struct_or_union_specifierÚ_parse_enum_specifierrK   r>   rD   )r   r  r•   r"  Úfirst_coordrO   s         r   r  z%CParser._parse_declaration_specifiers  s™  € ð ˆØˆØˆàØ—*‘*“,ˆCØˆ{Ùà�x‰x˜:Ò%ØÐ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø˜$×9Ñ9Ó;¸[ÐQUð 7ó �ð à�x‰x˜9Ò$¨¯©¸Ó);¸xÒ)GØÐ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø˜$×6Ñ6Ó8¸&Èð 7ó �ð  �Øà�x‰xœ?Ñ*ØÐ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø˜$Ÿ-™-›/×/Ñ/°Àð 7ó �ñ à�x‰xœ>Ñ)ØÐ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø˜$Ÿ-™-›/×/Ñ/°À4ð 7ó �ñ à�x‰xœ>Ñ)ØÐ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø˜$Ÿ-™-›/×/Ñ/°ÀDð 7ó �ñ à�x‰xÔ,Ñ,ØÐ&Ø"&§/¡/°#Ó"6�KØ—m‘m“o�Ø×6Ñ6ØÜ×(Ñ(¨#¯)©)¨¸D¿O¹OÈCÓ<PÔQØØð	 7ó �ð  �Ùà�x‰x˜8Ò#ÙØØÐ&Ø"&§/¡/°#Ó"6�KØ—m‘m“o�Ø×6Ñ6ØÜ×(Ñ(¨#¯)©)¨¸D¿O¹OÈCÓ<PÔQØØð	 7ó �ð  �Ùà�x‰xÐ.Ñ.ØÐ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø˜$×?Ñ?ÓAÀ6ÐRVð 7ó �ð  �Ùà�x‰x˜6Ò!ØÐ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø˜$×4Ñ4Ó6¸Àtð 7ó �ð  �Ùààˆ<Ø×ÑÐ3°T·Y±Y×5GÑ5GÔHá¡Ø×ÑÐ;¸[ÔIà�X˜{Ð*Ð*r    c           	      ó  — d }d}d}d }	 | j                  «       }|€�n„|j                  dk(  r9|€| j                  |«      }| j                  || j	                  «       dd¬«      }d}Œ]|j                  dk(  rM| j                  d«      dk(  r9|€| j                  |«      }| j                  || j                  «       d	d¬«      }d}Œ¹|j                  t        v rB|€| j                  |«      }| j                  || j                  «       j                  d
d¬«      }�Œ|j                  t        v rk|€| j                  |«      }| j                  «       }| j                  |t        j                  |j                  g| j                  |«      ¬«      d	d¬«      }d}�ŒŠ|j                  dk(  rn|rný|€| j                  |«      }| j                  «       }| j                  |t        j                  |j                  g| j                  |«      ¬«      d	d¬«      }d}�Œ|j                  dv r:|€| j                  |«      }| j                  || j                  «       d	d¬«      }d}�ŒO|j                  dk(  r:|€| j                  |«      }| j                  || j                  «       d	d¬«      }d}�Œ˜	 |€&| j                  d| j                   j"                  «       |s|s| j                  d|«       |j%                  d«      €g |d<   |j%                  d«      €g |d<   |S )NFTr2  r“   r3  r4  r�   rä   ru   r�   r   ræ   r5  r8  zInvalid specifier listr~   r‘   r’   )rJ   ru   rM   r–   r9  rÂ   r:  rø   rÆ   rL   r=  r   r‚   r>  r?  rK   r>   rD   rd   )r   r•   r"  Úsaw_alignmentr@  rO   s         r   Ú_parse_specifier_qualifier_listz'CParser._parse_specifier_qualifier_list˜  s,  € ØˆØˆØˆØˆàØ—*‘*“,ˆCØˆ{Ùà�x‰x˜:Ò%ØÐ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø˜$×9Ñ9Ó;¸[ÐQUð 7ó �ð !%�Øà�x‰x˜9Ò$¨¯©¸Ó);¸xÒ)GØÐ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø˜$×6Ñ6Ó8¸&Èð 7ó �ð  �Øà�x‰xœ?Ñ*ØÐ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø˜$Ÿ-™-›/×/Ñ/°Àð 7ó �ñ à�x‰xÔ,Ñ,ØÐ&Ø"&§/¡/°#Ó"6�KØ—m‘m“o�Ø×6Ñ6ØÜ×(Ñ(¨#¯)©)¨¸D¿O¹OÈCÓ<PÔQØØð	 7ó �ð  �Ùà�x‰x˜8Ò#ÙØØÐ&Ø"&§/¡/°#Ó"6�KØ—m‘m“o�Ø×6Ñ6ØÜ×(Ñ(¨#¯)©)¨¸D¿O¹OÈCÓ<PÔQØØð	 7ó �ð  �Ùà�x‰xÐ.Ñ.ØÐ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø˜$×?Ñ?ÓAÀ6ÐRVð 7ó �ð  �Ùà�x‰x˜6Ò!ØÐ&Ø"&§/¡/°#Ó"6�KØ×6Ñ6Ø˜$×4Ñ4Ó6¸Àtð 7ó �ð  �Ùààˆ<Ø×ÑÐ6¸¿	¹	×8JÑ8JÔKá¡Ø×ÑÐ;¸[ÔIà�8‰8�IÓÐ&Ø ˆD�‰OØ�8‰8�JÓÐ'Ø!ˆD�Ñàˆr    c                 ó¶   — g }| j                  «       t        v r@|j                  | j                  «       j                  «       | j                  «       t        v rŒ@|S rX   )rÂ   rø   rY   rÆ   rL   )r   r�   s     r   Ú_parse_type_qualifier_listz"CParser._parse_type_qualifier_listû  sD   € ØˆØ�o‰oÓ¤?Ñ2Ø�L‰L˜Ÿ™›×.Ñ.Ô/ð �o‰oÓ¤?Ò2àˆr    c                 ó~  — | j                  d«      }| j                  d«       | j                  «       rF| j                  «       }| j                  d«       t        j                  || j                  |«      «      S | j                  «       }| j                  d«       t        j                  || j                  |«      «      S )Nr2  rä   r÷   )rÌ   rØ   r  r   ÚAlignasrM   Ú_parse_constant_expression)r   rO   r…   Úexprs       r   r9  z"CParser._parse_alignment_specifier  s�   € Ø�l‰l˜:Ó&ˆØ�‰�XÔà×#Ñ#Ô%Ø×'Ñ'Ó)ˆCØ�L‰L˜Ô"Ü—=‘=  d§o¡o°cÓ&:Ó;Ð;à×.Ñ.Ó0ˆØ�‰�XÔÜ�}‰}˜T 4§?¡?°3Ó#7Ó8Ð8r    c                 óÂ   — | j                  d«       | j                  d«       | j                  «       }| j                  d«       |j                  j                  d«       |S )Nr4  rä   r÷   Ú_Atomic)rÌ   r  r�   rY   )r   r…   s     r   r:  zCParser._parse_atomic_specifier  sK   € Ø�‰�YÔØ�‰�XÔØ×#Ñ#Ó%ˆØ�‰�XÔØ�	‰	×Ñ˜Ô#Øˆ
r    r  c                 ó¾   — |�|gn| j                  |¬«      g}| j                  d«      r3|j                  | j                  |¬«      «       | j                  d«      rŒ3|S )Nr-  ÚCOMMA)Ú_parse_init_declaratorrÊ   rY   )r   r  rá   r—   s       r   r   z#CParser._parse_init_declarator_list  se   € ð
 Ð ð ‰Gà×-Ñ-°gÐ-Ó>Ð?ð 	ð �l‰l˜7Ô#Ø�L‰L˜×4Ñ4¸WÐ4ÓEÔFð �l‰l˜7Õ#àˆr    c                 ó¨   — |r| j                  «       n| j                  «       }d }| j                  d«      r| j                  «       }t	        ||d ¬«      S )Nr  rµ   )ró   Ú_parse_declaratorrÊ   r  r?   )r   rá   rr   r¢   s       r   rN  zCParser._parse_init_declarator'  sK   € Ù.5ˆt×(Ñ(Ô*¸4×;QÑ;QÓ;SˆØˆØ�<‰<˜Ô!Ø×*Ñ*Ó,ˆDÜ˜ D°$Ô7Ð7r    c                 ót  — | j                  «       }| j                  |j                  «      }| j                  «       dv rÑ| j                  «       }| j                  «       dk(  rŠ| j                  «        | j	                  d«      r$ ||j                  g | j                  |«      ¬«      S | j                  «       }| j                  d«        ||j                  || j                  |«      ¬«      S  ||j                  d | j                  |«      ¬«      S | j                  «       dk(  rv| j                  «       }| j	                  d«      r |d g | j                  |«      ¬«      S | j                  «       }| j                  d«        |d || j                  |«      ¬«      S | j                  d| j                  |«      «       y )N>   rå   ræ   r  ÚRBRACE)r`   r—   rU   z Invalid struct/union declaration)	rÆ   r¼   rL   rÂ   rÊ   rM   Ú_parse_struct_declaration_listrÌ   rK   )r   rO   ÚklassÚname_tokr—   Ú	brace_toks         r   r>  z(CParser._parse_struct_or_union_specifier3  sm  € Ø�m‰m‹oˆØ×/Ñ/°·	±	Ó:ˆà�?‰?ÓÐ 0Ñ0Ø—}‘}“ˆHØ�‰Ó  HÒ,Ø—‘”Ø—<‘< Ô)Ù Ø%Ÿ^™^°2¸T¿_¹_ÈXÓ=Vôð ð ×;Ñ;Ó=�Ø—‘˜XÔ&ÙØ!Ÿ™¨u¸D¿O¹OÈHÓ<Uôð ñ Ø—^‘^¨4°t·±ÀxÓ7Pôð ð �?‰?Ó Ò(ØŸ™›ˆIØ�|‰|˜HÔ%Ù $¨b¸¿¹È	Ó8RÔSÐSØ×7Ñ7Ó9ˆEØ�L‰L˜Ô"Ù˜d¨%°t·±ÀyÓ7QÔRÐRà×ÑÐ<¸d¿o¹oÈcÓ>RÕSr    c                 óœ   — g }| j                  «       dvr7| j                  «       }|€Œ%|j                  |«       | j                  «       dvrŒ7|S ©N>   NrR  )rÂ   Ú_parse_struct_declarationr	  )r   r—   Úitemss      r   rS  z&CParser._parse_struct_declaration_listT  sR   € ØˆØ�o‰oÓÐ'7Ñ7Ø×2Ñ2Ó4ˆEØˆ}ØØ�L‰L˜Ôð	 �o‰oÓÐ'7Ò7ð
 ˆr    c                 óì  — | j                  «       dk(  r| j                  «        y | j                  «       dv r| j                  «       gS | j                  «       }d|j	                  dg «      vsJ ‚d }| j                  «       s| j                  «       dk(  r| j                  «       }|�$| j                  d«       | j                  ||¬«      S t        |d   «      dk(  rk|d   d	   }t        |t        j                  «      r|}nt        j                  |«      }| j                  d«       | j                  |t        |d d ¬
«      g¬«      S | j                  d«       | j                  |t        d d d ¬
«      g¬«      S )Nr  r  r›   r‘   ÚCOLON©r•   r—   ru   r   r   rµ   )rÂ   rÆ   r  rC  rd   rè   Ú_parse_struct_declarator_listrÌ   r±   r]   rv   r   ÚNoder‚   r?   )r   r•   r—   ÚnodeÚ	decl_types        r   rY  z!CParser._parse_struct_declaration`  sh  € Ø�?‰?Ó Ò&Ø�M‰MŒOØØ�?‰?ÓÐ 7Ñ7Ø×2Ñ2Ó4Ð5Ð5à×3Ñ3Ó5ˆØ §¡¨°BÓ 7Ñ7Ð7Ð7àˆØ×"Ñ"Ô$¨¯©Ó(9¸WÒ(DØ×6Ñ6Ó8ˆEØÐØ�L‰L˜Ô Ø×+Ñ+°¸UÐ+ÓCÐCäˆt�F‰|Ó Ò!Ø˜‘< ‘?ˆDÜ˜$¤§
¡
Ô+Ø ‘	ä!×0Ñ0°Ó6�	Ø�L‰L˜Ô Ø×+Ñ+Ø¤$¨I¸DÈ$Ô"OÐ!Pð ,ó ð ð 	�‰�VÔØ×'Ñ'Øœd¨°4ÀÔFÐGð (ó 
ð 	
r    c                 ó¬   — | j                  «       g}| j                  d«      r1|j                  | j                  «       «       | j                  d«      rŒ1|S ©NrM  )Ú_parse_struct_declaratorrÊ   rY   r)  s     r   r^  z%CParser._parse_struct_declarator_list‚  sG   € Ø×.Ñ.Ó0Ð1ˆØ�l‰l˜7Ô#Ø�L‰L˜×6Ñ6Ó8Ô9ð �l‰l˜7Õ#àˆr    c                 óö   — | j                  d«      r,| j                  «       }t        j                  d d d d «      d |dœS | j	                  «       }| j                  d«      r| j                  «       }|d |dœS |d d dœS )Nr\  rµ   )rÊ   rH  r   rw   rP  )r   rœ   rr   s      r   rd  z CParser._parse_struct_declaratorŠ  s‚   € Ø�<‰<˜Ô Ø×5Ñ5Ó7ˆGäŸ™ t¨T°4¸Ó>ØØ"ñð ð ×%Ñ%Ó'ˆØ�<‰<˜Ô Ø×5Ñ5Ó7ˆGØ ¨$¸7ÑCÐCà d°tÑ<Ð<r    c                 ó`  — | j                  d«      }| j                  «       dv r´| j                  «       }| j                  «       dk(  ra| j                  «        | j                  «       }| j                  d«       t	        j
                  |j                  || j                  |«      «      S t	        j
                  |j                  d | j                  |«      «      S | j                  d«       | j                  «       }| j                  d«       t	        j
                  d || j                  |«      «      S )Nr8  >   rå   ræ   r  rR  )rÌ   rÂ   rÆ   Ú_parse_enumerator_listr   r¦   rL   rM   )r   rO   rU  Úenumss       r   r?  zCParser._parse_enum_specifierœ  sß   € Ø�l‰l˜6Ó"ˆØ�?‰?ÓÐ 0Ñ0Ø—}‘}“ˆHØ�‰Ó  HÒ,Ø—‘”Ø×3Ñ3Ó5�Ø—‘˜XÔ&Ü—z‘z (§.¡.°%¸¿¹ÈÓ9MÓNÐNÜ—:‘:˜hŸn™n¨d°D·O±OÀCÓ4HÓIÐIà�‰�XÔØ×+Ñ+Ó-ˆØ�‰�XÔÜ�z‰z˜$  t§¡°sÓ';Ó<Ð<r    c                 ó0  — | j                  «       }t        j                  |g|j                  «      }| j	                  d«      rS| j                  «       dk(  r	 |S | j                  «       }|j                  j                  |«       | j	                  d«      rŒS|S )NrM  rR  )Ú_parse_enumeratorr   ÚEnumeratorListrU   rÊ   rÂ   ÚenumeratorsrY   )r   ÚenumÚ	enum_lists      r   rg  zCParser._parse_enumerator_list­  sˆ   € Ø×%Ñ%Ó'ˆÜ×(Ñ(¨$¨°·±Ó<ˆ	Ø�l‰l˜7Ô#Ø�‰Ó  HÒ,Øð Ðð ×)Ñ)Ó+ˆDØ×!Ñ!×(Ñ(¨Ô.ð	 �l‰l˜7Õ#ð
 Ðr    c                 ó  — | j                  d«      }| j                  d«      r| j                  «       }nd }t        j                  |j
                  || j                  |«      «      }| j                  |j                  |j                  «       |S )Nrå   r  )
rÌ   rÊ   rH  r   Ú
EnumeratorrL   rM   rh   r`   rU   )r   rU  rL   rm  s       r   rj  zCParser._parse_enumerator¸  sm   € Ø—<‘< Ó%ˆØ�<‰<˜Ô!Ø×3Ñ3Ó5‰EàˆEÜ×Ñ §¡°°t·±ÀxÓ7PÓQˆØ×Ñ˜TŸY™Y¨¯
©
Ô3Øˆr    c                 ó:   — | j                  dd¬«      \  }}|€J ‚|S )NF©rí   rî   )rõ   )r   rr   r$  s      r   rP  zCParser._parse_declaratorÆ  s3   € Ø×,Ñ,Ø ¸5ð -ó 
‰ˆˆað ÐÐÐØˆr    c                 ó(   — | j                  dd¬«      S )Nr‡   T©rŒ   Úallow_paren©Ú_parse_declarator_kindrZ   s    r   ró   zCParser._parse_id_declaratorÎ  s   € Ø×*Ñ*°À$Ð*ÓGÐGr    c                 ó(   — | j                  dd¬«      S )NÚtypeidTrt  rv  rZ   s    r   rò   z CParser._parse_typeid_declaratorÒ  s   € Ø×*Ñ*°ÀdÐ*ÓKÐKr    c                 ó(   — | j                  dd¬«      S )Nry  Frt  rv  rZ   s    r   rñ   z(CParser._parse_typeid_noparen_declaratorÖ  s   € Ø×*Ñ*°ÀeÐ*ÓLÐLr    ru  c                 óž   — d }| j                  «       dk(  r| j                  «       }| j                  ||¬«      }|�| j                  ||«      S |S )Nrã   ©ru  )rÂ   Ú_parse_pointerÚ_parse_direct_declaratorr{   )r   rŒ   ru  ÚptrÚdirects        r   rw  zCParser._parse_declarator_kindÚ  sV   € ØˆØ�?‰?Ó Ò'Ø×%Ñ%Ó'ˆCØ×.Ñ.¨tÀÐ.ÓMˆØˆ?Ø×)Ñ)¨&°#Ó6Ð6Øˆr    c           	      óJ  — |r6| j                  d«      r%| j                  |d¬«      }| j                  d«       n[|dk(  r| j                  d«      }n| j                  d«      }t        j                  |j
                  d d d | j                  |«      ¬«      }| j                  |«      S )	Nrä   Tr|  r÷   r‡   rå   ræ   r    )rÊ   rw  rÌ   r   rw   rL   rM   Ú_parse_decl_suffixes)r   rŒ   ru  rr   rU  s        r   r~  z CParser._parse_direct_declaratoræ  s“   € ñ ˜4Ÿ<™<¨Ô1Ø×.Ñ.¨tÀÐ.ÓFˆDØ�L‰L˜Õ"à�tŠ|ØŸ<™<¨Ó-‘àŸ<™<¨Ó1�Ü—>‘>Ø!Ÿ™ØØØØ—o‘o hÓ/ôˆDð ×(Ñ(¨Ó.Ð.r    c                 óâ   — 	 | j                  «       dk(  r"| j                  || j                  |«      «      }Œ6| j                  «       dk(  r$| j                  |«      }| j                  ||«      }Œm	 |S )zAParse a chain of array/function suffixes and attach them to decl.rü   rä   )rÂ   r{   Ú_parse_array_declÚ_parse_function_decl)r   rr   r!  s      r   r‚  zCParser._parse_decl_suffixesû  sp   € àØ�‰Ó  JÒ.Ø×-Ñ-¨d°D×4JÑ4JÈ4Ó4PÓQ�ØØ�‰Ó  HÒ,Ø×0Ñ0°Ó6�Ø×-Ñ-¨d°DÓ9�ØØØˆr    Ú	base_declc                 ó<   — | j                  d |j                  ¬«      S ©N)Ú	base_typerU   )Ú_parse_array_decl_commonrU   )r   r†  s     r   r„  zCParser._parse_array_decl	  s   € Ø×,Ñ,°tÀ9Ç?Á?Ð,ÓSÐSr    r‰  c                 ó6  ‡‡— | j                  d«      }‰€| j                  |«      Šˆˆfd„}| j                  d«      rBdg| j                  «       xs g z   }| j	                  «       }| j                  d«        |||«      S | j                  «       t        v rí| j                  «       xs g }| j                  d«      r0|dgz   }| j	                  «       }| j                  d«        |||«      S | j                  d«      }|rI| j                  d«       t        j                  |j                  | j                  |«      «      } |||«      S d}| j                  «       r| j	                  «       }| j                  d«        |||«      S | j                  d«      }|rI| j                  d«       t        j                  |j                  | j                  |«      «      } ||g «      S d}| j                  «       r| j	                  «       }| j                  d«        ||g «      S )a9  Parse an array declarator suffix and return an ArrayDecl node.

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

        coord:
            Coordinate to use for the ArrayDecl. If None, uses the '[' token.
        rü   Nc                 ó6   •— t        j                  ‰| |‰¬«      S )N)ru   ÚdimÚ	dim_qualsrU   )r   Ú	ArrayDecl)r�  rŽ  r‰  rU   s     €€r   Úmake_array_declz9CParser._parse_array_decl_common.<locals>.make_array_decl  s   ø€ Ü—?‘?Ø C°9ÀEôð r    ÚSTATICÚstaticÚRBRACKETrã   )rÌ   rM   rÊ   rE  Ú_parse_assignment_expressionrÂ   rø   r   rå   rL   rÛ   )r   r‰  rU   Ú
lbrack_tokr�  rŽ  r�  Ú	times_toks    ``     r   rŠ  z CParser._parse_array_decl_common  sÙ  ù€ ð —\‘\ *Ó-ˆ
Øˆ=Ø—O‘O JÓ/ˆEõ	ð
 �<‰<˜Ô!Ø!˜
 d×&EÑ&EÓ&GÒ&MÈ2ÑNˆIØ×3Ñ3Ó5ˆCØ�L‰L˜Ô$Ù" 3¨	Ó2Ð2à�?‰?Ó¤Ñ/Ø×7Ñ7Ó9Ò?¸RˆIØ�|‰|˜HÔ%Ø%¨¨
Ñ2�	Ø×7Ñ7Ó9�Ø—‘˜ZÔ(Ù& s¨IÓ6Ð6ØŸ™ WÓ-ˆIÙØ—‘˜ZÔ(Ü—h‘h˜yŸ™°·±À	Ó0JÓK�Ù& s¨IÓ6Ð6ØˆCØ×&Ñ&Ô(Ø×7Ñ7Ó9�Ø�L‰L˜Ô$Ù" 3¨	Ó2Ð2à—L‘L Ó)ˆ	ÙØ�L‰L˜Ô$Ü—(‘(˜9Ÿ?™?¨D¯O©O¸IÓ,FÓGˆCÙ" 3¨Ó+Ð+àˆØ×"Ñ"Ô$Ø×3Ñ3Ó5ˆCØ�‰�ZÔ Ù˜s BÓ'Ð'r    c                 ó  — | j                  d«       | j                  d«      rd }nA| j                  «       r| j                  «       n| j	                  «       }| j                  d«       t        j                  |d |j                  ¬«      }| j                  «       dk(  rp|j                  �d|j                  j                  D ]K  }t        |t
        j                  «      r |S t        |dd «      }|sŒ0| j                  ||j                  «       ŒM |S )Nrä   r÷   ©Úargsru   rU   r  r`   )rÌ   rÊ   rØ   Ú_parse_parameter_type_listÚ_parse_identifier_list_optr   rƒ   rU   rÂ   r™  Úparamsrv   ÚEllipsisParamÚgetattrrh   )r   r†  r™  r!  Úparamr`   s         r   r…  zCParser._parse_function_declF  så   € Ø�‰�XÔØ�<‰<˜Ô!Ø‰Dð ×+Ñ+Ô-ð ×/Ñ/Ô1à×4Ñ4Ó6ð ð
 �L‰L˜Ô"ä�~‰~ 4¨d¸)¿/¹/ÔJˆà�?‰?Ó Ò(Ø�y‰yÐ$Ø!ŸY™Y×-Ô-�EÜ! %¬×)<Ñ)<Ô=Øð
 ˆô	 # 5¨&°$Ó7�DÚØ×,Ñ,¨T°5·;±;Õ?ð .ð ˆr    c                 ó  — g }| j                  d«      }|rJ| j                  «       xs g }|j                  || j                  |«      f«       | j                  d«      }|rŒJ|sy d }|D ]  \  }}t	        j
                  |||¬«      }Œ |S )Nrã   )r�   ru   rU   )rÊ   rE  rY   rM   r   ÚPtrDecl)r   Ústarsr–  r�   r  rU   s         r   r}  zCParser._parse_pointer`  sŠ   € ØˆØ—L‘L Ó)ˆ	ÙØ×3Ñ3Ó5Ò;¸ˆEØ�L‰L˜% §¡°Ó!;Ð<Ô=ØŸ™ WÓ-ˆIò ñ
 ØàˆÛ!‰LˆE�5Ü—-‘- e°#¸UÔC‰Cð "àˆ
r    c                 ó.  — | j                  «       }| j                  «       dk(  rq| j                  d«      dk(  r]| j                  «        | j                  «       }|j                  j	                  t        j                  | j                  |«      «      «       |S ©NrM  r�   ÚELLIPSIS)Ú_parse_parameter_listrÂ   rÆ   rœ  rY   r   r�  rM   )r   rœ  Úell_toks      r   rš  z"CParser._parse_parameter_type_listq  sn   € Ø×+Ñ+Ó-ˆØ�?‰?Ó Ò'¨D¯O©O¸AÓ,>À*Ò,LØ�M‰MŒOØ—m‘m“oˆGØ�M‰M× Ñ ¤×!4Ñ!4°T·_±_ÀWÓ5MÓ!NÔOØˆr    c                 óx  — | j                  «       }t        j                  |g|j                  «      }| j	                  «       dk(  ru| j	                  d«      dk7  ra| j                  «        |j                  j                  | j                  «       «       | j	                  «       dk(  r| j	                  d«      dk7  rŒa|S r¤  )Ú_parse_parameter_declarationr   Ú	ParamListrU   rÂ   rÆ   rœ  rY   ©r   r  rœ  s      r   r¦  zCParser._parse_parameter_listz  s‘   € Ø×1Ñ1Ó3ˆÜ—‘ % ¨%¯+©+Ó6ˆØ�o‰oÓ 7Ò*¨t¯©¸qÓ/AÀZÒ/OØ�M‰MŒOØ�M‰M× Ñ  ×!BÑ!BÓ!DÔEð �o‰oÓ 7Ò*¨t¯©¸qÓ/AÀZÓ/Oð ˆr    c                 ór  — | j                  d¬«      \  }}}|d   st        j                  dg|¬«      g|d<   | j                  «       rN| j	                  dd¬«      \  }}|r#| j                  |t        |d d ¬«      g¬«      d	   S | j                  |||«      S | j                  «       }| j                  |||«      S )
NTr  ru   r'   r   rr  rµ   r]  r   )	r  r   r‚   rè   rõ   r±   r?   Ú_build_parameter_declarationrð   )r   r•   r$  r#  rr   Úis_nameds         r   r©  z$CParser._parse_parameter_declaration„  sØ   € Ø"×@Ñ@ÈtÐ@ÓTÑˆˆa�à�FŠ|Ü!×0Ñ0°%°À
ÔKÐLˆD�‰Là×"Ñ"Ô$Ø!×7Ñ7Ø#¸dð 8ó ‰NˆD�(ñ Ø×/Ñ/Ø¤d°¸4ÈÔ&NÐ%Oð 0ó àñð ð ×4Ñ4°T¸4ÀÓLÐLà×2Ñ2Ó4ˆØ×0Ñ0°°t¸ZÓHÐHr    r#  c                 ó†  — t        |d   «      dkD  ret        |d   d   j                  «      dk(  rG| j                  |d   d   j                  d   «      r#| j                  |t	        |d d ¬«      g¬«      d   S t        j                  d|d   d |xs t        j                  d d d d «      |¬	«      }| j                  ||d   «      S )
Nru   r   rb   r   rµ   r]  r-   r�   ©r`   r�   r¡   ru   rU   )	r]   r„   rm   r±   r?   r   ÚTypenamerw   rˆ   )r   r•   rr   r#  s       r   r­  z$CParser._build_parameter_declaration—  sÔ   € ô ��V‘Ó Ò!Ü�D˜‘L Ñ$×*Ñ*Ó+¨qÒ0Ø×&Ñ& t¨F¡|°BÑ'7×'=Ñ'=¸aÑ'@ÔAà×+Ñ+Ø¤$¨D°tÀTÔ"JÐ!Kð ,ó àñð ô �~‰~ØØ�v‘,ØØÒ?œŸ™¨¨d°D¸$Ó?Øô
ˆð ×'Ñ'¨¨d°6©lÓ;Ð;r    c                 óJ   — | j                  «       dk(  ry | j                  «       S ©Nr÷   )rÂ   Ú_parse_identifier_listrZ   s    r   r›  z"CParser._parse_identifier_list_opt­  s#   € Ø�?‰?Ó Ò(ØØ×*Ñ*Ó,Ð,r    c                 ó   — | j                  «       }t        j                  |g|j                  «      }| j	                  d«      r;|j
                  j                  | j                  «       «       | j	                  d«      rŒ;|S rc  )Ú_parse_identifierr   rª  rU   rÊ   rœ  rY   r«  s      r   r´  zCParser._parse_identifier_list³  s`   € Ø×&Ñ&Ó(ˆÜ—‘ % ¨%¯+©+Ó6ˆØ�l‰l˜7Ô#Ø�M‰M× Ñ  ×!7Ñ!7Ó!9Ô:ð �l‰l˜7Õ#àˆr    c                 ó`  — | j                  «       }| j                  «       }d }|�|j                  }n|d   r|d   d   j                  }t        j                  d|d   d d  d |xs t        j
                  d d d d «      |¬«      }t        t        j                  | j                  ||d   «      «      S )Nru   r   r-   r�   r°  )rC  rð   rU   r   r±  rw   r   rˆ   )r   r•   rr   rU   r|   s        r   r  zCParser._parse_type_name¾  s©   € Ø×3Ñ3Ó5ˆØ×2Ñ2Ó4ˆàˆØÐØ—J‘J‰EØ�&Š\Ø˜‘L ‘O×)Ñ)ˆEä—>‘>ØØ�v‘,™q�/ØØÒ?œŸ™¨¨d°D¸$Ó?Øô
ˆô ”E—N‘N D×$<Ñ$<¸XÀtÈFÁ|Ó$TÓUÐUr    c                 ó(  — | j                  «       dk(  r_| j                  «       }| j                  «       r| j                  «       }nt	        j
                  d d d d «      }|€J ‚| j                  ||«      S | j                  «       r| j                  «       S y )Nrã   )rÂ   r}  rý   Ú!_parse_direct_abstract_declaratorr   rw   r{   )r   r  rr   s      r   rð   z&CParser._parse_abstract_declarator_optÒ  sˆ   € Ø�?‰?Ó Ò'Ø×%Ñ%Ó'ˆCØ×6Ñ6Ô8Ø×=Ñ=Ó?‘ä—~‘~ d¨D°$¸Ó=�Ø�?Ð"�?Ø×)Ñ)¨$°Ó4Ð4à×2Ñ2Ô4Ø×9Ñ9Ó;Ð;àr    c           	      ó,  — | j                  d«      }|r§| j                  «       s| j                  «       dk(  r_| j                  «       }| j	                  d«       t        j                  |t        j                  d d d d «      | j                  |«      ¬«      }no| j                  «       }| j	                  d«       |€LJ ‚| j                  «       dk(  r| j                  «       }n&| j                  d| j                  j                  «       | j                  «      S )Nrä   r÷   r˜  rü   zInvalid abstract declarator)rÊ   rØ   rÂ   Ú_parse_parameter_type_list_optrÌ   r   rƒ   rw   rM   rð   Ú_parse_abstract_array_baserK   r>   rD   r‚  )r   r  rœ  rr   s       r   r¹  z)CParser._parse_direct_abstract_declaratorä  sç   € Ø—\‘\ (Ó+ˆ
ÙØ×'Ñ'Ô)¨T¯_©_Ó->À(Ò-JØ×<Ñ<Ó>�Ø—‘˜XÔ&Ü—~‘~ØÜŸ™¨¨d°D¸$Ó?ØŸ/™/¨*Ó5ô‘ð ×:Ñ:Ó<�Ø—‘˜XÔ&ØÐ'Ð'Ð'Ø�_‰_Ó *Ò,Ø×2Ñ2Ó4‰Dà×ÑÐ;¸T¿Y¹Y×=OÑ=OÔPà×(Ñ(¨Ó.Ð.r    c                 óJ   — | j                  «       dk(  ry | j                  «       S r³  )rÂ   rš  rZ   s    r   r»  z&CParser._parse_parameter_type_list_optû  s#   € Ø�?‰?Ó Ò(ØØ×.Ñ.Ó0Ð0r    c                 óT   — | j                  t        j                  d d d d «      d ¬«      S rˆ  )rŠ  r   rw   rZ   s    r   r¼  z"CParser._parse_abstract_array_base  s.   € Ø×,Ñ,Ü—n‘n T¨4°°tÓ<ÀDð -ó 
ð 	
r    c                 ó\  — | j                  «       }|xxdk(  rnxdk(  rn n  | j                  «       S xdk(  r%| j                  d«      dk(  r | j                  «       S xdk(  r | j                  «       S xxdk(  rnxdk(  rn n  | j                  «       S xxd	k(  rnxd
k(  rnxdk(  rn n  | j	                  «       S xxdk(  rnxdk(  rnxdk(  rnxdk(  rn n  | j                  «       S xxdk(  rnxdk(  rn n  | j                  «       S dk(  r| j                  «       S 	 | j                  «       S )NÚCASEÚDEFAULTrå   r�   r\  r  ÚIFÚSWITCHÚWHILEÚDOÚFORÚGOTOÚBREAKÚCONTINUEÚRETURNr  r  r  )	rÂ   Ú_parse_labeled_statementr  Ú_parse_selection_statementÚ_parse_iteration_statementÚ_parse_jump_statementr  r  Ú_parse_expression_statementrÞ   s     r   Ú_parse_statementzCParser._parse_statement  sí   € Ø—?‘?Ó$ˆØØ#•�)Ó#Ø×4Ñ4Ó6Ð6Ü˜Ÿ™¨Ó+¨wÒ6�Ø×4Ñ4Ó6Ð6ÝØ×5Ñ5Ó7Ð7Ø •�“Ø×6Ñ6Ó8Ð8Ø'•�4¥%Ó'Ø×6Ñ6Ó8Ð8Ø9•�'¥JµÓ9Ø×1Ñ1Ó3Ð3Ø'•�iÓ'Ø×5Ñ5Ó7Ð7Û!Ø×0Ñ0Ó2Ð2ØØ×7Ñ7Ó9Ð9r    c                 óÖ   — | j                  «       dv rH| j                  «       }| j                  «       }t        j                  ||gz   |d   j
                  ¬«      S | j                  «       S )Nr  r   ©Úblock_itemsrU   )rÂ   Ú_parse_pppragma_directive_listrÐ  r   ÚCompoundrU   )r   ÚpragmasÚstmts      r   Ú_parse_pragmacomp_or_statementz&CParser._parse_pragmacomp_or_statement$  s_   € Ø�?‰?ÓÐ 7Ñ7Ø×9Ñ9Ó;ˆGØ×(Ñ(Ó*ˆDÜ—>‘>¨g¸¸Ñ.>ÀgÈaÁj×FVÑFVÔWÐWØ×$Ñ$Ó&Ð&r    c                 ób   — | j                  «       r| j                  «       S | j                  «       S rX   )rØ   r*  rÐ  rZ   s    r   Ú_parse_block_itemzCParser._parse_block_item,  s,   € Ø×#Ñ#Ô%Ø×*Ñ*Ó,Ð,Ø×$Ñ$Ó&Ð&r    c                 óè   — g }| j                  «       dvr]| j                  «       }t        |t        «      r|d gk(  rŒ9|j	                  |«       n|j                  |«       | j                  «       dvrŒ]|S rX  )rÂ   rÚ  rv   Úlistr	  rY   )r   rZ  Úitems      r   Ú_parse_block_item_listzCParser._parse_block_item_list2  sl   € ØˆØ�o‰oÓÐ'7Ñ7Ø×)Ñ)Ó+ˆDÜ˜$¤Ô%Ø˜D˜6’>ØØ—‘˜TÕ"à—‘˜TÔ"ð �o‰oÓÐ'7Ò7ð ˆr    c                 ó   — | j                  d«      }| j                  d«      r&t        j                  d | j	                  |«      ¬«      S | j                  «       }| j                  d«       t        j                  || j	                  |«      ¬«      S )Nr  rR  rÒ  )rÌ   rÊ   r   rÕ  rM   rÞ  )r   Ú
lbrace_tokrÓ  s      r   r  z!CParser._parse_compound_statement?  so   € Ø—\‘\ (Ó+ˆ
Ø�<‰<˜Ô!Ü—>‘>¨d¸$¿/¹/È*Ó:UÔVÐVØ×1Ñ1Ó3ˆØ�‰�XÔÜ�~‰~Ø#¨4¯?©?¸:Ó+Fô
ð 	
r    c                 ó  — | j                  «       }|xdk(  r— | j                  «       }| j                  d«       | j                  «       r| j	                  «       }n$t        j                  | j                  |«      «      }t        j                  |j                  || j                  |«      «      S xdk(  rž | j                  «       }| j                  «       }| j                  d«       | j                  «       r| j	                  «       }n$t        j                  | j                  |«      «      }t        j                  ||g| j                  |«      «      S dk(  rŒ| j                  «       }| j                  d«       | j                  «       r| j	                  «       }n$t        j                  | j                  |«      «      }t        j                  |g| j                  |«      «      S 	 | j                  d| j                  j                  «       y )Nrå   r\  rÀ  rÁ  zInvalid labeled statement)rÂ   rÆ   rÌ   rà   rØ  r   ÚEmptyStatementrM   ÚLabelrL   rH  ÚCaseÚDefaultrK   r>   rD   )r   rß   rU  r×  Úcase_tokrI  Údef_toks          r   rË  z CParser._parse_labeled_statementL  s~  € Ø—?‘?Ó$ˆØÝØŸ=™=›?�Ø—‘˜WÔ%Ø×)Ñ)Ô+Ø×>Ñ>Ó@‘Dä ×/Ñ/°·±ÀÓ0IÓJ�DÜ—{‘{ 8§>¡>°4¸¿¹ÈÓ9RÓSÐSÝØŸ=™=›?�Ø×6Ñ6Ó8�Ø—‘˜WÔ%Ø×)Ñ)Ô+Ø×>Ñ>Ó@‘Dä ×/Ñ/°·±ÀÓ0IÓJ�DÜ—z‘z $¨¨°·±ÀÓ0IÓJÐJÛØŸ-™-›/�Ø—‘˜WÔ%Ø×)Ñ)Ô+Ø×>Ñ>Ó@‘Dä ×/Ñ/°·±ÀÓ0HÓI�DÜ—}‘} d V¨T¯_©_¸WÓ-EÓFÐFØØ×!Ñ!Ð"=¸t¿y¹y×?QÑ?QÕRr    c           	      óÖ  — | j                  «       }|j                  xdk(  r² | j                  d«       | j                  «       }| j                  d«       | j	                  «       }| j                  d«      r7| j	                  «       }t        j                  |||| j                  |«      «      S t        j                  ||d | j                  |«      «      S dk(  rq| j                  d«       | j                  «       }| j                  d«       | j	                  «       }t        t        j                  ||| j                  |«      «      «      S 	 | j                  d| j                  |«      «       y )NrÂ  rä   r÷   ÚELSErÃ  zInvalid selection statement)rÆ   ru   rÌ   Ú_parse_expressionrØ  rÊ   r   ÚIfrM   r   ÚSwitchrK   )r   rO   ÚcondÚ	then_stmtÚ	else_stmtrI  r×  s          r   rÌ  z"CParser._parse_selection_statementm  s  € Ø�m‰m‹oˆØ�h‰hÝØ—‘˜XÔ&Ø×-Ñ-Ó/�Ø—‘˜XÔ&Ø ×?Ñ?ÓA�	Ø—<‘< Ô'Ø $× CÑ CÓ E�IÜ Ÿ8™8 D¨)°YÀÇÁÐPSÓ@TÓUÐUÜ—x‘x  i°°t·±ÀsÓ7KÓLÐLÛØ—‘˜XÔ&Ø×-Ñ-Ó/�Ø—‘˜XÔ&Ø×:Ñ:Ó<�Ü'¬¯©°T¸4ÀÇÁÐQTÓAUÓ(VÓWÐWØØ×!Ñ!Ð"?ÀÇÁÐQTÓAUÕVr    c           	      óZ  — | j                  «       }|j                  xdk(  ri | j                  d«       | j                  «       }| j                  d«       | j	                  «       }t        j                  ||| j                  |«      «      S xdk(  r‹ | j	                  «       }| j                  d«       | j                  d«       | j                  «       }| j                  d«       | j                  d«       t        j                  ||| j                  |«      «      S dk(  �rk| j                  d«       | j                  «       r¯| j                  «       }t        j                  || j                  |«      «      }| j                  «       }| j                  d«       | j                  «       }| j                  d«       | j	                  «       }t        j                  ||||| j                  |«      «      S | j                  «       }| j                  d«       | j                  «       }| j                  d«       | j                  «       }| j                  d«       | j	                  «       }t        j                  ||||| j                  |«      «      S 	 | j                  d| j                  |«      «       y )NrÄ  rä   r÷   rÅ  r  rÆ  zInvalid iteration statement)rÆ   ru   rÌ   rê  rØ  r   ÚWhilerM   ÚDoWhilerØ   r*  ÚDeclListÚ_parse_expression_optÚForrK   )r   rO   rí  r×  r—   r¢   Ú	next_exprs          r   rÍ  z"CParser._parse_iteration_statement†  s  € Ø�m‰m‹oˆØ�h‰hÝØ—‘˜XÔ&Ø×-Ñ-Ó/�Ø—‘˜XÔ&Ø×:Ñ:Ó<�Ü—{‘{ 4¨¨t¯©¸sÓ/CÓDÐDÝØ×:Ñ:Ó<�Ø—‘˜WÔ%Ø—‘˜XÔ&Ø×-Ñ-Ó/�Ø—‘˜XÔ&Ø—‘˜VÔ$Ü—}‘} T¨4°·±ÀÓ1EÓFÐFÜØ—‘˜XÔ&Ø×+Ñ+Ô-Ø ×3Ñ3Ó5�EÜ Ÿ>™>¨%°·±ÀÓ1EÓF�DØ×5Ñ5Ó7�DØ—L‘L Ô(Ø $× :Ñ :Ó <�IØ—L‘L Ô*Ø×>Ñ>Ó@�DÜ Ÿ9™9 T¨4°¸DÀ$Ç/Á/ÐRUÓBVÓWÐWà×1Ñ1Ó3�Ø—‘˜VÔ$Ø×1Ñ1Ó3�Ø—‘˜VÔ$Ø ×6Ñ6Ó8�	Ø—‘˜XÔ&Ø×:Ñ:Ó<�Ü—y‘y  t¨Y¸¸d¿o¹oÈcÓ>RÓSÐSØØ×!Ñ!Ð"?ÀÇÁÐQTÓAUÕVr    c                 ó  — | j                  «       }|j                  xdk(  rR | j                  d«      }| j                  d«       t        j                  |j
                  | j                  |«      «      S xdk(  r6 | j                  d«       t        j                  | j                  |«      «      S xdk(  r6 | j                  d«       t        j                  | j                  |«      «      S dk(  r|| j                  d«      r%t        j                  d | j                  |«      «      S | j                  «       }| j                  d«       t        j                  || j                  |«      «      S 	 | j                  d| j                  |«      «       y )NrÇ  rå   r  rÈ  rÉ  rÊ  zInvalid jump statement)rÆ   ru   rÌ   r   ÚGotorL   rM   ÚBreakÚContinuerÊ   ÚReturnrê  rK   )r   rO   rU  rI  s       r   rÎ  zCParser._parse_jump_statement°  s  € Ø�m‰m‹oˆØ�h‰hÝØŸ<™<¨Ó-�Ø—‘˜VÔ$Ü—z‘z (§.¡.°$·/±/À#Ó2FÓGÐGÝØ—‘˜VÔ$Ü—{‘{ 4§?¡?°3Ó#7Ó8Ð8ÝØ—‘˜VÔ$Ü—~‘~ d§o¡o°cÓ&:Ó;Ð;ÛØ—<‘< Ô'Ü Ÿ<™<¨¨d¯o©o¸cÓ.BÓCÐCØ×-Ñ-Ó/�Ø—‘˜VÔ$Ü—|‘| D¨$¯/©/¸#Ó*>Ó?Ð?ØØ×!Ñ!Ð":¸D¿O¹OÈCÓ<PÕQr    c                 ó”   — | j                  «       }| j                  d«      }|€$t        j                  | j	                  |«      «      S |S r'  )rô  rÌ   r   râ  rM   )r   rI  Úsemi_toks      r   rÏ  z#CParser._parse_expression_statementÇ  sB   € Ø×)Ñ)Ó+ˆØ—<‘< Ó'ˆØˆ<Ü×'Ñ'¨¯©¸Ó(AÓBÐBØˆr    c                 óD   — | j                  «       r| j                  «       S y rX   )rÛ   rê  rZ   s    r   rô  zCParser._parse_expression_optÒ  s    € Ø×"Ñ"Ô$Ø×)Ñ)Ó+Ð+Ør    c                 ó0  — | j                  «       }| j                  d«      s|S || j                  «       g}| j                  d«      r1|j                  | j                  «       «       | j                  d«      rŒ1t        j                  ||j
                  «      S rc  ©r”  rÊ   rY   r   ÚExprListrU   ©r   rI  Úexprss      r   rê  zCParser._parse_expressionØ  sx   € Ø×0Ñ0Ó2ˆØ�|‰|˜GÔ$ØˆKØ�t×8Ñ8Ó:Ð;ˆØ�l‰l˜7Ô#Ø�L‰L˜×:Ñ:Ó<Ô=ð �l‰l˜7Õ#ä�~‰~˜e T§Z¡ZÓ0Ð0r    c                 ó’  — | j                  «       dk(  rG| j                  d«      dk(  r3| j                  «        | j                  «       }| j                  d«       |S | j	                  «       }| j                  «       rL| j                  «       j                  }| j                  «       }t        j                  ||||j                  «      S |S )Nrä   r�   r  r÷   )rÂ   rÆ   r  rÌ   Ú_parse_conditional_expressionr   rL   r”  r   Ú
AssignmentrU   )r   ÚcomprI  ÚopÚrhss        r   r”  z$CParser._parse_assignment_expressionã  s¢   € Ø�?‰?Ó Ò(¨T¯_©_¸QÓ-?À8Ò-KØ�M‰MŒOØ×1Ñ1Ó3ˆDØ�L‰L˜Ô"ØˆKà×1Ñ1Ó3ˆØ×!Ñ!Ô#Ø—‘“×&Ñ&ˆBØ×3Ñ3Ó5ˆCÜ×#Ñ# B¨¨c°4·:±:Ó>Ð>Øˆr    c                 óî   — | j                  «       }| j                  d«      rS| j                  «       }| j                  d«       | j	                  «       }t        j                  ||||j                  «      S |S )NÚCONDOPr\  )Ú_parse_binary_expressionrÊ   rê  rÌ   r  r   Ú	TernaryOprU   )r   rI  ÚiftrueÚiffalses       r   r  z%CParser._parse_conditional_expressionó  sb   € Ø×,Ñ,Ó.ˆØ�<‰<˜Ô!Ø×+Ñ+Ó-ˆFØ�L‰L˜Ô!Ø×8Ñ8Ó:ˆGÜ—?‘? 4¨°¸$¿*¹*ÓEÐEØˆr    Úmin_precÚlhsc                 óð  — |€| j                  «       }	 | j                  «       }|�|j                  t        vr	 |S t        |j                     }||k  r	 |S |j                  }| j                  «        | j                  «       }	 | j                  «       }|�|j                  t        vrn-t        |j                     }||kD  r| j                  ||«      }nnŒRt        j                  ||||j                  «      }ŒärX   )
Ú_parse_cast_expressionrJ   ru   Ú_BINARY_PRECEDENCErL   rÆ   r  r   ÚBinaryOprU   )	r   r  r  rO   Úprecr  r	  Únext_tokÚ	next_precs	            r   r  z CParser._parse_binary_expressioný  sõ   € ð ˆ;Ø×-Ñ-Ó/ˆCàØ—*‘*“,ˆCØˆ{˜cŸh™hÔ.@Ñ@Øð* ˆ
ô) & c§h¡hÑ/ˆDØ�hŠØð$ ˆ
ð! —‘ˆBØ�M‰MŒOØ×-Ñ-Ó/ˆCàØŸ:™:›<�ØÐ# x§}¡}Ô<NÑ'NØÜ.¨x¯}©}Ñ=�	Ø˜tÒ#Ø×7Ñ7¸	À3ÓG‘Càð ô —.‘.  S¨#¨s¯y©yÓ9ˆCð- r    c                 ó&  — | j                  «       }|�p|\  }}}| j                  «       dk(  r!| j                  |«       | j                  «       S | j                  «       }t	        j
                  ||| j                  |«      «      S | j                  «       S )Nr  )r  rÂ   rÓ   r  r   ÚCastrM   Ú_parse_unary_expression)r   Úresultr…   rÎ   r  rI  s         r   r  zCParser._parse_cast_expression  s‹   € Ø×0Ñ0Ó2ˆØÐØ$*Ñ!ˆC��zØ�‰Ó  HÒ,ð —‘˜DÔ!ð ×+Ñ+Ó-Ð-ð ×2Ñ2Ó4�Ü—z‘z # t¨T¯_©_¸ZÓ-HÓIÐIØ×+Ñ+Ó-Ð-r    c                 ó¦  — | j                  «       }|dv rK| j                  «       }| j                  «       }t        j                  |j
                  ||j                  «      S |dv rK| j                  «       }| j                  «       }t        j                  |j
                  ||j                  «      S |dk(  r˜| j                  «       }| j                  «       }|�6|\  }}}t        j                  |j
                  || j                  |«      «      S | j                  «       }t        j                  |j
                  || j                  |«      «      S |dk(  rr| j                  «       }| j                  d«       | j                  «       }| j                  d«       t        j                  |j
                  || j                  |«      «      S | j                  «       S )N¾   ÚPLUSPLUSÚ
MINUSMINUS>   ÚANDÚNOTÚLNOTÚPLUSÚMINUSrã   ÚSIZEOFÚ_ALIGNOFrä   r÷   )rÂ   rÆ   r  r   ÚUnaryOprL   rU   r  r  rM   rÌ   r  Ú_parse_postfix_expression)r   rß   rO   rI  r  r…   r$  s          r   r  zCParser._parse_unary_expression4  sp  € Ø—?‘?Ó$ˆØÐ1Ñ1Ø—-‘-“/ˆCØ×/Ñ/Ó1ˆDÜ—=‘= §¡¨D°$·*±*Ó=Ð=àÐGÑGØ—-‘-“/ˆCØ×.Ñ.Ó0ˆDÜ—=‘= §¡¨D°$·*±*Ó=Ð=à�xÒØ—-‘-“/ˆCØ×4Ñ4Ó6ˆFØÐ!Ø"‘	��Q˜Ü—}‘} S§Y¡Y°°T·_±_ÀSÓ5IÓJÐJØ×/Ñ/Ó1ˆDÜ—=‘= §¡¨D°$·/±/À#Ó2FÓGÐGà�zÒ!Ø—-‘-“/ˆCØ�L‰L˜Ô"Ø×'Ñ'Ó)ˆCØ�L‰L˜Ô"Ü—=‘= §¡¨C°·±ÀÓ1EÓFÐFà×-Ñ-Ó/Ð/r    c                 óê  — | j                  «       }|�p|\  }}}| j                  d«      rH| j                  «       }| j                  d«       | j                  d«       t	        j
                  ||«      S | j                  |«       | j                  «       }	 | j                  d«      rC| j                  «       }| j                  d«       t	        j                  |||j                  «      }ŒU| j                  d«      ri| j                  «       dk(  r| j                  «        d }n!| j                  «       }| j                  d«       t	        j                  |||j                  «      }ŒÏ| j                  «       dv r¬| j                  «       }	| j                  «       }
|
j                  d	vr!| j!                  d
| j#                  |
«      «       t	        j$                  |
j&                  | j#                  |
«      «      }t	        j(                  ||	j&                  ||j                  «      }�Œ�| j                  «       dv r@| j                  «       }t	        j*                  d|j&                  z   ||j                  «      }�Œß	 |S )Nr  rM  rR  rü   r“  rä   r÷   >   ÚARROWÚPERIOD>   rå   ræ   zInvalid struct referencer  Úp)r  rÊ   Ú_parse_initializer_listrÌ   r   ÚCompoundLiteralrÓ   Ú_parse_primary_expressionrê  ÚArrayRefrU   rÂ   rÆ   Ú_parse_argument_expression_listÚFuncCallru   rK   rM   rå   rL   Ú	StructRefr(  )r   r  r…   rÎ   r$  r¢   rI  Úsubr™  Úop_tokrU  ÚfieldrO   s                r   r)  z!CParser._parse_postfix_expressionT  sñ  € Ø×0Ñ0Ó2ˆØÐØ!‰LˆC��qð �|‰|˜HÔ%Ø×3Ñ3Ó5�Ø—‘˜WÔ%Ø—‘˜XÔ&Ü×,Ñ,¨S°$Ó7Ð7à—‘˜DÔ!à×-Ñ-Ó/ˆØØ�|‰|˜JÔ'Ø×,Ñ,Ó.�Ø—‘˜ZÔ(Ü—~‘~ d¨C°·±Ó<�ØØ�|‰|˜HÔ%Ø—?‘?Ó$¨Ò0Ø—M‘M”OØ‘Dà×?Ñ?ÓA�DØ—L‘L Ô*Ü—~‘~ d¨D°$·*±*Ó=�ØØ�‰Ó Ð$7Ñ7ØŸ™›�ØŸ=™=›?�Ø—=‘=Ð(8Ñ8Ø×%Ñ%Ø2°D·O±OÀHÓ4Môô Ÿ™ §¡°·±ÀÓ1JÓK�Ü—‘ t¨V¯\©\¸5À$Ç*Á*ÓM�ÙØ�‰Ó Ð$>Ñ>Ø—m‘m“o�Ü—}‘} S¨3¯9©9¡_°d¸D¿J¹JÓG�ÙØØˆr    c                 óB  — | j                  «       }|dk(  r| j                  «       S |t        v s|t        v s|t        v r| j                  «       S |t        v r| j                  «       S |t        v r| j                  «       S |dk(  r3| j                  «        | j                  «       }| j                  d«       |S |dk(  r¿| j                  «       }| j                  d«       | j                  «       }| j                  d«       | j                  «       }| j                  d«       | j                  |«      }t!        j"                  t!        j$                  |j&                  |«      t!        j(                  ||g|«      |«      S | j+                  d| j,                  j.                  «       y )Nrå   rä   r÷   ÚOFFSETOFrM  zInvalid expression)rÂ   r¶  Ú
_INT_CONSTÚ_FLOAT_CONSTÚ_CHAR_CONSTÚ_parse_constantÚ_STRING_LITERALÚ_parse_unified_string_literalÚ_WSTR_LITERALÚ_parse_unified_wstring_literalrÆ   rê  rÌ   r  Ú!_parse_offsetof_member_designatorrM   r   r3  rå   rL   r  rK   r>   rD   )r   rß   rI  Úoff_tokr…   Ú
designatorrU   s          r   r0  z!CParser._parse_primary_expression†  sa  € Ø—?‘?Ó$ˆØ�tÒØ×)Ñ)Ó+Ð+àœ
Ñ"Øœ<Ñ'Øœ;Ñ&à×'Ñ'Ó)Ð)Ø”Ñ&Ø×5Ñ5Ó7Ð7Ø”}Ñ$Ø×6Ñ6Ó8Ð8Ø�xÒØ�M‰MŒOØ×)Ñ)Ó+ˆDØ�L‰L˜Ô"ØˆKØ�zÒ!Ø—m‘m“oˆGØ�L‰L˜Ô"Ø×'Ñ'Ó)ˆCØ�L‰L˜Ô!Ø×?Ñ?ÓAˆJØ�L‰L˜Ô"Ø—O‘O GÓ,ˆEÜ—>‘>Ü—‘˜Ÿ™¨Ó.Ü—‘  ZÐ0°%Ó8Øóð ð 	×ÑÐ.°·	±	×0BÑ0BÕCr    c                 óZ  — | j                  «       }	 | j                  d«      r3| j                  «       }t        j                  |d||j                  «      }ŒE| j                  d«      rC| j                  «       }| j                  d«       t        j                  |||j                  «      }Œ™	 |S )Nr,  Ú.rü   r“  )Ú_parse_identifier_or_typeidrÊ   r   r4  rU   rê  rÌ   r1  )r   r`  r7  rI  s       r   rB  z)CParser._parse_offsetof_member_designator«  s�   € Ø×/Ñ/Ó1ˆØØ�|‰|˜HÔ%Ø×8Ñ8Ó:�Ü—‘ t¨S°%¸¿¹ÓD�ØØ�|‰|˜JÔ'Ø×-Ñ-Ó/�Ø—‘˜ZÔ(Ü—~‘~ d¨D°$·*±*Ó=�ØØØˆr    c                 óì   — | j                  «       }|g}| j                  d«      r1|j                  | j                  «       «       | j                  d«      rŒ1t        j                  ||j
                  «      S rc  r   r  s      r   r2  z'CParser._parse_argument_expression_list»  s[   € Ø×0Ñ0Ó2ˆØ�ˆØ�l‰l˜7Ô#Ø�L‰L˜×:Ñ:Ó<Ô=ð �l‰l˜7Õ#ä�~‰~˜e T§Z¡ZÓ0Ð0r    c                 ó"   — | j                  «       S rX   )r  rZ   s    r   rH  z"CParser._parse_constant_expressionÃ  s   € Ø×1Ñ1Ó3Ð3r    c                 ó‚   — | j                  d«      }t        j                  |j                  | j	                  |«      «      S )Nrå   )rÌ   r   rå   rL   rM   rÅ   s     r   r¶  zCParser._parse_identifierÊ  s.   € Ø�l‰l˜4Ó ˆÜ�x‰x˜Ÿ	™	 4§?¡?°3Ó#7Ó8Ð8r    c                 óÞ   — | j                  «       }|j                  dvr!| j                  d| j                  |«      «       t	        j
                  |j                  | j                  |«      «      S )N>   rå   ræ   zExpected identifier)rÆ   ru   rK   rM   r   rå   rL   rÅ   s     r   rG  z#CParser._parse_identifier_or_typeidÏ  sR   € Ø�m‰m‹oˆØ�8‰8Ð+Ñ+Ø×ÑÐ3°T·_±_ÀSÓ5IÔJÜ�x‰x˜Ÿ	™	 4§?¡?°3Ó#7Ó8Ð8r    c                 óú  — | j                  «       }|j                  t        v rŠd}d}|j                  dd  D ]  }|dv r|dz  }Œ|dv sŒ|dz  }Œ |dkD  rt	        d«      ‚|dkD  rt	        d«      ‚d	|z  d
|z  z   }t        j                  |dz   |j                  | j                  |«      «      S |j                  t        v rZ|j                  d   dv rd}n|j                  d   dv rd}nd}t        j                  ||j                  | j                  |«      «      S |j                  t        v r0t        j                  d|j                  | j                  |«      «      S | j                  d| j                  |«      «       y )Nr   éýÿÿÿ)ÚlÚLr   )ÚuÚUz.Constant cannot have more than one u/U suffix.r�   z.Constant cannot have more than two l/L suffix.z	unsigned zlong r'   rb   )ÚfÚFÚfloatzlong doubleÚdoubleÚcharzInvalid constant)rÆ   ru   r:  rL   Ú
ValueErrorr   ÚConstantrM   r;  r<  rK   )r   rO   Úu_countÚl_countÚchÚprefixr­   s          r   r=  zCParser._parse_constantÖ  sZ  € Ø�m‰m‹oˆØ�8‰8”zÑ!ØˆGØˆGØ—i‘i  “n�Ø˜Ñ#Ø˜q‘L‘GØ˜:Ò%Ø˜q‘L‘Gð	 %ð
 ˜Š{Ü Ð!QÓRÐRØ˜Š{Ü Ð!QÓRÐRØ  7Ñ*¨W°wÑ->Ñ>ˆFÜ—>‘> &¨5¡.°#·)±)¸T¿_¹_ÈSÓ=QÓRÐRà�8‰8”|Ñ#Ø�y‰y˜‰} 
Ñ*Ø‘Ø—‘˜2‘ *Ñ,Ø!‘à�Ü—>‘> ! S§Y¡Y°·±ÀÓ0DÓEÐEà�8‰8”{Ñ"Ü—>‘> &¨#¯)©)°T·_±_ÀSÓ5IÓJÐJà×ÑÐ,¨d¯o©o¸cÓ.BÕCr    c                 ó>  — | j                  d«      }t        j                  d|j                  | j	                  |«      «      }| j                  «       dk(  rH| j                  «       }|j                  d d |j                  dd  z   |_        | j                  «       dk(  rŒH|S )NÚSTRING_LITERALÚstringrb   r   )rÌ   r   rX  rL   rM   rÂ   rÆ   ©r   rO   r`  Útok2s       r   r?  z%CParser._parse_unified_string_literalö  s„   € Ø�l‰lÐ+Ó,ˆÜ�~‰~˜h¨¯	©	°4·?±?À3Ó3GÓHˆØ�o‰oÓÐ#3Ò3Ø—=‘=“?ˆDØŸ™ C R˜¨4¯:©:°a°b¨>Ñ9ˆDŒJð �o‰oÓÐ#3Ó3ð ˆr    c                 óÊ  — | j                  «       }|j                  t        vr!| j                  d| j	                  |«      «       t        j                  d|j                  | j	                  |«      «      }| j                  «       t        v rY| j                  «       }|j                  j                  «       d d |j                  dd  z   |_        | j                  «       t        v rŒY|S )NzInvalid string literalr_  rb   r�   )
rÆ   ru   r@  rK   rM   r   rX  rL   rÂ   Úrstripr`  s       r   rA  z&CParser._parse_unified_wstring_literalÿ  s®   € Ø�m‰m‹oˆØ�8‰8œ=Ñ(Ø×ÑÐ6¸¿¹ÈÓ8LÔMÜ�~‰~˜h¨¯	©	°4·?±?À3Ó3GÓHˆØ�o‰oÓ¤=Ñ0Ø—=‘=“?ˆDØŸ™×*Ñ*Ó,¨S¨bÐ1°D·J±J¸q¸r°NÑBˆDŒJð �o‰oÓ¤=Ò0ð ˆr    c                 ó  — | j                  d«      }|rj| j                  d«      r%t        j                  g | j                  |«      «      S | j	                  «       }| j                  d«       | j                  d«       |S | j                  «       S )Nr  rR  rM  )rÊ   r   ÚInitListrM   r.  rÌ   r”  )r   rà  Ú	init_lists      r   r  zCParser._parse_initializer  st   € Ø—\‘\ (Ó+ˆ
ÙØ�|‰|˜HÔ%Ü—~‘~ b¨$¯/©/¸*Ó*EÓFÐFØ×4Ñ4Ó6ˆIØ�L‰L˜Ô!Ø�L‰L˜Ô"ØÐà×0Ñ0Ó2Ð2r    c                 ó  — | j                  «       g}| j                  d«      rE| j                  «       dk(  rn1|j                  | j                  «       «       | j                  d«      rŒEt	        j
                  ||d   j                  «      S )NrM  rR  r   )Ú_parse_initializer_itemrÊ   rÂ   rY   r   re  rU   )r   rZ  s     r   r.  zCParser._parse_initializer_list  so   € Ø×-Ñ-Ó/Ð0ˆØ�l‰l˜7Ô#Ø�‰Ó  HÒ,ØØ�L‰L˜×5Ñ5Ó7Ô8ð �l‰l˜7Õ#ô �~‰~˜e U¨1¡X§^¡^Ó4Ð4r    c                 óž   — d }| j                  «       dv r| j                  «       }| j                  «       }|�t        j                  ||«      S |S ©N>   r,  rü   )rÂ   Ú_parse_designationr  r   ÚNamedInitializer)r   Údesignationr¢   s      r   rh  zCParser._parse_initializer_item%  sQ   € ØˆØ�?‰?ÓÐ 6Ñ6Ø×1Ñ1Ó3ˆKØ×&Ñ&Ó(ˆØÐ"Ü×)Ñ)¨+°tÓ<Ð<Øˆr    c                 óH   — | j                  «       }| j                  d«       |S )Nr  )Ú_parse_designator_listrÌ   ©r   Údesignatorss     r   rk  zCParser._parse_designation/  s"   € Ø×1Ñ1Ó3ˆØ�‰�XÔØÐr    c                 ó’   — g }| j                  «       dv r2|j                  | j                  «       «       | j                  «       dv rŒ2|S rj  )rÂ   rY   Ú_parse_designatorrp  s     r   ro  zCParser._parse_designator_list5  sF   € ØˆØ�o‰oÓÐ#9Ñ9Ø×Ñ˜t×5Ñ5Ó7Ô8ð �o‰oÓÐ#9Ò9àÐr    c                 óú   — | j                  d«      r#| j                  «       }| j                  d«       |S | j                  d«      r| j                  «       S | j	                  d| j
                  j                  «       y )Nrü   r“  r,  zInvalid designator)rÊ   rH  rÌ   rG  rK   r>   rD   )r   rI  s     r   rs  zCParser._parse_designator=  sc   € Ø�<‰<˜
Ô#Ø×2Ñ2Ó4ˆDØ�L‰L˜Ô$ØˆKØ�<‰<˜Ô!Ø×3Ñ3Ó5Ð5Ø×ÑÐ.°·	±	×0BÑ0BÕCr    c                 óh   — | j                  d«      }| j                  d| j                  |«      «       y )Nr  zDirectives not supported yet)rÌ   rK   rM   rÅ   s     r   r  zCParser._parse_pp_directiveJ  s*   € Ø�l‰l˜8Ó$ˆØ×ÑÐ8¸$¿/¹/È#Ó:NÕOr    c                 óx  — | j                  «       dk(  r‡| j                  «       }| j                  «       dk(  r?| j                  «       }t        j                  |j                  | j                  |«      «      S t        j                  d| j                  |«      «      S | j                  «       dk(  rg| j                  «       }| j                  d«      }| j                  «       }| j                  d«       t        j                  || j                  |«      «      S | j                  d| j                  j                  «       y )Nr  ÚPPPRAGMASTRr-   r  rä   r÷   zInvalid pragma)rÂ   rÆ   r   ÚPragmarL   rM   rÌ   r?  rK   r>   rD   )r   rO   Ústr_tokÚlparenÚliterals        r   r  z!CParser._parse_pppragma_directiveP  så   € Ø�?‰?Ó 
Ò*Ø—-‘-“/ˆCØ�‰Ó  MÒ1ØŸ-™-›/�Ü—|‘| G§M¡M°4·?±?À7Ó3KÓLÐLÜ—<‘<  D§O¡O°CÓ$8Ó9Ð9à�?‰?Ó 	Ò)Ø—-‘-“/ˆCØ—\‘\ (Ó+ˆFØ×8Ñ8Ó:ˆGØ�L‰L˜Ô"Ü—<‘< ¨¯©¸Ó)@ÓAÐAà×ÑÐ*¨D¯I©I×,>Ñ,>Õ?r    c                 ó’   — g }| j                  «       dv r2|j                  | j                  «       «       | j                  «       dv rŒ2|S )Nr  )rÂ   rY   r  )r   rÖ  s     r   rÔ  z&CParser._parse_pppragma_directive_listb  sC   € ØˆØ�o‰oÓÐ#:Ñ:Ø�N‰N˜4×9Ñ9Ó;Ô<ð �o‰oÓÐ#:Ò:àˆr    c                 ó  — | j                  d«      }| j                  d«       | j                  «       }d }| j                  d«      r| j                  «       }| j                  d«       t	        j
                  ||| j                  |«      «      gS )Nr  rä   rM  r÷   )rÌ   rH  rÊ   r?  r   ÚStaticAssertrM   )r   rO   rí  rT   s       r   r  zCParser._parse_static_asserti  sw   € Ø�l‰lÐ+Ó,ˆØ�‰�XÔØ×.Ñ.Ó0ˆØˆØ�<‰<˜Ô Ø×4Ñ4Ó6ˆCØ�‰�XÔÜ×"Ñ" 4¨¨d¯o©o¸cÓ.BÓCÐDÐDr    )r-   FrX   )r   N)F©r   )FF)r   rŠ   rÖ   )r   r˜   )T)r   N)�r!   r"   r#   r$   r   Úboolru   r%   rC   r   r  rP   r'   r	   r   rS   r   rK   r[   r_   rf   rh   rm   r:   r;   r<   r=   r   r_  r{   rª   r©   r±  r   rˆ   r–   r±   r¸   r¼   r   rJ   rÂ   rÆ   rÊ   rÌ   rÏ   rÓ   rM   rØ   rÛ   rà   rè   r
   rì   rõ   rê   rý   r   r  rI   r  r
  r*  r(  r  r  r  rC  rE  r9  r:  r   rN  r>  rS  rY  r^  rd  r?  rg  rj  rP  ró   rò   rñ   rw  r~  r‚  r„  rŠ  r…  r}  rª  rš  r¦  r©  r­  r›  r´  r  rð   r¹  r»  r¼  rÐ  rØ  rÚ  rÞ  r  rË  rÌ  rÍ  rÎ  rÏ  rô  rê  r”  r  r  r  r  r)  r0  rB  r2  rH  r¶  rG  r=  r?  rA  r  r.  rh  rk  ro  rs  r  r  rÔ  r  r(   r    r   r,   r,   2   s  „ ñ	ð "Ø$Ø(Ø"Ø*Ø Øñ=àð=ð �F‰|ð=ð ð	=ð
 ð=ð ð=ð ð=ð ð=ð 
ó=ð: <AñØðØ#&ðØ48ðà	�‰óñ8J˜Sð J¨(°3©-ð JÀ5ó Jð, ð ,¨E°C©K¸$Ñ,>ð ,À8ó ,ó)ó ð+ cð +°(¸5±/ð +Àdó +ð	, Cð 	,°¸±ð 	,ÀDó 	,ð cð ¨dó ð: 3ð :¨cð :¸3ð :À4ó :óóð,¨#ð ,°$ó ,ðT cð °Sð ¸U¿Z¹Zó ðX&à�j‰j˜5Ÿ=™=Ñ(¨5¯>©>Ñ9ð&ð �s‘)ð&ð 
�‰�e—m‘mÑ	# e§n¡nÑ	4ó	&ðZ ñà˜;Ñ'ðð ðð ð	ð
 ðð 
óð4 #(ñ	eàðeð �KÑ ðeð  ð	eð
 
ˆe�j‰jÑ	óeðN
àð
ð �j‰jð
ð ˜d 5§:¡:Ñ.Ñ/ð	
ð
 �j‰jð
ð 
�‰ó
ð*°ð ¸ó ñ$�sð $ 8¨FÑ#3ó $ñ5˜Cð 5¨°©ó 5ð
˜&ó ð	 #ð 	¨(°6Ñ*:ó 	ð #ð ¨&ó ð#�só #ð!˜3ð ! 4ó !ð3˜fð 3¨ó 3ñ' x°Ñ'7ð 'À4ó 'ñ. h¨vÑ&6ð .À$ó .ð) 4ó )ñ,¨$ð ,¸4ó ,ð#¨E°(¸3±-ÀÐ2EÑ,Fó #ð NSñØ"ðØFJðà	ˆx˜Ÿ
™
Ñ# TÐ)Ñ	*óð6!¨E°(¸3±-ÀÐ2EÑ,Fó !ðF;°Dó ;ð? 4ó ?ð%à	�%˜Ÿ™¨¨VÐ3Ñ4Ñ	5ó%ð6=°%·-±-ó =ð¨¨e¯j©jÑ)9ó ðM¨T°%·*±*Ñ-=ó Mðl D¨¯©Ñ$4ó ð? $ u§z¡zÑ"2ó ?ð'Øð'Ø+/ð'à	ˆe�j‰jÑ	ó'ðT¨¨e¯j©jÑ)9ó ð %*ñv+Ø!ðv+à	ˆ{˜D (¨5¡/Ð1Ñ	2óv+óv`ðF¨D°©Ió ð9¨E¯J©Jó 9ð¨¯©ó ð DIñØ˜kÑ*ðØ<@ðà	ˆkÑ	óñ8¨dð 8¸{ó 8ðT°%·*±*ó TðB°°U·Z±ZÑ0@ó ð
¨8°D¸¿¹Ñ4DÑ+Eó 
ðD¨t°KÑ/@ó ó=ð$= u§z¡zó =ð"¨¯
©
ó ð 5§:¡:ó ð 5§:¡:ó ðH e§j¡jó HðL¨%¯*©*ó LðM°%·*±*ó Mð¨3ð ¸Tð ÀeÇjÁjó ð .2ñ/Øð/Ø&*ð/à	�‰ó/ð*¨¯©ð ¸¿
¹
ó ðT¨5¯:©:ð T¸%¿*¹*ó Tð IMñ7(Ø! %§*¡*Ñ-ð7(Ø6>¸u±oð7(à	�‰ó7(ðt¨e¯j©jð ¸U¿Z¹Zó ð4 ¨¯©Ñ 4ó ð"¨E¯O©Oó ð u§¡ó ðI¨e¯j©jó Ið&<Øð<Ø'/°·
±
Ñ';ð<ØIQÐRWÉð<à	�‰ó<ð,-¨H°U·Z±ZÑ,@ó -ð¨¯
©
ó ðV %§.¡.ó Vð(°¸¿¹Ñ0Dó ð$/°5·:±:ó /ð.1°¸¿¹Ñ0Ió 1ð
¨E¯J©Jó 
ð: %§*¡*¨t°E·J±JÑ/?Ñ"?ó :ð.'°·
±
¸TÀ%Ç*Á*Ñ=MÑ0Mó 'ð' 5§:¡:°°U·Z±ZÑ0@Ñ#@ó 'ð
¨¨U¯Z©ZÑ(8ó 
ð
¨5¯:©:ó 
ðS¨%¯*©*ó SðBW¨E¯J©Jó Wð2&W¨E¯J©Jó &WðTR u§z¡zó Rð.¨U¯Z©Zó ð x°·
±
Ñ';ó ð1 5§:¡:ó 1ð¨e¯j©jó ð ¨u¯z©zó ð >BñØðØ&.¨u¯z©zÑ&:ðà	�‰óðD.¨¯
©
ó .ð*0¨¯©ó 0ð@.¨5¯:©:ó .ðd!D¨5¯:©:ó !DðJ°5·:±:ó ð 1°·±ó 1ð4¨E¯J©Jó 4ð9 5§:¡:ó 9ð
9¨U¯Z©Zó 9ðD §¡ó Dð@¨u¯z©zó ð°·
±
ó ð 
3 E§J¡Jó 
3ð5¨¯©ó 5ð¨¯©ó ð D¨¯©Ñ$4ó ð¨¨U¯Z©ZÑ(8ó ðD 5§:¡:ó DðP Xó Pð@¨5¯:©:ó @ð$°°U·Z±ZÑ0@ó ðE d¨5¯:©:Ñ&6ô Er    r,   >   r  ÚOREQUALÚANDEQUALÚDIVEQUALÚMODEQUALÚXOREQUALÚ	PLUSEQUALÚ
MINUSEQUALÚ
TIMESEQUALÚLSHIFTEQUALÚRSHIFTEQUALÚLORÚLANDÚORr�   ÚXORé   r!  é   ÚEQé   ÚNEÚGTé   ÚGEÚLTÚLEÚRSHIFTé   ÚLSHIFTr$  é   r%  rã   é	   ÚDIVIDEÚMOD>   ÚAUTOÚEXTERNr‘  ÚTYPEDEFÚREGISTERÚ_THREAD_LOCALÚINLINEÚ	_NORETURN>   ÚCONSTr4  ÚRESTRICTÚVOLATILE>   ÚINTÚCHARÚLONGÚVOIDÚFLOATÚSHORTÚ_BOOLÚDOUBLEÚSIGNEDÚUNSIGNEDÚ_COMPLEXÚ__INT128>   r8  r6  r7  ræ   r4  r2  >   rå   r!  r"  r#  r$  r%  rã   rä   r&  r9  r  r'  r   >   ÚINT_CONST_BINÚINT_CONST_DECÚINT_CONST_HEXÚINT_CONST_OCTÚINT_CONST_CHARÚFLOAT_CONSTÚHEX_FLOAT_CONST>   Ú
CHAR_CONSTÚWCHAR_CONSTÚU8CHAR_CONSTÚU16CHAR_CONSTÚU32CHAR_CONSTr^  >   ÚWSTRING_LITERALÚU8STRING_LITERALÚU16STRING_LITERALÚU32STRING_LITERAL>   rÅ  rÂ  rÆ  rÀ  rÇ  r  rÈ  rÄ  r  rÊ  rÃ  rÁ  r  rÉ  r  r  c                   óv   — e Zd ZdZdeddfd„Zddedee   fd„Z	dee   fd„Z
defd	„Zd
eddfd„Zdeddfd„Zy)rA   z¨Wraps a lexer to provide convenient, buffered access to the underlying
    token stream. The lexer is expected to be initialized with the input
    string already.
    r/   r   Nc                 ó.   — || _         g | _        d| _        y )Nr   )Ú_lexerÚ_bufferÚ_index)r   r/   s     r   rC   z_TokenStream.__init__	  s   € ØˆŒØ/1ˆŒØˆ�r    r½   c                 ón   — |dk  ry| j                  |«       | j                  | j                  |z   dz
     S )z¼Peek at the k-th next token in the stream, without consuming it.

        Examples:
            k=1 returns the immediate next token.
            k=2 returns the token after that.
        r   Nr   ©Ú_fillrÉ  rÊ  rÀ   s     r   r¿   z_TokenStream.peek
	  s5   € ð �Š6ØØ�
‰
�1ŒØ�|‰|˜DŸK™K¨!™O¨aÑ/Ñ0Ð0r    c                 ó„   — | j                  d«       | j                  | j                     }| xj                  dz  c_        |S )z%Consume a single token and return it.r   rÌ  rÅ   s     r   rÄ   z_TokenStream.next	  s2   € à�
‰
�1ŒØ�l‰l˜4Ÿ;™;Ñ'ˆØ�Š�qÑ�Øˆ
r    c                 ó   — | j                   S rX   ©rÊ  rZ   s    r   rÎ   z_TokenStream.mark"	  s   € Ø�{‰{Ðr    rÎ   c                 ó   — || _         y rX   rÐ  rÒ   s     r   rÑ   z_TokenStream.reset%	  s	   € Øˆ�r    Únc                 ó  — t        | j                  «      | j                  |z   k  r_| j                  j	                  «       }| j                  j                  |«       |€y t        | j                  «      | j                  |z   k  rŒ^y y rX   )r]   rÉ  rÊ  rÈ  r¹   rY   )r   rÒ  rO   s      r   rÍ  z_TokenStream._fill(	  sb   € Ü�$—,‘,Ó $§+¡+°¡/Ò1Ø—+‘+×#Ñ#Ó%ˆCØ�L‰L×Ñ Ô$Øˆ{Øô	 �$—,‘,Ó $§+¡+°¡/Õ1r    r  )r!   r"   r#   r$   r   rC   r'   r	   r   r¿   rÄ   rÎ   rÑ   rÍ  r(   r    r   rA   rA   ÿ  su   „ ñð
˜fð ¨ó ñ

1�cð 
1 (¨6Ñ"2ó 
1ð�h˜vÑ&ó ð�có ð˜#ð  $ó ð�sð ˜tô r    rA   c                   ó^   — e Zd ZU ee   ed<   ee   ed<   ee   ed<   ee   ed<   ee   ed<   y)rŠ   r�   r‘   ru   r’   r“   N)r!   r"   r#   r   r   r&   r(   r    r   rŠ   rŠ   6	  s2   … Ø
ˆs‰)ƒOØ�#‰YÓØ
ˆs‰)ƒOØ�3‰iÓØ�C‰yÔr    rŠ   r�   c                   óz   — e Zd ZU eej
                     ed<   eej
                     ed<   eej
                     ed<   y)r˜   rr   r¢   rœ   N)r!   r"   r#   r	   r   r_  r&   r(   r    r   r˜   r˜   A	  s1   … ð
 �5—:‘:Ñ
ÓØ
�5—:‘:Ñ
ÓØ�e—j‘jÑ!Ô!r    r˜   N)+Údataclassesr   Útypingr   r   r   r   r   r	   r
   r   r   r-   r   Úc_lexerr   r   Úast_transformsr   r   r   Ú	Exceptionr*   r,   rÿ   r  r;  r<  rø   r=  r×   Ú_EXPR_STARTr:  r;  r<  r>  r@  rÚ   rÝ   rA   rŠ   r�   r˜   r(   r    r   Ú<module>rÜ     s.  ðõ "÷
÷ 
õ 
õ ß #ß Cð ÷ð ó ðô$	�ô 	÷ Eñ  EòDB€ð"Ø	ˆ1ðà
ˆAðð 	ˆ!ðð 
ˆ1ð	ð
 
ˆ1ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð 	ˆ!ðð ˆaðð ˆaðð ˆAðð ˆQðð  ˆQð!ð" ˆað#ð$ 
ˆ1ñ%Ð ò* V€à˜KÐ(€â>€òÐ ð  Øñàñð ñò Cñ	Cð ò€ò €
ð Ð0Ð1€ò€ð $Ð$€ò€ð Øñàñð ñð ñ	ð
 ñð òÐ ÷(.ñ .ôn�	ô ð ÐJÑK€ô"�	õ "r    