ó
    jñ:iÆ& ã                   óp   • S SK Jr  S SKJr  S SKJr  S SKJrJrJ	r	J
r
  S SKJrJr  \
 " S S\5      5       rg)	é   )Úyacc)Úc_ast)ÚCLexer)Ú	PLYParserÚ
ParseErrorÚparameterizedÚtemplate)Úfix_switch_casesÚfix_atomic_specifiersc                   ó  • \ rS rSrS\SSSSS4S jrS»S jrS	 rS
 rS r	S r
S rS rS rS rS rS rS rS rS¼S jrS¼S jrS rS rSrS rS rS rS rS rS rS  rS! rS" r S# r!S$ r"S% r#S& r$S' r%S( r&S) r'S* r(S+ r)S, r*S- r+S. r,S/ r-S0 r.S1 r/S2 r0S3 r1S4 r2S5 r3S6 r4S7 r5S8 r6S9 r7S: r8S; r9S< r:S= r;S> r<S? r=S@ r>SA r?SB r@SC rASD rBSE rCSF rDSG rESH rFSI rGSJ rHSK rISL rJSM rKSN rLSO rMSP rNSQ rOSR rPSS rQST rRSU rSSV rTSW rUSX rVSY rWSZ rX\Y" S[S\S]5      S^ 5       rZ\Y" S[S\S]5      S_ 5       r[\Y" S[S\S]5      S` 5       r\\Y" S[S\5      Sa 5       r]\Y" S[S\S]5      Sb 5       r^\Y" S[S\S]5      Sc 5       r_\Y" S[S\S]5      Sd 5       r`\Y" S[S\S]5      Se 5       raSf rbSg rcSh rdSi reSj rfSk rgSl rhSm riSn rjSo rkSp rlSq rmSr rnSs roSt rpSu rqSv rrSw rsSx rtSy ruSz rvS{ rwS| rxS} ryS~ rzS r{S€ r|S� r}S‚ r~Sƒ rS„ r€S… r�S† r‚S‡ rƒSˆ r„S‰ r…SŠ r†S‹ r‡SŒ rˆS� r‰SŽ rŠS� r‹S� rŒS‘ r�S’ rŽS“ r�S” r�S• r‘S– r’S— r“S˜ r”S™ r•Sš r–S› r—Sœ r˜S� r™Sž ršSŸ r›S  rœS¡ r�S¢ ržS£ rŸS¤ r S¥ r¡S¦ r¢S§ r£S¨ r¤S© r¥Sª r¦S« r§S¬ r¨S­ r©S® rªS¯ r«S° r¬S± r­S² r®S³ r¯S´ r°Sµ r±S¶ r²S· r³S¸ r´S¹rµgº)½ÚCParseré   Tzpycparser.lextabzpycparser.yacctabFÚ c           	      ó‚  • U" U R                   U R                  U R                  U R                  S9U l        U R                  R                  UUUS9  U R                  R                  U l        / SQnU H  n	U R                  U	5        M     [        R                  " U SUUUUS9U l	        [        5       /U l        SU l        g)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
             ÚU/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/pycparser/c_parser.pyÚ__init__ÚCParser.__init__   sÅ   € ñt Ø×+Ñ+Ø×3Ñ3Ø×3Ñ3Ø!×7Ñ7ñ	9ˆŒ	ð 	�	‰	�‰Ø!ØØ"ð 	ñ 	$ð —i‘i×&Ñ&ˆŒò
ˆó" #ˆDØ×!Ñ! $Ö'ñ #ô —y’yØØ-ØØ"ØØ"ñ$ˆŒô  "›V˜HˆÔð $(ˆÕ ó    c                 óÎ   • X R                   l        U R                   R                  5         [        5       /U l        SU l        U R                  R                  UU R                   US9$ )zÃ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)Úinputr9   r)   )r/   ÚfilenameÚreset_linenor4   r5   r6   r3   Úparse)r7   ÚtextrF   r)   s       r@   rH   ÚCParser.parse‚   s[   € ð &�	‰	ÔØ�	‰	×ÑÔ Ü!›V˜HˆÔØ#'ˆÔ Ø�|‰|×!Ñ!ØØ—i‘iØð "ð ð 	rC   c                 óJ   • U R                   R                  [        5       5        g ©N)r5   Úappendr4   ©r7   s    r@   Ú_push_scopeÚCParser._push_scopeš   s   € Ø×Ñ× Ñ ¤£Õ(rC   c                 ón   • [        U R                  5      S:”  d   eU R                  R                  5         g )Nr   )Úlenr5   ÚpoprN   s    r@   Ú
_pop_scopeÚCParser._pop_scope�   s-   € Ü�4×$Ñ$Ó%¨Ó)Ð)Ð)Ø×Ñ×ÑÕrC   c                 óš   • U R                   S   R                  US5      (       d  U R                  SU-  U5        SU R                   S   U'   g)zBAdd a new typedef name (ie a TYPEID) to the current scope
        éÿÿÿÿTz;Typedef %r previously declared as non-typedef in this scopeN©r5   ÚgetÚ_parse_error©r7   ÚnameÚcoords      r@   Ú_add_typedef_nameÚCParser._add_typedef_name¡   sW   € ð × Ñ  Ñ$×(Ñ(¨¨t×4Ñ4Ø×Ñð Ø"&ñ'Ø(-ô/ð '+ˆ×Ñ˜"Ñ˜dÒ#rC   c                 óš   • U R                   S   R                  US5      (       a  U R                  SU-  U5        SU R                   S   U'   g)zPAdd a new object, function, or enum member name (ie an ID) to the
current scope
rW   Fz;Non-typedef %r previously declared as typedef in this scopeNrX   r[   s      r@   Ú_add_identifierÚCParser._add_identifierª   sW   € ð ×Ñ˜RÑ ×$Ñ$ T¨5×1Ñ1Ø×Ñð Ø"&ñ'Ø(-ô/ð ',ˆ×Ñ˜"Ñ˜dÒ#rC   c                 ól   • [        U R                  5       H  nUR                  U5      nUc  M  Us  $    g)z7Is *name* a typedef-name in the current scope?
        F)Úreversedr5   rY   )r7   r\   ÚscopeÚin_scopes       r@   Ú_is_type_in_scopeÚCParser._is_type_in_scope´   s7   € ô ˜d×/Ñ/Ö0ˆEð —y‘y “ˆHØÓ#¨H¢_ñ	 1ð
 rC   c                 óD   • U R                  XR                  X#5      5        g rL   )rZ   Ú_coord)r7   ÚmsgÚlineÚcolumns       r@   r+   ÚCParser._lex_error_func¾   s   € Ø×Ñ˜#Ÿ{™{¨4Ó8Õ9rC   c                 ó$   • U R                  5         g rL   )rO   rN   s    r@   r,   ÚCParser._lex_on_lbrace_funcÁ   s   € Ø×ÑÕrC   c                 ó$   • U R                  5         g rL   )rT   rN   s    r@   r-   ÚCParser._lex_on_rbrace_funcÄ   s   € Ø�‰ÕrC   c                 ó(   • U R                  U5      nU$ )zzLooks up types that were previously defined with
typedef.
Passed to the lexer for recognizing identifiers that
are types.
)rg   )r7   r\   Úis_types      r@   r.   ÚCParser._lex_type_lookup_funcÇ   s   € ð ×(Ñ(¨Ó.ˆØˆrC   c                 ó.   • U R                   R                  $ )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_tokenrN   s    r@   Ú_get_yacc_lookahead_tokenÚ!CParser._get_yacc_lookahead_tokenÐ   s   € ð
 �y‰y×#Ñ#Ð#rC   c                 ó®  • UnUnUR                   (       a  UR                   nUR                   (       a  M  [        U[        R                  5      (       a  Xl         U$ Un[        UR                   [        R                  5      (       d7  UR                   n[        UR                   [        R                  5      (       d  M7  UR                   Ul         X5l         U$ )zTacks a type modifier on a declarator, and returns
the modified declarator.

Note: the declarator and modifier may be modified
)ÚtypeÚ
isinstancer   ÚTypeDecl)r7   ÚdeclÚmodifierÚmodifier_headÚmodifier_tailÚ	decl_tails         r@   Ú_type_modify_declÚCParser._type_modify_declù   s¤   € ð !ˆØ ˆð × × Ø)×.Ñ.ˆMð × × Ñ ô �dœEŸN™N×+Ñ+Ø!%ÔØˆOð
 ˆIä  §¡´·±×@Ñ@Ø%ŸN™N�	ô ! §¡´·±×@Ó@ð "+§¡ˆMÔØ*ŒNØˆKrC   c                 ó4  • Un[        U[        R                  5      (       d-  UR                  n[        U[        R                  5      (       d  M-  UR                  Ul        UR                  SS Ul        U HY  n[        U[        R                  5      (       a  M$  [        U5      S:”  a  U R                  SUR                  5        MQ  XCl        Us  $    U(       dl  [        UR                  [        R                  5      (       d  U R                  SUR                  5        [        R                  " S/UR                  S9Ul        U$ [        R                  " U VVs/ s H  oUR                    H  ofPM     M     snnUS   R                  S9Ul        U$ s  snnf )z,Fixes a declaration. Modifies decl.
        Nr   z Invalid multiple types specifiedzMissing type in declarationÚint©r]   é    )r|   r   r}   r{   Údeclnamer\   ÚqualsÚIdentifierTyperR   rZ   r]   ÚFuncDeclÚnames)r7   r~   Útypenamer{   ÚtnÚidr\   s          r@   Ú_fix_decl_name_typeÚCParser._fix_decl_name_type+  sC  € ð
 ˆÜ˜T¤5§>¡>×2Ñ2Ø—9‘9ˆDô ˜T¤5§>¡>×2Ó2ð —M‘MˆŒ	Ø—Z‘Z¡�]ˆŒ
ó ˆBÜ˜b¤%×"6Ñ"6×7Ó7Ü�x“= 1Ó$Ø×%Ñ%Ø:¸B¿H¹HöFð !#”IØ’Kñ ö ô ˜dŸi™i¬¯©×8Ñ8Ø×!Ñ!Ø5°t·z±zôCä×,Ò,Ø�GØŸ*™*ñ&ˆDŒIð ˆô ×,Ò,Ù (Ô>¢˜"·XµX¨T’±X‘¡Ò>Ø˜q‘k×'Ñ'ñ)ˆDŒIð ˆùó ?s   ÅF
c                 ó’   • U=(       d    [        / / / / / S9nU(       a  XS   R                  U5        U$ XS   R                  SU5        U$ )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Ústorager{   ÚfunctionÚ	alignmentrˆ   )r4   rM   Úinsert)r7   ÚdeclspecÚnewspecÚkindrM   Úspecs         r@   Ú_add_declaration_specifierÚ"CParser._add_declaration_specifierW  sO   € ð  ×Xœ4 R°¸"ÀrÐUWÑXˆæØ‰J×Ñ˜gÔ&ð ˆð ‰J×Ñ˜a Ô)àˆrC   c                 óÒ  • SUS   ;   n/ nUS   R                  S5      b  GOÁUS   S   cä  [        US   5      S:  dH  [        US   S	   R                  5      S
:w  d)  U R                  US   S	   R                  S   5      (       d?  SnUS    H"  n[	        US5      (       d  M  UR
                  n  O   U R                  SU5        [        R                  " US   S	   R                  S   SSUS   US   S	   R
                  S9US   S'   US   S		 OÔ[        US   S   [        R                  [        R                  [        R                  [        R                  45      (       d�  US   S   n[        U[        R                  5      (       d-  UR                  n[        U[        R                  5      (       d  M-  UR                  c   US   S	   R                  S   Ul        US   S		 U GH}  n	U	S   c   eU(       a/  [        R                   " SUS   US   U	S   U	S   R
                  S9n
OV[        R"                  " SUS   US   US   US   U	S   U	R                  S5      U	R                  S5      U	S   R
                  S9	n
[        U
R                  [        R                  [        R                  [        R                  [        R                  45      (       a  U
nOU R%                  X¡S   5      nU(       aT  U(       a'  U R'                  UR(                  UR
                  5        O&U R+                  UR(                  UR
                  5        [-        U5      nUR/                  U5        GM€     U$ )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ˆ   ÚbitsizeNr~   r{   é   rW   r   Ú?r]   zInvalid declarationr—   ©r‰   r{   rŠ   Úalignr]   r”   )r\   rŠ   r•   r{   r]   r–   Úinit©	r\   rŠ   r¥   r•   Úfuncspecr{   r¦   r¡   r]   )rY   rR   r�   rg   Úhasattrr]   rZ   r   r}   r|   ÚEnumÚStructÚUnionr‹   r{   r‰   ÚTypedefÚDeclr‘   r^   r\   ra   r   rM   )r7   rœ   ÚdeclsÚtypedef_namespaceÚ
is_typedefÚdeclarationsr]   ÚtÚdecls_0_tailr~   ÚdeclarationÚ
fixed_decls               r@   Ú_build_declarationsÚCParser._build_declarationsp  s:  € ð  $ y¡/Ñ1ˆ
Øˆð �‰8�<‰<˜	Ó"Ñ.Ùð �1‰X�fÑÑ%Ü�4˜‘<Ó  1Ó$¬¨D°©L¸Ñ,<×,BÑ,BÓ(CÀqÓ(HØ×.Ñ.¨t°F©|¸BÑ/?×/EÑ/EÀaÑ/H×IÑIØ�Ø˜fœ�AÜ˜q '×*Ó*Ø !§¡˜Ùñ &ð ×!Ñ!Ð"7¸Ô?ô  %Ÿ~š~Ø˜f™ bÑ)×/Ñ/°Ñ2ØØØ˜;Ñ'Ø˜6‘l 2Ñ&×,Ñ,ñ .ˆE�!‰H�VÑð �V‘˜RÑ ô ˜E !™H VÑ,Ü—
‘
œEŸL™L¬%¯+©+´u×7KÑ7Kð/M÷ Nñ Nà  ™8 FÑ+ˆLÜ  ¬u¯~©~×>Ñ>Ø+×0Ñ0�ô ! ¬u¯~©~×>Ó>à×$Ñ$Ñ,Ø(,¨V©°RÑ(8×(>Ñ(>¸qÑ(A�Ô%Ø˜‘L Ð$äˆDØ˜‘<Ñ+Ð+Ð+ÞÜ#ŸmšmØØ˜v™,Ø  ™OØ˜f™Ø˜v™,×,Ñ,ñ.‘ô $ŸjšjØØ˜v™,Ø˜{Ñ+Ø  ™OØ! *Ñ-Ø˜f™ØŸ™ &Ó)Ø ŸH™H YÓ/Ø˜v™,×,Ñ,ñ	.�ô ˜+×*Ñ*Ü—J‘J¤§¡¬e¯k©kÜ×(Ñ(ð-*÷ +ñ +ð )‘
à!×5Ñ5°kÈÁ<ÓP�
ö !ÞØ×*Ñ*¨:¯?©?¸J×<LÑ<LÕMà×(Ñ(¨¯©¸*×:JÑ:JÔKä.¨zÓ:ˆJØ×Ñ 
×+ñK ðN ÐrC   c                 óÈ   • SUS   ;   a  U R                  SUR                  5        U R                  U[        USS9/SS9S   n[        R
                  " UUUUR                  S	9$ )
z&Builds a function definition.
        r    r•   zInvalid typedefN©r~   r¦   T©rœ   r¯   r°   rˆ   )r~   Úparam_declsÚbodyr]   )rZ   r]   r·   r4   r   ÚFuncDef)r7   rœ   r~   r¼   r½   rµ   s         r@   Ú_build_function_definitionÚ"CParser._build_function_definitionÉ  sz   € ð ˜˜Y™Ó'Ø×ÑÐ/°·±Ô<à×.Ñ.ØÜ˜T¨Ñ-Ð.Ø"ð /ð $ð %&ñ'ˆô
 �}Š}ØØ#ØØ—*‘*ñ	ð 	rC   c                 óN   • US:X  a  [         R                  $ [         R                  $ )zKGiven a token (either STRUCT or UNION), selects the
appropriate AST class.
Ústruct)r   r«   r¬   )r7   Útokens     r@   Ú_select_struct_union_classÚ"CParser._select_struct_union_classÚ  s    € ð �HÓÜ—<‘<Ðä—;‘;ÐrC   )
)Ú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                 ó|   • US   c  [         R                  " / 5      US'   g[         R                  " US   5      US'   g)z7translation_unit_or_empty   : translation_unit
| empty
r   Nrˆ   )r   ÚFileAST©r7   Úps     r@   Úp_translation_unit_or_emptyÚ#CParser.p_translation_unit_or_emptyü  s5   € ð ˆQ‰4‰<Ü—=’= Ó$ˆAˆaŠDä—=’=  1¡Ó&ˆAˆaŠDrC   c                 ó   • US   US'   g)z3translation_unit    : external_declaration
        r   rˆ   N© rÛ   s     r@   Úp_translation_unit_1ÚCParser.p_translation_unit_1  ó   € ð �‰tˆˆ!ŠrC   c                 óB   • US   R                  US   5        US   US'   g)zDtranslation_unit    : translation_unit external_declaration
        r   r¢   rˆ   N)ÚextendrÛ   s     r@   Úp_translation_unit_2ÚCParser.p_translation_unit_2  s%   € ð 	
ˆ!‰�‰�A�a‘DÔØ�‰tˆˆ!ŠrC   c                 ó   • US   /US'   g)z6external_declaration    : function_definition
        r   rˆ   Nrà   rÛ   s     r@   Úp_external_declaration_1Ú CParser.p_external_declaration_1  ó   € ð �!‘ˆvˆˆ!ŠrC   c                 ó   • US   US'   g)z.external_declaration    : declaration
        r   rˆ   Nrà   rÛ   s     r@   Úp_external_declaration_2Ú CParser.p_external_declaration_2  ó   € ð �‰tˆˆ!ŠrC   c                 ó   • US   /US'   g)z<external_declaration    : pp_directive
| pppragma_directive
r   rˆ   Nrà   rÛ   s     r@   Úp_external_declaration_3Ú CParser.p_external_declaration_3  s   € ð �!‘ˆvˆˆ!ŠrC   c                 ó   • / US'   g)z'external_declaration    : SEMI
        rˆ   Nrà   rÛ   s     r@   Úp_external_declaration_4Ú CParser.p_external_declaration_4%  s   € ð ˆˆ!ŠrC   c                 ó   • US   US'   g)z0external_declaration    : static_assert
        r   rˆ   Nrà   rÛ   s     r@   Úp_external_declaration_5Ú CParser.p_external_declaration_5*  rï   rC   c                 óæ   • [        U5      S:X  a0  [        R                  " US   SU R                  US5      5      /US'   g[        R                  " US   US   U R                  US5      5      /US'   g)z›static_assert           : _STATIC_ASSERT LPAREN constant_expression COMMA unified_string_literal RPAREN
| _STATIC_ASSERT LPAREN constant_expression RPAREN
é   é   Nr   rˆ   )rR   r   ÚStaticAssertÚ_token_coordrÛ   s     r@   Úp_static_assert_declarationÚ#CParser.p_static_assert_declaration/  sk   € ô ˆq‹6�Q‹;Ü×&Ò& q¨¡t¨T°4×3DÑ3DÀQÈÓ3JÓKÐLˆAˆaŠDä×&Ò& q¨¡t¨Q¨q©T°4×3DÑ3DÀQÈÓ3JÓKÐLˆAˆaŠDrC   c                 óH   • U R                  SU R                  US5      5        g)zpp_directive  : PPHASH
        zDirectives not supported yetr   N)rZ   rý   rÛ   s     r@   Úp_pp_directiveÚCParser.p_pp_directive8  s%   € ð 	×ÑÐ8Ø×+Ñ+¨A¨qÓ1õ	3rC   c                 óL  • [        U5      S:X  a.  [        R                  " US   U R                  US5      5      US'   g[        U5      S:X  a.  [        R                  " US   U R                  US5      5      US'   g[        R                  " SU R                  US5      5      US'   g)zipppragma_directive      : PPPRAGMA
| PPPRAGMA PPPRAGMASTR
| _PRAGMA LPAREN unified_string_literal RPAREN
rú   rû   r¢   rˆ   r   r   N)rR   r   ÚPragmarý   rÛ   s     r@   Úp_pppragma_directiveÚCParser.p_pppragma_directiveC  s…   € ô
 ˆq‹6�Q‹;Ü—<’<  !¡ d×&7Ñ&7¸¸1Ó&=Ó>ˆAˆaŠDÜ�‹V�q‹[Ü—<’<  !¡ d×&7Ñ&7¸¸1Ó&=Ó>ˆAˆaŠDä—<’<  D×$5Ñ$5°a¸Ó$;Ó<ˆAˆaŠDrC   c                 óL   • [        U5      S:X  a  US   /OUS   US   /-   US'   g)zZpppragma_directive_list : pppragma_directive
| pppragma_directive_list pppragma_directive
r¢   r   rˆ   N©rR   rÛ   s     r@   Úp_pppragma_directive_listÚ!CParser.p_pppragma_directive_listO  ó-   € ô ˜Q› 1›��!‘‰v¨!¨A©$°!°A±$°©-ˆˆ!ŠrC   c                 ó¤   • [        / / / [        R                  " S/U R                  US5      S9// S9nU R	                  UUS   US   US   S9US'   g	)
zTfunction_definition : id_declarator declaration_list_opt compound_statement
        r†   r   r‡   ©r”   r—   r•   r{   r–   r¢   rû   ©rœ   r~   r¼   r½   rˆ   N)r4   r   r‹   rý   r¿   ©r7   rÜ   rœ   s      r@   Úp_function_definition_1ÚCParser.p_function_definition_1W  sv   € ô ØØØÜ×&Ò&¨ wØ-1×->Ñ->¸qÀ!Ó-DñFð Gàñˆð ×.Ñ.ØØ�1‘Ø˜!™Ø�1‘ð	 /ð ˆˆ!ŠrC   c                 óJ   • US   nU R                  UUS   US   US   S9US'   g)zkfunction_definition : declaration_specifiers id_declarator declaration_list_opt compound_statement
        r   r¢   rû   é   r  rˆ   N)r¿   r  s      r@   Úp_function_definition_2ÚCParser.p_function_definition_2i  s>   € ð �‰tˆà×.Ñ.ØØ�1‘Ø˜!™Ø�1‘ð	 /ð ˆˆ!ŠrC   c                 ó   • US   US'   g)z®statement   : labeled_statement
| expression_statement
| compound_statement
| selection_statement
| iteration_statement
| jump_statement
| pppragma_directive
| static_assert
r   rˆ   Nrà   rÛ   s     r@   Úp_statementÚCParser.p_statementx  s   € ð �‰tˆˆ!ŠrC   c                 ó˜   • [        U5      S:X  a3  [        R                  " US   US   /-   U R                  US5      S9US'   gUS   US'   g)zLpragmacomp_or_statement     : pppragma_directive_list statement
| statement
rû   r   r¢   ©Úblock_itemsr]   rˆ   N)rR   r   ÚCompoundrý   rÛ   s     r@   Úp_pragmacomp_or_statementÚ!CParser.p_pragmacomp_or_statement¯  sQ   € ô ˆq‹6�Q‹;Ü—>’>Ø˜a™D ! A¡$ ™KØ×'Ñ'¨¨1Ó-ñ/ˆAˆaŠDð �Q‘4ˆAˆaŠDrC   c                 ó¢  • US   nUS   c¬  US   n[         R                  [         R                  [         R                  4n[	        U5      S:X  aN  [        US   U5      (       a:  [         R                  " SUS   US   US   US	   US   SSUS   R                  S
9	/nO/U R                  U[        SSS9/SS9nOU R                  UUS   SS9nXQS'   g)zydecl_body : declaration_specifiers init_declarator_list_opt
| declaration_specifiers_no_type id_init_declarator_list_opt
r   r¢   Nr{   rˆ   r”   r—   r•   r–   r§   rº   Tr»   )
r   r«   r¬   rª   rR   r|   r®   r]   r·   r4   )r7   rÜ   rœ   ÚtyÚs_u_or_er¯   s         r@   Úp_decl_bodyÚCParser.p_decl_bodyÃ  sù   € ð �‰tˆð ˆQ‰4‰<ð
 �f‘ˆBÜŸ™¤e§k¡k´5·:±:Ð>ˆHÜ�2‹w˜!‹|¤
¨2¨a©5°(× ;Ñ ;ÜŸšØØ˜v™,Ø˜{Ñ+Ø  ™OØ! *Ñ-Ø˜A™ØØ Ø˜Q™%Ÿ+™+ñ	'ð 	(‘ð" ×0Ñ0ØÜ T°Ñ5Ð6Ø&*ð 1ð ,‘ð ×,Ñ,ØØ˜‘dØ"&ð -ð (ˆEð
 ˆ!ŠrC   c                 ó   • US   US'   g)z%declaration : decl_body SEMI
        r   rˆ   Nrà   rÛ   s     r@   Úp_declarationÚCParser.p_declaration   rï   rC   c                 óH   • [        U5      S:X  a  US   O
US   US   -   US'   g)zAdeclaration_list    : declaration
| declaration_list declaration
r¢   r   rˆ   Nr  rÛ   s     r@   Úp_declaration_listÚCParser.p_declaration_list	  s)   € ô ˜1“v “{ˆq�Št¨¨!©¨q°©t©ˆˆ!ŠrC   c                 ó<   • U R                  US   US   S5      US'   g)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_1Ú*CParser.p_declaration_specifiers_no_type_1  ó$   € ð ×.Ñ.¨q°©t°Q°q±T¸6ÓBˆˆ!ŠrC   c                 ó<   • U R                  US   US   S5      US'   g)zedeclaration_specifiers_no_type  : storage_class_specifier declaration_specifiers_no_type_opt
        r¢   r   r•   rˆ   Nr+  rÛ   s     r@   Ú"p_declaration_specifiers_no_type_2Ú*CParser.p_declaration_specifiers_no_type_2  s$   € ð ×.Ñ.¨q°©t°Q°q±T¸9ÓEˆˆ!ŠrC   c                 ó<   • U R                  US   US   S5      US'   g)z`declaration_specifiers_no_type  : function_specifier declaration_specifiers_no_type_opt
        r¢   r   r–   rˆ   Nr+  rÛ   s     r@   Ú"p_declaration_specifiers_no_type_3Ú*CParser.p_declaration_specifiers_no_type_3  s$   € ð ×.Ñ.¨q°©t°Q°q±T¸:ÓFˆˆ!ŠrC   c                 ó<   • U R                  US   US   S5      US'   g)z^declaration_specifiers_no_type  : atomic_specifier declaration_specifiers_no_type_opt
        r¢   r   r{   rˆ   Nr+  rÛ   s     r@   Ú"p_declaration_specifiers_no_type_4Ú*CParser.p_declaration_specifiers_no_type_4%  r.  rC   c                 ó<   • U R                  US   US   S5      US'   g)zadeclaration_specifiers_no_type  : alignment_specifier declaration_specifiers_no_type_opt
        r¢   r   r—   rˆ   Nr+  rÛ   s     r@   Ú"p_declaration_specifiers_no_type_5Ú*CParser.p_declaration_specifiers_no_type_5*  ó$   € ð ×.Ñ.¨q°©t°Q°q±T¸;ÓGˆˆ!ŠrC   c                 ó:   • U R                  US   US   SSS9US'   g)zHdeclaration_specifiers  : declaration_specifiers type_qualifier
        r   r¢   r”   T©rM   rˆ   Nr+  rÛ   s     r@   Úp_declaration_specifiers_1Ú"CParser.p_declaration_specifiers_1/  ó)   € ð ×.Ñ.¨q°©t°Q°q±T¸6È$Ð.ÐOˆˆ!ŠrC   c                 ó:   • U R                  US   US   SSS9US'   g)zQdeclaration_specifiers  : declaration_specifiers storage_class_specifier
        r   r¢   r•   Tr=  rˆ   Nr+  rÛ   s     r@   Úp_declaration_specifiers_2Ú"CParser.p_declaration_specifiers_24  s)   € ð ×.Ñ.¨q°©t°Q°q±T¸9ÈTÐ.ÐRˆˆ!ŠrC   c                 ó:   • U R                  US   US   SSS9US'   g)zLdeclaration_specifiers  : declaration_specifiers function_specifier
        r   r¢   r–   Tr=  rˆ   Nr+  rÛ   s     r@   Úp_declaration_specifiers_3Ú"CParser.p_declaration_specifiers_39  s)   € ð ×.Ñ.¨q°©t°Q°q±T¸:ÈdÐ.ÐSˆˆ!ŠrC   c                 ó:   • U R                  US   US   SSS9US'   g)zRdeclaration_specifiers  : declaration_specifiers type_specifier_no_typeid
        r   r¢   r{   Tr=  rˆ   Nr+  rÛ   s     r@   Úp_declaration_specifiers_4Ú"CParser.p_declaration_specifiers_4>  r@  rC   c                 ó6   • U R                  SUS   S5      US'   g)z1declaration_specifiers  : type_specifier
        Nr   r{   rˆ   r+  rÛ   s     r@   Úp_declaration_specifiers_5Ú"CParser.p_declaration_specifiers_5C  ó    € ð ×.Ñ.¨t°Q°q±T¸6ÓBˆˆ!ŠrC   c                 ó:   • U R                  US   US   SSS9US'   g)zPdeclaration_specifiers  : declaration_specifiers_no_type type_specifier
        r   r¢   r{   Tr=  rˆ   Nr+  rÛ   s     r@   Úp_declaration_specifiers_6Ú"CParser.p_declaration_specifiers_6H  r@  rC   c                 ó:   • U R                  US   US   SSS9US'   g)zMdeclaration_specifiers  : declaration_specifiers alignment_specifier
        r   r¢   r—   Tr=  rˆ   Nr+  rÛ   s     r@   Úp_declaration_specifiers_7Ú"CParser.p_declaration_specifiers_7M  s)   € ð ×.Ñ.¨q°©t°Q°q±T¸;ÈtÐ.ÐTˆˆ!ŠrC   c                 ó   • US   US'   g)zVstorage_class_specifier : AUTO
| REGISTER
| STATIC
| EXTERN
| TYPEDEF
| _THREAD_LOCAL
r   rˆ   Nrà   rÛ   s     r@   Úp_storage_class_specifierÚ!CParser.p_storage_class_specifierR  ó   € ð �‰tˆˆ!ŠrC   c                 ó   • US   US'   g)z)function_specifier  : INLINE
| _NORETURN
r   rˆ   Nrà   rÛ   s     r@   Úp_function_specifierÚCParser.p_function_specifier\  rã   rC   c                 ó\   • [         R                  " US   /U R                  US5      S9US'   g)z€type_specifier_no_typeid  : VOID
| _BOOL
| CHAR
| SHORT
| INT
| LONG
| FLOAT
| DOUBLE
| _COMPLEX
| SIGNED
| UNSIGNED
| __INT128
r   r‡   rˆ   N©r   r‹   rý   rÛ   s     r@   Úp_type_specifier_no_typeidÚ"CParser.p_type_specifier_no_typeidb  s-   € ô ×#Ò# Q q¡T F°$×2CÑ2CÀAÀqÓ2IÑJˆˆ!ŠrC   c                 ó   • US   US'   g)zztype_specifier  : typedef_name
| enum_specifier
| struct_or_union_specifier
| type_specifier_no_typeid
| atomic_specifier
r   rˆ   Nrà   rÛ   s     r@   Úp_type_specifierÚCParser.p_type_specifierr  s   € ð �‰tˆˆ!ŠrC   c                 óL   • US   nUR                   R                  S5        X!S'   g)z<atomic_specifier  : _ATOMIC LPAREN type_name RPAREN
        rû   Ú_Atomicrˆ   N)rŠ   rM   )r7   rÜ   Útyps      r@   Úp_atomic_specifierÚCParser.p_atomic_specifier|  s&   € ð �‰dˆØ�	‰	×Ñ˜Ô#Øˆ!ŠrC   c                 ó   • US   US'   g)z8type_qualifier  : CONST
| RESTRICT
| VOLATILE
| _ATOMIC
r   rˆ   Nrà   rÛ   s     r@   Úp_type_qualifierÚCParser.p_type_qualifierƒ  s   € ð �‰tˆˆ!ŠrC   c                 óL   • [        U5      S:X  a  US   US   /-   OUS   /US'   g)zWinit_declarator_list    : init_declarator
| init_declarator_list COMMA init_declarator
r  r   rû   rˆ   Nr  rÛ   s     r@   Úp_init_declarator_listÚCParser.p_init_declarator_list‹  ó-   € ô !$ A£¨!£ˆq�‰t�q˜‘t�fŠ}°!°A±$°ˆˆ!ŠrC   c                 óL   • [        US   [        U5      S:”  a  US   OSS9US'   g)z=init_declarator : declarator
| declarator EQUALS initializer
r   r¢   rû   Nrº   rˆ   ©r4   rR   rÛ   s     r@   Úp_init_declaratorÚCParser.p_init_declarator”  ó(   € ô ˜˜1™¬S°«V°a«Z Q q¢T¸TÑCˆˆ!ŠrC   c                 óL   • [        U5      S:X  a  US   US   /-   OUS   /US'   g)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_listÚ!CParser.p_id_init_declarator_listš  rm  rC   c                 óL   • [        US   [        U5      S:”  a  US   OSS9US'   g)zFid_init_declarator : id_declarator
| id_declarator EQUALS initializer
r   r¢   rû   Nrº   rˆ   ro  rÛ   s     r@   Úp_id_init_declaratorÚCParser.p_id_init_declarator   rr  rC   c                 ó:   • U R                  US   US   SSS9US'   g)zXspecifier_qualifier_list    : specifier_qualifier_list type_specifier_no_typeid
        r   r¢   r{   Tr=  rˆ   Nr+  rÛ   s     r@   Úp_specifier_qualifier_list_1Ú$CParser.p_specifier_qualifier_list_1¨  r@  rC   c                 ó:   • U R                  US   US   SSS9US'   g)zNspecifier_qualifier_list    : specifier_qualifier_list type_qualifier
        r   r¢   r”   Tr=  rˆ   Nr+  rÛ   s     r@   Úp_specifier_qualifier_list_2Ú$CParser.p_specifier_qualifier_list_2­  r@  rC   c                 ó6   • U R                  SUS   S5      US'   g)z3specifier_qualifier_list  : type_specifier
        Nr   r{   rˆ   r+  rÛ   s     r@   Úp_specifier_qualifier_list_3Ú$CParser.p_specifier_qualifier_list_3²  rM  rC   c                 ó2   • [        US   / / US   // S9US'   g)zGspecifier_qualifier_list  : type_qualifier_list type_specifier
        r   r¢   r  rˆ   N©r4   rÛ   s     r@   Úp_specifier_qualifier_list_4Ú$CParser.p_specifier_qualifier_list_4·  s$   € ô ˜˜1™¨°R¸qÀ¹t¸fÈrÑRˆˆ!ŠrC   c                 ó,   • [        / US   // / / S9US'   g)z8specifier_qualifier_list  : alignment_specifier
        r   r  rˆ   Nrƒ  rÛ   s     r@   Úp_specifier_qualifier_list_5Ú$CParser.p_specifier_qualifier_list_5¼  s    € ô ˜¨¨!© v°rÀÈRÑPˆˆ!ŠrC   c                 ó<   • U R                  US   US   S5      US'   g)zQspecifier_qualifier_list  : specifier_qualifier_list alignment_specifier
        r   r¢   r—   rˆ   Nr+  rÛ   s     r@   Úp_specifier_qualifier_list_6Ú$CParser.p_specifier_qualifier_list_6Á  r;  rC   c                 óh   • U R                  US   5      nU" US   SU R                  US5      S9US'   g)zJstruct_or_union_specifier   : struct_or_union ID
| struct_or_union TYPEID
r   r¢   N©r\   r¯   r]   rˆ   )rÄ   rý   ©r7   rÜ   Úklasss      r@   Úp_struct_or_union_specifier_1Ú%CParser.p_struct_or_union_specifier_1É  s@   € ð ×/Ñ/°°!±Ó5ˆáØ�1‘ØØ×#Ñ# A qÓ)ñ+ˆˆ!ŠrC   c                 ó¾   • U R                  US   5      n[        U5      S:X  a  U" S/ U R                  US5      S9US'   gU" SUS   U R                  US5      S9US'   g)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¢   r�  rˆ   rû   ©rÄ   rR   rý   rŽ  s      r@   Úp_struct_or_union_specifier_2Ú%CParser.p_struct_or_union_specifier_2Ô  sq   € ð ×/Ñ/°°!±Ó5ˆÜˆq‹6�Q‹;áØØØ×'Ñ'¨¨1Ó-ñ/ˆAˆaŠDñ
 ØØ˜‘dØ×'Ñ'¨¨1Ó-ñ/ˆAˆaŠDrC   c                 óÊ   • U R                  US   5      n[        U5      S:X  a  U" US   / U R                  US5      S9US'   gU" US   US   U R                  US5      S9US'   g)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¢   r�  rˆ   r  Nr“  rŽ  s      r@   Úp_struct_or_union_specifier_3Ú%CParser.p_struct_or_union_specifier_3æ  sy   € ð ×/Ñ/°°!±Ó5ˆÜˆq‹6�Q‹;áØ�q‘TØØ×'Ñ'¨¨1Ó-ñ/ˆAˆaŠDñ
 Ø�q‘TØ˜‘dØ×'Ñ'¨¨1Ó-ñ/ˆAˆaŠDrC   c                 ó   • US   US'   g)z!struct_or_union : STRUCT
| UNION
r   rˆ   Nrà   rÛ   s     r@   Úp_struct_or_unionÚCParser.p_struct_or_unionù  rã   rC   c                 ót   • [        U5      S:X  a  US   =(       d    / US'   gUS   US   =(       d    / -   US'   g)z^struct_declaration_list     : struct_declaration
| struct_declaration_list struct_declaration
r¢   r   rˆ   Nr  rÛ   s     r@   Úp_struct_declaration_listÚ!CParser.p_struct_declaration_list  s:   € ô ˆq‹6�Q‹;Ø�Q‘4—:˜2ˆAˆaŠDà�Q‘4˜1˜Q™4Ÿ: 2Ñ&ˆAˆaŠDrC   c                 óh  • US   nSUS   ;  d   eUS   b  U R                  UUS   S9nO„[        US   5      S:X  aY  US   S   n[        U[        R                  5      (       a  UnO[        R
                  " U5      nU R                  U[        US	9/S9nOU R                  U[        SSS
9/S9nX1S'   g)zVstruct_declaration : specifier_qualifier_list struct_declarator_list_opt SEMI
        r   r    r•   r¢   N©rœ   r¯   r{   rˆ   ©r~   rº   )r·   rR   r|   r   ÚNoder‹   r4   )r7   rÜ   rœ   r¯   ÚnodeÚ	decl_types         r@   Úp_struct_declaration_1ÚCParser.p_struct_declaration_1
  sã   € ð �‰tˆØ  Y¡Ó/Ð/Ð/àˆQ‰4ÑØ×,Ñ,ØØ˜‘dð -ð ‰Eô ��f‘Ó !Ó#ð ˜‘< ‘?ˆDÜ˜$¤§
¡
×+Ñ+Ø ‘	ä!×0Ò0°Ó6�	à×,Ñ,ØÜ Ñ+Ð,ð -ð .‰Eð ×,Ñ,ØÜ ¨DÑ1Ð2ð -ð 4ˆEð ˆ!ŠrC   c                 ó   • SUS'   g)z"struct_declaration : SEMI
        Nrˆ   rà   rÛ   s     r@   Úp_struct_declaration_2ÚCParser.p_struct_declaration_20  s   € ð ˆˆ!ŠrC   c                 ó   • US   /US'   g)z0struct_declaration : pppragma_directive
        r   rˆ   Nrà   rÛ   s     r@   Úp_struct_declaration_3ÚCParser.p_struct_declaration_35  rë   rC   c                 óL   • [        U5      S:X  a  US   US   /-   OUS   /US'   g)z]struct_declarator_list  : struct_declarator
| struct_declarator_list COMMA struct_declarator
r  r   rû   rˆ   Nr  rÛ   s     r@   Úp_struct_declarator_listÚ CParser.p_struct_declarator_list:  rm  rC   c                 ó   • US   SS.US'   g)z'struct_declarator : declarator
        r   N©r~   r¡   rˆ   rà   rÛ   s     r@   Úp_struct_declarator_1ÚCParser.p_struct_declarator_1C  s   € ð ˜!™¨Ñ.ˆˆ!ŠrC   c                 ó„   • [        U5      S:”  a  US   US   S.US'   g[        R                  " SSSS5      US   S.US'   g)zWstruct_declarator   : declarator COLON constant_expression
| COLON constant_expression
rû   r   r±  rˆ   Nr¢   )rR   r   r}   rÛ   s     r@   Úp_struct_declarator_2ÚCParser.p_struct_declarator_2H  sG   € ô ˆq‹6�A‹:Ø˜a™D¨Q¨q©TÑ2ˆAˆaŠDä!ŸNšN¨4°°t¸TÓBÈqÐQRÉtÑTˆAˆaŠDrC   c                 ó`   • [         R                  " US   SU R                  US5      5      US'   g)z(enum_specifier  : ENUM ID
| ENUM TYPEID
r¢   Nr   rˆ   ©r   rª   rý   rÛ   s     r@   Úp_enum_specifier_1ÚCParser.p_enum_specifier_1Q  s+   € ô �zŠz˜!˜A™$  d×&7Ñ&7¸¸1Ó&=Ó>ˆˆ!ŠrC   c                 ó`   • [         R                  " SUS   U R                  US5      5      US'   g)zFenum_specifier  : ENUM brace_open enumerator_list brace_close
        Nrû   r   rˆ   r¸  rÛ   s     r@   Úp_enum_specifier_2ÚCParser.p_enum_specifier_2W  s+   € ô �zŠz˜$  !¡ d×&7Ñ&7¸¸1Ó&=Ó>ˆˆ!ŠrC   c                 óf   • [         R                  " US   US   U R                  US5      5      US'   g)zvenum_specifier  : ENUM ID brace_open enumerator_list brace_close
| ENUM TYPEID brace_open enumerator_list brace_close
r¢   r  r   rˆ   Nr¸  rÛ   s     r@   Úp_enum_specifier_3ÚCParser.p_enum_specifier_3\  s/   € ô �zŠz˜!˜A™$  !¡ d×&7Ñ&7¸¸1Ó&=Ó>ˆˆ!ŠrC   c                 óü   • [        U5      S:X  a,  [        R                  " US   /US   R                  5      US'   g[        U5      S:X  a	  US   US'   gUS   R                  R                  US   5        US   US'   g)zXenumerator_list : enumerator
| enumerator_list COMMA
| enumerator_list COMMA enumerator
r¢   r   rˆ   rû   N)rR   r   ÚEnumeratorListr]   ÚenumeratorsrM   rÛ   s     r@   Úp_enumerator_listÚCParser.p_enumerator_listb  st   € ô
 ˆq‹6�Q‹;Ü×'Ò'¨¨1©¨°°!±·
±
Ó;ˆAˆaŠDÜ�‹V�q‹[Ø�Q‘4ˆAˆaŠDàˆa‰D×Ñ×#Ñ# A a¡DÔ)Ø�Q‘4ˆAˆaŠDrC   c                 ó^   • [         R                  " US   U R                  US5      5      US'   g)zealignment_specifier  : _ALIGNAS LPAREN type_name RPAREN
| _ALIGNAS LPAREN constant_expression RPAREN
rû   r   rˆ   N)r   ÚAlignasrý   rÛ   s     r@   Úp_alignment_specifierÚCParser.p_alignment_specifiero  s)   € ô �}Š}˜Q˜q™T 4×#4Ñ#4°Q¸Ó#:Ó;ˆˆ!ŠrC   c                 ó*  • [        U5      S:X  a,  [        R                  " US   SU R                  US5      5      nO.[        R                  " US   US   U R                  US5      5      nU R	                  UR
                  UR                  5        X!S'   g)z1enumerator  : ID
| ID EQUALS constant_expression
r¢   r   Nrû   rˆ   )rR   r   Ú
Enumeratorrý   ra   r\   r]   )r7   rÜ   Ú
enumerators      r@   Úp_enumeratorÚCParser.p_enumeratoru  sŠ   € ô ˆq‹6�Q‹;Ü×)Ò)Ø˜!™˜dØ×)Ñ)¨!¨QÓ/ó1‰Jô ×)Ò)Ø˜!™˜a ™dØ×)Ñ)¨!¨QÓ/ó1ˆJð 	×Ñ˜ZŸ_™_¨j×.>Ñ.>Ô?àˆ!ŠrC   c                 ó   • US   US'   g)z0declarator  : id_declarator
| typeid_declarator
r   rˆ   Nrà   rÛ   s     r@   Úp_declaratorÚCParser.p_declarator…  rã   rC   )r�   ÚID)ÚtypeidÚTYPEID)Útypeid_noparenrÔ  c                 ó   • US   US'   g)z0xxx_declarator  : direct_xxx_declarator
        r   rˆ   Nrà   rÛ   s     r@   Úp_xxx_declarator_1ÚCParser.p_xxx_declarator_1‹  rã   rC   c                 ó:   • U R                  US   US   5      US'   g)z8xxx_declarator  : pointer direct_xxx_declarator
        r¢   r   rˆ   N©rƒ   rÛ   s     r@   Úp_xxx_declarator_2ÚCParser.p_xxx_declarator_2‘  s"   € ð ×%Ñ% a¨¡d¨A¨a©DÓ1ˆˆ!ŠrC   c           
      ó`   • [         R                  " US   SSSU R                  US5      S9US'   g)z&direct_xxx_declarator   : yyy
        r   Nr¤   rˆ   )r   r}   rý   rÛ   s     r@   Úp_direct_xxx_declarator_1Ú!CParser.p_direct_xxx_declarator_1—  s6   € ô �~Š~Ø�q‘TØØØØ×#Ñ# A qÓ)ñ+ˆˆ!ŠrC   c                 ó   • US   US'   g)z?direct_xxx_declarator   : LPAREN xxx_declarator RPAREN
        r¢   rˆ   Nrà   rÛ   s     r@   Úp_direct_xxx_declarator_2Ú!CParser.p_direct_xxx_declarator_2¢  rã   rC   c                 óä   • [        U5      S:”  a  US   O/ =(       d    / n[        R                  " S[        U5      S:”  a  US   OUS   UUS   R                  S9nU R	                  US   US9US'   g)	z|direct_xxx_declarator   : direct_xxx_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET
        rú   rû   Nr  r   ©r{   ÚdimÚ	dim_qualsr]   ©r~   r   rˆ   )rR   r   Ú	ArrayDeclr]   rƒ   )r7   rÜ   rŠ   Úarrs       r@   Úp_direct_xxx_declarator_3Ú!CParser.p_direct_xxx_declarator_3¨  su   € ô ˜Q› !›��1’¨×2°ˆô �oŠoØÜ˜A› ›
��!’¨¨!©ØØ�A‘$—*‘*ñ	ˆð ×%Ñ%¨1¨Q©4¸#Ð%Ð>ˆˆ!ŠrC   c                 ó<  • US   US   4 Vs/ s H  n[        U[        5      (       a  UOU/PM     nnU VVs/ s H  oD  H
  nUc  M  UPM     M     nnn[        R                  " SUS   UUS   R                  S9nU R                  US   US9US'   gs  snf s  snnf )	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
rû   r  Nrú   r   rä  rç  rˆ   )r|   Úlistr   rè  r]   rƒ   )r7   rÜ   ÚitemÚlisted_qualsÚsublistr”   ræ  ré  s           r@   Úp_direct_xxx_declarator_4Ú!CParser.p_direct_xxx_declarator_4·  s¸   € ð ˜1™˜a ™d™ó%Ú#�ô !+¨4´× 6Ñ 6™¸T¸FÒBÙ#ð 	ð %á)5ô !ª˜gÃ'¸$Ø÷ Á'‘T©ˆ	ñ !ä�oŠoØØ�!‘ØØ�A‘$—*‘*ñ	ˆð ×%Ñ%¨1¨Q©4¸#Ð%Ð>ˆˆ!Šùò%ùó!s   �$B¸BÁ
Bc           
      óÞ   • [         R                  " S[         R                  " US   U R                  US5      5      US   b  US   O/ US   R                  S9nU R                  US   US9US'   g)zhdirect_xxx_declarator   : direct_xxx_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET
        Nr  rû   r   rä  rç  rˆ   ©r   rè  rÒ  rý   r]   rƒ   ©r7   rÜ   ré  s      r@   Úp_direct_xxx_declarator_5Ú!CParser.p_direct_xxx_declarator_5Í  sp   € ô �oŠoØÜ—’˜˜1™˜t×0Ñ0°°AÓ6Ó7Ø ™dÑ.�a˜’d°BØ�A‘$—*‘*ñ	ˆð ×%Ñ%¨1¨Q©4¸#Ð%Ð>ˆˆ!ŠrC   c                 óš  • [         R                  " US   SUS   R                  S9nU R                  5       R                  S:X  aq  UR
                  bd  UR
                  R                   HJ  n[        U[         R                  5      (       a    O*U R                  UR                  UR                  5        ML     U R                  US   US9US'   g)zŒdirect_xxx_declarator   : direct_xxx_declarator LPAREN parameter_type_list RPAREN
| direct_xxx_declarator LPAREN identifier_list_opt RPAREN
rû   Nr   ©Úargsr{   r]   ÚLBRACErç  rˆ   )r   rŒ   r]   rx   r{   rú  Úparamsr|   ÚEllipsisParamra   r\   rƒ   )r7   rÜ   ÚfuncÚparams       r@   Úp_direct_xxx_declarator_6Ú!CParser.p_direct_xxx_declarator_6Ù  sª   € ô
 �~Š~Ø�1‘ØØ�A‘$—*‘*ñˆð  ×)Ñ)Ó+×0Ñ0°HÓ<Ø�y‰yÑ$Ø!ŸY™Y×-Ô-�EÜ! %¬×)<Ñ)<×=Ñ=¹uØ×(Ñ(¨¯©°U·[±[ÖAñ .ð ×%Ñ%¨1¨Q©4¸$Ð%Ð?ˆˆ!ŠrC   c                 ó
  • U R                  US5      n[        R                  " US   =(       d    / SUS9n[        U5      S:”  a<  US   nUR                  b  UR                  nUR                  b  M  X4l        US   US'   gX1S'   g)zPpointer : TIMES type_qualifier_list_opt
| TIMES type_qualifier_list_opt pointer
r   r¢   N)rŠ   r{   r]   rû   rˆ   )rý   r   ÚPtrDeclrR   r{   )r7   rÜ   r]   Únested_typeÚ	tail_types        r@   Ú	p_pointerÚCParser.p_pointerö  s~   € ð ×!Ñ! ! QÓ'ˆô  —m’m¨!¨A©$¯*°"¸4ÀuÑMˆÜˆq‹6�A‹:Ø˜!™ˆIØ—.‘.Ñ,Ø%ŸN™N�	ð —.‘.Ó,à(ŒNØ�Q‘4ˆAˆaŠDàˆaŠDrC   c                 óL   • [        U5      S:X  a  US   /OUS   US   /-   US'   g)zJtype_qualifier_list : type_qualifier
| type_qualifier_list type_qualifier
r¢   r   rˆ   Nr  rÛ   s     r@   Úp_type_qualifier_listÚCParser.p_type_qualifier_list  r  rC   c                 ó¶   • [        U5      S:”  aB  US   R                  R                  [        R                  " U R                  US5      5      5        US   US'   g)zEparameter_type_list : parameter_list
| parameter_list COMMA ELLIPSIS
r¢   r   rû   rˆ   N)rR   rü  rM   r   rý  rý   rÛ   s     r@   Úp_parameter_type_listÚCParser.p_parameter_type_list  sJ   € ô ˆq‹6�A‹:Øˆa‰D�K‰K×Ñœu×2Ò2°4×3DÑ3DÀQÈÓ3JÓKÔLà�‰tˆˆ!ŠrC   c                 óÌ   • [        U5      S:X  a,  [        R                  " US   /US   R                  5      US'   gUS   R                  R                  US   5        US   US'   g)zUparameter_list  : parameter_declaration
| parameter_list COMMA parameter_declaration
r¢   r   rˆ   rû   N©rR   r   Ú	ParamListr]   rü  rM   rÛ   s     r@   Úp_parameter_listÚCParser.p_parameter_list#  óX   € ô ˆq‹6�Q‹;Ü—?’? A a¡D 6¨1¨Q©4¯:©:Ó6ˆAˆaŠDàˆa‰D�K‰K×Ñ˜q ™tÔ$Ø�Q‘4ˆAˆaŠDrC   c                 ó¸   • US   nUS   (       d*  [         R                  " S/U R                  US5      S9/US'   U R                  U[	        US   S9/S9S   US'   g	)
zrparameter_declaration   : declaration_specifiers id_declarator
| declaration_specifiers typeid_noparen_declarator
r   r{   r†   r‡   r¢   r¡  r   rˆ   N)r   r‹   rý   r·   r4   r  s      r@   Úp_parameter_declaration_1Ú!CParser.p_parameter_declaration_17  ss   € ð �‰tˆØ�F�|Ü!×0Ò0°%°Ø×'Ñ'¨¨1Ó-ñ/ð 0ˆD�‰Là×'Ñ'ØÜ˜Q˜q™T‘?Ð#ð (ð %à%&ñ(ˆˆ!ŠrC   c                 ó:  • US   nUS   (       d*  [         R                  " S/U R                  US5      S9/US'   [        US   5      S:”  ah  [        US   S   R                  5      S:X  aI  U R                  US   S   R                  S   5      (       a   U R                  U[        US   SS	9/S
9S   nOd[         R                  " SUS   SUS   =(       d    [         R                  " SSSS5      U R                  US5      S9nUS   nU R                  X45      nX1S'   g)zQparameter_declaration   : declaration_specifiers abstract_declarator_opt
        r   r{   r†   r‡   rW   rˆ   r¢   Nrº   r   r   r”   ©r\   rŠ   r¥   r{   r]   )r   r‹   rý   rR   r�   rg   r·   r4   ÚTypenamer}   r‘   )r7   rÜ   rœ   r~   rŽ   s        r@   Úp_parameter_declaration_2Ú!CParser.p_parameter_declaration_2C  s/  € ð �‰tˆØ�F�|Ü!×0Ò0°%°Ø×'Ñ'¨¨1Ó-ñ/ð 0ˆD�‰Lô ˆt�F‰|Ó˜qÓ ¤S¨¨f©°bÑ)9×)?Ñ)?Ó%@ÀAÓ%EØ×&Ñ& t¨F¡|°BÑ'7×'=Ñ'=¸aÑ'@×AÑAØ×+Ñ+ØÜ Q q¡T°Ñ5Ð6ð ,ð 8à89ñ;‰Dô —>’>ØØ˜6‘lØØ�q‘T×CœUŸ^š^¨D°$¸¸dÓCØ×'Ñ'¨¨1Ó-ñ/ˆDð ˜F‘|ˆHØ×+Ñ+¨DÓ;ˆDàˆ!ŠrC   c                 óÌ   • [        U5      S:X  a,  [        R                  " US   /US   R                  5      US'   gUS   R                  R                  US   5        US   US'   g)z@identifier_list : identifier
| identifier_list COMMA identifier
r¢   r   rˆ   rû   Nr  rÛ   s     r@   Úp_identifier_listÚCParser.p_identifier_listc  r  rC   c                 ó   • US   US'   g)z,initializer : assignment_expression
        r   rˆ   Nrà   rÛ   s     r@   Úp_initializer_1ÚCParser.p_initializer_1m  rï   rC   c                 óv   • US   c+  [         R                  " / U R                  US5      5      US'   gUS   US'   g)zjinitializer : brace_open initializer_list_opt brace_close
| brace_open initializer_list COMMA brace_close
r¢   Nr   rˆ   )r   ÚInitListrý   rÛ   s     r@   Úp_initializer_2ÚCParser.p_initializer_2r  s;   € ð ˆQ‰4‰<Ü—>’> " d×&7Ñ&7¸¸1Ó&=Ó>ˆAˆaŠDà�Q‘4ˆAˆaŠDrC   c                 ó`  • [        U5      S:X  aQ  US   c  US   O[        R                  " US   US   5      n[        R                  " U/US   R                  5      US'   gUS   c  US   O[        R                  " US   US   5      nUS   R
                  R                  U5        US   US'   g)zginitializer_list    : designation_opt initializer
| initializer_list COMMA designation_opt initializer
rû   r   Nr¢   rˆ   r  )rR   r   ÚNamedInitializerr#  r]   ÚexprsrM   )r7   rÜ   r¦   s      r@   Úp_initializer_listÚCParser.p_initializer_list{  s    € ô ˆq‹6�Q‹;Ø˜Q™4™<�1�Q’4¬U×-CÒ-CÀAÀaÁDÈ!ÈAÉ$Ó-OˆDÜ—>’> 4 &¨!¨A©$¯*©*Ó5ˆAˆaŠDà˜Q™4™<�1�Q’4¬U×-CÒ-CÀAÀaÁDÈ!ÈAÉ$Ó-OˆDØˆa‰D�J‰J×Ñ˜dÔ#Ø�Q‘4ˆAˆaŠDrC   c                 ó   • US   US'   g)z-designation : designator_list EQUALS
        r   rˆ   Nrà   rÛ   s     r@   Úp_designationÚCParser.p_designation‡  rï   rC   c                 óL   • [        U5      S:X  a  US   /OUS   US   /-   US'   g)z:designator_list : designator
| designator_list designator
r¢   r   rˆ   Nr  rÛ   s     r@   Úp_designator_listÚCParser.p_designator_list�  r  rC   c                 ó   • US   US'   g)zHdesignator  : LBRACKET constant_expression RBRACKET
| PERIOD identifier
r¢   rˆ   Nrà   rÛ   s     r@   Úp_designatorÚCParser.p_designator•  rã   rC   c                 óà   • [         R                  " SUS   S   SS SUS   =(       d    [         R                  " SSSS5      U R                  US5      S9nU R	                  X!S   S   5      US'   g)	zGtype_name   : specifier_qualifier_list abstract_declarator_opt
        r   r   r”   Nr¢   r  r{   rˆ   )r   r  r}   rý   r‘   )r7   rÜ   rŽ   s      r@   Úp_type_nameÚCParser.p_type_name›  sp   € ô —>’>ØØ�A‘$�v‘,™q�/ØØ�1‘×?œŸš¨¨d°D¸$Ó?Ø×#Ñ# A qÓ)ñ+ˆð ×'Ñ'¨°A±$°v±,Ó?ˆˆ!ŠrC   c                 ób   • [         R                  " SSSS5      nU R                  UUS   S9US'   g)z*abstract_declarator     : pointer
        Nr   rç  rˆ   )r   r}   rƒ   )r7   rÜ   Ú	dummytypes      r@   Úp_abstract_declarator_1ÚCParser.p_abstract_declarator_1§  s;   € ô —N’N 4¨¨t°TÓ:ˆ	Ø×%Ñ%ØØ�q‘Tð &ð ˆˆ!ŠrC   c                 ó:   • U R                  US   US   5      US'   g)zEabstract_declarator     : pointer direct_abstract_declarator
        r¢   r   rˆ   NrÚ  rÛ   s     r@   Úp_abstract_declarator_2ÚCParser.p_abstract_declarator_2¯  s"   € ð ×%Ñ% a¨¡d¨A¨a©DÓ1ˆˆ!ŠrC   c                 ó   • US   US'   g)z=abstract_declarator     : direct_abstract_declarator
        r   rˆ   Nrà   rÛ   s     r@   Úp_abstract_declarator_3ÚCParser.p_abstract_declarator_3´  rï   rC   c                 ó   • US   US'   g)z@direct_abstract_declarator  : LPAREN abstract_declarator RPAREN r¢   rˆ   Nrà   rÛ   s     r@   Úp_direct_abstract_declarator_1Ú&CParser.p_direct_abstract_declarator_1¾  ó   € à�‰tˆˆ!ŠrC   c                 ó~   • [         R                  " SUS   / US   R                  S9nU R                  US   US9US'   g)zmdirect_abstract_declarator  : direct_abstract_declarator LBRACKET assignment_expression_opt RBRACKET
        Nrû   r   rä  rç  rˆ   )r   rè  r]   rƒ   rõ  s      r@   Úp_direct_abstract_declarator_2Ú&CParser.p_direct_abstract_declarator_2Â  sI   € ô �oŠoØØ�!‘ØØ�A‘$—*‘*ñ	ˆð ×%Ñ%¨1¨Q©4¸#Ð%Ð>ˆˆ!ŠrC   c           	      óò   • [        U5      S:”  a  US   O/ =(       d    / n[        R                  " [        R                  " SSSS5      [        U5      S:”  a  US   OUS   UU R	                  US5      S9US'   g)zjdirect_abstract_declarator  : LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET
        r  r¢   Nrû   r   rä  rˆ   )rR   r   rè  r}   rý   )r7   rÜ   rŠ   s      r@   Úp_direct_abstract_declarator_3Ú&CParser.p_direct_abstract_declarator_3Í  sl   € ô ˜Q› !›��1’¨×2°ˆÜ�ŠÜ—’  d¨D°$Ó7Ü˜A› ›
��!’¨¨!©ØØ×#Ñ# A qÓ)ñ	+ˆˆ!ŠrC   c           
      óÈ   • [         R                  " S[         R                  " US   U R                  US5      5      / US   R                  S9nU R                  US   US9US'   g)zYdirect_abstract_declarator  : direct_abstract_declarator LBRACKET TIMES RBRACKET
        Nrû   r   rä  rç  rˆ   rô  rõ  s      r@   Úp_direct_abstract_declarator_4Ú&CParser.p_direct_abstract_declarator_4×  sa   € ô �oŠoØÜ—’˜˜1™˜t×0Ñ0°°AÓ6Ó7ØØ�A‘$—*‘*ñ	ˆð ×%Ñ%¨1¨Q©4¸#Ð%Ð>ˆˆ!ŠrC   c           
      óÖ   • [         R                  " [         R                  " SSSS5      [         R                  " US   U R	                  US5      5      / U R	                  US5      S9US'   g)z>direct_abstract_declarator  : LBRACKET TIMES RBRACKET
        Nrû   r   rä  rˆ   )r   rè  r}   rÒ  rý   rÛ   s     r@   Úp_direct_abstract_declarator_5Ú&CParser.p_direct_abstract_declarator_5â  sZ   € ô �ŠÜ—’  d¨D°$Ó7Ü—’˜˜1™˜t×0Ñ0°°AÓ6Ó7ØØ×#Ñ# A qÓ)ñ	+ˆˆ!ŠrC   c                 ó|   • [         R                  " US   SUS   R                  S9nU R                  US   US9US'   g)zgdirect_abstract_declarator  : direct_abstract_declarator LPAREN parameter_type_list_opt RPAREN
        rû   Nr   rù  rç  rˆ   )r   rŒ   r]   rƒ   )r7   rÜ   rþ  s      r@   Úp_direct_abstract_declarator_6Ú&CParser.p_direct_abstract_declarator_6ë  sF   € ô �~Š~Ø�1‘ØØ�A‘$—*‘*ñˆð
 ×%Ñ%¨1¨Q©4¸$Ð%Ð?ˆˆ!ŠrC   c           	      óŠ   • [         R                  " US   [         R                  " SSSS5      U R                  US5      S9US'   g)zLdirect_abstract_declarator  : LPAREN parameter_type_list_opt RPAREN
        r¢   Nr   rù  rˆ   )r   rŒ   r}   rý   rÛ   s     r@   Úp_direct_abstract_declarator_7Ú&CParser.p_direct_abstract_declarator_7õ  s?   € ô �~Š~Ø�1‘Ü—’  d¨D°$Ó7Ø×#Ñ# A qÓ)ñ+ˆˆ!ŠrC   c           	      óJ  • US   US   4 Vs/ s H  n[        U[        5      (       a  UOU/PM     nnU VVs/ s H  oD  H
  nUc  M  UPM     M     nnn[        R                  " [        R                  " SSSS5      US   UU R                  US5      S9US'   gs  snf s  snnf )zªdirect_abstract_declarator  : LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET
| LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET
r¢   rû   Nr  r   rä  rˆ   )r|   rí  r   rè  r}   rý   )r7   rÜ   rî  rï  rð  r”   rŠ   s          r@   Úp_direct_abstract_declarator_8Ú&CParser.p_direct_abstract_declarator_8ý  s±   € ð
 ˜1™˜a ™d™ó%Ú#�ô !+¨4´× 6Ñ 6™¸T¸FÒBÙ#ð 	ð %á%1ô !¢\˜'»g°dØ÷ ¹g‘¡\ˆñ !ä�ŠÜ—’  d¨D°$Ó7Ø�!‘ØØ×#Ñ# A qÓ)ñ	+ˆˆ!Šùò	%ùó!s   �$B¸BÁ
Bc                 óP   • [        US   [        5      (       a  US   OUS   /US'   g)z&block_item  : declaration
| statement
r   rˆ   N)r|   rí  rÛ   s     r@   Úp_block_itemÚCParser.p_block_item  s)   € ô " ! A¡$¬×-Ñ-ˆq�Št°A°a±D°6ˆˆ!ŠrC   c                 ó\   • [        U5      S:X  d
  US   S/:X  a  US   O
US   US   -   US'   g)z:block_item_list : block_item
| block_item_list block_item
r¢   Nr   rˆ   r  rÛ   s     r@   Úp_block_item_listÚCParser.p_block_item_list  s5   € ô
 ˜A› !› q¨¡t°¨v£~ˆq�Št¸A¸a¹DÀ1ÀQÁ4¹Kˆˆ!ŠrC   c                 óZ   • [         R                  " US   U R                  US5      S9US'   g)z@compound_statement : brace_open block_item_list_opt brace_close r¢   r   r  rˆ   N)r   r  rý   rÛ   s     r@   Úp_compound_statement_1ÚCParser.p_compound_statement_1  s+   € ä�~Š~Ø˜!™Ø×#Ñ# A qÓ)ñ+ˆˆ!ŠrC   c                 óf   • [         R                  " US   US   U R                  US5      5      US'   g)z5labeled_statement : ID COLON pragmacomp_or_statement r   rû   rˆ   N)r   ÚLabelrý   rÛ   s     r@   Úp_labeled_statement_1ÚCParser.p_labeled_statement_1#  ó-   € ä�{Š{˜1˜Q™4  1¡ t×'8Ñ'8¸¸AÓ'>Ó?ˆˆ!ŠrC   c                 óh   • [         R                  " US   US   /U R                  US5      5      US'   g)zKlabeled_statement : CASE constant_expression COLON pragmacomp_or_statement r¢   r  r   rˆ   N)r   ÚCaserý   rÛ   s     r@   Úp_labeled_statement_2ÚCParser.p_labeled_statement_2'  s/   € ä�zŠz˜!˜A™$  1¡ ¨×(9Ñ(9¸!¸QÓ(?Ó@ˆˆ!ŠrC   c                 ó`   • [         R                  " US   /U R                  US5      5      US'   g)z:labeled_statement : DEFAULT COLON pragmacomp_or_statement rû   r   rˆ   N)r   ÚDefaultrý   rÛ   s     r@   Úp_labeled_statement_3ÚCParser.p_labeled_statement_3+  s)   € ä�}Š}˜a ™d˜V T×%6Ñ%6°q¸!Ó%<Ó=ˆˆ!ŠrC   c           	      ó¨   • [         R                  " US   [         R                  " U R                  US5      5      U R                  US5      5      US'   g)zlabeled_statement : ID COLON r   rˆ   N)r   rd  ÚEmptyStatementrý   rÛ   s     r@   Úp_labeled_statement_4ÚCParser.p_labeled_statement_4/  sD   € ä�{Š{˜1˜Q™4¤×!5Ò!5°d×6GÑ6GÈÈ1Ó6MÓ!NÐPT×PaÑPaÐbcÐefÓPgÓhˆˆ!ŠrC   c           	      óª   • [         R                  " US   [         R                  " U R                  US5      5      /U R                  US5      5      US'   g)z3labeled_statement : CASE constant_expression COLON r¢   r   rˆ   N)r   ri  rq  rý   rÛ   s     r@   Úp_labeled_statement_5ÚCParser.p_labeled_statement_53  sG   € ä�zŠz˜!˜A™$¤×!5Ò!5°d×6GÑ6GÈÈ1Ó6MÓ!NÐ OÐQU×QbÑQbÐcdÐfgÓQhÓiˆˆ!ŠrC   c                 ó¢   • [         R                  " [         R                  " U R                  US5      5      /U R                  US5      5      US'   g)z"labeled_statement : DEFAULT COLON r   rˆ   N)r   rm  rq  rý   rÛ   s     r@   Úp_labeled_statement_6ÚCParser.p_labeled_statement_67  s@   € ä�}Š}œe×2Ò2°4×3DÑ3DÀQÈÓ3JÓKÐLÈd×N_ÑN_Ð`aÐcdÓNeÓfˆˆ!ŠrC   c           	      óh   • [         R                  " US   US   SU R                  US5      5      US'   g)zJselection_statement : IF LPAREN expression RPAREN pragmacomp_or_statement rû   rú   Nr   rˆ   ©r   ÚIfrý   rÛ   s     r@   Úp_selection_statement_1ÚCParser.p_selection_statement_1;  s/   € ä�xŠx˜˜!™˜a ™d D¨$×*;Ñ*;¸A¸qÓ*AÓBˆˆ!ŠrC   c           	      ón   • [         R                  " US   US   US   U R                  US5      5      US'   g)zYselection_statement : IF LPAREN expression RPAREN statement ELSE pragmacomp_or_statement rû   rú   é   r   rˆ   Nr{  rÛ   s     r@   Úp_selection_statement_2ÚCParser.p_selection_statement_2?  s3   € ä�xŠx˜˜!™˜a ™d A a¡D¨$×*;Ñ*;¸A¸qÓ*AÓBˆˆ!ŠrC   c           
      óx   • [        [        R                  " US   US   U R                  US5      5      5      US'   g)zNselection_statement : SWITCH LPAREN expression RPAREN pragmacomp_or_statement rû   rú   r   rˆ   N)r
   r   ÚSwitchrý   rÛ   s     r@   Úp_selection_statement_3ÚCParser.p_selection_statement_3C  s6   € äÜ—’˜Q˜q™T 1 Q¡4¨×):Ñ):¸1¸aÓ)@ÓAóCˆˆ!ŠrC   c                 óf   • [         R                  " US   US   U R                  US5      5      US'   g)zMiteration_statement : WHILE LPAREN expression RPAREN pragmacomp_or_statement rû   rú   r   rˆ   N)r   ÚWhilerý   rÛ   s     r@   Úp_iteration_statement_1ÚCParser.p_iteration_statement_1H  rg  rC   c                 óf   • [         R                  " US   US   U R                  US5      5      US'   g)zUiteration_statement : DO pragmacomp_or_statement WHILE LPAREN expression RPAREN SEMI rú   r¢   r   rˆ   N)r   ÚDoWhilerý   rÛ   s     r@   Úp_iteration_statement_2ÚCParser.p_iteration_statement_2L  s-   € ä�}Š}˜Q˜q™T 1 Q¡4¨×):Ñ):¸1¸aÓ)@ÓAˆˆ!ŠrC   c           
      óv   • [         R                  " US   US   US   US   U R                  US5      5      US'   g)zwiteration_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_3ÚCParser.p_iteration_statement_3P  s9   € ä�yŠy˜˜1™˜q ™t Q q¡T¨1¨Q©4°×1BÑ1BÀ1ÀaÓ1HÓIˆˆ!ŠrC   c           
      óÀ   • [         R                  " [         R                  " US   U R                  US5      5      US   US   US   U R                  US5      5      US'   g)zoiteration_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_4ÚCParser.p_iteration_statement_4T  sU   € ä�yŠyœŸš¨¨!©¨d×.?Ñ.?ÀÀ1Ó.EÓFØ˜1™˜q ™t Q q¡T¨4×+<Ñ+<¸QÀÓ+BóDˆˆ!ŠrC   c                 ó^   • [         R                  " US   U R                  US5      5      US'   g)zjump_statement  : GOTO ID SEMI r¢   r   rˆ   N)r   ÚGotorý   rÛ   s     r@   Úp_jump_statement_1ÚCParser.p_jump_statement_1Y  s'   € ä�zŠz˜!˜A™$ × 1Ñ 1°!°QÓ 7Ó8ˆˆ!ŠrC   c                 óV   • [         R                  " U R                  US5      5      US'   g)zjump_statement  : BREAK SEMI r   rˆ   N)r   ÚBreakrý   rÛ   s     r@   Úp_jump_statement_2ÚCParser.p_jump_statement_2]  s!   € ä�{Š{˜4×,Ñ,¨Q°Ó2Ó3ˆˆ!ŠrC   c                 óV   • [         R                  " U R                  US5      5      US'   g)z jump_statement  : CONTINUE SEMI r   rˆ   N)r   ÚContinuerý   rÛ   s     r@   Úp_jump_statement_3ÚCParser.p_jump_statement_3a  s!   € ä�~Š~˜d×/Ñ/°°1Ó5Ó6ˆˆ!ŠrC   c                 ó€   • [         R                  " [        U5      S:X  a  US   OSU R                  US5      5      US'   g)z7jump_statement  : RETURN expression SEMI
| RETURN SEMI
r  r¢   Nr   rˆ   )r   ÚReturnrR   rý   rÛ   s     r@   Úp_jump_statement_4ÚCParser.p_jump_statement_4e  s6   € ô �|Š|¤C¨£F¨a£K˜A˜ašD°T¸4×;LÑ;LÈQÐPQÓ;RÓSˆˆ!ŠrC   c                 ót   • US   c*  [         R                  " U R                  US5      5      US'   gUS   US'   g)z+expression_statement : expression_opt SEMI r   Nr¢   rˆ   )r   rq  rý   rÛ   s     r@   Úp_expression_statementÚCParser.p_expression_statementk  s9   € àˆQ‰4‰<Ü×'Ò'¨×(9Ñ(9¸!¸QÓ(?Ó@ˆAˆaŠDà�Q‘4ˆAˆaŠDrC   c                 ó   • [        U5      S:X  a	  US   US'   g[        US   [        R                  5      (       d+  [        R                  " US   /US   R                  5      US'   US   R
                  R                  US   5        US   US'   g)zMexpression  : assignment_expression
| expression COMMA assignment_expression
r¢   r   rˆ   rû   N)rR   r|   r   ÚExprListr]   r(  rM   rÛ   s     r@   Úp_expressionÚCParser.p_expressionr  sz   € ô ˆq‹6�Q‹;Ø�Q‘4ˆAˆaŠDä˜a ™d¤E§N¡N×3Ñ3Ü—~’~ q¨¡t f¨a°©d¯j©jÓ9��!‘àˆa‰D�J‰J×Ñ˜a ™dÔ#Ø�Q‘4ˆAˆaŠDrC   c                 ó   • US   US'   g)z9assignment_expression : LPAREN compound_statement RPAREN r¢   rˆ   Nrà   rÛ   s     r@   Ú#p_parenthesized_compound_expressionÚ+CParser.p_parenthesized_compound_expression  rD  rC   c                 ó\   • [         R                  " US   /U R                  US5      S9US'   g)ztypedef_name : TYPEID r   r‡   rˆ   Nr\  rÛ   s     r@   Úp_typedef_nameÚCParser.p_typedef_nameƒ  s+   € ä×#Ò# Q q¡T F°$×2CÑ2CÀAÀqÓ2IÑJˆˆ!ŠrC   c                 ó˜   • [        U5      S:X  a	  US   US'   g[        R                  " US   US   US   US   R                  5      US'   g)znassignment_expression   : conditional_expression
| unary_expression assignment_operator assignment_expression
r¢   r   rˆ   rû   N)rR   r   Ú
Assignmentr]   rÛ   s     r@   Úp_assignment_expressionÚCParser.p_assignment_expression‡  sJ   € ô ˆq‹6�Q‹;Ø�Q‘4ˆAˆaŠDä×#Ò# A a¡D¨!¨A©$°°!±°a¸±d·j±jÓAˆAˆaŠDrC   c                 ó   • US   US'   g)z•assignment_operator : EQUALS
| XOREQUAL
| TIMESEQUAL
| DIVEQUAL
| MODEQUAL
| PLUSEQUAL
| MINUSEQUAL
| LSHIFTEQUAL
| RSHIFTEQUAL
| ANDEQUAL
| OREQUAL
r   rˆ   Nrà   rÛ   s     r@   Úp_assignment_operatorÚCParser.p_assignment_operator•  s   € ð �‰tˆˆ!ŠrC   c                 ó   • US   US'   g)z-constant_expression : conditional_expression r   rˆ   Nrà   rÛ   s     r@   Úp_constant_expressionÚCParser.p_constant_expression¤  rD  rC   c                 ó˜   • [        U5      S:X  a	  US   US'   g[        R                  " US   US   US   US   R                  5      US'   g)zoconditional_expression  : binary_expression
| binary_expression CONDOP expression COLON conditional_expression
r¢   r   rˆ   rû   rú   N)rR   r   Ú	TernaryOpr]   rÛ   s     r@   Úp_conditional_expressionÚ CParser.p_conditional_expression¨  sH   € ô ˆq‹6�Q‹;Ø�Q‘4ˆAˆaŠDä—?’? 1 Q¡4¨¨1©¨q°©t°Q°q±T·Z±ZÓ@ˆAˆaŠDrC   c                 ó˜   • [        U5      S:X  a	  US   US'   g[        R                  " US   US   US   US   R                  5      US'   g)a"  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)rR   r   ÚBinaryOpr]   rÛ   s     r@   Úp_binary_expressionÚCParser.p_binary_expression±  sH   € ô* ˆq‹6�Q‹;Ø�Q‘4ˆAˆaŠDä—>’> ! A¡$¨¨!©¨a°©d°A°a±D·J±JÓ?ˆAˆaŠDrC   c                 ó   • US   US'   g)z#cast_expression : unary_expression r   rˆ   Nrà   rÛ   s     r@   Úp_cast_expression_1ÚCParser.p_cast_expression_1Ë  rD  rC   c                 óf   • [         R                  " US   US   U R                  US5      5      US'   g)z:cast_expression : LPAREN type_name RPAREN cast_expression r¢   r  r   rˆ   N)r   ÚCastrý   rÛ   s     r@   Úp_cast_expression_2ÚCParser.p_cast_expression_2Ï  s-   € ä�zŠz˜!˜A™$  !¡ d×&7Ñ&7¸¸1Ó&=Ó>ˆˆ!ŠrC   c                 ó   • US   US'   g)z)unary_expression    : postfix_expression r   rˆ   Nrà   rÛ   s     r@   Úp_unary_expression_1ÚCParser.p_unary_expression_1Ó  rD  rC   c                 ó`   • [         R                  " US   US   US   R                  5      US'   g)zounary_expression    : PLUSPLUS unary_expression
| MINUSMINUS unary_expression
| unary_operator cast_expression
r   r¢   rˆ   N©r   ÚUnaryOpr]   rÛ   s     r@   Úp_unary_expression_2ÚCParser.p_unary_expression_2×  s*   € ô
 �}Š}˜Q˜q™T 1 Q¡4¨¨1©¯©Ó4ˆˆ!ŠrC   c                 óŽ   • [         R                  " US   [        U5      S:X  a  US   OUS   U R                  US5      5      US'   g)zrunary_expression    : SIZEOF unary_expression
| SIZEOF LPAREN type_name RPAREN
| _ALIGNOF LPAREN type_name RPAREN
r   rû   r¢   rˆ   N)r   rÕ  rR   rý   rÛ   s     r@   Úp_unary_expression_3ÚCParser.p_unary_expression_3Þ  sD   € ô
 �}Š}Øˆa‰DÜ˜“F˜a“KˆAˆaŠD Q q¡TØ×Ñ˜a Ó#ó%ˆˆ!ŠrC   c                 ó   • US   US'   g)z:unary_operator  : AND
| TIMES
| PLUS
| MINUS
| NOT
| LNOT
r   rˆ   Nrà   rÛ   s     r@   Úp_unary_operatorÚCParser.p_unary_operatorè  rW  rC   c                 ó   • US   US'   g)z)postfix_expression  : primary_expression r   rˆ   Nrà   rÛ   s     r@   Úp_postfix_expression_1ÚCParser.p_postfix_expression_1ò  rD  rC   c                 ó`   • [         R                  " US   US   US   R                  5      US'   g)zFpostfix_expression  : postfix_expression LBRACKET expression RBRACKET r   rû   rˆ   N)r   ÚArrayRefr]   rÛ   s     r@   Úp_postfix_expression_2ÚCParser.p_postfix_expression_2ö  s(   € ä�~Š~˜a ™d A a¡D¨!¨A©$¯*©*Ó5ˆˆ!ŠrC   c                 ó‚   • [         R                  " US   [        U5      S:X  a  US   OSUS   R                  5      US'   g)zspostfix_expression  : postfix_expression LPAREN argument_expression_list RPAREN
| postfix_expression LPAREN RPAREN
r   rú   rû   Nrˆ   )r   ÚFuncCallrR   r]   rÛ   s     r@   Úp_postfix_expression_3ÚCParser.p_postfix_expression_3ú  s6   € ô �~Š~˜a ™d¬C°«F°a«K A a¢D¸TÀ1ÀQÁ4Ç:Á:ÓNˆˆ!ŠrC   c                 ó´   • [         R                  " US   U R                  US5      5      n[         R                  " US   US   X!S   R                  5      US'   g)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ý   Ú	StructRefr]   )r7   rÜ   Úfields      r@   Úp_postfix_expression_4ÚCParser.p_postfix_expression_4   sK   € ô —’˜˜1™˜t×0Ñ0°°AÓ6Ó7ˆÜ�Š˜q ™t Q q¡T¨5°A±$·*±*Ó=ˆˆ!ŠrC   c                 óf   • [         R                  " SUS   -   US   US   R                  5      US'   g)zRpostfix_expression  : postfix_expression PLUSPLUS
| postfix_expression MINUSMINUS
rÜ   r¢   r   rˆ   NrÔ  rÛ   s     r@   Úp_postfix_expression_5ÚCParser.p_postfix_expression_5	  s.   € ô �}Š}˜S 1 Q¡4™Z¨¨1©¨q°©t¯z©zÓ:ˆˆ!ŠrC   c                 óD   • [         R                  " US   US   5      US'   g)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_6ÚCParser.p_postfix_expression_6  s"   € ô ×$Ò$ Q q¡T¨1¨Q©4Ó0ˆˆ!ŠrC   c                 ó   • US   US'   g)z!primary_expression  : identifier r   rˆ   Nrà   rÛ   s     r@   Úp_primary_expression_1ÚCParser.p_primary_expression_1  rD  rC   c                 ó   • US   US'   g)zprimary_expression  : constant r   rˆ   Nrà   rÛ   s     r@   Úp_primary_expression_2ÚCParser.p_primary_expression_2  rD  rC   c                 ó   • US   US'   g)zGprimary_expression  : unified_string_literal
| unified_wstring_literal
r   rˆ   Nrà   rÛ   s     r@   Úp_primary_expression_3ÚCParser.p_primary_expression_3  rã   rC   c                 ó   • US   US'   g)z/primary_expression  : LPAREN expression RPAREN r¢   rˆ   Nrà   rÛ   s     r@   Úp_primary_expression_4ÚCParser.p_primary_expression_4#  rD  rC   c                 óÈ   • U R                  US5      n[        R                  " [        R                  " US   U5      [        R                  " US   US   /U5      U5      US'   g)z`primary_expression  : OFFSETOF LPAREN type_name COMMA offsetof_member_designator RPAREN
        r   rû   rú   rˆ   N)rý   r   ræ  rÒ  r®  )r7   rÜ   r]   s      r@   Úp_primary_expression_5ÚCParser.p_primary_expression_5'  sV   € ð ×!Ñ! ! QÓ'ˆÜ�~Š~œeŸhšh q¨¡t¨UÓ3Ü#Ÿnšn¨a°©d°A°a±D¨\¸5ÓAØ#ó%ˆˆ!ŠrC   c                 ó`  • [        U5      S:X  a	  US   US'   g[        U5      S:X  a3  [        R                  " US   US   US   US   R                  5      US'   g[        U5      S:X  a/  [        R                  " US   US   US   R                  5      US'   g[        S[        U5      -  5      e)	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)rR   r   rê  r]   râ  ÚNotImplementedErrorrÛ   s     r@   Úp_offsetof_member_designatorÚ$CParser.p_offsetof_member_designator/  sš   € ô
 ˆq‹6�Q‹;Ø�Q‘4ˆAˆaŠDÜ�‹V�q‹[Ü—?’? 1 Q¡4¨¨1©¨q°©t°Q°q±T·Z±ZÓ@ˆAˆaŠDÜ�‹V�q‹[Ü—>’> ! A¡$¨¨!©¨a°©d¯j©jÓ9ˆAˆaŠDä%Ð&LÌsÐSTËvÑ&UÓVÐVrC   c                 óÌ   • [        U5      S:X  a,  [        R                  " US   /US   R                  5      US'   gUS   R                  R                  US   5        US   US'   g)zkargument_expression_list    : assignment_expression
| argument_expression_list COMMA assignment_expression
r¢   r   rˆ   rû   N)rR   r   r®  r]   r(  rM   rÛ   s     r@   Úp_argument_expression_listÚ"CParser.p_argument_expression_list=  sX   € ô ˆq‹6�Q‹;Ü—>’> 1 Q¡4 &¨!¨A©$¯*©*Ó5ˆAˆaŠDàˆa‰D�J‰J×Ñ˜a ™dÔ#Ø�Q‘4ˆAˆaŠDrC   c                 ó^   • [         R                  " US   U R                  US5      5      US'   g)zidentifier  : ID r   rˆ   N)r   rÒ  rý   rÛ   s     r@   Úp_identifierÚCParser.p_identifierG  s'   € ä�xŠx˜˜!™˜d×/Ñ/°°1Ó5Ó6ˆˆ!ŠrC   c                 ó  • SnSnUS   SS  H  nUS;   a  US-  nM  US;   d  M  US-  nM     SnUS:”  a  [        S5      eUS	:”  a  [        S
5      eSU-  SU-  -   n[        R                  " US-   US   U R                  US5      5      US'   g)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 r†   )Ú
ValueErrorr   ÚConstantrý   )r7   rÜ   ÚuCountÚlCountÚxr³   Úprefixs          r@   Úp_constant_1ÚCParser.p_constant_1K  s±   € ð ˆØˆØ�1‘�b�c“ˆAØ�J‹Ø˜!‘’Ø�j•Ø˜!‘’ñ	 ð
 ˆØ�A‹:ÜÐNÓOÐOØ�a‹ZÜÐNÓOÐOØ˜vÑ%¨°&Ñ(8Ñ8ˆÜ�~Š~Ø�U‰N˜A˜a™D $×"3Ñ"3°A°qÓ"9ó;ˆˆ!ŠrC   c                 óž   • US   S   S;   a  SnOUS   S   S;   a  SnOSn[         R                  " X!S   U R                  US5      5      US'   g	)
z,constant    : FLOAT_CONST
| HEX_FLOAT_CONST
r   rW   )ÚfÚFÚfloatr  zlong doubleÚdoublerˆ   N©r   r  rý   )r7   rÜ   r³   s      r@   Úp_constant_2ÚCParser.p_constant_2b  s[   € ð ˆQ‰4�‰8�zÓ!Ø‰AØˆq‰T�"‰X˜Ó#Ø‰AàˆAä�~Š~Ø�‰t�T×&Ñ& q¨!Ó,ó.ˆˆ!ŠrC   c                 ó`   • [         R                  " SUS   U R                  US5      5      US'   g)zVconstant    : CHAR_CONST
| WCHAR_CONST
| U8CHAR_CONST
| U16CHAR_CONST
| U32CHAR_CONST
Úcharr   rˆ   Nr"  rÛ   s     r@   Úp_constant_3ÚCParser.p_constant_3p  s.   € ô �~Š~Ø�A�a‘D˜$×+Ñ+¨A¨qÓ1ó3ˆˆ!ŠrC   c                 óÖ   • [        U5      S:X  a/  [        R                  " SUS   U R                  US5      5      US'   gUS   R                  SS US   SS -   US   l        US   US'   g)zQunified_string_literal  : STRING_LITERAL
| unified_string_literal STRING_LITERAL
r¢   Ústringr   rˆ   NrW   )rR   r   r  rý   ÚvaluerÛ   s     r@   Úp_unified_string_literalÚ CParser.p_unified_string_literal  sp   € ô ˆq‹6�Q‹;Ü—>’>Ø˜!˜A™$ × 1Ñ 1°!°QÓ 7ó9ˆAˆaŠDð ˜1™Ÿ™ C R˜¨1¨Q©4°°¨8Ñ3ˆAˆa‰DŒJØ�Q‘4ˆAˆaŠDrC   c                 óò   • [        U5      S:X  a/  [        R                  " SUS   U R                  US5      5      US'   gUS   R                  R                  5       SS US   SS -   US   l        US   US'   g)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ˆ   NrW   )rR   r   r  rý   r+  ÚrstriprÛ   s     r@   Úp_unified_wstring_literalÚ!CParser.p_unified_wstring_literalŠ  sz   € ô ˆq‹6�Q‹;Ü—>’>Ø˜!˜A™$ × 1Ñ 1°!°QÓ 7ó9ˆAˆaŠDð ˜1™Ÿ™×*Ñ*Ó,¨S¨bÐ1°A°a±D¸¸°HÑ<ˆAˆa‰DŒJØ�Q‘4ˆAˆaŠDrC   c                 óV   • US   US'   UR                  SUR                  S5      5        g)zbrace_open  :   LBRACE
        r   rˆ   N©Ú
set_linenoÚlinenorÛ   s     r@   Úp_brace_openÚCParser.p_brace_open›  ó'   € ð �‰tˆˆ!‰Ø	�‰�Q˜Ÿ™ ›Õ$rC   c                 óV   • US   US'   UR                  SUR                  S5      5        g)zbrace_close :   RBRACE
        r   rˆ   Nr3  rÛ   s     r@   Úp_brace_closeÚCParser.p_brace_close¡  r8  rC   c                 ó   • SUS'   g)zempty : Nrˆ   rà   rÛ   s     r@   Úp_emptyÚCParser.p_empty§  s   € àˆˆ!ŠrC   c           	      ó   • U(       aQ  U R                  SUR                  -  U R                  UR                  U R                  R                  U5      S95        g U R                  SU R                  R                  5        g )Nz
before: %s)r5  rm   zAt end of input)rZ   r+  rj   r5  r/   Úfind_tok_columnrF   rÛ   s     r@   Úp_errorÚCParser.p_error«  si   € ö Ø×ÑØ˜qŸw™wÑ&Ø—‘ 1§8¡8Ø#'§9¡9×#<Ñ#<¸QÓ#?ð ð AõBð
 ×ÑÐ/°·±×1CÑ1CÕDrC   )r6   r5   r/   r3   r1   N)r   F)F)¶Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   rA   rH   rO   rT   r^   ra   rg   r+   r,   r-   r.   rx   rƒ   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,  r0  r3  r6  r9  r>  rB  rE  rH  rK  rO  rR  rU  rY  r]  r`  re  rh  rk  rp  rt  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/  r2  r5  r9  r<  r?  rB  rF  rI  rL  rO  rR  rU  rX  r[  r^  ra  re  rj  rn  rr  ru  rx  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,  r0  r6  r:  r=  rA  Ú__static_attributes__rà   rC   r@   r   r      s•  † ð ØØ%ØØ'ØØôm(ô^ò0)ò ò+ò,òò:òòòò$òR!òd*ôXô2Wòrò"ð€Jò('òòòò
ò
òò
ò
Mò3ò
=ò8òò$	ò
òn	ò(,òzò4òCò
Fò
GòCò
Hò
Pò
Sò
Tò
Pò
Cò
Pò
Uò
òòKò òòò8òDò8òDòPò
Pò
Cò
Sò
Qò
Hò	+ò/ò$/ò&ò'ò$òLò
ò
8ò/ò
Uò?ò?ò
?òò<òò ñ �<Ð!5Ð7SÓTñó Uðñ
 �<Ð!5Ð7SÓTñ2ó Uð2ñ
 �<Ð!5Ð7SÓTñ+ó Uð+ñ �<Ð!5Ó6ñó 7ðñ
 �<Ð!5Ð7SÓTñ?ó Uð?ñ �<Ð!5Ð7SÓTñ?ó Uð?ñ* �<Ð!5Ð7SÓTñ	?ó Uð	?ñ �<Ð!5Ð7SÓTñ@ó Uð@ò8ò<8òòò(
(òò@òò
ò
òò8òò
@òò2ò
òò	?ò+ò	?ò+ò@ò+ò+ò":òHò+ò@òAò>òiòjògòCòCòCò
@òBòJòDò
9ò4ò7òTòòòòKòBòòòAò@ò4ò?òò5ò%òòò6òOò>ò;ò1òòòòò%òWòò7ò;ò..ò3ò	òò"%ò%òõ
ErC   r   N)Úplyr   r   r   Úc_lexerr   Ú	plyparserr   r   r   r	   Úast_transformsr
   r   r   rà   rC   r@   Ú<module>rM     s:   ðõ å Ý ß EÓ Eß Cð 
ôcEˆió cEó 
ñcErC   