§
    aÒ³g*" ã                   ó~   — d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	m
Z
 d dlmZmZ e
 G d„ de¦  «        ¦   «         ZdS )	é   )Úyacc)Úc_ast)ÚCLexer)Ú	PLYParserÚ
ParseErrorÚparameterizedÚtemplate)Úfix_switch_casesÚfix_atomic_specifiersc                   óR  — e Zd Zdedddddfd„Zdµd„Zd„ Zd	„ Zd
„ Zd„ Z	d„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd¶d„Zd¶d„Zd„ Zd„ ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd „ Zd!„ Zd"„ Z d#„ Z!d$„ Z"d%„ Z#d&„ Z$d'„ Z%d(„ Z&d)„ Z'd*„ Z(d+„ Z)d,„ Z*d-„ Z+d.„ Z,d/„ Z-d0„ Z.d1„ Z/d2„ Z0d3„ Z1d4„ Z2d5„ Z3d6„ Z4d7„ Z5d8„ Z6d9„ Z7d:„ Z8d;„ Z9d<„ Z:d=„ Z;d>„ Z<d?„ Z=d@„ Z>dA„ Z?dB„ Z@dC„ ZAdD„ ZBdE„ ZCdF„ ZDdG„ ZEdH„ ZFdI„ ZGdJ„ ZHdK„ ZIdL„ ZJdM„ ZKdN„ ZLdO„ ZMdP„ ZNdQ„ ZOdR„ ZPdS„ ZQdT„ ZRdU„ ZSdV„ ZTdW„ ZUdX„ ZVdY„ ZW eXdZd[d\¦  «        d]„ ¦   «         ZY eXdZd[d\¦  «        d^„ ¦   «         ZZ eXdZd[d\¦  «        d_„ ¦   «         Z[ eXdZd[¦  «        d`„ ¦   «         Z\ eXdZd[d\¦  «        da„ ¦   «         Z] eXdZd[d\¦  «        db„ ¦   «         Z^ eXdZd[d\¦  «        dc„ ¦   «         Z_ eXdZd[d\¦  «        dd„ ¦   «         Z`de„ Zadf„ Zbdg„ Zcdh„ Zddi„ Zedj„ Zfdk„ Zgdl„ Zhdm„ Zidn„ Zjdo„ Zkdp„ Zldq„ Zmdr„ Znds„ Zodt„ Zpdu„ Zqdv„ Zrdw„ Zsdx„ Ztdy„ Zudz„ Zvd{„ Zwd|„ Zxd}„ Zyd~„ Zzd„ Z{d€„ Z|d�„ Z}d‚„ Z~dƒ„ Zd„„ Z€d…„ Z�d†„ Z‚d‡„ Zƒdˆ„ Z„d‰„ Z…dŠ„ Z†d‹„ Z‡dŒ„ Zˆd�„ Z‰dŽ„ ZŠd�„ Z‹d�„ ZŒd‘„ Z�d’„ ZŽd“„ Z�d”„ Z�d•„ Z‘d–„ Z’d—„ Z“d˜„ Z”d™„ Z•dš„ Z–d›„ Z—dœ„ Z˜d�„ Z™dž„ ZšdŸ„ Z›d „ Zœd¡„ Z�d¢„ Zžd£„ ZŸd¤„ Z d¥„ Z¡d¦„ Z¢d§„ Z£d¨„ Z¤d©„ Z¥dª„ Z¦d«„ Z§d¬„ Z¨d­„ Z©d®„ Zªd¯„ Z«d°„ Z¬d±„ Z­d²„ Z®d³„ Z¯d´S )·ÚCParserTzpycparser.lextabzpycparser.yacctabFÚ c                 ób  —  || j         | j        | j        | j        ¬¦  «        | _        | j                             |||¬¦  «         | j        j        | _        g d¢}|D ]}	|                      |	¦  «         Œt          j        | d||||¬¦  «        | _	        t          ¦   «         g| _        d| _        dS )a   Create a new CParser.

            Some arguments for controlling the debug/optimization
            level of the parser are provided. The defaults are
            tuned for release/performance mode.
            The simple rules for using them are:
            *) When tweaking CParser/CLexer, set these to False
            *) When releasing a stable parser, set to True

            lex_optimize:
                Set to False when you're modifying the lexer.
                Otherwise, changes in the lexer won't be used, if
                some lextab.py file exists.
                When releasing with a stable lexer, set to True
                to save the re-generation of the lexer table on
                each run.

            lexer:
                Set this parameter to define the lexer to use if
                you're not using the default CLexer.

            lextab:
                Points to the lex table that's used for optimized
                mode. Only if you're modifying the lexer and want
                some tests to avoid re-generating the table, make
                this point to a local lex table file (that's been
                earlier generated with lex_optimize=True)

            yacc_optimize:
                Set to False when you're modifying the parser.
                Otherwise, changes in the parser won't be used, if
                some parsetab.py file exists.
                When releasing with a stable parser, set to True
                to save the re-generation of the parser table on
                each run.

            yacctab:
                Points to the yacc table that's used for optimized
                mode. Only if you're modifying the parser, make
                this point to a local yacc table file

            yacc_debug:
                Generate a parser.out file that explains how yacc
                built the parsing table from the grammar.

            taboutputdir:
                Set this parameter to control the location of generated
                lextab and yacctab files.
        )Ú
error_funcÚon_lbrace_funcÚon_rbrace_funcÚtype_lookup_func)ÚoptimizeÚlextabÚ	outputdir)Úabstract_declaratorÚassignment_expressionÚdeclaration_listÚdeclaration_specifiers_no_typeÚdesignationÚ
expressionÚidentifier_listÚinit_declarator_listÚid_init_declarator_listÚinitializer_listÚparameter_type_listÚblock_item_listÚtype_qualifier_listÚstruct_declarator_listÚtranslation_unit_or_empty)ÚmoduleÚstartÚdebugr   Ú	tabmoduler   N)Ú_lex_error_funcÚ_lex_on_lbrace_funcÚ_lex_on_rbrace_funcÚ_lex_type_lookup_funcÚclexÚbuildÚtokensÚ_create_opt_ruler   ÚcparserÚdictÚ_scope_stackÚ_last_yielded_token)
ÚselfÚlex_optimizeÚlexerr   Úyacc_optimizeÚyacctabÚ
yacc_debugÚtaboutputdirÚrules_with_optÚrules
             úP/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/pycparser/c_parser.pyÚ__init__zCParser.__init__   sî   € ðt �EØÔ+ØÔ3ØÔ3Ø!Ô7ð	9ñ 9ô 9ˆŒ	ð 	Œ	�ŠØ!ØØ"ð 	ñ 	$ô 	$ð 	$ð ”iÔ&ˆŒð
ð 
ð 
ˆð" #ð 	(ð 	(ˆDØ×!Ò! $Ñ'Ô'Ð'Ð'å”yØØ-ØØ"ØØ"ð$ñ $ô $ˆŒõ  "™VœV˜HˆÔð $(ˆÔ Ð Ð ó    c                 óÆ   — || j         _        | j                              ¦   «          t          ¦   «         g| _        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:
                Debug flag to YACC
        N)Úinputr8   r(   )r.   ÚfilenameÚreset_linenor3   r4   r5   r2   Úparse)r6   ÚtextrD   r(   s       r?   rF   zCParser.parse‚   sb   € ð &ˆŒ	ÔØŒ	×ÒÑ Ô Ð Ý!™VœV˜HˆÔØ#'ˆÔ ØŒ|×!Ò!ØØ”iØð "ñ ô ð 	rA   c                 óR   — | j                              t          ¦   «         ¦  «         d S ©N)r4   Úappendr3   ©r6   s    r?   Ú_push_scopezCParser._push_scopeš   s#   € ØÔ× Ò ¥¡¤Ñ(Ô(Ð(Ð(Ð(rA   c                 ól   — t          | j        ¦  «        dk    sJ ‚| j                             ¦   «          d S )Nr   )Úlenr4   ÚpoprK   s    r?   Ú
_pop_scopezCParser._pop_scope�   s9   € Ý�4Ô$Ñ%Ô%¨Ò)Ð)Ð)Ð)ØÔ×ÒÑÔÐÐÐrA   c                 óš   — | j         d                              |d¦  «        s|                      d|z  |¦  «         d| j         d         |<   dS )zC Add a new typedef name (ie a TYPEID) to the current scope
        éÿÿÿÿTz;Typedef %r previously declared as non-typedef in this scopeN©r4   ÚgetÚ_parse_error©r6   ÚnameÚcoords      r?   Ú_add_typedef_namezCParser._add_typedef_name¡   sf   € ð Ô  Ô$×(Ò(¨¨tÑ4Ô4ð 	/Ø×Òð Ø"&ñ'Ø(-ñ/ô /ð /ð '+ˆÔ˜"Ô˜dÑ#Ð#Ð#rA   c                 óš   — | j         d                              |d¦  «        r|                      d|z  |¦  «         d| j         d         |<   dS )ze Add a new object, function, or enum member name (ie an ID) to the
            current scope
        rR   Fz;Non-typedef %r previously declared as typedef in this scopeNrS   rV   s      r?   Ú_add_identifierzCParser._add_identifierª   sf   € ð Ô˜RÔ ×$Ò$ T¨5Ñ1Ô1ð 	/Ø×Òð Ø"&ñ'Ø(-ñ/ô /ð /ð ',ˆÔ˜"Ô˜dÑ#Ð#Ð#rA   c                 ój   — t          | j        ¦  «        D ]}|                     |¦  «        }|�|c S ŒdS )z8 Is *name* a typedef-name in the current scope?
        NF)Úreversedr4   rT   )r6   rW   ÚscopeÚin_scopes       r?   Ú_is_type_in_scopezCParser._is_type_in_scope´   sE   € õ ˜dÔ/Ñ0Ô0ð 	5ð 	5ˆEð —y’y ‘”ˆHØÐ#¨H _ _ _Ð#ØˆurA   c                 óZ   — |                       ||                      ||¦  «        ¦  «         d S rI   )rU   Ú_coord)r6   ÚmsgÚlineÚcolumns       r?   r*   zCParser._lex_error_func¾   s,   € Ø×Ò˜#˜tŸ{š{¨4°Ñ8Ô8Ñ9Ô9Ð9Ð9Ð9rA   c                 ó.   — |                       ¦   «          d S rI   )rL   rK   s    r?   r+   zCParser._lex_on_lbrace_funcÁ   s   € Ø×ÒÑÔÐÐÐrA   c                 ó.   — |                       ¦   «          d S rI   )rP   rK   s    r?   r,   zCParser._lex_on_rbrace_funcÄ   s   € Ø�ŠÑÔÐÐÐrA   c                 ó0   — |                       |¦  «        }|S )z§ Looks up types that were previously defined with
            typedef.
            Passed to the lexer for recognizing identifiers that
            are types.
        )r`   )r6   rW   Úis_types      r?   r-   zCParser._lex_type_lookup_funcÇ   s   € ð ×(Ò(¨Ñ.Ô.ˆØˆrA   c                 ó   — | j         j        S )z§ We need access to yacc's lookahead token in certain cases.
            This is the last token yacc requested from the lexer, so we
            ask the lexer.
        )r.   Ú
last_tokenrK   s    r?   Ú_get_yacc_lookahead_tokenz!CParser._get_yacc_lookahead_tokenÐ   s   € ð
 ŒyÔ#Ð#rA   c                 ó2  — |}|}|j         r|j         }|j         °t          |t          j        ¦  «        r	||_         |S |}t          |j         t          j        ¦  «        s&|j         }t          |j         t          j        ¦  «        ¯&|j         |_         ||_         |S )z  Tacks a type modifier on a declarator, and returns
            the modified declarator.

            Note: the declarator and modifier may be modified
        )ÚtypeÚ
isinstancer   ÚTypeDecl)r6   ÚdeclÚmodifierÚmodifier_headÚmodifier_tailÚ	decl_tails         r?   Ú_type_modify_declzCParser._type_modify_declù   s§   € ð !ˆØ ˆð Ô ð 	/Ø)Ô.ˆMð Ô ð 	/õ �d�EœNÑ+Ô+ð 	Ø!%ˆMÔØˆOð
 ˆIå  ¤µ´Ñ@Ô@ð +Ø%œN�	õ ! ¤µ´Ñ@Ô@ð +ð "+¤ˆMÔØ*ˆIŒNØˆKrA   c                 óŽ  — |}t          |t          j        ¦  «        s!|j        }t          |t          j        ¦  «        ¯!|j        |_        |j        dd…         |_        |D ]V}t          |t          j        ¦  «        s:t          |¦  «        dk    r|  	                    d|j
        ¦  «         ŒK||_        |c S ŒW|s\t          |j        t          j        ¦  «        s|  	                    d|j
        ¦  «         t          j        dg|j
        ¬¦  «        |_        n0t          j        d„ |D ¦   «         |d         j
        ¬¦  «        |_        |S )	z- Fixes a declaration. Modifies decl.
        Nr   z Invalid multiple types specifiedzMissing type in declarationÚint©rX   c                 ó&   — g | ]}|j         D ]}|‘ŒŒS © )Únames)Ú.0ÚidrW   s      r?   ú
<listcomp>z/CParser._fix_decl_name_type.<locals>.<listcomp>S  s'   € Ð>Ð>Ð>˜"°R´XÐ>Ð>¨T�Ð>Ð>Ð>Ð>rA   é    )ro   r   rp   rn   ÚdeclnamerW   ÚqualsÚIdentifierTyperN   rU   rX   ÚFuncDecl)r6   rq   Útypenamern   Útns        r?   Ú_fix_decl_name_typezCParser._fix_decl_name_type+  ss  € ð
 ˆÝ˜T¥5¤>Ñ2Ô2ð 	Ø”9ˆDõ ˜T¥5¤>Ñ2Ô2ð 	ð ”MˆŒ	Ø”Z   ”]ˆŒ
ð ð 	 ð 	 ˆBÝ˜b¥%Ô"6Ñ7Ô7ð  Ý�x‘=”= 1Ò$Ð$Ø×%Ò%Ø:¸B¼HñFô Fð Fð Fð !#�D”IØ�K�K�Kð ð ð 	)õ ˜dœi­¬Ñ8Ô8ð CØ×!Ò!Ø5°t´zñCô Cð CåÔ,Ø�GØœ*ð&ñ &ô &ˆDŒIˆIõ Ô,Ø>Ð> Ð>Ñ>Ô>Ø˜q”kÔ'ð)ñ )ô )ˆDŒIð ˆrA   c                 ó¦   — |pt          g g g g g ¬¦  «        }|r||                              |¦  «         n||                              d|¦  «         |S )a¿   Declaration specifiers are represented by a dictionary
            with the entries:
            * qual: a list of type qualifiers
            * storage: a list of storage type qualifiers
            * type: a list of type specifiers
            * function: a list of function specifiers
            * alignment: a list of alignment specifiers

            This method is given a declaration specifier, and a
            new specifier of a given kind.
            If `append` is True, the new specifier is added to the end of
            the specifiers list, otherwise it's added at the beginning.
            Returns the declaration specifier, with the new
            specifier incorporated.
        )ÚqualÚstoragern   ÚfunctionÚ	alignmentr€   )r3   rJ   Úinsert)r6   ÚdeclspecÚnewspecÚkindrJ   Úspecs         r?   Ú_add_declaration_specifierz"CParser._add_declaration_specifierW  sd   € ð  ÐX�4 R°¸"ÀrÐUWÐXÑXÔXˆàð 	*Ø�ŒJ×Ò˜gÑ&Ô&Ð&Ð&à�ŒJ×Ò˜a Ñ)Ô)Ð)àˆrA   c                 óî  — d|d         v }g }|d                               d¦  «        ��nÌ|d         d         €ÿt          |d         ¦  «        dk     sPt          |d         d	         j        ¦  «        d
k    s,|                      |d         d	         j        d         ¦  «        s<d}|d         D ]}t	          |d¦  «        r	|j        } nŒ|                      d|¦  «         t          j        |d         d	         j        d         dd|d         |d         d	         j        ¬¦  «        |d         d<   |d         d	= n¿t          |d         d         t          j
        t          j        t          j        t          j        f¦  «        sw|d         d         }t          |t          j        ¦  «        s!|j        }t          |t          j        ¦  «        ¯!|j        €'|d         d	         j        d         |_        |d         d	= |D �]{}	|	d         €J ‚|r7t          j        d|d         |d         |	d         |	d         j        ¬¦  «        }
nlt          j        d|d         |d         |d         |d         |	d         |	                      d¦  «        |	                      d¦  «        |	d         j        ¬¦	  «	        }
t          |
j        t          j
        t          j        t          j        t          j        f¦  «        r|
}n|                      |
|d         ¦  «        }|rC|r!|                      |j        |j        ¦  «         n |                      |j        |j        ¦  «         t-          |¦  «        }|                     |¦  «         �Œ}|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€   ÚbitsizeNrq   rn   é   rR   r   ú?rX   zInvalid declarationrŒ   ©r�   rn   r‚   ÚalignrX   r‰   )rW   r‚   rŠ   rn   rX   r‹   Úinit©	rW   r‚   r™   rŠ   Úfuncspecrn   rš   r•   rX   )rT   rN   r|   r`   ÚhasattrrX   rU   r   rp   ro   ÚEnumÚStructÚUnionrƒ   rn   r�   ÚTypedefÚDeclr‡   rY   rW   r[   r   rJ   )r6   r‘   ÚdeclsÚtypedef_namespaceÚ
is_typedefÚdeclarationsrX   ÚtÚdecls_0_tailrq   ÚdeclarationÚ
fixed_decls               r?   Ú_build_declarationszCParser._build_declarationsp  s’  € ð  $ y¤/Ð1ˆ
Øˆð �Œ8�<Š<˜	Ñ"Ô"Ð.Ùð �1ŒX�fÔÐ%Ý�4˜”<Ñ Ô  1Ò$Ð$­¨D°¬L¸Ô,<Ô,BÑ(CÔ(CÀqÒ(HÐ(HØ×.Ò.¨t°F¬|¸BÔ/?Ô/EÀaÔ/HÑIÔIð )Ià�Ø˜fœð ð �AÝ˜q 'Ñ*Ô*ð Ø !¤˜Ø˜ðð ×!Ò!Ð"7¸Ñ?Ô?Ð?õ  %œ~Ø˜fœ bÔ)Ô/°Ô2ØØØ˜;Ô'Ø˜6”l 2Ô&Ô,ð .ñ  .ô  .ˆE�!ŒH�VÑð �V”˜RÐ Ð õ ˜E !œH VÔ,Ý”
�EœL­%¬+µuÔ7Kð/Mñ Nô Nð 	%à  œ8 FÔ+ˆLÝ  ­u¬~Ñ>Ô>ð 1Ø+Ô0�õ ! ­u¬~Ñ>Ô>ð 1àÔ$Ð,Ø(,¨V¬°RÔ(8Ô(>¸qÔ(A�Ô%Ø˜”L Ð$àð %	,ñ %	,ˆDØ˜”<Ð+Ð+Ð+Øð .Ý#œmØØ˜vœ,Ø  œOØ˜fœØ˜vœ,Ô,ð.ñ .ô .��õ $œjØØ˜vœ,Ø˜{Ô+Ø  œOØ! *Ô-Ø˜fœØŸš &Ñ)Ô)Ø ŸHšH YÑ/Ô/Ø˜vœ,Ô,ð	.ñ 	.ô 	.�õ ˜+Ô*Ý”J¥¤­e¬kÝÔ(ð-*ñ +ô +ð Qð )�
�
à!×5Ò5°kÀ4ÈÄ<ÑPÔP�
ð !ð LØð LØ×*Ò*¨:¬?¸JÔ<LÑMÔMÐMÐMà×(Ò(¨¬¸*Ô:JÑKÔKÐKå.¨zÑ:Ô:ˆJØ×Ò 
Ñ+Ô+Ð+Ñ+àÐrA   c                 óâ   — d|d         v r|                       d|j        ¦  «         |                      |t          |d¬¦  «        gd¬¦  «        d         }t	          j        ||||j        ¬	¦  «        S )
z' Builds a function definition.
        r”   rŠ   zInvalid typedefN©rq   rš   T©r‘   r£   r¤   r€   )rq   Úparam_declsÚbodyrX   )rU   rX   r«   r3   r   ÚFuncDef)r6   r‘   rq   r¯   r°   r©   s         r?   Ú_build_function_definitionz"CParser._build_function_definitionÉ  s’   € ð ˜˜YœÐ'Ð'Ø×ÒÐ/°´Ñ<Ô<Ð<à×.Ò.ØÝ˜T¨Ð-Ñ-Ô-Ð.Ø"ð /ñ $ô $ð %&ô'ˆõ
 Œ}ØØ#ØØ”*ð	ñ ô ð 	rA   c                 ó>   — |dk    rt           j        S t           j        S )z` Given a token (either STRUCT or UNION), selects the
            appropriate AST class.
        Ústruct)r   rŸ   r    )r6   Útokens     r?   Ú_select_struct_union_classz"CParser._select_struct_union_classÚ  s   € ð �HÒÐÝ”<Ðå”;ÐrA   )
)ÚleftÚLOR)r·   ÚLAND)r·   ÚOR)r·   ÚXOR)r·   ÚAND)r·   ÚEQÚNE)r·   ÚGTÚGEÚLTÚLE)r·   ÚRSHIFTÚLSHIFT)r·   ÚPLUSÚMINUS)r·   ÚTIMESÚDIVIDEÚMODc                 ó‚   — |d         €t          j        g ¦  «        |d<   dS t          j        |d         ¦  «        |d<   dS )zh translation_unit_or_empty   : translation_unit
                                        | empty
        r   Nr€   )r   ÚFileAST©r6   Úps     r?   Úp_translation_unit_or_emptyz#CParser.p_translation_unit_or_emptyü  s?   € ð ˆQŒ4ˆ<Ý”= Ñ$Ô$ˆAˆa‰DˆDˆDå”=  1¤Ñ&Ô&ˆAˆa‰DˆDˆDrA   c                 ó   — |d         |d<   dS )z4 translation_unit    : external_declaration
        r   r€   Nr{   rÌ   s     r?   Úp_translation_unit_1zCParser.p_translation_unit_1  ó   € ð �Œtˆˆ!‰ˆˆrA   c                 ó^   — |d                               |d         ¦  «         |d         |d<   dS )zE translation_unit    : translation_unit external_declaration
        r   r–   r€   N)ÚextendrÌ   s     r?   Úp_translation_unit_2zCParser.p_translation_unit_2  s/   € ð 	
ˆ!Œ�Š�A�a”DÑÔÐØ�Œtˆˆ!‰ˆˆrA   c                 ó   — |d         g|d<   dS )z7 external_declaration    : function_definition
        r   r€   Nr{   rÌ   s     r?   Úp_external_declaration_1z CParser.p_external_declaration_1  ó   € ð �!”ˆvˆˆ!‰ˆˆrA   c                 ó   — |d         |d<   dS )z/ external_declaration    : declaration
        r   r€   Nr{   rÌ   s     r?   Úp_external_declaration_2z CParser.p_external_declaration_2  ó   € ð �Œtˆˆ!‰ˆˆrA   c                 ó   — |d         g|d<   dS )zi external_declaration    : pp_directive
                                    | pppragma_directive
        r   r€   Nr{   rÌ   s     r?   Úp_external_declaration_3z CParser.p_external_declaration_3  s   € ð �!”ˆvˆˆ!‰ˆˆrA   c                 ó   — g |d<   dS )z( external_declaration    : SEMI
        r€   Nr{   rÌ   s     r?   Úp_external_declaration_4z CParser.p_external_declaration_4%  s   € ð ˆˆ!‰ˆˆrA   c                 ó   — |d         |d<   dS )z1 external_declaration    : static_assert
        r   r€   Nr{   rÌ   s     r?   Úp_external_declaration_5z CParser.p_external_declaration_5*  rÚ   rA   c                 ó  — t          |¦  «        dk    r6t          j        |d         d|                      |d¦  «        ¦  «        g|d<   dS t          j        |d         |d         |                      |d¦  «        ¦  «        g|d<   dS )zÈ static_assert           : _STATIC_ASSERT LPAREN constant_expression COMMA unified_string_literal RPAREN
                                    | _STATIC_ASSERT LPAREN constant_expression RPAREN
        é   é   Nr   r€   )rN   r   ÚStaticAssertÚ_token_coordrÌ   s     r?   Úp_static_assert_declarationz#CParser.p_static_assert_declaration/  s}   € õ ˆq‰6Œ6�QŠ;ˆ;ÝÔ& q¨¤t¨T°4×3DÒ3DÀQÈÑ3JÔ3JÑKÔKÐLˆAˆa‰DˆDˆDåÔ& q¨¤t¨Q¨q¬T°4×3DÒ3DÀQÈÑ3JÔ3JÑKÔKÐLˆAˆa‰DˆDˆDrA   c                 óZ   — |                       d|                      |d¦  «        ¦  «         dS )z  pp_directive  : PPHASH
        zDirectives not supported yetr   N)rU   rå   rÌ   s     r?   Úp_pp_directivezCParser.p_pp_directive8  s<   € ð 	×ÒÐ8Ø×+Ò+¨A¨qÑ1Ô1ñ	3ô 	3ð 	3ð 	3ð 	3rA   c                 óz  — t          |¦  «        dk    r4t          j        |d         |                      |d¦  «        ¦  «        |d<   dS t          |¦  «        dk    r4t          j        |d         |                      |d¦  «        ¦  «        |d<   dS t          j        d|                      |d¦  «        ¦  «        |d<   dS )zº pppragma_directive      : PPPRAGMA
                                    | PPPRAGMA PPPRAGMASTR
                                    | _PRAGMA LPAREN unified_string_literal RPAREN
        râ   rã   r–   r€   r   r   N)rN   r   ÚPragmarå   rÌ   s     r?   Úp_pppragma_directivezCParser.p_pppragma_directiveC  s¥   € õ
 ˆq‰6Œ6�QŠ;ˆ;Ý”<  !¤ d×&7Ò&7¸¸1Ñ&=Ô&=Ñ>Ô>ˆAˆa‰DˆDˆDÝ�‰VŒV�qŠ[ˆ[Ý”<  !¤ d×&7Ò&7¸¸1Ñ&=Ô&=Ñ>Ô>ˆAˆa‰DˆDˆDå”<  D×$5Ò$5°a¸Ñ$;Ô$;Ñ<Ô<ˆAˆa‰DˆDˆDrA   c                 óh   — t          |¦  «        dk    r	|d         gn|d         |d         gz   |d<   dS )z‡ pppragma_directive_list : pppragma_directive
                                    | pppragma_directive_list pppragma_directive
        r–   r   r€   N©rN   rÌ   s     r?   Úp_pppragma_directive_listz!CParser.p_pppragma_directive_listO  ó7   € õ ˜Q™œ 1š˜��!”ˆvˆv¨!¨A¬$°!°A´$°©-ˆˆ!‰ˆˆrA   c                 óÞ   — t          g g g t          j        dg|                      |d¦  «        ¬¦  «        gg ¬¦  «        }|                      ||d         |d         |d         ¬¦  «        |d<   d	S )
zU function_definition : id_declarator declaration_list_opt compound_statement
        rx   r   ry   ©r‰   rŒ   rŠ   rn   r‹   r–   rã   ©r‘   rq   r¯   r°   r€   N)r3   r   rƒ   rå   r²   ©r6   rÍ   r‘   s      r?   Úp_function_definition_1zCParser.p_function_definition_1W  s•   € õ ØØØÝÔ&¨ wØ-1×->Ò->¸qÀ!Ñ-DÔ-DðFñ Fô Fð Gàðñ ô ˆð ×.Ò.ØØ�1”Ø˜!œØ�1”ð	 /ñ ô ˆˆ!‰ˆˆrA   c                 ór   — |d         }|                       ||d         |d         |d         ¬¦  «        |d<   dS )zl function_definition : declaration_specifiers id_declarator declaration_list_opt compound_statement
        r   r–   rã   é   rò   r€   N)r²   ró   s      r?   Úp_function_definition_2zCParser.p_function_definition_2i  sG   € ð �Œtˆà×.Ò.ØØ�1”Ø˜!œØ�1”ð	 /ñ ô ˆˆ!‰ˆˆrA   c                 ó   — |d         |d<   dS )a_   statement   : labeled_statement
                        | expression_statement
                        | compound_statement
                        | selection_statement
                        | iteration_statement
                        | jump_statement
                        | pppragma_directive
                        | static_assert
        r   r€   Nr{   rÌ   s     r?   Úp_statementzCParser.p_statementx  s   € ð �Œtˆˆ!‰ˆˆrA   c                 óÀ   — t          |¦  «        dk    r?t          j        |d         |d         gz   |                      |d¦  «        ¬¦  «        |d<   dS |d         |d<   dS )z} pragmacomp_or_statement     : pppragma_directive_list statement
                                        | statement
        rã   r   r–   ©Úblock_itemsrX   r€   N)rN   r   ÚCompoundrå   rÌ   s     r?   Úp_pragmacomp_or_statementz!CParser.p_pragmacomp_or_statement¯  sh   € õ ˆq‰6Œ6�QŠ;ˆ;Ý”>Ø˜aœD ! A¤$ ™KØ×'Ò'¨¨1Ñ-Ô-ð/ñ /ô /ˆAˆa‰DˆDˆDð �Q”4ˆAˆa‰DˆDˆDrA   c                 óö  — |d         }|d         €Å|d         }t           j        t           j        t           j        f}t	          |¦  «        dk    r^t          |d         |¦  «        rHt          j        d|d         |d         |d         |d	         |d         dd|d         j        ¬
¦	  «	        g}nG|                      |t          dd¬¦  «        gd¬¦  «        }n|                      ||d         d¬¦  «        }||d<   dS )z˜ decl_body : declaration_specifiers init_declarator_list_opt
                      | declaration_specifiers_no_type id_init_declarator_list_opt
        r   r–   Nrn   r€   r‰   rŒ   rŠ   r‹   r›   r­   Tr®   )
r   rŸ   r    rž   rN   ro   r¢   rX   r«   r3   )r6   rÍ   r‘   ÚtyÚs_u_or_er£   s         r?   Úp_decl_bodyzCParser.p_decl_bodyÃ  s  € ð �Œtˆð ˆQŒ4ˆ<ð
 �f”ˆBÝœ¥e¤kµ5´:Ð>ˆHÝ�2‰wŒw˜!Š|ˆ|¥
¨2¨a¬5°(Ñ ;Ô ;ˆ|ÝœØØ˜vœ,Ø˜{Ô+Ø  œOØ! *Ô-Ø˜AœØØ Ø˜Qœ%œ+ð	'ñ 	'ô 	'ð 	(��ð" ×0Ò0ØÝ T°Ð5Ñ5Ô5Ð6Ø&*ð 1ñ ,ô ,��ð ×,Ò,ØØ˜”dØ"&ð -ñ (ô (ˆEð
 ˆˆ!‰ˆˆrA   c                 ó   — |d         |d<   dS )z& declaration : decl_body SEMI
        r   r€   Nr{   rÌ   s     r?   Úp_declarationzCParser.p_declaration   rÚ   rA   c                 ód   — t          |¦  «        dk    r|d         n|d         |d         z   |d<   dS )zj declaration_list    : declaration
                                | declaration_list declaration
        r–   r   r€   Nrí   rÌ   s     r?   Úp_declaration_listzCParser.p_declaration_list	  s3   € õ ˜1‘v”v ’{�{ˆq�Œtˆt¨¨!¬¨q°¬t©ˆˆ!‰ˆˆrA   c                 óR   — |                       |d         |d         d¦  «        |d<   dS )z] declaration_specifiers_no_type  : type_qualifier declaration_specifiers_no_type_opt
        r–   r   r‰   r€   N©r’   rÌ   s     r?   Ú"p_declaration_specifiers_no_type_1z*CParser.p_declaration_specifiers_no_type_1  ó+   € ð ×.Ò.¨q°¬t°Q°q´T¸6ÑBÔBˆˆ!‰ˆˆrA   c                 óR   — |                       |d         |d         d¦  «        |d<   dS )zf declaration_specifiers_no_type  : storage_class_specifier declaration_specifiers_no_type_opt
        r–   r   rŠ   r€   Nr  rÌ   s     r?   Ú"p_declaration_specifiers_no_type_2z*CParser.p_declaration_specifiers_no_type_2  s+   € ð ×.Ò.¨q°¬t°Q°q´T¸9ÑEÔEˆˆ!‰ˆˆrA   c                 óR   — |                       |d         |d         d¦  «        |d<   dS )za declaration_specifiers_no_type  : function_specifier declaration_specifiers_no_type_opt
        r–   r   r‹   r€   Nr  rÌ   s     r?   Ú"p_declaration_specifiers_no_type_3z*CParser.p_declaration_specifiers_no_type_3  s+   € ð ×.Ò.¨q°¬t°Q°q´T¸:ÑFÔFˆˆ!‰ˆˆrA   c                 óR   — |                       |d         |d         d¦  «        |d<   dS )z_ declaration_specifiers_no_type  : atomic_specifier declaration_specifiers_no_type_opt
        r–   r   rn   r€   Nr  rÌ   s     r?   Ú"p_declaration_specifiers_no_type_4z*CParser.p_declaration_specifiers_no_type_4%  r
  rA   c                 óR   — |                       |d         |d         d¦  «        |d<   dS )zb declaration_specifiers_no_type  : alignment_specifier declaration_specifiers_no_type_opt
        r–   r   rŒ   r€   Nr  rÌ   s     r?   Ú"p_declaration_specifiers_no_type_5z*CParser.p_declaration_specifiers_no_type_5*  ó+   € ð ×.Ò.¨q°¬t°Q°q´T¸;ÑGÔGˆˆ!‰ˆˆrA   c                 óV   — |                       |d         |d         dd¬¦  «        |d<   dS )zI declaration_specifiers  : declaration_specifiers type_qualifier
        r   r–   r‰   T©rJ   r€   Nr  rÌ   s     r?   Úp_declaration_specifiers_1z"CParser.p_declaration_specifiers_1/  ó0   € ð ×.Ò.¨q°¬t°Q°q´T¸6È$Ð.ÑOÔOˆˆ!‰ˆˆrA   c                 óV   — |                       |d         |d         dd¬¦  «        |d<   dS )zR declaration_specifiers  : declaration_specifiers storage_class_specifier
        r   r–   rŠ   Tr  r€   Nr  rÌ   s     r?   Úp_declaration_specifiers_2z"CParser.p_declaration_specifiers_24  s0   € ð ×.Ò.¨q°¬t°Q°q´T¸9ÈTÐ.ÑRÔRˆˆ!‰ˆˆrA   c                 óV   — |                       |d         |d         dd¬¦  «        |d<   dS )zM declaration_specifiers  : declaration_specifiers function_specifier
        r   r–   r‹   Tr  r€   Nr  rÌ   s     r?   Úp_declaration_specifiers_3z"CParser.p_declaration_specifiers_39  s0   € ð ×.Ò.¨q°¬t°Q°q´T¸:ÈdÐ.ÑSÔSˆˆ!‰ˆˆrA   c                 óV   — |                       |d         |d         dd¬¦  «        |d<   dS )zS declaration_specifiers  : declaration_specifiers type_specifier_no_typeid
        r   r–   rn   Tr  r€   Nr  rÌ   s     r?   Úp_declaration_specifiers_4z"CParser.p_declaration_specifiers_4>  r  rA   c                 óF   — |                       d|d         d¦  «        |d<   dS )z2 declaration_specifiers  : type_specifier
        Nr   rn   r€   r  rÌ   s     r?   Úp_declaration_specifiers_5z"CParser.p_declaration_specifiers_5C  ó'   € ð ×.Ò.¨t°Q°q´T¸6ÑBÔBˆˆ!‰ˆˆrA   c                 óV   — |                       |d         |d         dd¬¦  «        |d<   dS )zQ declaration_specifiers  : declaration_specifiers_no_type type_specifier
        r   r–   rn   Tr  r€   Nr  rÌ   s     r?   Úp_declaration_specifiers_6z"CParser.p_declaration_specifiers_6H  r  rA   c                 óV   — |                       |d         |d         dd¬¦  «        |d<   dS )zN declaration_specifiers  : declaration_specifiers alignment_specifier
        r   r–   rŒ   Tr  r€   Nr  rÌ   s     r?   Úp_declaration_specifiers_7z"CParser.p_declaration_specifiers_7M  s0   € ð ×.Ò.¨q°¬t°Q°q´T¸;ÈtÐ.ÑTÔTˆˆ!‰ˆˆrA   c                 ó   — |d         |d<   dS )a   storage_class_specifier : AUTO
                                    | REGISTER
                                    | STATIC
                                    | EXTERN
                                    | TYPEDEF
                                    | _THREAD_LOCAL
        r   r€   Nr{   rÌ   s     r?   Úp_storage_class_specifierz!CParser.p_storage_class_specifierR  ó   € ð �Œtˆˆ!‰ˆˆrA   c                 ó   — |d         |d<   dS )zR function_specifier  : INLINE
                                | _NORETURN
        r   r€   Nr{   rÌ   s     r?   Úp_function_specifierzCParser.p_function_specifier\  rÑ   rA   c                 ón   — t          j        |d         g|                      |d¦  «        ¬¦  «        |d<   dS )a+   type_specifier_no_typeid  : VOID
                                      | _BOOL
                                      | CHAR
                                      | SHORT
                                      | INT
                                      | LONG
                                      | FLOAT
                                      | DOUBLE
                                      | _COMPLEX
                                      | SIGNED
                                      | UNSIGNED
                                      | __INT128
        r   ry   r€   N©r   rƒ   rå   rÌ   s     r?   Úp_type_specifier_no_typeidz"CParser.p_type_specifier_no_typeidb  s7   € õ Ô# Q q¤T F°$×2CÒ2CÀAÀqÑ2IÔ2IÐJÑJÔJˆˆ!‰ˆˆrA   c                 ó   — |d         |d<   dS )zó type_specifier  : typedef_name
                            | enum_specifier
                            | struct_or_union_specifier
                            | type_specifier_no_typeid
                            | atomic_specifier
        r   r€   Nr{   rÌ   s     r?   Úp_type_specifierzCParser.p_type_specifierr  s   € ð �Œtˆˆ!‰ˆˆrA   c                 óT   — |d         }|j                              d¦  «         ||d<   dS )z= atomic_specifier  : _ATOMIC LPAREN type_name RPAREN
        rã   Ú_Atomicr€   N)r‚   rJ   )r6   rÍ   Útyps      r?   Úp_atomic_specifierzCParser.p_atomic_specifier|  s0   € ð �ŒdˆØŒ	×Ò˜Ñ#Ô#Ð#Øˆˆ!‰ˆˆrA   c                 ó   — |d         |d<   dS )z• type_qualifier  : CONST
                            | RESTRICT
                            | VOLATILE
                            | _ATOMIC
        r   r€   Nr{   rÌ   s     r?   Úp_type_qualifierzCParser.p_type_qualifierƒ  s   € ð �Œtˆˆ!‰ˆˆrA   c                 óh   — t          |¦  «        dk    r|d         |d         gz   n|d         g|d<   dS )z„ init_declarator_list    : init_declarator
                                    | init_declarator_list COMMA init_declarator
        rö   r   rã   r€   Nrí   rÌ   s     r?   Úp_init_declarator_listzCParser.p_init_declarator_list‹  ó7   € õ !$ A¡¤¨!¢ ˆq�Œt�q˜”t�f‰}ˆ}°!°A´$°ˆˆ!‰ˆˆrA   c                 óp   — t          |d         t          |¦  «        dk    r|d         nd¬¦  «        |d<   dS )zb init_declarator : declarator
                            | declarator EQUALS initializer
        r   r–   rã   Nr­   r€   ©r3   rN   rÌ   s     r?   Úp_init_declaratorzCParser.p_init_declarator”  ó8   € õ ˜˜1œ­S°©V¬V°aªZ¨Z Q q¤T T¸TÐCÑCÔCˆˆ!‰ˆˆrA   c                 óh   — t          |¦  «        dk    r|d         |d         gz   n|d         g|d<   dS )z� id_init_declarator_list    : id_init_declarator
                                       | id_init_declarator_list COMMA init_declarator
        rö   r   rã   r€   Nrí   rÌ   s     r?   Úp_id_init_declarator_listz!CParser.p_id_init_declarator_listš  r7  rA   c                 óp   — t          |d         t          |¦  «        dk    r|d         nd¬¦  «        |d<   dS )zn id_init_declarator : id_declarator
                               | id_declarator EQUALS initializer
        r   r–   rã   Nr­   r€   r9  rÌ   s     r?   Úp_id_init_declaratorzCParser.p_id_init_declarator   r;  rA   c                 óV   — |                       |d         |d         dd¬¦  «        |d<   dS )zY specifier_qualifier_list    : specifier_qualifier_list type_specifier_no_typeid
        r   r–   rn   Tr  r€   Nr  rÌ   s     r?   Úp_specifier_qualifier_list_1z$CParser.p_specifier_qualifier_list_1¨  r  rA   c                 óV   — |                       |d         |d         dd¬¦  «        |d<   dS )zO specifier_qualifier_list    : specifier_qualifier_list type_qualifier
        r   r–   r‰   Tr  r€   Nr  rÌ   s     r?   Úp_specifier_qualifier_list_2z$CParser.p_specifier_qualifier_list_2­  r  rA   c                 óF   — |                       d|d         d¦  «        |d<   dS )z4 specifier_qualifier_list  : type_specifier
        Nr   rn   r€   r  rÌ   s     r?   Úp_specifier_qualifier_list_3z$CParser.p_specifier_qualifier_list_3²  r   rA   c                 óN   — t          |d         g g |d         gg ¬¦  «        |d<   dS )zH specifier_qualifier_list  : type_qualifier_list type_specifier
        r   r–   rñ   r€   N©r3   rÌ   s     r?   Úp_specifier_qualifier_list_4z$CParser.p_specifier_qualifier_list_4·  s.   € õ ˜˜1œ¨°R¸qÀ¼t¸fÈrÐRÑRÔRˆˆ!‰ˆˆrA   c                 óB   — t          g |d         gg g g ¬¦  «        |d<   dS )z9 specifier_qualifier_list  : alignment_specifier
        r   rñ   r€   NrG  rÌ   s     r?   Úp_specifier_qualifier_list_5z$CParser.p_specifier_qualifier_list_5¼  s*   € õ ˜¨¨!¬ v°rÀÈRÐPÑPÔPˆˆ!‰ˆˆrA   c                 óR   — |                       |d         |d         d¦  «        |d<   dS )zR specifier_qualifier_list  : specifier_qualifier_list alignment_specifier
        r   r–   rŒ   r€   Nr  rÌ   s     r?   Úp_specifier_qualifier_list_6z$CParser.p_specifier_qualifier_list_6Á  r  rA   c                 ó’   — |                       |d         ¦  «        } ||d         d|                      |d¦  «        ¬¦  «        |d<   dS )z{ struct_or_union_specifier   : struct_or_union ID
                                        | struct_or_union TYPEID
        r   r–   N©rW   r£   rX   r€   )r¶   rå   ©r6   rÍ   Úklasss      r?   Úp_struct_or_union_specifier_1z%CParser.p_struct_or_union_specifier_1É  sV   € ð ×/Ò/°°!´Ñ5Ô5ˆàˆuØ�1”ØØ×#Ò# A qÑ)Ô)ð+ñ +ô +ˆˆ!‰ˆˆrA   c                 ó  — |                       |d         ¦  «        }t          |¦  «        dk    r' |dg |                      |d¦  «        ¬¦  «        |d<   dS  |d|d         |                      |d¦  «        ¬¦  «        |d<   dS )z³ struct_or_union_specifier : struct_or_union brace_open struct_declaration_list brace_close
                                      | struct_or_union brace_open brace_close
        r   rö   Nr–   rN  r€   rã   ©r¶   rN   rå   rO  s      r?   Úp_struct_or_union_specifier_2z%CParser.p_struct_or_union_specifier_2Ô  sž   € ð ×/Ò/°°!´Ñ5Ô5ˆÝˆq‰6Œ6�QŠ;ˆ;à�5ØØØ×'Ò'¨¨1Ñ-Ô-ð/ñ /ô /ˆAˆa‰DˆDˆDð
 �5ØØ˜”dØ×'Ò'¨¨1Ñ-Ô-ð/ñ /ô /ˆAˆa‰DˆDˆDrA   c                 ó  — |                       |d         ¦  «        }t          |¦  «        dk    r- ||d         g |                      |d¦  «        ¬¦  «        |d<   dS  ||d         |d         |                      |d¦  «        ¬¦  «        |d<   dS )a…   struct_or_union_specifier   : struct_or_union ID brace_open struct_declaration_list brace_close
                                        | struct_or_union ID brace_open brace_close
                                        | struct_or_union TYPEID brace_open struct_declaration_list brace_close
                                        | struct_or_union TYPEID brace_open brace_close
        r   râ   r–   rN  r€   rö   NrS  rO  s      r?   Úp_struct_or_union_specifier_3z%CParser.p_struct_or_union_specifier_3æ  s¦   € ð ×/Ò/°°!´Ñ5Ô5ˆÝˆq‰6Œ6�QŠ;ˆ;à�5Ø�q”TØØ×'Ò'¨¨1Ñ-Ô-ð/ñ /ô /ˆAˆa‰DˆDˆDð
 �5Ø�q”TØ˜”dØ×'Ò'¨¨1Ñ-Ô-ð/ñ /ô /ˆAˆa‰DˆDˆDrA   c                 ó   — |d         |d<   dS )zF struct_or_union : STRUCT
                            | UNION
        r   r€   Nr{   rÌ   s     r?   Úp_struct_or_unionzCParser.p_struct_or_unionù  rÑ   rA   c                 óv   — t          |¦  «        dk    r|d         pg |d<   dS |d         |d         pg z   |d<   dS )z� struct_declaration_list     : struct_declaration
                                        | struct_declaration_list struct_declaration
        r–   r   r€   Nrí   rÌ   s     r?   Úp_struct_declaration_listz!CParser.p_struct_declaration_list  sF   € õ ˆq‰6Œ6�QŠ;ˆ;Ø�Q”4�:˜2ˆAˆa‰DˆDˆDà�Q”4˜1˜Qœ4˜: 2Ñ&ˆAˆa‰DˆDˆDrA   c                 óÐ  — |d         }d|d         vsJ ‚|d         �|                       ||d         ¬¦  «        }n¦t          |d         ¦  «        dk    rf|d         d         }t          |t          j        ¦  «        r|}nt          j        |¦  «        }|                       |t          |¬	¦  «        g¬¦  «        }n'|                       |t          dd¬
¦  «        g¬¦  «        }||d<   dS )zW struct_declaration : specifier_qualifier_list struct_declarator_list_opt SEMI
        r   r”   rŠ   r–   N©r‘   r£   rn   r€   ©rq   r­   )r«   rN   ro   r   ÚNoderƒ   r3   )r6   rÍ   r‘   r£   ÚnodeÚ	decl_types         r?   Úp_struct_declaration_1zCParser.p_struct_declaration_1
  s  € ð �ŒtˆØ  Y¤Ð/Ð/Ð/Ð/àˆQŒ4ÐØ×,Ò,ØØ˜”dð -ñ ô ˆEˆEõ ��f”ÑÔ !Ò#Ð#ð ˜”< ”?ˆDÝ˜$¥¤
Ñ+Ô+ð 7Ø �	�	å!Ô0°Ñ6Ô6�	à×,Ò,ØÝ Ð+Ñ+Ô+Ð,ð -ñ .ô .ˆEˆEð ×,Ò,ØÝ ¨DÐ1Ñ1Ô1Ð2ð -ñ 4ô 4ˆEð ˆˆ!‰ˆˆrA   c                 ó   — d|d<   dS )z# struct_declaration : SEMI
        Nr€   r{   rÌ   s     r?   Úp_struct_declaration_2zCParser.p_struct_declaration_20  s   € ð ˆˆ!‰ˆˆrA   c                 ó   — |d         g|d<   dS )z1 struct_declaration : pppragma_directive
        r   r€   Nr{   rÌ   s     r?   Úp_struct_declaration_3zCParser.p_struct_declaration_35  r×   rA   c                 óh   — t          |¦  «        dk    r|d         |d         gz   n|d         g|d<   dS )zŠ struct_declarator_list  : struct_declarator
                                    | struct_declarator_list COMMA struct_declarator
        rö   r   rã   r€   Nrí   rÌ   s     r?   Úp_struct_declarator_listz CParser.p_struct_declarator_list:  r7  rA   c                 ó"   — |d         ddœ|d<   dS )z( struct_declarator : declarator
        r   N©rq   r•   r€   r{   rÌ   s     r?   Úp_struct_declarator_1zCParser.p_struct_declarator_1C  s   € ð ˜!œ¨Ð.Ð.ˆˆ!‰ˆˆrA   c                 óž   — t          |¦  «        dk    r|d         |d         dœ|d<   dS t          j        dddd¦  «        |d         dœ|d<   dS )z€ struct_declarator   : declarator COLON constant_expression
                                | COLON constant_expression
        rã   r   ri  r€   Nr–   )rN   r   rp   rÌ   s     r?   Úp_struct_declarator_2zCParser.p_struct_declarator_2H  sZ   € õ ˆq‰6Œ6�AŠ:ˆ:Ø˜aœD¨Q¨q¬TÐ2Ð2ˆAˆa‰DˆDˆDå!œN¨4°°t¸TÑBÔBÈqÐQRÌtÐTÐTˆAˆa‰DˆDˆDrA   c                 ól   — t          j        |d         d|                      |d¦  «        ¦  «        |d<   dS )zM enum_specifier  : ENUM ID
                            | ENUM TYPEID
        r–   Nr   r€   ©r   rž   rå   rÌ   s     r?   Úp_enum_specifier_1zCParser.p_enum_specifier_1Q  s3   € õ Œz˜!˜Aœ$  d×&7Ò&7¸¸1Ñ&=Ô&=Ñ>Ô>ˆˆ!‰ˆˆrA   c                 ól   — t          j        d|d         |                      |d¦  «        ¦  «        |d<   dS )zG enum_specifier  : ENUM brace_open enumerator_list brace_close
        Nrã   r   r€   rn  rÌ   s     r?   Úp_enum_specifier_2zCParser.p_enum_specifier_2W  s3   € õ Œz˜$  !¤ d×&7Ò&7¸¸1Ñ&=Ô&=Ñ>Ô>ˆˆ!‰ˆˆrA   c                 óx   — t          j        |d         |d         |                      |d¦  «        ¦  «        |d<   dS )z› enum_specifier  : ENUM ID brace_open enumerator_list brace_close
                            | ENUM TYPEID brace_open enumerator_list brace_close
        r–   rö   r   r€   Nrn  rÌ   s     r?   Úp_enum_specifier_3zCParser.p_enum_specifier_3\  s7   € õ Œz˜!˜Aœ$  !¤ d×&7Ò&7¸¸1Ñ&=Ô&=Ñ>Ô>ˆˆ!‰ˆˆrA   c                 ó&  — t          |¦  «        dk    r,t          j        |d         g|d         j        ¦  «        |d<   dS t          |¦  «        dk    r|d         |d<   dS |d         j                             |d         ¦  «         |d         |d<   dS )z™ enumerator_list : enumerator
                            | enumerator_list COMMA
                            | enumerator_list COMMA enumerator
        r–   r   r€   rã   N)rN   r   ÚEnumeratorListrX   ÚenumeratorsrJ   rÌ   s     r?   Úp_enumerator_listzCParser.p_enumerator_listb  s‰   € õ
 ˆq‰6Œ6�QŠ;ˆ;ÝÔ'¨¨1¬¨°°!´´
Ñ;Ô;ˆAˆa‰DˆDˆDÝ�‰VŒV�qŠ[ˆ[Ø�Q”4ˆAˆa‰DˆDˆDàˆaŒDÔ×#Ò# A a¤DÑ)Ô)Ð)Ø�Q”4ˆAˆa‰DˆDˆDrA   c                 ój   — t          j        |d         |                      |d¦  «        ¦  «        |d<   dS )z� alignment_specifier  : _ALIGNAS LPAREN type_name RPAREN
                                 | _ALIGNAS LPAREN constant_expression RPAREN
        rã   r   r€   N)r   ÚAlignasrå   rÌ   s     r?   Úp_alignment_specifierzCParser.p_alignment_specifiero  s1   € õ Œ}˜Q˜qœT 4×#4Ò#4°Q¸Ñ#:Ô#:Ñ;Ô;ˆˆ!‰ˆˆrA   c                 óD  — t          |¦  «        dk    r1t          j        |d         d|                      |d¦  «        ¦  «        }n6t          j        |d         |d         |                      |d¦  «        ¦  «        }|                      |j        |j        ¦  «         ||d<   dS )zR enumerator  : ID
                        | ID EQUALS constant_expression
        r–   r   Nrã   r€   )rN   r   Ú
Enumeratorrå   r[   rW   rX   )r6   rÍ   Ú
enumerators      r?   Úp_enumeratorzCParser.p_enumeratoru  s¡   € õ ˆq‰6Œ6�QŠ;ˆ;ÝÔ)Ø˜!œ˜dØ×)Ò)¨!¨QÑ/Ô/ñ1ô 1ˆJˆJõ Ô)Ø˜!œ˜a œdØ×)Ò)¨!¨QÑ/Ô/ñ1ô 1ˆJð 	×Ò˜Zœ_¨jÔ.>Ñ?Ô?Ð?àˆˆ!‰ˆˆrA   c                 ó   — |d         |d<   dS )zQ declarator  : id_declarator
                        | typeid_declarator
        r   r€   Nr{   rÌ   s     r?   Úp_declaratorzCParser.p_declarator…  rÑ   rA   )r~   ÚID)ÚtypeidÚTYPEID)Útypeid_noparenrƒ  c                 ó   — |d         |d<   dS )z1 xxx_declarator  : direct_xxx_declarator
        r   r€   Nr{   rÌ   s     r?   Úp_xxx_declarator_1zCParser.p_xxx_declarator_1‹  rÑ   rA   c                 óP   — |                       |d         |d         ¦  «        |d<   dS )z9 xxx_declarator  : pointer direct_xxx_declarator
        r–   r   r€   N©rv   rÌ   s     r?   Úp_xxx_declarator_2zCParser.p_xxx_declarator_2‘  s)   € ð ×%Ò% a¨¤d¨A¨a¬DÑ1Ô1ˆˆ!‰ˆˆrA   c           
      ór   — t          j        |d         ddd|                      |d¦  «        ¬¦  «        |d<   dS )z' direct_xxx_declarator   : yyy
        r   Nr˜   r€   )r   rp   rå   rÌ   s     r?   Úp_direct_xxx_declarator_1z!CParser.p_direct_xxx_declarator_1—  sE   € õ Œ~Ø�q”TØØØØ×#Ò# A qÑ)Ô)ð+ñ +ô +ˆˆ!‰ˆˆrA   c                 ó   — |d         |d<   dS )z@ direct_xxx_declarator   : LPAREN xxx_declarator RPAREN
        r–   r€   Nr{   rÌ   s     r?   Úp_direct_xxx_declarator_2z!CParser.p_direct_xxx_declarator_2¢  rÑ   rA   c                 ó  — t          |¦  «        dk    r|d         ng pg }t          j        dt          |¦  «        dk    r|d         n|d         ||d         j        ¬¦  «        }|                      |d         |¬¦  «        |d<   dS )	z} direct_xxx_declarator   : direct_xxx_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET
        râ   rã   Nrö   r   ©rn   ÚdimÚ	dim_qualsrX   ©rq   rr   r€   )rN   r   Ú	ArrayDeclrX   rv   )r6   rÍ   r‚   Úarrs       r?   Úp_direct_xxx_declarator_3z!CParser.p_direct_xxx_declarator_3¨  sŽ   € õ ˜Q™œ !š˜��1”�¨Ð2°ˆõ ŒoØÝ˜A™œ š
˜
��!”�¨¨!¬ØØ�A”$”*ð	ñ ô ˆð ×%Ò%¨1¨Q¬4¸#Ð%Ñ>Ô>ˆˆ!‰ˆˆrA   c                 óä   — d„ |d         |d         fD ¦   «         }d„ |D ¦   «         }t          j        d|d         ||d         j        ¬¦  «        }|                      |d         |¬	¦  «        |d
<   dS )zÿ direct_xxx_declarator   : direct_xxx_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET
                                    | direct_xxx_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET
        c                 óB   — g | ]}t          |t          ¦  «        r|n|g‘ŒS r{   ©ro   Úlist)r}   Úitems     r?   r   z5CParser.p_direct_xxx_declarator_4.<locals>.<listcomp>¿  s=   € ð %ð %ð %Øõ !+¨4µÑ 6Ô 6ÐB˜˜¸T¸Fð %ð %ð %rA   rã   rö   c                 ó    — g | ]}|D ]}|®|‘ŒŒS rI   r{   )r}   Úsublistr‰   s      r?   r   z5CParser.p_direct_xxx_declarator_4.<locals>.<listcomp>Á  s8   € ð !ð !ð !˜gÀ'ð !ð !¸$ØÐð ØÐÐÐrA   Nrâ   r   r�  r’  r€   ©r   r“  rX   rv   )r6   rÍ   Úlisted_qualsr‘  r”  s        r?   Úp_direct_xxx_declarator_4z!CParser.p_direct_xxx_declarator_4·  s›   € ð%ð %Ø˜1œ˜a œd˜ð%ñ %ô %ˆð!ð !¨ð !ñ !ô !ˆ	åŒoØØ�!”ØØ�A”$”*ð	ñ ô ˆð ×%Ò%¨1¨Q¬4¸#Ð%Ñ>Ô>ˆˆ!‰ˆˆrA   c           
      ó  — t          j        dt          j        |d         |                      |d¦  «        ¦  «        |d         �|d         ng |d         j        ¬¦  «        }|                      |d         |¬¦  «        |d<   dS )zi direct_xxx_declarator   : direct_xxx_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET
        Nrö   rã   r   r�  r’  r€   ©r   r“  r�  rå   rX   rv   ©r6   rÍ   r”  s      r?   Úp_direct_xxx_declarator_5z!CParser.p_direct_xxx_declarator_5Í  sƒ   € õ ŒoØÝ”˜˜1œ˜t×0Ò0°°AÑ6Ô6Ñ7Ô7Ø œdÐ.�a˜”d�d°BØ�A”$”*ð	ñ ô ˆð ×%Ò%¨1¨Q¬4¸#Ð%Ñ>Ô>ˆˆ!‰ˆˆrA   c                 ót  — t          j        |d         d|d         j        ¬¦  «        }|                      ¦   «         j        dk    rR|j        �K|j        j        D ]>}t          |t           j        ¦  «        r n!|  	                    |j
        |j        ¦  «         Œ?|                      |d         |¬¦  «        |d<   dS )z¹ direct_xxx_declarator   : direct_xxx_declarator LPAREN parameter_type_list RPAREN
                                    | direct_xxx_declarator LPAREN identifier_list_opt RPAREN
        rã   Nr   ©Úargsrn   rX   ÚLBRACEr’  r€   )r   r„   rX   rl   rn   r¦  Úparamsro   ÚEllipsisParamr[   rW   rv   )r6   rÍ   ÚfuncÚparams       r?   Úp_direct_xxx_declarator_6z!CParser.p_direct_xxx_declarator_6Ù  s¿   € õ
 Œ~Ø�1”ØØ�A”$”*ðñ ô ˆð  ×)Ò)Ñ+Ô+Ô0°HÒ<Ð<ØŒyÐ$Ø!œYÔ-ð Bð B�EÝ! %­Ô)<Ñ=Ô=ÐD¸u¸uØ×(Ò(¨¬°U´[ÑAÔAÐAÐAà×%Ò%¨1¨Q¬4¸$Ð%Ñ?Ô?ˆˆ!‰ˆˆrA   c                 ó  — |                       |d¦  «        }t          j        |d         pg d|¬¦  «        }t          |¦  «        dk    r1|d         }|j        �|j        }|j        ­||_        |d         |d<   dS ||d<   dS )zm pointer : TIMES type_qualifier_list_opt
                    | TIMES type_qualifier_list_opt pointer
        r   r–   N)r‚   rn   rX   rã   r€   )rå   r   ÚPtrDeclrN   rn   )r6   rÍ   rX   Únested_typeÚ	tail_types        r?   Ú	p_pointerzCParser.p_pointerö  s�   € ð ×!Ò! ! QÑ'Ô'ˆõ  ”m¨!¨A¬$¨*°"¸4ÀuÐMÑMÔMˆÝˆq‰6Œ6�AŠ:ˆ:Ø˜!œˆIØ”.Ð,Ø%œN�	ð ”.Ð,à(ˆIŒNØ�Q”4ˆAˆa‰DˆDˆDàˆAˆa‰DˆDˆDrA   c                 óh   — t          |¦  «        dk    r	|d         gn|d         |d         gz   |d<   dS )zs type_qualifier_list : type_qualifier
                                | type_qualifier_list type_qualifier
        r–   r   r€   Nrí   rÌ   s     r?   Úp_type_qualifier_listzCParser.p_type_qualifier_list  rï   rA   c                 óÎ   — t          |¦  «        dk    rF|d         j                             t          j        |                      |d¦  «        ¦  «        ¦  «         |d         |d<   dS )zn parameter_type_list : parameter_list
                                | parameter_list COMMA ELLIPSIS
        r–   r   rã   r€   N)rN   r¨  rJ   r   r©  rå   rÌ   s     r?   Úp_parameter_type_listzCParser.p_parameter_type_list  sY   € õ ˆq‰6Œ6�AŠ:ˆ:ØˆaŒDŒK×Ò�uÔ2°4×3DÒ3DÀQÈÑ3JÔ3JÑKÔKÑLÔLÐLà�Œtˆˆ!‰ˆˆrA   c                 óæ   — t          |¦  «        dk    r,t          j        |d         g|d         j        ¦  «        |d<   dS |d         j                             |d         ¦  «         |d         |d<   dS )zz parameter_list  : parameter_declaration
                            | parameter_list COMMA parameter_declaration
        r–   r   r€   rã   N©rN   r   Ú	ParamListrX   r¨  rJ   rÌ   s     r?   Úp_parameter_listzCParser.p_parameter_list#  óg   € õ ˆq‰6Œ6�QŠ;ˆ;Ý”? A a¤D 6¨1¨Q¬4¬:Ñ6Ô6ˆAˆa‰DˆDˆDàˆaŒDŒK×Ò˜q œtÑ$Ô$Ð$Ø�Q”4ˆAˆa‰DˆDˆDrA   c                 óî   — |d         }|d         s/t          j        dg|                      |d¦  «        ¬¦  «        g|d<   |                      |t	          |d         ¬¦  «        g¬¦  «        d         |d<   d	S )
zŸ parameter_declaration   : declaration_specifiers id_declarator
                                    | declaration_specifiers typeid_noparen_declarator
        r   rn   rx   ry   r–   r]  r\  r€   N)r   rƒ   rå   r«   r3   ró   s      r?   Úp_parameter_declaration_1z!CParser.p_parameter_declaration_17  s�   € ð �ŒtˆØ�FŒ|ð 	0Ý!Ô0°%°Ø×'Ò'¨¨1Ñ-Ô-ð/ñ /ô /ð 0ˆD�‰Là×'Ò'ØÝ˜Q˜qœT�?‘?”?Ð#ð (ñ %ô %à%&ô(ˆˆ!‰ˆˆrA   c                 ó¤  — |d         }|d         s/t          j        dg|                      |d¦  «        ¬¦  «        g|d<   t          |d         ¦  «        dk    r„t          |d         d         j        ¦  «        dk    r`|                      |d         d         j        d         ¦  «        r4|                      |t          |d         d¬	¦  «        g¬
¦  «        d         }nnt          j        d|d         d|d         pt          j	        dddd¦  «        |                      |d¦  «        ¬¦  «        }|d         }|  
                    ||¦  «        }||d<   dS )zR parameter_declaration   : declaration_specifiers abstract_declarator_opt
        r   rn   rx   ry   rR   r€   r–   Nr­   r\  r   r‰   ©rW   r‚   r™   rn   rX   )r   rƒ   rå   rN   r|   r`   r«   r3   ÚTypenamerp   r‡   )r6   rÍ   r‘   rq   r…   s        r?   Úp_parameter_declaration_2z!CParser.p_parameter_declaration_2C  sn  € ð �ŒtˆØ�FŒ|ð 	0Ý!Ô0°%°Ø×'Ò'¨¨1Ñ-Ô-ð/ñ /ô /ð 0ˆD�‰Lõ ˆt�FŒ|ÑÔ˜qÒ Ð ¥S¨¨f¬°bÔ)9Ô)?Ñ%@Ô%@ÀAÒ%EÐ%EØ×&Ò& t¨F¤|°BÔ'7Ô'=¸aÔ'@ÑAÔAð &Fà×+Ò+ØÝ Q q¤T°Ð5Ñ5Ô5Ð6ð ,ñ 8ô 8à89ô;ˆDˆDõ ”>ØØ˜6”lØØ�q”TÐC�Uœ^¨D°$¸¸dÑCÔCØ×'Ò'¨¨1Ñ-Ô-ð/ñ /ô /ˆDð ˜F”|ˆHØ×+Ò+¨D°(Ñ;Ô;ˆDàˆˆ!‰ˆˆrA   c                 óæ   — t          |¦  «        dk    r,t          j        |d         g|d         j        ¦  «        |d<   dS |d         j                             |d         ¦  «         |d         |d<   dS )ze identifier_list : identifier
                            | identifier_list COMMA identifier
        r–   r   r€   rã   Nr·  rÌ   s     r?   Úp_identifier_listzCParser.p_identifier_listc  rº  rA   c                 ó   — |d         |d<   dS )z- initializer : assignment_expression
        r   r€   Nr{   rÌ   s     r?   Úp_initializer_1zCParser.p_initializer_1m  rÚ   rA   c                 óˆ   — |d         €.t          j        g |                      |d¦  «        ¦  «        |d<   dS |d         |d<   dS )z‹ initializer : brace_open initializer_list_opt brace_close
                        | brace_open initializer_list COMMA brace_close
        r–   Nr   r€   )r   ÚInitListrå   rÌ   s     r?   Úp_initializer_2zCParser.p_initializer_2r  sG   € ð ˆQŒ4ˆ<Ý”> " d×&7Ò&7¸¸1Ñ&=Ô&=Ñ>Ô>ˆAˆa‰DˆDˆDà�Q”4ˆAˆa‰DˆDˆDrA   c                 ó’  — t          |¦  «        dk    rW|d         €|d         n t          j        |d         |d         ¦  «        }t          j        |g|d         j        ¦  «        |d<   dS |d         €|d         n t          j        |d         |d         ¦  «        }|d         j                             |¦  «         |d         |d<   dS )z� initializer_list    : designation_opt initializer
                                | initializer_list COMMA designation_opt initializer
        rã   r   Nr–   r€   rö   )rN   r   ÚNamedInitializerrÆ  rX   ÚexprsrJ   )r6   rÍ   rš   s      r?   Úp_initializer_listzCParser.p_initializer_list{  s³   € õ ˆq‰6Œ6�QŠ;ˆ;Ø˜Qœ4˜<�1�Q”4�4­UÔ-CÀAÀaÄDÈ!ÈAÌ$Ñ-OÔ-OˆDÝ”> 4 &¨!¨A¬$¬*Ñ5Ô5ˆAˆa‰DˆDˆDà˜Qœ4˜<�1�Q”4�4­UÔ-CÀAÀaÄDÈ!ÈAÌ$Ñ-OÔ-OˆDØˆaŒDŒJ×Ò˜dÑ#Ô#Ð#Ø�Q”4ˆAˆa‰DˆDˆDrA   c                 ó   — |d         |d<   dS )z. designation : designator_list EQUALS
        r   r€   Nr{   rÌ   s     r?   Úp_designationzCParser.p_designation‡  rÚ   rA   c                 óh   — t          |¦  «        dk    r	|d         gn|d         |d         gz   |d<   dS )z_ designator_list : designator
                            | designator_list designator
        r–   r   r€   Nrí   rÌ   s     r?   Úp_designator_listzCParser.p_designator_list�  rï   rA   c                 ó   — |d         |d<   dS )zi designator  : LBRACKET constant_expression RBRACKET
                        | PERIOD identifier
        r–   r€   Nr{   rÌ   s     r?   Úp_designatorzCParser.p_designator•  rÑ   rA   c                 ó  — t          j        d|d         d         dd…         d|d         pt          j        dddd¦  «        |                      |d¦  «        ¬¦  «        }|                      ||d         d         ¦  «        |d<   dS )	zH type_name   : specifier_qualifier_list abstract_declarator_opt
        r   r   r‰   Nr–   r¾  rn   r€   )r   r¿  rp   rå   r‡   )r6   rÍ   r…   s      r?   Úp_type_namezCParser.p_type_name›  s‰   € õ ”>ØØ�A”$�v”,˜q˜q˜q”/ØØ�1”Ð?�œ¨¨d°D¸$Ñ?Ô?Ø×#Ò# A qÑ)Ô)ð+ñ +ô +ˆð ×'Ò'¨°!°A´$°v´,Ñ?Ô?ˆˆ!‰ˆˆrA   c                 ót   — t          j        dddd¦  «        }|                      ||d         ¬¦  «        |d<   dS )z+ abstract_declarator     : pointer
        Nr   r’  r€   )r   rp   rv   )r6   rÍ   Ú	dummytypes      r?   Úp_abstract_declarator_1zCParser.p_abstract_declarator_1§  sE   € õ ”N 4¨¨t°TÑ:Ô:ˆ	Ø×%Ò%ØØ�q”Tð &ñ ô ˆˆ!‰ˆˆrA   c                 óP   — |                       |d         |d         ¦  «        |d<   dS )zF abstract_declarator     : pointer direct_abstract_declarator
        r–   r   r€   Nrˆ  rÌ   s     r?   Úp_abstract_declarator_2zCParser.p_abstract_declarator_2¯  s)   € ð ×%Ò% a¨¤d¨A¨a¬DÑ1Ô1ˆˆ!‰ˆˆrA   c                 ó   — |d         |d<   dS )z> abstract_declarator     : direct_abstract_declarator
        r   r€   Nr{   rÌ   s     r?   Úp_abstract_declarator_3zCParser.p_abstract_declarator_3´  rÚ   rA   c                 ó   — |d         |d<   dS )zA direct_abstract_declarator  : LPAREN abstract_declarator RPAREN r–   r€   Nr{   rÌ   s     r?   Úp_direct_abstract_declarator_1z&CParser.p_direct_abstract_declarator_1¾  ó   € à�Œtˆˆ!‰ˆˆrA   c                 ó˜   — t          j        d|d         g |d         j        ¬¦  «        }|                      |d         |¬¦  «        |d<   dS )zn direct_abstract_declarator  : direct_abstract_declarator LBRACKET assignment_expression_opt RBRACKET
        Nrã   r   r�  r’  r€   r�  r¢  s      r?   Úp_direct_abstract_declarator_2z&CParser.p_direct_abstract_declarator_2Â  sV   € õ ŒoØØ�!”ØØ�A”$”*ð	ñ ô ˆð ×%Ò%¨1¨Q¬4¸#Ð%Ñ>Ô>ˆˆ!‰ˆˆrA   c           	      ó  — t          |¦  «        dk    r|d         ng pg }t          j        t          j        dddd¦  «        t          |¦  «        dk    r|d         n|d         ||                      |d¦  «        ¬¦  «        |d<   dS )zk direct_abstract_declarator  : LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET
        rö   r–   Nrã   r   r�  r€   )rN   r   r“  rp   rå   )r6   rÍ   r‚   s      r?   Úp_direct_abstract_declarator_3z&CParser.p_direct_abstract_declarator_3Í  sˆ   € õ ˜Q™œ !š˜��1”�¨Ð2°ˆÝŒÝ”  d¨D°$Ñ7Ô7Ý˜A™œ š
˜
��!”�¨¨!¬ØØ×#Ò# A qÑ)Ô)ð	+ñ +ô +ˆˆ!‰ˆˆrA   c           
      óæ   — t          j        dt          j        |d         |                      |d¦  «        ¦  «        g |d         j        ¬¦  «        }|                      |d         |¬¦  «        |d<   dS )zZ direct_abstract_declarator  : direct_abstract_declarator LBRACKET TIMES RBRACKET
        Nrã   r   r�  r’  r€   r¡  r¢  s      r?   Úp_direct_abstract_declarator_4z&CParser.p_direct_abstract_declarator_4×  sr   € õ ŒoØÝ”˜˜1œ˜t×0Ò0°°AÑ6Ô6Ñ7Ô7ØØ�A”$”*ð	ñ ô ˆð ×%Ò%¨1¨Q¬4¸#Ð%Ñ>Ô>ˆˆ!‰ˆˆrA   c           
      óè   — t          j        t          j        dddd¦  «        t          j        |d         |                      |d¦  «        ¦  «        g |                      |d¦  «        ¬¦  «        |d<   dS )z? direct_abstract_declarator  : LBRACKET TIMES RBRACKET
        Nrã   r   r�  r€   )r   r“  rp   r�  rå   rÌ   s     r?   Úp_direct_abstract_declarator_5z&CParser.p_direct_abstract_declarator_5â  sn   € õ ŒÝ”  d¨D°$Ñ7Ô7Ý”˜˜1œ˜t×0Ò0°°AÑ6Ô6Ñ7Ô7ØØ×#Ò# A qÑ)Ô)ð	+ñ +ô +ˆˆ!‰ˆˆrA   c                 ó–   — t          j        |d         d|d         j        ¬¦  «        }|                      |d         |¬¦  «        |d<   dS )zh direct_abstract_declarator  : direct_abstract_declarator LPAREN parameter_type_list_opt RPAREN
        rã   Nr   r¥  r’  r€   )r   r„   rX   rv   )r6   rÍ   rª  s      r?   Úp_direct_abstract_declarator_6z&CParser.p_direct_abstract_declarator_6ë  sS   € õ Œ~Ø�1”ØØ�A”$”*ðñ ô ˆð
 ×%Ò%¨1¨Q¬4¸$Ð%Ñ?Ô?ˆˆ!‰ˆˆrA   c           	      ó˜   — t          j        |d         t          j        dddd¦  «        |                      |d¦  «        ¬¦  «        |d<   dS )zM direct_abstract_declarator  : LPAREN parameter_type_list_opt RPAREN
        r–   Nr   r¥  r€   )r   r„   rp   rå   rÌ   s     r?   Úp_direct_abstract_declarator_7z&CParser.p_direct_abstract_declarator_7õ  sO   € õ Œ~Ø�1”Ý”  d¨D°$Ñ7Ô7Ø×#Ò# A qÑ)Ô)ð+ñ +ô +ˆˆ!‰ˆˆrA   c                 ód   — t          |d         t          ¦  «        r|d         n|d         g|d<   dS )zG block_item  : declaration
                        | statement
        r   r€   Nr˜  rÌ   s     r?   Úp_block_itemzCParser.p_block_item   s2   € õ " ! A¤$­Ñ-Ô-Ð9ˆq�Œtˆt°A°a´D°6ˆˆ!‰ˆˆrA   c                 ó~   — t          |¦  «        dk    s|d         dgk    r|d         n|d         |d         z   |d<   dS )z_ block_item_list : block_item
                            | block_item_list block_item
        r–   Nr   r€   rí   rÌ   s     r?   Úp_block_item_listzCParser.p_block_item_list  sA   € õ
 ˜A™œ !š˜ q¨¤t°¨v¢~ ~ˆq�Œtˆt¸A¸a¼DÀ1ÀQÄ4¹Kˆˆ!‰ˆˆrA   c                 ól   — t          j        |d         |                      |d¦  «        ¬¦  «        |d<   dS )zA compound_statement : brace_open block_item_list_opt brace_close r–   r   rû   r€   N)r   rý   rå   rÌ   s     r?   Úp_compound_statement_1zCParser.p_compound_statement_1  s:   € åŒ~Ø˜!œØ×#Ò# A qÑ)Ô)ð+ñ +ô +ˆˆ!‰ˆˆrA   c                 óx   — t          j        |d         |d         |                      |d¦  «        ¦  «        |d<   dS )z6 labeled_statement : ID COLON pragmacomp_or_statement r   rã   r€   N)r   ÚLabelrå   rÌ   s     r?   Úp_labeled_statement_1zCParser.p_labeled_statement_1  ó5   € åŒ{˜1˜Qœ4  1¤ t×'8Ò'8¸¸AÑ'>Ô'>Ñ?Ô?ˆˆ!‰ˆˆrA   c                 óz   — t          j        |d         |d         g|                      |d¦  «        ¦  «        |d<   dS )zL labeled_statement : CASE constant_expression COLON pragmacomp_or_statement r–   rö   r   r€   N)r   ÚCaserå   rÌ   s     r?   Úp_labeled_statement_2zCParser.p_labeled_statement_2  s7   € åŒz˜!˜Aœ$  1¤ ¨×(9Ò(9¸!¸QÑ(?Ô(?Ñ@Ô@ˆˆ!‰ˆˆrA   c                 ól   — t          j        |d         g|                      |d¦  «        ¦  «        |d<   dS )z; labeled_statement : DEFAULT COLON pragmacomp_or_statement rã   r   r€   N)r   ÚDefaultrå   rÌ   s     r?   Úp_labeled_statement_3zCParser.p_labeled_statement_3  s1   € åŒ}˜a œd˜V T×%6Ò%6°q¸!Ñ%<Ô%<Ñ=Ô=ˆˆ!‰ˆˆrA   c           	      óz   — t          j        |d         |d         d|                      |d¦  «        ¦  «        |d<   dS )zK selection_statement : IF LPAREN expression RPAREN pragmacomp_or_statement rã   râ   Nr   r€   ©r   ÚIfrå   rÌ   s     r?   Úp_selection_statement_1zCParser.p_selection_statement_1!  s7   € åŒx˜˜!œ˜a œd D¨$×*;Ò*;¸A¸qÑ*AÔ*AÑBÔBˆˆ!‰ˆˆrA   c           	      ó†   — t          j        |d         |d         |d         |                      |d¦  «        ¦  «        |d<   dS )zZ selection_statement : IF LPAREN expression RPAREN statement ELSE pragmacomp_or_statement rã   râ   é   r   r€   Nrû  rÌ   s     r?   Úp_selection_statement_2zCParser.p_selection_statement_2%  s;   € åŒx˜˜!œ˜a œd A a¤D¨$×*;Ò*;¸A¸qÑ*AÔ*AÑBÔBˆˆ!‰ˆˆrA   c           
      ó’   — t          t          j        |d         |d         |                      |d¦  «        ¦  «        ¦  «        |d<   dS )zO selection_statement : SWITCH LPAREN expression RPAREN pragmacomp_or_statement rã   râ   r   r€   N)r
   r   ÚSwitchrå   rÌ   s     r?   Úp_selection_statement_3zCParser.p_selection_statement_3)  sD   € åÝ”˜Q˜qœT 1 Q¤4¨×):Ò):¸1¸aÑ)@Ô)@ÑAÔAñCô Cˆˆ!‰ˆˆrA   c                 óx   — t          j        |d         |d         |                      |d¦  «        ¦  «        |d<   dS )zN iteration_statement : WHILE LPAREN expression RPAREN pragmacomp_or_statement rã   râ   r   r€   N)r   ÚWhilerå   rÌ   s     r?   Úp_iteration_statement_1zCParser.p_iteration_statement_1.  ró  rA   c                 óx   — t          j        |d         |d         |                      |d¦  «        ¦  «        |d<   dS )zV iteration_statement : DO pragmacomp_or_statement WHILE LPAREN expression RPAREN SEMI râ   r–   r   r€   N)r   ÚDoWhilerå   rÌ   s     r?   Úp_iteration_statement_2zCParser.p_iteration_statement_22  s5   € åŒ}˜Q˜qœT 1 Q¤4¨×):Ò):¸1¸aÑ)@Ô)@ÑAÔAˆˆ!‰ˆˆrA   c           
      ó”   — t          j        |d         |d         |d         |d         |                      |d¦  «        ¦  «        |d<   dS )zx iteration_statement : FOR LPAREN expression_opt SEMI expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement rã   râ   rÿ  é	   r   r€   N)r   ÚForrå   rÌ   s     r?   Úp_iteration_statement_3zCParser.p_iteration_statement_36  sA   € åŒy˜˜1œ˜q œt Q q¤T¨1¨Q¬4°×1BÒ1BÀ1ÀaÑ1HÔ1HÑIÔIˆˆ!‰ˆˆrA   c           
      óâ   — t          j        t          j        |d         |                      |d¦  «        ¦  «        |d         |d         |d         |                      |d¦  «        ¦  «        |d<   dS )zp iteration_statement : FOR LPAREN declaration expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement rã   r   rö   é   é   r€   N)r   r  ÚDeclListrå   rÌ   s     r?   Úp_iteration_statement_4zCParser.p_iteration_statement_4:  sd   € åŒy�œ¨¨!¬¨d×.?Ò.?ÀÀ1Ñ.EÔ.EÑFÔFØ˜1œ˜q œt Q q¤T¨4×+<Ò+<¸QÀÑ+BÔ+BñDô Dˆˆ!‰ˆˆrA   c                 ój   — t          j        |d         |                      |d¦  «        ¦  «        |d<   dS )z  jump_statement  : GOTO ID SEMI r–   r   r€   N)r   ÚGotorå   rÌ   s     r?   Úp_jump_statement_1zCParser.p_jump_statement_1?  s/   € åŒz˜!˜Aœ$ × 1Ò 1°!°QÑ 7Ô 7Ñ8Ô8ˆˆ!‰ˆˆrA   c                 ó\   — t          j        |                      |d¦  «        ¦  «        |d<   dS )z jump_statement  : BREAK SEMI r   r€   N)r   ÚBreakrå   rÌ   s     r?   Úp_jump_statement_2zCParser.p_jump_statement_2C  s)   € åŒ{˜4×,Ò,¨Q°Ñ2Ô2Ñ3Ô3ˆˆ!‰ˆˆrA   c                 ó\   — t          j        |                      |d¦  «        ¦  «        |d<   dS )z! jump_statement  : CONTINUE SEMI r   r€   N)r   ÚContinuerå   rÌ   s     r?   Úp_jump_statement_3zCParser.p_jump_statement_3G  s)   € åŒ~˜d×/Ò/°°1Ñ5Ô5Ñ6Ô6ˆˆ!‰ˆˆrA   c                 ó”   — t          j        t          |¦  «        dk    r|d         nd|                      |d¦  «        ¦  «        |d<   dS )z\ jump_statement  : RETURN expression SEMI
                            | RETURN SEMI
        rö   r–   Nr   r€   )r   ÚReturnrN   rå   rÌ   s     r?   Úp_jump_statement_4zCParser.p_jump_statement_4K  sD   € õ Œ|¥C¨¡F¤F¨a¢K K˜A˜aœD˜D°T¸4×;LÒ;LÈQÐPQÑ;RÔ;RÑSÔSˆˆ!‰ˆˆrA   c                 ó†   — |d         €-t          j        |                      |d¦  «        ¦  «        |d<   dS |d         |d<   dS )z, expression_statement : expression_opt SEMI r   Nr–   r€   )r   ÚEmptyStatementrå   rÌ   s     r?   Úp_expression_statementzCParser.p_expression_statementQ  sD   € àˆQŒ4ˆ<ÝÔ'¨×(9Ò(9¸!¸QÑ(?Ô(?Ñ@Ô@ˆAˆa‰DˆDˆDà�Q”4ˆAˆa‰DˆDˆDrA   c                 ó<  — t          |¦  «        dk    r|d         |d<   dS t          |d         t          j        ¦  «        s*t          j        |d         g|d         j        ¦  «        |d<   |d         j                             |d         ¦  «         |d         |d<   dS )zn expression  : assignment_expression
                        | expression COMMA assignment_expression
        r–   r   r€   rã   N)rN   ro   r   ÚExprListrX   rÊ  rJ   rÌ   s     r?   Úp_expressionzCParser.p_expressionX  sŒ   € õ ˆq‰6Œ6�QŠ;ˆ;Ø�Q”4ˆAˆa‰DˆDˆDå˜a œd¥E¤NÑ3Ô3ð :Ý”~ q¨¤t f¨a°¬d¬jÑ9Ô9��!‘àˆaŒDŒJ×Ò˜a œdÑ#Ô#Ð#Ø�Q”4ˆAˆa‰DˆDˆDrA   c                 ó   — |d         |d<   dS )z: assignment_expression : LPAREN compound_statement RPAREN r–   r€   Nr{   rÌ   s     r?   Ú#p_parenthesized_compound_expressionz+CParser.p_parenthesized_compound_expressione  rÝ  rA   c                 ón   — t          j        |d         g|                      |d¦  «        ¬¦  «        |d<   dS )z typedef_name : TYPEID r   ry   r€   Nr+  rÌ   s     r?   Úp_typedef_namezCParser.p_typedef_namei  s5   € åÔ# Q q¤T F°$×2CÒ2CÀAÀqÑ2IÔ2IÐJÑJÔJˆˆ!‰ˆˆrA   c                 ó´   — t          |¦  «        dk    r|d         |d<   dS t          j        |d         |d         |d         |d         j        ¦  «        |d<   dS )z› assignment_expression   : conditional_expression
                                    | unary_expression assignment_operator assignment_expression
        r–   r   r€   rã   N)rN   r   Ú
AssignmentrX   rÌ   s     r?   Úp_assignment_expressionzCParser.p_assignment_expressionm  sT   € õ ˆq‰6Œ6�QŠ;ˆ;Ø�Q”4ˆAˆa‰DˆDˆDåÔ# A a¤D¨!¨A¬$°°!´°a¸´d´jÑAÔAˆAˆa‰DˆDˆDrA   c                 ó   — |d         |d<   dS )aÞ   assignment_operator : EQUALS
                                | XOREQUAL
                                | TIMESEQUAL
                                | DIVEQUAL
                                | MODEQUAL
                                | PLUSEQUAL
                                | MINUSEQUAL
                                | LSHIFTEQUAL
                                | RSHIFTEQUAL
                                | ANDEQUAL
                                | OREQUAL
        r   r€   Nr{   rÌ   s     r?   Úp_assignment_operatorzCParser.p_assignment_operator{  s   € ð �Œtˆˆ!‰ˆˆrA   c                 ó   — |d         |d<   dS )z. constant_expression : conditional_expression r   r€   Nr{   rÌ   s     r?   Úp_constant_expressionzCParser.p_constant_expressionŠ  rÝ  rA   c                 ó´   — t          |¦  «        dk    r|d         |d<   dS t          j        |d         |d         |d         |d         j        ¦  «        |d<   dS )zœ conditional_expression  : binary_expression
                                    | binary_expression CONDOP expression COLON conditional_expression
        r–   r   r€   rã   râ   N)rN   r   Ú	TernaryOprX   rÌ   s     r?   Úp_conditional_expressionz CParser.p_conditional_expressionŽ  sS   € õ ˆq‰6Œ6�QŠ;ˆ;Ø�Q”4ˆAˆa‰DˆDˆDå”? 1 Q¤4¨¨1¬¨q°¬t°Q°q´T´ZÑ@Ô@ˆAˆa‰DˆDˆDrA   c                 ó´   — t          |¦  «        dk    r|d         |d<   dS t          j        |d         |d         |d         |d         j        ¦  «        |d<   dS )ak   binary_expression   : cast_expression
                                | binary_expression TIMES binary_expression
                                | binary_expression DIVIDE binary_expression
                                | binary_expression MOD binary_expression
                                | binary_expression PLUS binary_expression
                                | binary_expression MINUS binary_expression
                                | binary_expression RSHIFT binary_expression
                                | binary_expression LSHIFT binary_expression
                                | binary_expression LT binary_expression
                                | binary_expression LE binary_expression
                                | binary_expression GE binary_expression
                                | binary_expression GT binary_expression
                                | binary_expression EQ binary_expression
                                | binary_expression NE binary_expression
                                | binary_expression AND binary_expression
                                | binary_expression OR binary_expression
                                | binary_expression XOR binary_expression
                                | binary_expression LAND binary_expression
                                | binary_expression LOR binary_expression
        r–   r   r€   rã   N)rN   r   ÚBinaryOprX   rÌ   s     r?   Úp_binary_expressionzCParser.p_binary_expression—  sS   € õ* ˆq‰6Œ6�QŠ;ˆ;Ø�Q”4ˆAˆa‰DˆDˆDå”> ! A¤$¨¨!¬¨a°¬d°A°a´D´JÑ?Ô?ˆAˆa‰DˆDˆDrA   c                 ó   — |d         |d<   dS )z$ cast_expression : unary_expression r   r€   Nr{   rÌ   s     r?   Úp_cast_expression_1zCParser.p_cast_expression_1±  rÝ  rA   c                 óx   — t          j        |d         |d         |                      |d¦  «        ¦  «        |d<   dS )z; cast_expression : LPAREN type_name RPAREN cast_expression r–   rö   r   r€   N)r   ÚCastrå   rÌ   s     r?   Úp_cast_expression_2zCParser.p_cast_expression_2µ  s5   € åŒz˜!˜Aœ$  !¤ d×&7Ò&7¸¸1Ñ&=Ô&=Ñ>Ô>ˆˆ!‰ˆˆrA   c                 ó   — |d         |d<   dS )z* unary_expression    : postfix_expression r   r€   Nr{   rÌ   s     r?   Úp_unary_expression_1zCParser.p_unary_expression_1¹  rÝ  rA   c                 óf   — t          j        |d         |d         |d         j        ¦  «        |d<   dS )z¸ unary_expression    : PLUSPLUS unary_expression
                                | MINUSMINUS unary_expression
                                | unary_operator cast_expression
        r   r–   r€   N©r   ÚUnaryOprX   rÌ   s     r?   Úp_unary_expression_2zCParser.p_unary_expression_2½  s-   € õ
 Œ}˜Q˜qœT 1 Q¤4¨¨1¬¬Ñ4Ô4ˆˆ!‰ˆˆrA   c                 ó®   — t          j        |d         t          |¦  «        dk    r|d         n|d         |                      |d¦  «        ¦  «        |d<   dS )z» unary_expression    : SIZEOF unary_expression
                                | SIZEOF LPAREN type_name RPAREN
                                | _ALIGNOF LPAREN type_name RPAREN
        r   rã   r–   r€   N)r   r?  rN   rå   rÌ   s     r?   Úp_unary_expression_3zCParser.p_unary_expression_3Ä  sT   € õ
 Œ}ØˆaŒDÝ˜‘F”F˜a’K�KˆAˆaŒDˆD Q q¤TØ×Ò˜a Ñ#Ô#ñ%ô %ˆˆ!‰ˆˆrA   c                 ó   — |d         |d<   dS )zÏ unary_operator  : AND
                            | TIMES
                            | PLUS
                            | MINUS
                            | NOT
                            | LNOT
        r   r€   Nr{   rÌ   s     r?   Úp_unary_operatorzCParser.p_unary_operatorÎ  r'  rA   c                 ó   — |d         |d<   dS )z* postfix_expression  : primary_expression r   r€   Nr{   rÌ   s     r?   Úp_postfix_expression_1zCParser.p_postfix_expression_1Ø  rÝ  rA   c                 óf   — t          j        |d         |d         |d         j        ¦  «        |d<   dS )zG postfix_expression  : postfix_expression LBRACKET expression RBRACKET r   rã   r€   N)r   ÚArrayRefrX   rÌ   s     r?   Úp_postfix_expression_2zCParser.p_postfix_expression_2Ü  s+   € åŒ~˜a œd A a¤D¨!¨A¬$¬*Ñ5Ô5ˆˆ!‰ˆˆrA   c                 ó�   — t          j        |d         t          |¦  «        dk    r|d         nd|d         j        ¦  «        |d<   dS )zœ postfix_expression  : postfix_expression LPAREN argument_expression_list RPAREN
                                | postfix_expression LPAREN RPAREN
        r   râ   rã   Nr€   )r   ÚFuncCallrN   rX   rÌ   s     r?   Úp_postfix_expression_3zCParser.p_postfix_expression_3à  s?   € õ Œ~˜a œd­C°©F¬F°aªK¨K A a¤D D¸TÀ1ÀQÄ4Ä:ÑNÔNˆˆ!‰ˆˆrA   c                 óÆ   — t          j        |d         |                      |d¦  «        ¦  «        }t          j        |d         |d         ||d         j        ¦  «        |d<   dS )zÿ postfix_expression  : postfix_expression PERIOD ID
                                | postfix_expression PERIOD TYPEID
                                | postfix_expression ARROW ID
                                | postfix_expression ARROW TYPEID
        rã   r   r–   r€   N)r   r�  rå   Ú	StructRefrX   )r6   rÍ   Úfields      r?   Úp_postfix_expression_4zCParser.p_postfix_expression_4æ  sT   € õ ”˜˜1œ˜t×0Ò0°°AÑ6Ô6Ñ7Ô7ˆÝŒ˜q œt Q q¤T¨5°!°A´$´*Ñ=Ô=ˆˆ!‰ˆˆrA   c                 ól   — t          j        d|d         z   |d         |d         j        ¦  «        |d<   dS )z{ postfix_expression  : postfix_expression PLUSPLUS
                                | postfix_expression MINUSMINUS
        rÍ   r–   r   r€   Nr>  rÌ   s     r?   Úp_postfix_expression_5zCParser.p_postfix_expression_5ï  s1   € õ Œ}˜S 1 Q¤4™Z¨¨1¬¨q°¬t¬zÑ:Ô:ˆˆ!‰ˆˆrA   c                 óN   — t          j        |d         |d         ¦  «        |d<   dS )zÇ postfix_expression  : LPAREN type_name RPAREN brace_open initializer_list brace_close
                                | LPAREN type_name RPAREN brace_open initializer_list COMMA brace_close
        r–   râ   r€   N)r   ÚCompoundLiteralrÌ   s     r?   Úp_postfix_expression_6zCParser.p_postfix_expression_6õ  s&   € õ Ô$ Q q¤T¨1¨Q¬4Ñ0Ô0ˆˆ!‰ˆˆrA   c                 ó   — |d         |d<   dS )z" primary_expression  : identifier r   r€   Nr{   rÌ   s     r?   Úp_primary_expression_1zCParser.p_primary_expression_1û  rÝ  rA   c                 ó   — |d         |d<   dS )z  primary_expression  : constant r   r€   Nr{   rÌ   s     r?   Úp_primary_expression_2zCParser.p_primary_expression_2ÿ  rÝ  rA   c                 ó   — |d         |d<   dS )zp primary_expression  : unified_string_literal
                                | unified_wstring_literal
        r   r€   Nr{   rÌ   s     r?   Úp_primary_expression_3zCParser.p_primary_expression_3  rÑ   rA   c                 ó   — |d         |d<   dS )z0 primary_expression  : LPAREN expression RPAREN r–   r€   Nr{   rÌ   s     r?   Úp_primary_expression_4zCParser.p_primary_expression_4	  rÝ  rA   c                 óØ   — |                       |d¦  «        }t          j        t          j        |d         |¦  «        t          j        |d         |d         g|¦  «        |¦  «        |d<   dS )za primary_expression  : OFFSETOF LPAREN type_name COMMA offsetof_member_designator RPAREN
        r   rã   râ   r€   N)rå   r   rK  r�  r#  )r6   rÍ   rX   s      r?   Úp_primary_expression_5zCParser.p_primary_expression_5  sb   € ð ×!Ò! ! QÑ'Ô'ˆÝŒ~�eœh q¨¤t¨UÑ3Ô3Ý#œn¨a°¬d°A°a´D¨\¸5ÑAÔAØ#ñ%ô %ˆˆ!‰ˆˆrA   c                 ó¢  — t          |¦  «        dk    r|d         |d<   dS t          |¦  «        dk    r9t          j        |d         |d         |d         |d         j        ¦  «        |d<   dS t          |¦  «        dk    r2t          j        |d         |d         |d         j        ¦  «        |d<   dS t          dt          |¦  «        z  ¦  «        ‚)	zì offsetof_member_designator : identifier
                                         | offsetof_member_designator PERIOD identifier
                                         | offsetof_member_designator LBRACKET expression RBRACKET
        r–   r   r€   rö   rã   râ   z$Unexpected parsing state. len(p): %uN)rN   r   rN  rX   rH  ÚNotImplementedErrorrÌ   s     r?   Úp_offsetof_member_designatorz$CParser.p_offsetof_member_designator  sµ   € õ
 ˆq‰6Œ6�QŠ;ˆ;Ø�Q”4ˆAˆa‰DˆDˆDÝ�‰VŒV�qŠ[ˆ[Ý”? 1 Q¤4¨¨1¬¨q°¬t°Q°q´T´ZÑ@Ô@ˆAˆa‰DˆDˆDÝ�‰VŒV�qŠ[ˆ[Ý”> ! A¤$¨¨!¬¨a°¬d¬jÑ9Ô9ˆAˆa‰DˆDˆDå%Ð&LÍsÐSTÉvÌvÑ&UÑVÔVÐVrA   c                 óæ   — t          |¦  «        dk    r,t          j        |d         g|d         j        ¦  «        |d<   dS |d         j                             |d         ¦  «         |d         |d<   dS )zœ argument_expression_list    : assignment_expression
                                        | argument_expression_list COMMA assignment_expression
        r–   r   r€   rã   N)rN   r   r#  rX   rÊ  rJ   rÌ   s     r?   Úp_argument_expression_listz"CParser.p_argument_expression_list#  sg   € õ ˆq‰6Œ6�QŠ;ˆ;Ý”> 1 Q¤4 &¨!¨A¬$¬*Ñ5Ô5ˆAˆa‰DˆDˆDàˆaŒDŒJ×Ò˜a œdÑ#Ô#Ð#Ø�Q”4ˆAˆa‰DˆDˆDrA   c                 ój   — t          j        |d         |                      |d¦  «        ¦  «        |d<   dS )z identifier  : ID r   r€   N)r   r�  rå   rÌ   s     r?   Úp_identifierzCParser.p_identifier-  s/   € åŒx˜˜!œ˜d×/Ò/°°1Ñ5Ô5Ñ6Ô6ˆˆ!‰ˆˆrA   c                 ó4  — d}d}|d         dd…         D ]}|dv r|dz  }Œ|dv r|dz  }Œd}|dk    rt          d¦  «        ‚|d	k    rt          d
¦  «        ‚d|z  d|z  z   }t          j        |dz   |d         |                      |d¦  «        ¦  «        |d<   dS )zÆ constant    : INT_CONST_DEC
                        | INT_CONST_OCT
                        | INT_CONST_HEX
                        | INT_CONST_BIN
                        | INT_CONST_CHAR
        r€   r   éýÿÿÿN©ÚlÚL)ÚuÚUr   z.Constant cannot have more than one u/U suffix.r–   z.Constant cannot have more than two l/L suffix.z	unsigned zlong rx   )Ú
ValueErrorr   ÚConstantrå   )r6   rÍ   ÚuCountÚlCountÚxr§   Úprefixs          r?   Úp_constant_1zCParser.p_constant_11  sÑ   € ð ˆØˆØ�1”�b�c�c”ð 	ð 	ˆAØ�JˆˆØ˜!‘��Ø�j��Ø˜!‘�øØˆØ�AŠ:ˆ:ÝÐNÑOÔOÐOØ�aŠZˆZÝÐNÑOÔOÐOØ˜vÑ%¨°&Ñ(8Ñ8ˆÝŒ~Ø�U‰N˜A˜aœD $×"3Ò"3°A°qÑ"9Ô"9ñ;ô ;ˆˆ!‰ˆˆrA   c                 óú   — d|d                               ¦   «         v rd}n(|d         d         dv rd}n|d         d         dv rd}nd}t          j        ||d         |                      |d¦  «        ¦  «        |d	<   d
S )zM constant    : FLOAT_CONST
                        | HEX_FLOAT_CONST
        rr  r   ÚfloatrR   )ÚfÚFri  zlong doubleÚdoubler€   N)Úlowerr   ro  rå   )r6   rÍ   r§   s      r?   Úp_constant_2zCParser.p_constant_2H  s�   € ð �!�A”$—*’*‘,”,ÐÐØˆAˆAà�Œt�BŒx˜:Ð%Ð%Ø��Ø�1”�b”˜ZÐ'Ð'Ø!��à�åŒ~Øˆq�Œt�T×&Ò& q¨!Ñ,Ô,ñ.ô .ˆˆ!‰ˆˆrA   c                 ól   — t          j        d|d         |                      |d¦  «        ¦  «        |d<   dS )z¿ constant    : CHAR_CONST
                        | WCHAR_CONST
                        | U8CHAR_CONST
                        | U16CHAR_CONST
                        | U32CHAR_CONST
        Úcharr   r€   N)r   ro  rå   rÌ   s     r?   Úp_constant_3zCParser.p_constant_3Y  s8   € õ Œ~Ø�A�a”D˜$×+Ò+¨A¨qÑ1Ô1ñ3ô 3ˆˆ!‰ˆˆrA   c                 ó  — t          |¦  «        dk    r5t          j        d|d         |                      |d¦  «        ¦  «        |d<   dS |d         j        dd…         |d         dd…         z   |d         _        |d         |d<   dS )z~ unified_string_literal  : STRING_LITERAL
                                    | unified_string_literal STRING_LITERAL
        r–   Ústringr   r€   NrR   )rN   r   ro  rå   ÚvaluerÌ   s     r?   Úp_unified_string_literalz CParser.p_unified_string_literalh  s„   € õ ˆq‰6Œ6�QŠ;ˆ;Ý”>Ø˜!˜Aœ$ × 1Ò 1°!°QÑ 7Ô 7ñ9ô 9ˆAˆa‰DˆDˆDð ˜1œœ C R Cœ¨1¨Q¬4°°°¬8Ñ3ˆAˆaŒDŒJØ�Q”4ˆAˆa‰DˆDˆDrA   c                 ó2  — t          |¦  «        dk    r5t          j        d|d         |                      |d¦  «        ¦  «        |d<   dS |d         j                             ¦   «         dd…         |d         dd…         z   |d         _        |d         |d<   dS )a   unified_wstring_literal : WSTRING_LITERAL
                                    | U8STRING_LITERAL
                                    | U16STRING_LITERAL
                                    | U32STRING_LITERAL
                                    | unified_wstring_literal WSTRING_LITERAL
                                    | unified_wstring_literal U8STRING_LITERAL
                                    | unified_wstring_literal U16STRING_LITERAL
                                    | unified_wstring_literal U32STRING_LITERAL
        r–   r€  r   r€   NrR   )rN   r   ro  rå   r�  ÚrstriprÌ   s     r?   Úp_unified_wstring_literalz!CParser.p_unified_wstring_literals  s‘   € õ ˆq‰6Œ6�QŠ;ˆ;Ý”>Ø˜!˜Aœ$ × 1Ò 1°!°QÑ 7Ô 7ñ9ô 9ˆAˆa‰DˆDˆDð ˜1œœ×*Ò*Ñ,Ô,¨S¨b¨SÔ1°A°a´D¸¸¸´HÑ<ˆAˆaŒDŒJØ�Q”4ˆAˆa‰DˆDˆDrA   c                 ón   — |d         |d<   |                      d|                     d¦  «        ¦  «         dS )z  brace_open  :   LBRACE
        r   r€   N©Ú
set_linenoÚlinenorÌ   s     r?   Úp_brace_openzCParser.p_brace_open„  ó5   € ð �Œtˆˆ!‰Ø	�Š�Q˜Ÿš ™œÑ$Ô$Ð$Ð$Ð$rA   c                 ón   — |d         |d<   |                      d|                     d¦  «        ¦  «         dS )z  brace_close :   RBRACE
        r   r€   Nr‡  rÌ   s     r?   Úp_brace_closezCParser.p_brace_closeŠ  r‹  rA   c                 ó   — d|d<   dS )zempty : Nr€   r{   rÌ   s     r?   Úp_emptyzCParser.p_empty�  s   € àˆˆ!‰ˆˆrA   c           	      óî   — |rR|                       d|j        z  |                      |j        | j                             |¦  «        ¬¦  «        ¦  «         d S |                       d| j        j        ¦  «         d S )Nz
before: %s)r‰  re   zAt end of input)rU   r�  rb   r‰  r.   Úfind_tok_columnrD   rÌ   s     r?   Úp_errorzCParser.p_error”  s‘   € ð ð 	EØ×ÒØ˜qœwÑ&Ø—’ 1¤8Ø#'¤9×#<Ò#<¸QÑ#?Ô#?ð ñ Aô AñBô Bð Bð Bð Bð
 ×ÒÐ/°´Ô1CÑDÔDÐDÐDÐDrA   N)r   F)F)°Ú__name__Ú
__module__Ú__qualname__r   r@   rF   rL   rP   rY   r[   r`   r*   r+   r,   r-   rl   rv   r‡   r’   r«   r²   r¶   Ú
precedencerÎ   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.  r2  r4  r6  r:  r=  r?  rA  rC  rE  rH  rJ  rL  rQ  rT  rV  rX  rZ  ra  rc  re  rg  rj  rl  ro  rq  rs  rw  rz  r~  r€  r   r†  r‰  r‹  r�  r•  rŸ  r£  r¬  r±  r³  rµ  r¹  r¼  rÀ  rÂ  rÄ  rÇ  rË  rÍ  rÏ  rÑ  rÓ  rÖ  rØ  rÚ  rÜ  rß  rá  rã  rå  rç  ré  rë  rí  rï  rò  rö  rù  rý  r   r  r  r	  r  r  r  r  r  r  r!  r$  r&  r(  r+  r-  r/  r2  r5  r7  r:  r<  r@  rB  rD  rF  rI  rL  rP  rR  rU  rW  rY  r[  r]  r_  rb  rd  rf  rt  r{  r~  r‚  r…  rŠ  r�  r�  r’  r{   rA   r?   r   r      s¿  € € € € € ð ØØ%ØØ'ØØðm(ð m(ð m(ð m(ð^ð ð ð ð0)ð )ð )ð ð  ð  ð+ð +ð +ð,ð ,ð ,ðð ð ð:ð :ð :ðð ð ðð ð ðð ð ð$ð $ð $ðR!ð !ð !ðd*ð *ð *ðXð ð ð ð2Wð Wð Wð Wðrð ð ð"ð ð ð€Jð('ð 'ð 'ðð ð ðð ð ðð ð ð
ð ð ð
ð ð ðð ð ð
ð ð ð
Mð Mð Mð3ð 3ð 3ð
=ð 
=ð 
=ð8ð 8ð 8ðð ð ð$	ð 	ð 	ð
ð 
ð 
ðn	ð 	ð 	ð(,ð ,ð ,ðzð ð ð4ð 4ð 4ðCð Cð Cð
Fð Fð Fð
Gð Gð GðCð Cð Cð
Hð Hð Hð
Pð Pð Pð
Sð Sð Sð
Tð Tð Tð
Pð Pð Pð
Cð Cð Cð
Pð Pð Pð
Uð Uð Uð
ð ð ðð ð ðKð Kð Kð ð ð ðð ð ðð ð ð8ð 8ð 8ðDð Dð Dð8ð 8ð 8ðDð Dð DðPð Pð Pð
Pð Pð Pð
Cð Cð Cð
Sð Sð Sð
Qð Qð Qð
Hð Hð Hð	+ð 	+ð 	+ð/ð /ð /ð$/ð /ð /ð&ð ð ð'ð 'ð 'ð$ð $ð $ðLð ð ð
ð ð ð
8ð 8ð 8ð/ð /ð /ð
Uð Uð Uð?ð ?ð ?ð?ð ?ð ?ð
?ð ?ð ?ðð ð ð<ð <ð <ðð ð ð ð ð ð €]�<Ð!5Ð7SÑTÔTðð ñ UÔTðð
 €]�<Ð!5Ð7SÑTÔTð2ð 2ñ UÔTð2ð
 €]�<Ð!5Ð7SÑTÔTð+ð +ñ UÔTð+ð €]�<Ð!5Ñ6Ô6ðð ñ 7Ô6ðð
 €]�<Ð!5Ð7SÑTÔTð?ð ?ñ UÔTð?ð €]�<Ð!5Ð7SÑTÔTð?ð ?ñ UÔTð?ð* €]�<Ð!5Ð7SÑTÔTð	?ð 	?ñ UÔTð	?ð €]�<Ð!5Ð7SÑTÔTð@ð @ñ UÔTð@ð8ð ð ð<8ð 8ð 8ðð ð ðð ð ð(
(ð 
(ð 
(ðð ð ð@ð ð ðð ð ð
ð ð ð
ð 
ð 
ðð ð ð8ð 8ð 8ðð ð ð
@ð 
@ð 
@ðð ð ð2ð 2ð 2ð
ð ð ðð ð ð	?ð 	?ð 	?ð+ð +ð +ð	?ð 	?ð 	?ð+ð +ð +ð@ð @ð @ð+ð +ð +ð:ð :ð :ðHð Hð Hð+ð +ð +ð@ð @ð @ðAð Að Að>ð >ð >ðCð Cð CðCð Cð CðCð Cð Cð
@ð @ð @ðBð Bð BðJð Jð JðDð Dð Dð
9ð 9ð 9ð4ð 4ð 4ð7ð 7ð 7ðTð Tð Tðð ð ðð ð ðð ð ðKð Kð KðBð Bð Bðð ð ðð ð ðAð Að Að@ð @ð @ð4ð ð ð?ð ?ð ?ðð ð ð5ð 5ð 5ð%ð %ð %ðð ð ðð ð ð6ð 6ð 6ðOð Oð Oð>ð >ð >ð;ð ;ð ;ð1ð 1ð 1ðð ð ðð ð ðð ð ðð ð ð%ð %ð %ðWð Wð Wðð ð ð7ð 7ð 7ð;ð ;ð ;ð..ð .ð .ð"3ð 3ð 3ð	ð 	ð 	ðð ð ð"%ð %ð %ð%ð %ð %ðð ð ð
Eð 
Eð 
Eð 
Eð 
ErA   r   N)Úplyr   r   r   Úc_lexerr   Ú	plyparserr   r   r   r	   Úast_transformsr
   r   r   r{   rA   r?   ú<module>r›     sÍ   ðð Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cð 
ðLEð LEð LEð LEð LEˆiñ LEô LEñ 
„ðLEð LEð LErA   