Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
c_parser.cpython-313.pyc455 linesDownload Raw Back to __pycache__
1�

2��j�^���SSKJr SSKJrJrJrJrJrJrJ	r	J3r4Jr SSKJ
r
 SSKJrJr SSKJrJr \"SS55r"S	S5\5r"SS5r1S
kr0SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S_S!S"_S#S"_S$S%_S&S%_S'S%0Er1S(krS)S*1r1S+kr1S,kr\\-\-\-1S-k-r1S.kr1S/kr S0S11r!1S2kr"S31r#1S4kr$\\ -\!-\"-\#-\$-r%1S5kr&"S6S75r'"S8S9\65r(\S:r)"S;S<\75r*g=)>�)�	dataclass)	�Any�Dict�List�Literal�NoReturn�Optional�Tuple�	TypedDict�cast�)�c_ast)�CLexer�_Token)�fix_switch_cases�fix_atomic_specifiersc�P�\rSrSr%Sr\\S'\\S'Sr\	\\S'S\4Sjr8S	rg)9�Coord�z[Coordinates of a syntactic element. Consists of:10- File name11- Line number12- Column number13�file�lineN�column�returnc��URSUR3nUR(aUSUR3-
nU$)N�:�rrr)�self�texts  �XD:\code\apps\devtools\python\user_packages\Python313\site-packages\pycparser/c_parser.py�__str__�
Coord.__str__'s;���)�)��A�d�i�i�[�)���;�;��a����}�%�%�D����)�__name__�14__module__�__qualname__�__firstlineno__�__doc__�str�__annotations__�intrr	r �__static_attributes__r#r"rrrs-����I�15
�I� �F�H�S�M� ���r"rc��\rSrSrSrg)�16ParseError�.r#N)r$r%r&r'r,r#r"rr.r..s��r"r.c�"�\rSrSrSrS\SSSSS4S\S	\\S17\S\S\S
\S\SS4Sjjr	S�S\S\S\S\18R4SjjrS�S\
S\\
S\4SjjrS\S\\-S-S\4SjrS�SjrS�SjrS\S\\SS4SjrS\S\\SS4S jrS\S\4S!jrS\S"\
S\
SS4S#jrS�S$jrS�S%jrS\S\4S&jrS'\S(\S\19R:4S)jrS'\20R>\21R@-\22RB-S*\"\S\23R>\24R@-\25RB-4S+jr#S�S,\S-S.\S/S0S1\SS-426S2jjr$S�S3S-S4\"S5S6\S\"\27R:4S7jjr%S3S-S'\28R:S8\\"\29R:S9\30R:S\31R:432S:jr&S;\S\4S<jr'S�S=\
S\\(4S>jjr)S�S=\
S\\4S?jjr*S\(4S@jr+SA\S\\(4SBjr,SA\S\(4SCjr-S\
4SDjr.SE\
SS4SFjr/SG\(S\4SHjr0S�SG\\(S\4SIjjr1S�SG\\(S\4SJjjr2S\4SKjr3S�SL\S\4SMjjr4S\5\\\44SNjr6S�SO\SP\S\5\\33R:\44SQjjr7S\5\\\44SRjr8S\4SSjr9S\4STjr:S\\5\34RB\
\(44SUjr;S\35R4SVjr<S\"\36R:4SWjr=S\"\37R:4SXjr>S\"\38R:4SYjr?S\"\39R:4SZjr@S3S-S[\S\"\40R:4S\jrAS\"\41R:4S]jrBS�S^\S\5S-\\\44S_jjrCS�S`jrDS\"\4SajrES\42R:4SbjrFS\43R:4ScjrGS�Sd\S5SL\S\"S54SejjrHS�SL\SS54SfjjrIS\44R:4SgjrJS\"\45R:4ShjrKS\\"\46R:4SijrLS\"S54SjjrMS�SkjrNS\47R:4SljrOS\48R:4SmjrPS\49R:4SnjrQS\50R:4SojrRS\51R:4SpjrSS\52R:4SqjrTS\53R:4SrjrUS/\Ss\S\54R:4StjrVS�S/\Ss\S\55R:4SujjrWS'\56R:S\57R:4SvjrXSw\58R:S\59R:4SxjrYS�Sy\\60R:S\\S\61R:4SzjjrZSw\62R:S\63R:4S{jr[S\\64R:4S|jr\S\65R�4S}jr^S\66R�4S~jr_S\67R:4Sjr`S3S-S'\\68R:S�\\S\69R:4S�jraS\\70R:4S�jrbS\71R:4S�jrcS\72RB4S�jrdS\\73R:4S�jreS\74R:4S�jrfS\\75R�4S�jrgS\76R:4S�jrhS\77R:\"\78R:-4S�jriS\79R:\"\80R:-4S�jrjS\81R:\"\82R:-4S�jrkS\"\83R:4S�jrlS\84R:4S�jrmS\85R:4S�jrnS\86R:4S�jroS\87R:4S�jrpS\88R:4S�jrqS\89R:4S�jrrS\\90R:4S�jrsS\91R:4S�jrtS\92R:4S�jruS\93R:4S�jrvS�S�\
S�\\94R:S\95R:4S�jjrwS\96R:4S�jrxS\97R:4S�jryS\98R:4S�jrzS\99R:4S�jr{S\100R:4S�jr|S\101R:4S�jr}S\102R:4S�jr~S\103R:4S�jrS\104R:4S�jr�S\105R:4S�jr�S\106R:4S�jr�S\107R:4S�jr�S\108R:4S�jr�S\109R:4S�jr�S\110R:4S�jr�S\"\111R:4S�jr�S\"\112R:4S�jr�S\113R:4S�jr�S\4S�jr�S\114R:4S�jr�S\"\115R:4S�jr�S\"\116R:4S�jr�S�r�g)��CParser�2a*Recursive-descent C parser.117 118Usage:119    parser = CParser()120    ast = parser.parse(text, filename)121 122The `lexer` parameter lets you inject a lexer class (defaults to CLexer).123The parameters after `lexer` are accepted for backward compatibility with124the old PLY-based parser and are otherwise unused.125Tzpycparser.lextabzpycparser.yacctabF��lex_optimize�lexer�lextab�
yacc_optimize�yacctab�126yacc_debug�taboutputdirrNc���U"URURURURS9Ul[5/Ul[UR5Ulg)N)�127error_func�on_lbrace_func�on_rbrace_func�type_lookup_func)	�_lex_error_func�_lex_on_lbrace_func�_lex_on_rbrace_func�_lex_type_lookup_func�clex�dict�_scope_stack�_TokenStream�_tokens)rr4r5r6r7r8r9r:s        r�__init__�CParser.__init__>sR��"��+�+��3�3��3�3�!�7�7�	128��	�59�F�8���%1�$�)�)�%<��r"r�filename�debugc�2�[5/UlURRX5 [	UR5UlUR
5nUR5nUb.URSUR3URU55 U$)z�Parses C code and returns an AST.129 130text:131    A string containing the C source code132 133filename:134    Name of the file being parsed (for meaningful135    error messages)136 137debug:138    Deprecated debug flag (unused); for backwards compatibility.139�before: )rErFrD�inputrGrH� _parse_translation_unit_or_empty�_peek�_parse_error�value�140_tok_coord)rrrKrL�ast�toks      r�parse�
CParser.parseZsw��"�V�H����	�	����'�#�D�I�I�.����3�3�5���j�j�l���?���������4�d�o�o�c�6J�K��141r"�linenorc�>�[URRXS9$)Nr)rrDrK)rrYrs   r�_coord�CParser._coordvs���$�)�)�,�,�6�I�Ir"�msg�coordc�"�[USU35e)Nz: )r.)rr]r^s   rrR�CParser._parse_errorys���E�7�"�S�E�*�+�+r"c�J�URR[55 g�N)rF�appendrE�rs r�_push_scope�CParser._push_scope|s����� � ���(r"c�n�[UR5S:�deURR5 g)Nr
)�lenrF�poprds r�142_pop_scope�CParser._pop_scopes-���4�$�$�%��)�)�)������r"�namec��URSRUS5(dURSU<S3U5 SURSU'g)z9Add a new typedef name (ie a TYPEID) to the current scope�����TzTypedef z1 previously declared as non-typedef in this scopeN�rF�getrR�rrlr^s   r�_add_typedef_name�CParser._add_typedef_name�sU��� � ��$�(�(��t�4�4�����4�(�"S�T��
�'+����"��d�#r"c��URSRUS5(aURSU<S3U5 SURSU'g)zPAdd a new object, function, or enum member name (ie an ID) to the143current scope144rnFzNon-typedef z- previously declared as typedef in this scopeNrorqs   r�_add_identifier�CParser._add_identifier�sW�����R� �$�$�T�5�1�1�����t�h�&S�T��
�',����"��d�#r"c�l�[UR5HnURU5nUcMUs $ g)z.Is *name* a typedef-name in the current scope?F)�reversedrFrp)rrl�scope�in_scopes    r�_is_type_in_scope�CParser._is_type_in_scope�s6���d�/�/�0�E��y�y���H��#���1�r"rc�D�URXRX#55 grb)rRr[)rr]rrs    rr@�CParser._lex_error_func�s�����#�{�{�4�8�9r"c�$�UR5 grb)rerds rrA�CParser._lex_on_lbrace_func�s�����r"c�$�UR5 grb)rjrds rrB�CParser._lex_on_rbrace_func�s�����r"c�$�URU5$)zzLooks up types that were previously defined with145typedef.146Passed to the lexer for recognizing identifiers that147are types.148)r{)rrls  rrC�CParser._lex_type_lookup_func�s���%�%�d�+�+r"�decl�modifierc��UnUnUR(aURnUR(aM[U[R5(aXlU$Un[UR[R5(d7URn[UR[R5(dM7URUlX5lU$)zTacks a type modifier on a declarator, and returns149the modified declarator.150 151Note: the declarator and modifier may be modified152)�type�153isinstancer�TypeDecl)rr�r��
modifier_head�
modifier_tail�	decl_tails      r�_type_modify_decl�CParser._type_modify_decl�s���!�
� �
�� � �)�.�.�M�� � � ��d�E�N�N�+�+�!%���O�154�I� �������@�@�%�N�N�	�!�������@�@�"+���M��*�N��Kr"�typenamec�4�Un[U[R5(d-URn[U[R5(dM-URUlURSSUlUHYn[U[R5(aM$[U5S:�aURSUR5 MQXClUs $ U(dl[UR[R5(dURSUR5 [R"S/URS9UlU$[R"UVVs/sHoURHofPM M snnUSRS9UlU$s snnf)z#Fixes a declaration. Modifies decl.Nr
z Invalid multiple types specified�Missing type in declarationr+�r^r)
r�rr�r��declnamerl�quals�IdentifierTyperhrRr^�FuncDecl�names)rr�r��typ�tn�idrls       r�_fix_decl_name_type�CParser._fix_decl_name_types4�����S�%�.�.�1�1��(�(�C��S�%�.�.�1�1��L�L��	��J�J�q�M��	��B��b�%�"6�"6�7�7��x�=�1�$��%�%�&H�"�(�(�S�!�H��K�
���d�i�i����8�8��!�!�"?����L��+�+�U�G�4�:�:�F�C�H����+�+� (�>��"�X�X�T��X���>�h�q�k�FW�FW��C�H����?s�F155�declspec�	_DeclSpec�newspec�kind�
_DeclSpecKindrcc��Uc[/////S9nOUnU(aXSRU5 U$XSRSU5 U$)z2See _DeclSpec for the specifier dictionary layout.��qual�storager��function�	alignmentr)rErc�insert)rr�r�r�rc�specs      r�_add_declaration_specifier�"CParser._add_declaration_specifier(sY����"���"�r�R��D��D���J���g�&���
�J���a��)��r"r��decls�	_DeclInfo�typedef_namespacec
�>�SUS;n/nUSRS5Gc�USSc�[US5S:dH[USS	R5S156:wd)URUSS	RS5(d?SnUSH"n[	US5(dMUR157n O UR
S
U5 [R"USS	RSSSUSUSS	R158S9USS'USS		O�[USS[R[R[R[R45(d�[[USS5n[U[R5(d-UR n[U[R5(dM-UR"c USS	RSUlUSS		UGH�n	U	SceU(a/[R$"SUSUSU	SU	SR159S9n160OV[R&"SUSUSUSUSU	SU	RS5U	RS5U	SR161S9	n162[U163R [R[R[R[R45(aU164nOUR)X�S5nU(aTU(a'UR+UR,UR1655 O&UR/UR,UR1665 [1[[R&[R$-U55nUR3U5 GM� U$)z�Builds a list of declarations all sharing the given specifiers.167If typedef_namespace is true, each declared name is added168to the "typedef namespace", which also includes objects,169functions, and enum constants.170�typedefr�r�bitsizeNr�r��rnr
�?r^�Invalid declarationr��r�r�r��alignr^r�)rlr�r�r�r^r��init�	rlr�r�r��funcspecr�r�r�r^)rprhr�r{�hasattrr^rRrr�r��Enum�Struct�Unionr�rrr�r��Typedef�Declr�rrrlrurrc)rr�r�r��171is_typedef�declarationsr^�t�decls_0_tailr��declaration�172fixed_decls            r�_build_declarations�CParser._build_declarations>sT���$�y�/�1�173�����8�<�<�	�"�*�174�Q�x���'���V��%��)��4��<��+�1�1�2�a�7��1�1�$�v�,�r�2B�2H�2H��2K�L�L��E�!�&�\��"�1�g�.�.�$%�G�G�E�!�*��%�%�&;�U�C�$)�>�>�!�&�\�"�-�3�3�A�6����{�+��v�,�r�*�0�0�$��a��� ���L��$� ��a��� ����U�\�\�5�;�;��8L�8L�M��� $�C��q��&�)9�:��$�\�5�>�>�B�B�#/�#4�#4�L�%�\�5�>�>�B�B��(�(�0�,0��L��,<�,B�,B�1�,E�L�)��V��R�(��D���<�+�+�+��#�m�m���v�,� ��O��f���v�,�,�,���$�j�j���v�,��{�+� ��O�!�*�-��f�����&�)� �H�H�Y�/��v�,�,�,�175���� � ����U�\�\�5�;�;��8L�8L�M���)�176�!�5�5�k��<�P�177�!���*�*�:�?�?�J�<L�<L�M��(�(����*�:J�:J�K�.��U�Z�Z�%�-�-�/��<��J�
���178�+�U�X�r"�param_decls�bodyc	���SUS;aURSUR5 URU[USSS9/SS9Sn[R179"XSXBRS	9$)180zBuilds a function definition.r�r�zInvalid typedefN�r�r�r�T�r�r�r�r)r�r�r�r^)rRr^r�rEr�FuncDef)rr�r�r�r�r�s      r�_build_function_definition�"CParser._build_function_definition�su����Y��'����/����<��.�.���T��d�;�<�"�/�181��	
���}�}��D�182�183�184�	185r"�tokenc�N�US:Xa[R$[R$)zKGiven a token (either STRUCT or UNION), selects the186appropriate AST class.187�struct)rr�r�)rr�s  r�_select_struct_union_class�"CParser._select_struct_union_class�s ���H���<�<���;�;�r"�kc�8�URRU5$)z:Return the k-th next token without consuming it (1-based).)rH�peek�rr�s  rrQ�
CParser._peek�s���|�|� � ��#�#r"c�F�URU5nUbUR$S$)zDReturn the type of the k-th next token, or None if absent (1-based).N)rQr�)rr�rVs   r�188_peek_type�CParser._peek_type�s"���j�j��m���?�s�x�x�4��4r"c��URR5nUc'URSURR5 gU$)NzAt end of input)rH�nextrRrDrK�rrVs  r�_advance�CParser._advance�s9���l�l���!���;����/����1C�1C�D��Jr"�189token_typec�j�UR5nUb URU:XaUR5$g)z�Conditionally consume next token, only if it's of token_type.190 191If it is of the expected type, consume and return it.192Otherwise, leaves the token intact and returns None.193N)rQr�r��rr�rVs   r�_accept�CParser._accept�s.���j�j�l���?�s�x�x�:�5��=�=�?�"�r"c��UR5nURU:wa.URSUR3UR	U55 U$)NrN)r�r�rRrSrTr�s   r�_expect�CParser._expect�sB���m�m�o���8�8�z�!���������4�d�o�o�c�6J�K��194r"c�6�URR5$rb)rH�markrds r�_mark�
CParser._mark�s���|�|� � �"�"r"r�c�:�URRU5 grb)rH�reset�rr�s  r�_reset�CParser._reset�s�������4� r"rVc�N�URURUR5$rb)r[rYrr�s  rrT�CParser._tok_coord�s���{�{�3�:�:�s�z�z�2�2r"c�b�U=(d UR5nUcgUR[;$�NF)rQr��_DECL_STARTr�s  r�_starts_declaration�CParser._starts_declaration�s)���!�T�Z�Z�\���;���x�x�;�&�&r"c�b�U=(d UR5nUcgUR[;$r�)rQr��_STARTS_EXPRESSIONr�s  r�_starts_expression�CParser._starts_expression�s*���!�T�Z�Z�\���;���x�x�-�-�-r"c�`�UR5nUcgU[;agUR5$)NFT)r��_STARTS_STATEMENTr��r�tok_types  r�_starts_statement�CParser._starts_statement�s2���?�?�$������(�(���&�&�(�(r"�id_onlyc�Z�UR5nUcgUS;agU(aUS:H$US;$)NF>�TIMES�LPARENT�ID>r	�TYPEID�r�)rrrs   r�_starts_declarator�CParser._starts_declarators=���?�?�$������*�*����t�#�#��+�+�+r"c�n�UR5nUR5up#URU5 X#4$rb)r��_scan_declarator_name_infor�)rr�r�	saw_parens    r�_peek_declarator_name_info�"CParser._peek_declarator_name_infos3���z�z�|��"�=�=�?������D���"�"r"�allow_abstract�typeid_paren_as_abstractc��UR5up4UbU(atUS:XanU(agU(dLUR5nUbURU5OURRnURSU5 UR
5nUS4$US:Xa0U(aUR5nUS4$UR5nUS4$UR5nUS4$)Nr195zInvalid declaratorFT)196rrQrTrDrKrR�_parse_abstract_declarator_opt� _parse_typeid_noparen_declarator�_parse_typeid_declarator�_parse_id_declarator)rrr�	name_typerrVr^r�s        r�_parse_any_declarator�CParser._parse_any_declarators��� $�>�>�@��	���$��h�)>�9�!��j�j�l��03������,�T�Y�Y�EW�EW���!�!�"6��>��6�6�8�D���;���� �'��<�<�>��197�T�z���4�4�6���T�z���,�,�.�D��T�z�r"c���SnURS5(aZUR5[;a*UR5 UR5[;aM*URS5(aMZUR	5nUcSU4$UR198S;aUR5 UR199U4$UR200S:Xa�SnUR5 UR
5up4U(aSnSnUR	5nUcSU4$UR201S:XaUS-
nO1UR202S:Xa!US-nUR5 US:XaX14$M_UR5 MpSU4$)	NFr>r	r203rTr
�RPARENr)r�r��_TYPE_QUALIFIERr�rQr�r)rrrVr�nested_paren�depths      rr�"CParser._scan_declarator_name_info/sM���	��l�l�7�#�#��/�/�#��6��
�
���/�/�#��6��l�l�7�#�#��j�j�l���;���?�"��8�8�'�'��M�M�O��8�8�Y�&�&��8�8�x���I��M�M�O�%)�%D�%D�%F�"�H�� �	��E���j�j�l���;���?�*��8�8�x�'��Q�J�E��X�X��)��Q�J�E��M�M�O���z���&�&���
�
����Y��r"c�(�UR5S;$)N>r�LBRACKETrrds r�"_starts_direct_abstract_declarator�*CParser._starts_direct_abstract_declaratorRs����� �$:�:�:r"c�^�UR5nUSL=(a UR[;$rb)rQr��_ASSIGNMENT_OPSr�s  r�_is_assignment_op�CParser._is_assignment_opUs%���j�j�l���$��>�3�8�8��#>�>r"c�204�UR5nURS5nUcgUR5(dURU5 gUR	5nURS5cURU5 gX1U4$)a:Parse and return a parenthesized type name if present.205 206Returns (typ, mark, lparen_tok) when the next tokens look like207'(' type_name ')', where typ is the parsed type name, mark is the208token-stream position before parsing, and lparen_tok is the LPAREN209token. Returns None if no parenthesized type name is present.210rNr)r�r�r�r��_parse_type_name)rr��211lparen_tokr�s    r�_try_parse_paren_type_name�"CParser._try_parse_paren_type_nameYs{���z�z�|���\�\�(�+�212�����'�'�)�)��K�K�����#�#�%���<�<��!�)��K�K�����*�$�$r"c��UR5c[R"/5$[R"UR55$rb)rQr�FileAST�_parse_translation_unitrds rrP�(CParser._parse_translation_unit_or_emptyts5���:�:�<���=�=��$�$��}�}�T�9�9�;�<�<r"c��/nUR5b2URUR55 UR5bM2U$rb)rQ�extend�_parse_external_declaration)r�exts  rr2�CParser._parse_translation_unitzs;�����j�j�l�&��J�J�t�7�7�9�:��j�j�l�&��213r"c214��UR5nUc/$URS:XaUR5 /$URS;aUR5/$UR	S5(a/$URS:XaUR5$UR
U5(d�UR5nSnUR5S:waURSUR5 [///[R"S/URS9//S	9nURUUUUR5S2159nU/$UR!SS9upFnUR#5up�US
:wa$UR%XF5n216UR'S5 U217$UR5nUR5S:XdUR
5(a�SnUR
5(aUR)5nUR5S:waURSUR5 US(d[R"S/US9/US'URUUUUR5S2189nU/$[USSS9nUR	S5(aUR+5US'UR-US9n219UR/XJSS9n220UR'S5 U221$)N�PPHASH��_PRAGMA�PPPRAGMA�SEMI�_STATIC_ASSERT�LBRACEzInvalid function definitionr+r�)r�r�r�r�r�)r�r�r�r�T��
allow_no_typer	r�r��EQUALSr�)�firstr�)rQr��_parse_pp_directive�_parse_pppragma_directiver��_parse_static_assertr�rr�rRr^rErr�r��_parse_compound_statement�_parse_declaration_specifiersr�_parse_decl_body_with_specr��_parse_declaration_list�_parse_initializer�_parse_init_declarator_listr�)rrVr�r�r��func�saw_type�222spec_coordr�_r��	decl_dicts            rr6�#CParser._parse_external_declaration�s����j�j�l���;��I��8�8�x���$�$�&��I��8�8�.�.��2�2�4�5�5��<�<�����I��8�8�'�'��,�,�.�.��'�'��,�,��,�,�.�D��K���� �H�,��!�!�"?����L�"�����*�*�E�7�$�*�*�E�F���D��2�2���'��3�3�5�	3��D��6�M�&*�%G�%G��&H�&223�"��224��6�6�8��	�����3�3�D�C�E��L�L�� ��L��(�(�*���?�?���(�D�,D�,D�,F�,F��K��'�'�)�)�"�:�:�<����� �H�,��!�!�"?����L���<� %� 4� 4�e�W�J� O�P��V���2�2���'��3�3�5�	3��D��6�M�!%�4�d�D�!I�	��<�<��!�!� $� 7� 7� 9�I�f���0�0�y�0�A���(�(�d�SW�(�X�����V���r"c�H�UR5nURS5 U$�Nr>)�_parse_decl_bodyr��rr�s  r�_parse_declaration�CParser._parse_declaration�s!���%�%�'�����V���r"c�H�URSS9upnURX5$)NTrA)rIrJ)rr�rOrQs    rrV�CParser._parse_decl_body�s+�� �>�>�T�>�R�����.�.�t�>�>r"rOc�0�SnU(a&UR5(aUR5nO#URSS9(aURSS9nUc�USn[R[R[R2254n[
U5S:XaO[USU5(a;[R"SUSUSUSUS	USSSUSRS2269	/nU$URU[SSSS9/SS9nU$URXSS9nU$)
NT�rr�r
rr�r�r�r�r�r�r�)rrMrr�r�r�rhr�r�r^r�rE)rr�rOr��ty�s_u_or_es      rrJ�"CParser._parse_decl_body_with_spec�s8������&�&�(�(��8�8�:����&�&�t�&�4��8�8��8�F���=��f��B����e�k�k�5�:�:�>�H��2�w�!�|�227�2�a�5�(� ;� ;��J�J�!�"�6�l�"�;�/� $�Y��!%�j�!1���U�!� $� ��e�k�k�228���0���0�0���T��d�C�D�&*�1�����	�,�,��$�-��E��r"c��/nUR5(a6URUR55 UR5(aM6U$rb)r�r5rXrWs  rrK�CParser._parse_declaration_listsA�����&�&�(�(��L�L��0�0�2�3��&�&�(�(��r"rBc	�(�SnSnSnUR5nUcGO*URS:Xa5UcURU5nURX R	5SSS9nM[URS:XaLURS5S	:Xa7UcURU5nURX R
5S229SS9nSnM�UR[;a@UcURU5nURX R5RSSS9nGMUR[;a@UcURU5nURX R5RSSS9nGM_UR[;a@UcURU5nURX R5RS
SS9nGM�UR[;ahUcURU5nUR5nURU[R"UR/URU5S9S230SS9nSnGM/URS:XapU(aO�UcURU5nUR5nURU[R"UR/URU5S9S231SS9nSnGM�URS;a8UcURU5nURX R5S232SS9nSnGM�URS:Xa8UcURU5nURX R!5S233SS9nSnGM?Uc&UR#SUR$R&5 U(dU(dUR#SU5 X#U4$)avParse declaration-specifier sequence.234 235allow_no_type:236    If True, allow a missing type specifier without error.237 238Returns:239    (spec, saw_type, first_coord) where spec is a dict with240    qual/storage/type/function/alignment entries, saw_type is True241    if a type specifier was consumed, and first_coord is the coord242    of the first specifier token (used for diagnostics).243NFT�_ALIGNASr��rc�_ATOMICr�rr�r�r�r�r�r244��UNION�STRUCT�ENUMr�r�)rQr�rTr��_parse_alignment_specifierr��_parse_atomic_specifierrr�rS�_STORAGE_CLASS�_FUNCTION_SPEC�_TYPE_SPEC_SIMPLErr�� _parse_struct_or_union_specifier�_parse_enum_specifierrRrDrK)rrBr�rO�first_coordrVs      rrI�%CParser._parse_declaration_specifierss�����������*�*�,�C��{���x�x�:�%��&�"&�/�/�#�"6�K��6�6��9�9�;�[�QU�7�����x�x�9�$�����);�x�)G��&�"&�/�/�#�"6�K��6�6��6�6�8�&��7��� ����x�x�?�*��&�"&�/�/�#�"6�K��6�6��-�-�/�/�/���7�����x�x�>�)��&�"&�/�/�#�"6�K��6�6��-�-�/�/�/��4�7�����x�x�>�)��&�"&�/�/�#�"6�K��6�6��-�-�/�/�/��D�7�����x�x�,�,��&�"&�/�/�#�"6�K��m�m�o���6�6���(�(�#�)�)��D�O�O�C�<P�Q���	7��� ����x�x�8�#����&�"&�/�/�#�"6�K��m�m�o���6�6���(�(�#�)�)��D�O�O�C�<P�Q���	7��� ����x�x�.�.��&�"&�/�/�#�"6�K��6�6��?�?�A�6�RV�7��� ����x�x�6�!��&�"&�/�/�#�"6�K��6�6��4�4�6��t�7��� �����<����3�T�Y�Y�5G�5G�H��
����;�[�I��{�*�*r"c	�8�SnSnSnSnUR5nUcGO�URS:Xa7UcURU5nURXR	5SSS9nSnM]URS:XaLURS5S:Xa7UcURU5nURXR
5S	SS9nSnM�UR[;a@UcURU5nURXR5RS245SS9nGM
UR[;ahUcURU5nUR5nURU[R"UR/URU5S9S	SS9nSnGM�URS:XapU(aO�UcURU5nUR5nURU[R"UR/URU5S9S	SS9nSnGM	URS
;a8UcURU5nURXR5S	SS9nSnGMQURS:Xa8UcURU5nURXR5S	SS9nSnGM�Uc&URSUR R"5 U(dU(dURSU5 UR%S5c/US'UR%S5c/US'U$)NFTrdr�rerfr�rr�r�r�r246rgrjzInvalid specifier listr�r�r�)rQr�rTr�rkr�rlrr�rSrorr�rprqrRrDrKrp)rr�rO�
saw_alignmentrrrVs      r�_parse_specifier_qualifier_list�'CParser._parse_specifier_qualifier_list�s"�������
�����*�*�,�C��{���x�x�:�%��&�"&�/�/�#�"6�K��6�6��9�9�;�[�QU�7���!%�
���x�x�9�$�����);�x�)G��&�"&�/�/�#�"6�K��6�6��6�6�8�&��7��� ����x�x�?�*��&�"&�/�/�#�"6�K��6�6��-�-�/�/�/���7�����x�x�,�,��&�"&�/�/�#�"6�K��m�m�o���6�6���(�(�#�)�)��D�O�O�C�<P�Q���	7��� ����x�x�8�#����&�"&�/�/�#�"6�K��m�m�o���6�6���(�(�#�)�)��D�O�O�C�<P�Q���	7��� ����x�x�.�.��&�"&�/�/�#�"6�K��6�6��?�?�A�6�RV�7��� ����x�x�6�!��&�"&�/�/�#�"6�K��6�6��4�4�6��t�7��� �����<����6��	�	�8J�8J�K��
����;�[�I��8�8�I��&� �D��O��8�8�J��'�!�D����r"c���/nUR5[;aCURUR5R5 UR5[;aMCU$rb)r�rrcr�rS)rr�s  r�_parse_type_qualifier_list�"CParser._parse_type_qualifier_list�sD�����o�o��?�2��L�L�����.�.�/��o�o��?�2��r"c��URS5nURS5 UR5(aFUR5nURS5 [R"X RU55$UR
5nURS5 [R"X0RU55$)Nrdrr)r�r�r,r�AlignasrT�_parse_constant_expression)rrVr��exprs    rrk�"CParser._parse_alignment_specifiers����l�l�:�&�����X���#�#�%�%��'�'�)�C��L�L��"��=�=��o�o�c�&:�;�;��.�.�0�����X���}�}�T�?�?�3�#7�8�8r"c���URS5 URS5 UR5nURS5 URRS5 U$)Nrfrr�_Atomic)r�r,r�rc)rr�s  rrl�CParser._parse_atomic_specifiersK�����Y�����X���#�#�%�����X���	�	����#��247r"rDc���UbU/OURUS9/nURS5(a6URURUS95 URS5(aM6U$)Nr]�COMMA)�_parse_init_declaratorr�rc)rrDrr�s    rrM�#CParser._parse_init_declarator_listsk��248� ��G��-�-�g�-�>�?�	��l�l�7�#�#��L�L��4�4�W�4�E�F��l�l�7�#�#��r"c��U(aUR5OUR5nSnURS5(aUR5n[	X#SS9$)NrCr�)r�_parse_declaratorr�rLrE)rrr�r�s    rr��CParser._parse_init_declarator'sL��.5�t�(�(�*�4�;Q�;Q�;S�����<�<��!�!��*�*�,�D���$�7�7r"c�n�UR5nURUR5nUR5S;a�UR5nUR5S:Xa�UR5 UR	S5(a!U"UR/URU5S9$UR
5nURS5 U"URX@RU5S9$U"URSURU5S9$UR5S:XatUR5nUR	S5(aU"S/URU5S9$UR
5nURS5 U"SX@RU5S9$URSURU55 g)N>r	r249r@�RBRACE)rlr�r^z Invalid struct/union declaration)	r�r�rSr�r�rT�_parse_struct_declaration_listr�rR)rrV�klass�name_tokr��	brace_toks      rrp�(CParser._parse_struct_or_union_specifier3so���m�m�o���/�/��	�	�:���?�?�� 0�0��}�}��H���� �H�,��
�
���<�<��)�)� �%�^�^�2�T�_�_�X�=V����;�;�=�����X�&��!���u�O�O�H�<U�����^�^�4�t���x�7P��
��?�?���(��
�
��I��|�|�H�%�%��$�b����	�8R�S�S��7�7�9�E��L�L��"��d�%���y�7Q�R�R����<�d�o�o�c�>R�Sr"c��/nUR5S;a<UR5nUcM)URU5 UR5S;aM<U$�N>Nr�)r��_parse_struct_declarationr5)rr��itemss   rr��&CParser._parse_struct_declaration_listTsR�����o�o��'7�7��2�2�4�E��}���L�L���	�o�o��'7�7�250�r"c	���UR5S:XaUR5 gUR5S;aUR5/$UR5nSUR	S/5;deSnUR5(dUR5S:XaUR
5nUb URS5 URXS9$[US5S:XakUSS	n[U[R5(aUnO[R"U5nURS5 URU[USSS2519/S9$URS5 URU[SSSS2529/S9$)Nr>r;r�r��COLON�r�r�r�r
rr�)r�r�rFrvrpr�_parse_struct_declarator_listr�r�rhr�r�Noder�rE)rr�r��node�	decl_types     rr��!CParser._parse_struct_declaration`sl���?�?���&��M�M�O���?�?�� 7�7��2�2�4�5�5��3�3�5�������B� 7�7�7�7����"�"�$�$����(9�W�(D��6�6�8�E����L�L�� ��+�+��+�C�C��t�F�|���!���<��?�D��$��253�254�+�+� �	�!�0�0��6�	��L�L�� ��+�+��$�I�D�$�"O�!P�,��
�	
���V���'�'��d��4��F�G�(�255�	256r"c���UR5/nURS5(a7URUR55 URS5(aM7U$�Nr�)�_parse_struct_declaratorr�rcrWs  rr��%CParser._parse_struct_declarator_list�sM���.�.�0�1���l�l�7�#�#��L�L��6�6�8�9��l�l�7�#�#��r"c��URS5(a-UR5n[R"SSSS5SUS.$UR	5nURS5(aUR5nUSUS.$USSS.$)Nr�r�)r�r}rr�r�)rr�r�s   rr�� CParser._parse_struct_declarator�s����<�<�� � ��5�5�7�G����t�T�4��>��"��
��%�%�'���<�<�� � ��5�5�7�G� �$�7�C�C��d�t�<�<r"c�h�URS5nUR5S;a�UR5nUR5S:XaaUR5 UR5nURS5 [R257"URX0RU55$[R258"URSURU55$URS5 UR5nURS5 [R259"SX0RU55$)Nrj>r	r260r@r�)r�r�r��_parse_enumerator_listrr�rSrT)rrVr��enumss    rrq�CParser._parse_enum_specifier�s����l�l�6�"���?�?�� 0�0��}�}��H���� �H�,��
�
���3�3�5�����X�&��z�z�(�.�.�%����9M�N�N��:�:�h�n�n�d�D�O�O�C�4H�I�I����X���+�+�-�����X���z�z�$����s�';�<�<r"c�J�UR5n[R"U/UR5nUR	S5(aZUR5S:XaU$UR5nURRU5 UR	S5(aMZU$)Nr�r�)�_parse_enumeratorr�EnumeratorListr^r�r��enumeratorsrc)r�enum�	enum_lists   rr��CParser._parse_enumerator_list�s����%�%�'���(�(�$�����<�	��l�l�7�#�#���� �H�,�����)�)�+�D��!�!�(�(��.�	�l�l�7�#�#�261�r"c�&�URS5nURS5(aUR5nOSn[R"UR262X R
U55nURURUR5 U$)Nr	rC)263r�r�r}r�264EnumeratorrSrTrurlr^)rr�rSr�s    rr��CParser._parse_enumerator�sn���<�<��%���<�<��!�!��3�3�5�E��E����������x�7P�Q�����T�Y�Y��265�266�3��r"c�4�URSSS9upUceU$)NF�rr)r)rr�rQs   rr��CParser._parse_declarator�s1���,�,� �5�-�267��������r"c�"�URSSS9$)Nr�T�r��allow_paren��_parse_declarator_kindrds rr�CParser._parse_id_declarator�s���*�*��$�*�G�Gr"c�"�URSSS9$)N�typeidTr�r�rds rr� CParser._parse_typeid_declarator�s���*�*��d�*�K�Kr"c�"�URSSS9$)Nr�Fr�r�rds rr�(CParser._parse_typeid_noparen_declarator�s���*�*��e�*�L�Lr"r�c��SnUR5S:XaUR5nURXS9nUbURXC5$U$)Nr�r�)r��_parse_pointer�_parse_direct_declaratorr�)rr�r��ptr�directs     rr��CParser._parse_declarator_kind�sR�����?�?���'��%�%�'�C��.�.�t�.�M���?��)�)�&�6�6��
r"c	�V�U(a8URS5(a"URUSS9nURS5 OZUS:XaURS5nOURS5n[R"UR268SSSUR
U5S9nURU5$)	NrTr�rr�r	r269r�)r�r�r�rr�rSrT�_parse_decl_suffixes)rr�r�r�r�s     rr�� CParser._parse_direct_declarator�s����4�<�<��1�1��.�.�t��.�F�D��L�L��"��t�|��<�<��-���<�<��1���>�>�!�������o�o�h�/��D��(�(��.�.r"c���UR5S:Xa"URXRU55nM7UR5S:Xa$URU5nURX5nMoU$)zAParse a chain of array/function suffixes and attach them to decl.r$r)r�r��_parse_array_decl�_parse_function_decl)rr�rNs   rr��CParser._parse_decl_suffixes�sl������ �J�.��-�-�d�4J�4J�4�4P�Q������ �H�,��0�0��6���-�-�d�9�����r"�	base_declc�6�URSURS9$�N)�	base_typer^)�_parse_array_decl_commonr^)rr�s  rr��CParser._parse_array_decl	s���,�,�t�9�?�?�,�S�Sr"r�c�^^�URS5nTcURU5mUU4SjnURS5(aFS/UR5=(d /-nUR	5nURS5 U"Xe5$UR5[;a�UR5=(d /nURS5(a/US/-nUR	5nURS5 U"Xe5$URS5nU(aIURS5 [R"URURU55nU"Xe5$SnUR5(aUR	5nURS5 U"Xe5$URS5nU(aJURS5 [R"URURU55nU"U/5$SnUR5(aUR	5nURS5 U"U/5$)a	Parse an array declarator suffix and return an ArrayDecl node.270 271base_type:272    Base declarator node to attach (None for direct-declarator parsing,273    TypeDecl for abstract declarators).274 275coord:276    Coordinate to use for the ArrayDecl. If None, uses the '[' token.277r$Nc�0>�[R"TXTS9$)N)r��dim�	dim_qualsr^)r�	ArrayDecl)r�r�r�r^s  ��r�make_array_decl�9CParser._parse_array_decl_common.<locals>.make_array_decls����?�?��C�E��
r"�STATIC�static�RBRACKETr)r�rTr�ry�_parse_assignment_expressionr�rrr	rSr�)rr�r^�278lbrack_tokr�r�r��	times_toks ``     rr�� CParser._parse_array_decl_commons�����\�\�*�-�279��=��O�O�J�/�E�	�280�<�<��!�!�!�281�d�&E�&E�&G�&M�2�N�I��3�3�5�C��L�L��$�"�3�2�2��?�?���/��7�7�9�?�R�I��|�|�H�%�%�%��282�2�	��7�7�9�����Z�(�&�s�6�6����W�-�I�����Z�(��h�h�y������	�0J�K��&�s�6�6��C��&�&�(�(��7�7�9���L�L��$�"�3�2�2��L�L��)�	���L�L��$��(�(�9�?�?�D�O�O�I�,F�G�C�"�3��+�+����"�"�$�$��3�3�5�C����Z� ��s�B�'�'r"c�H�URS5 URS5(aSnOFUR5(aUR5OUR	5nURS5 [283R"USURS9nUR5S:Xa}URbpURRHVn[U[284R5(a U$[USS5nU(dM;URXTR5 MX U$)Nrr��argsr�r^r@rl)r�r�r��_parse_parameter_type_list�_parse_identifier_list_optrr�r^r�r��paramsr��
EllipsisParam�getattrru)rr�r�rN�paramrls      rr��CParser._parse_function_declFs������X���<�<��!�!��D��+�+�-�-��/�/�1��4�4�6�
�285
�L�L��"��~�~�4�d�)�/�/�J���?�?���(��y�y�$�!�Y�Y�-�-�E�!�%��)<�)<�=�=��286��	#�5�&�$�7�D��t��,�,�T�;�;�?�.��r"c�6�/nURS5nU(aTUR5=(d /nURX0RU545 URS5nU(aMTU(dgSnUHup5[R287"X4US9nM U$)Nr)r�r�r^)r�ryrcrTr�PtrDecl)r�starsr�r�r�r^s      rr��CParser._parse_pointer`s������L�L��)�	���3�3�5�;��E��L�L�%����!;�<�=����W�-�I��i�288����!�L�E��-�-�e�U�C�C�"��289r"c�4�UR5nUR5S:XasURS5S:Xa^UR5 UR5nURR	[290R"URU555 U$�Nr�r��ELLIPSIS)�_parse_parameter_listr�r�r�rcrr�rT)rr��ell_toks   rr��"CParser._parse_parameter_type_listqsn���+�+�-���?�?���'�D�O�O�A�,>�*�,L��M�M�O��m�m�o�G��M�M� � ��!4�!4�T�_�_�W�5M�!N�O��
r"c��UR5n[R"U/UR5nUR	5S:XayUR	S5S:wadUR5 URRUR55 UR	5S:XaUR	S5S:waMdU$r�)�_parse_parameter_declarationr�	ParamListr^r�r�r�rc�rrDr�s   rr��CParser._parse_parameter_listzs����1�1�3�����%��%�+�+�6���o�o��7�*�t���q�/A�Z�/O��M�M�O��M�M� � ��!B�!B�!D�E��o�o��7�*�t���q�/A�Z�/O��
r"c	�l�URSS9upnUS(d[R"S/US9/US'UR5(aHUR	SSS9upEU(aURU[
USSS9/S9S	$URXU5$UR5nURXU5$)291NTrAr�r+r�r�r�r�r)	rIrr�rrr�rE�_build_parameter_declarationr)rr�rQrPr��is_nameds      rr��$CParser._parse_parameter_declaration�s���"�@�@�t�@�T�����F�|�!�0�0�%��292�K�L�D��L��"�"�$�$�!�7�7�#�d�8��N�D���/�/��d��4��&N�%O�0������4�4�T��L�L��2�2�4���0�0��Z�H�Hr"rPc��[US5S:�ae[USSR5S:XaFURUSSRS5(aURU[	USSS9/S9S$[293R"SUSSU=(d [294R"SSSS5US	9nURX!S5$)295Nr�r
rnrr�r�r3r��rlr�r�r�r^)	rhr�r{r�rEr�Typenamer�r�)rr�r�rPs    rr��$CParser._build_parameter_declaration�s���
��V����!��D��L��$�*�*�+�q�0��&�&�t�F�|�B�'7�'=�'=�a�'@�A�A��+�+��$�D�t�T�"J�!K�,����
��~�~���v�,���?�����d�D�$�?��296���'�'��6�l�;�;r"c�L�UR5S:XagUR5$�Nr)r��_parse_identifier_listrds rr��"CParser._parse_identifier_list_opt�s#���?�?���(���*�*�,�,r"c��UR5n[R"U/UR5nUR	S5(aAUR297R
UR55 UR	S5(aMAU$r�)�_parse_identifierrr�r^r�r�rcr�s   rr�CParser._parse_identifier_list�sf���&�&�(�����%��%�+�+�6���l�l�7�#�#��M�M� � ��!7�!7�!9�:��l�l�7�#�#��
r"c�r�UR5nUR5nSnUb
URnOUS(aUSSRn[R"SUSSSSU=(d [R298"SSSS5US9n[
[RURXAS55$)Nr�rr3r�r)rvrr^rrr�rr�)rr�r�r^r�s     rr,�CParser._parse_type_name�s����3�3�5���2�2�4�������J�J�E�
�&�\���L��O�)�)�E��>�>���v�,�q�/���?�����d�D�$�?��299���E�N�N�D�$<�$<�X�F�|�$T�U�Ur"c�@�UR5S:XaeUR5nUR5(aUR5nO[R300"SSSS5nUceUR
X!5$UR5(aUR5$g)Nr)r�r�r%�!_parse_direct_abstract_declaratorrr�r�)rr�r�s   rr�&CParser._parse_abstract_declarator_opt�s����?�?���'��%�%�'�C��6�6�8�8��=�=�?���~�~�d�D�$��=���?�"�?��)�)�$�4�4��2�2�4�4��9�9�;�;�r"c	�F�URS5nU(a�UR5(dUR5S:Xa^UR5nUR	S5 [301R"U[302R"SSSS5URU5S9nOrUR5nUR	S5 UceOKUR5S:XaUR5nO&URSURR5 URW5$)Nrrr�r$zInvalid abstract declarator)r�r�r��_parse_parameter_type_list_optr�rr�r�rTr�_parse_abstract_array_baserRrDrKr�)rr-r�r�s    rr
�)CParser._parse_direct_abstract_declarator�s����\�\�(�+�303���'�'�)�)�T�_�_�->�(�-J��<�<�>�����X�&��~�~������d�D�$�?��/�/�*�5����:�:�<�����X�&��'�'�'�
�_�_�
�*�
,��2�2�4�D����;�T�Y�Y�=O�=O�P��(�(��.�.r"c�L�UR5S:XagUR5$r)r�r�rds rr�&CParser._parse_parameter_type_list_opt�s#���?�?���(���.�.�0�0r"c�P�UR[R"SSSS5SS9$r�)r�rr�rds rr�"CParser._parse_abstract_array_bases.���,�,��n�n�T�4��t�<�D�-�304�	305r"c�~�UR5nU==S:XaO	=S:XaO O  UR5$=S:Xa&URS5S:Xa UR5$=S:Xa UR5$==S:XaO	=S:XaO O  UR5$==S	:XaO=S306:XaO	=S:XaO O  UR	5$==S:XaO=S
:XaO=S:XaO	=S:XaO O  UR5$==S:XaO	=S:XaO O  UR
5$S:XaUR5$UR5$)N�CASE�DEFAULTr	r�r�r@�IF�SWITCH�WHILE�DO�FOR�GOTO�BREAK�CONTINUE�RETURNr=r<r?)	r��_parse_labeled_statementrH�_parse_selection_statement�_parse_iteration_statement�_parse_jump_statementrFrG�_parse_expression_statementrs  r�_parse_statement�CParser._parse_statement
s����?�?�$���#��)�#��4�4�6�6������+�w�6���4�4�6�6���5�5�7�7� �����6�6�8�8�'��4�%�'��6�6�8�8�9��'�J��9��1�1�3�3�'��i�'��5�5�7�7�!��0�0�2�2���7�7�9�9r"c���UR5S;aEUR5nUR5n[R"X/-USR307S9$UR5$)Nr;r��block_itemsr^)r��_parse_pppragma_directive_listr(r�Compoundr^)r�pragmas�stmts   r�_parse_pragmacomp_or_statement�&CParser._parse_pragmacomp_or_statement$s]���?�?�� 7�7��9�9�;�G��(�(�*�D��>�>�g��.>�g�a�j�FV�FV�W�W��$�$�&�&r"c�l�UR5(aUR5$UR5$rb)r�rXr(rds r�_parse_block_item�CParser._parse_block_item,s/���#�#�%�%��*�*�,�,��$�$�&�&r"c��/nUR5S;agUR5n[U[5(aUS/:XaMBUR	U5 OURU5 UR5S;aMgU$r�)r�r4r��listr5rc)rr��items   r�_parse_block_item_list�CParser._parse_block_item_list2so�����o�o��'7�7��)�)�+�D��$��%�%��D�6�>�����T�"����T�"��o�o��'7�7��r"c� �URS5nURS5(a$[R"SUR	U5S9$UR5nURS5 [R"X R	U5S9$)Nr@r�r+)r�r�rr.rTr9)r�308lbrace_tokr,s   rrH�!CParser._parse_compound_statement?sp���\�\�(�+�309��<�<��!�!��>�>�d�$�/�/�*�:U�V�V��1�1�3�����X���~�~�#�?�?�:�+F�310�	311r"c�>�UR5nU=S:Xa� UR5nURS5 UR5(aUR	5nO%[312R"URU55n[313R"URX0RU55$=S:Xa� UR5nUR5nURS5 UR5(aUR	5nO%[314R"URU55n[315R"XS/URU55$S:Xa�UR5nURS5 UR5(aUR	5nO%[316R"URU55n[317R"U/URU55$URSURR5 g)Nr	r�rrzInvalid labeled statement)r�r�r�rr1r�EmptyStatementrT�LabelrSr}�Case�DefaultrRrDrK)rrr�r0�case_tokr~�def_toks       rr#� CParser._parse_labeled_statementLs����?�?�$�����=�=�?�����W�%��)�)�+�+��>�>�@�D� �/�/�����0I�J�D��{�{�8�>�>�4����9R�S�S���=�=�?���6�6�8�����W�%��)�)�+�+��>�>�@�D� �/�/�����0I�J�D��z�z�$������0I�J�J���-�-�/�����W�%��)�)�+�+��>�>�@�D� �/�/�����0H�I�D��}�}�d�V�T�_�_�W�-E�F�F���!�!�"=�t�y�y�?Q�?Q�Rr"c	���UR5nUR=S:Xa� URS5 UR5nURS5 UR	5nURS5(a6UR	5n[R"X#X@RU55$[R"X#SURU55$S:XaqURS5 UR5nURS5 UR	5n[[R"XVURU555$URSURU55 g)Nrrr�ELSErzInvalid selection statement)r�r�r��_parse_expressionr1r�r�IfrTr�SwitchrR)rrV�cond�	then_stmt�	else_stmtr~r0s       rr$�"CParser._parse_selection_statementms���m�m�o���h�h�����X�&��-�-�/�����X�&� �?�?�A�	��<�<��'�'� $� C� C� E�I� �8�8�D�Y���PS�@T�U�U��x�x���t���s�7K�L�L�����X�&��-�-�/�����X�&��:�:�<��'����T����QT�AU�(V�W�W���!�!�"?����QT�AU�Vr"c	�f�UR5nUR=S:Xai URS5 UR5nURS5 UR	5n[318R"X#URU55$=S:Xa� UR	5nURS5 URS5 UR5nURS5 URS5 [319R"X#URU55$S:XGanURS5 UR5(a�UR5n[320R"X@RU55nUR5nURS5 UR5nURS5 UR	5n[321R"XRXcURU55$UR5nURS5 UR5nURS5 UR5nURS5 UR	5n[322R"XRXcURU55$URSURU55 g)Nrrrrr>rzInvalid iteration statement)r�r�r�rHr1r�WhilerT�DoWhiler�rX�DeclList�_parse_expression_opt�ForrR)rrVrKr0r�r��	next_exprs       rr%�"CParser._parse_iteration_statement�s���m�m�o���h�h�����X�&��-�-�/�����X�&��:�:�<���{�{�4�t���s�/C�D�D���:�:�<�����W�%����X�&��-�-�/�����X�&����V�$��}�}�T�����1E�F�F�����X�&��+�+�-�-� �3�3�5�E� �>�>�%����1E�F�D��5�5�7�D��L�L��(� $� :� :� <�I��L�L��*��>�>�@�D� �9�9�T��$�/�/�RU�BV�W�W��1�1�3�����V�$��1�1�3�����V�$� �6�6�8�	����X�&��:�:�<���y�y��Y�d�o�o�c�>R�S�S���!�!�"?����QT�AU�Vr"c�2�UR5nUR=S:XaS URS5nURS5 [R"UR323UR
U55$=S:Xa7 URS5 [R"UR
U55$=S:Xa7 URS5 [R"UR
U55$S:Xa�URS5(a&[R"SUR
U55$UR5nURS5 [R"X0R
U55$URSUR
U55 g)Nrr	r>r r!r"zInvalid jump statement)
r�r�r�r�GotorSrT�Break�Continuer��ReturnrHrR)rrVr�r~s    rr&�CParser._parse_jump_statement�s���m�m�o���h�h���<�<��-�����V�$��z�z�(�.�.�$�/�/�#�2F�G�G�����V�$��{�{�4�?�?�3�#7�8�8�����V�$��~�~�d�o�o�c�&:�;�;���<�<��'�'� �<�<��d�o�o�c�.B�C�C��-�-�/�����V�$��|�|�D�/�/�#�*>�?�?���!�!�":�D�O�O�C�<P�Qr"c��UR5nURS5nUc%[R"UR	U55$U$rU)rSr�rr?rT)rr~�semi_toks   rr'�#CParser._parse_expression_statement�sB���)�)�+���<�<��'���<��'�'�����(A�B�B��r"c�N�UR5(aUR5$grb)r�rHrds rrS�CParser._parse_expression_opt�s#���"�"�$�$��)�)�+�+�r"c�N�UR5nURS5(dU$XR5/nURS5(a7URUR55 URS5(aM7[R"X!R3245$r��r�r�rcr�ExprListr^�rr~�exprss   rrH�CParser._parse_expression�s}���0�0�2���|�|�G�$�$��K��8�8�:�;���l�l�7�#�#��L�L��:�:�<�=��l�l�7�#�#��~�~�e�Z�Z�0�0r"c��UR5S:XaHURS5S:Xa3UR5 UR5nURS5 U$UR	5nUR5(aKUR5RnUR5n[R"X2XBR5$U$)Nrr�r@r)r�r�rHr��_parse_conditional_expressionr)rSr�r�325Assignmentr^)r�compr~�op�rhss     rr��$CParser._parse_assignment_expression�s����?�?���(�T�_�_�Q�-?�8�-K��M�M�O��1�1�3�D��L�L��"��K��1�1�3���!�!�#�#�����&�&�B��3�3�5�C��#�#�B�c�:�:�>�>��r"c���UR5nURS5(aRUR5nURS5 UR	5n[326R"XX1R5$U$)N�CONDOPr�)�_parse_binary_expressionr�rHr�rir�	TernaryOpr^)rr~�iftrue�iffalses    rri�%CParser._parse_conditional_expression�sa���,�,�.���<�<��!�!��+�+�-�F��L�L��!��8�8�:�G��?�?�4��*�*�E�E��r"�min_prec�lhsc���UcUR5nUR5nUbUR[;aU$[URnXA:aU$URnUR5 UR5nUR5nUbUR[;aO-[URnX�:�aUR
X�5nOOMU[R"XRXbR5nM�rb)327�_parse_cast_expressionrQr��_BINARY_PRECEDENCErSr�rqr�BinaryOpr^)	rrvrwrV�precrlrm�next_tok�	next_precs	         rrq� CParser._parse_binary_expression�s����;��-�-�/�C���*�*�,�C��{�c�h�h�.@�@��*�328�)&�c�h�h�/�D����$�329�!���B��M�M�O��-�-�/�C���:�:�<���#�x�}�}�<N�'N��.�x�}�}�=�	��#��7�7�	�G�C����.�.��#�y�y�9�C�-r"c�(�UR5nUbpUup#nUR5S:Xa!URU5 UR5$UR5n[R330"X%UR
U55$UR5$)Nr@)r.r�r�ryr�CastrT�_parse_unary_expression)r�resultr�r�r-r~s      rry�CParser._parse_cast_expressions����0�0�2����$*�!�C�z���� �H�,����D�!��+�+�-�-��2�2�4���z�z�#�T�_�_�Z�-H�I�I��+�+�-�-r"c��UR5nUS;aKUR5nUR5n[R"UR331X3R5$US;aKUR5nUR5n[R"UR332X3R5$US:Xa�UR5nUR5nUb6Uun n[R"UR333XPRU55$UR5n[R"UR334X0RU55$US:XarUR5nURS5 UR5nURS5 [R"UR335XPRU55$UR5$)N��PLUSPLUS�336MINUSMINUS>�AND�NOT�LNOT�PLUS�MINUSr�SIZEOF�_ALIGNOFrr)
r�r�r�r�UnaryOprSr^ryr.rTr�r,�_parse_postfix_expression)rrrVr~r�r�rQs       rr��CParser._parse_unary_expression4sf���?�?�$���1�1��-�-�/�C��/�/�1�D��=�=����D�*�*�=�=��G�G��-�-�/�C��.�.�0�D��=�=����D�*�*�=�=��x���-�-�/�C��4�4�6�F��!�"�	��Q���}�}�S�Y�Y��_�_�S�5I�J�J��/�/�1�D��=�=����D�/�/�#�2F�G�G��z�!��-�-�/�C��L�L��"��'�'�)�C��L�L��"��=�=����C����1E�F�F��-�-�/�/r"c��UR5nUbtUup#nURS5(aHUR5nURS5 URS5 [R337"X%5$UR
U5 UR5nURS5(aDUR5nURS5 [R"XgUR5nM[URS5(akUR5S:XaUR5 SnO!UR5nURS5 [R"XhUR5nM�UR5S;a�UR5n	UR5n338U339RS	;a!UR!S340UR#U34155 [R$"U342R&UR#U34355n[R("XiR&X�R5nGM�UR5S;aAUR5n[R*"SUR&-XfR5nGM�U$)
Nr@r�r�r$r�rr>�ARROW�PERIOD>r	r344zInvalid struct referencer��p)r.r��_parse_initializer_listr�r�CompoundLiteralr��_parse_primary_expressionrH�ArrayRefr^r�r��_parse_argument_expression_list�FuncCallr�rRrTr	rS�	StructRefr�)
rr�r�r�rQr�r~�subr��op_tokr��fieldrVs
             rr��!CParser._parse_postfix_expressionTs����0�0�2����!�L�C�q��|�|�H�%�%��3�3�5�����W�%����X�&��,�,�S�7�7����D�!��-�-�/����|�|�J�'�'��,�,�.�����Z�(��~�~�d����<����|�|�H�%�%��?�?�$��0��M�M�O��D��?�?�A�D��L�L��*��~�~�d�$�*�*�=������ �$7�7�������=�=�?���=�=�(8�8��%�%�2�D�O�O�H�4M������������1J�K�����t�\�\�5�*�*�M������ �$>�>��m�m�o���}�}�S�3�9�9�_�d�J�J�G�����r"c�`�UR5nUS:XaUR5$U[;dU[;d345U[;aUR5$U[;aUR5$U[;aUR5$US:Xa3UR5 UR5nURS5 U$US:Xa�UR5nURS5 UR5nURS5 UR5nURS5 URU5n[ R""[ R$"UR&U5[ R("XE/U5U5$UR+SUR,R.5 g)Nr	rr�OFFSETOFr�zInvalid expression)r�r�346_INT_CONST�_FLOAT_CONST�_CHAR_CONST�_parse_constant�_STRING_LITERAL�_parse_unified_string_literal�
_WSTR_LITERAL�_parse_unified_wstring_literalr�rHr�r,�!_parse_offsetof_member_designatorrTrr�r	rSrdrRrDrK)rrr~�off_tokr��347designatorr^s       rr��!CParser._parse_primary_expression�s_���?�?�$���t���)�)�+�+��348�"��<�'��;�&��'�'�)�)���&��5�5�7�7��}�$��6�6�8�8��x���M�M�O��)�)�+�D��L�L��"��K��z�!��m�m�o�G��L�L��"��'�'�)�C��L�L��!��?�?�A�J��L�L��"��O�O�G�,�E��>�>��������.�����0�%�8���
�	
���.��	�	�0B�0B�Cr"c�r�UR5nURS5(a4UR5n[R"USX!R5nMKURS5(aDUR5nUR
S5 [R"XUR5nM�U$)Nr��.r$r�)�_parse_identifier_or_typeidr�rr�r^rHr�r�)rr�r�r~s    rr��)CParser._parse_offsetof_member_designator�s����/�/�1����|�|�H�%�%��8�8�:�����t�S�%���D����|�|�J�'�'��-�-�/�����Z�(��~�~�d�$�*�*�=�����r"c��UR5nU/nURS5(a7URUR55 URS5(aM7[R"X!R3495$r�rcres   rr��'CParser._parse_argument_expression_list�s_���0�0�2������l�l�7�#�#��L�L��:�:�<�=��l�l�7�#�#��~�~�e�Z�Z�0�0r"c�"�UR5$rb)rirds rr}�"CParser._parse_constant_expression�s���1�1�3�3r"c��URS5n[R"URUR	U55$)Nr	)r�rr	rSrTr�s  rr�CParser._parse_identifier�s.���l�l�4� ���x�x��	�	�4�?�?�3�#7�8�8r"c���UR5nURS;a!URSURU55 [R350"URURU55$)N>r	r351zExpected identifier)r�r�rRrTrr	rSr�s  rr��#CParser._parse_identifier_or_typeid�sR���m�m�o���8�8�+�+����3�T�_�_�S�5I�J��x�x��	�	�4�?�?�3�#7�8�8r"c�&�UR5nUR[;a�SnSnURSSHnUS;aUS-
nMUS;dMUS-
nM US:�a[	S5eUS:�a[	S5eS	U-S352U--n[353R"US-URURU55$UR[;a^URSS
;aSnOURSS;aSnOSn[354R"XaRURU55$UR[;a1[355R"SURURU55$URSURU55 g)Nr�����)�l�Lr
)�u�Uz.Constant cannot have more than one u/U suffix.r�z.Constant cannot have more than two l/L suffix.z	unsigned zlong r+rn)�f�F�floatzlong double�double�charzInvalid constant)r�r�r�rS�356ValueErrorr�ConstantrTr�r�rR)rrV�u_count�l_count�ch�prefixr�s       rr��CParser._parse_constant�sX���m�m�o���8�8�z�!��G��G��i�i���n����#��q�L�G��:�%��q�L�G�	%�357��{� �!Q�R�R���{� �!Q�R�R� �7�*�W�w�->�>�F��>�>�&�5�.�#�)�)�T�_�_�S�=Q�R�R��8�8�|�#��y�y��}�358�*������2��*�,�!�����>�>�!�Y�Y�����0D�E�E��8�8�{�"��>�>�&�#�)�)�T�_�_�S�5I�J�J����,�d�o�o�c�.B�Cr"c�F�URS5n[R"SURUR	U55nUR5S:XaJUR
5nURSSURSS-UlUR5S:XaMJU$)N�STRING_LITERAL�stringrnr
)r�rr�rSrTr�r��rrVr��tok2s    rr��%CParser._parse_unified_string_literal�s����l�l�+�,���~�~�h��	�	�4�?�?�3�3G�H���o�o��#3�3��=�=�?�D����C�R��4�:�:�a�b�>�9�D�J��o�o��#3�3��r"c���UR5nUR[;a!URSUR	U55 [359R"SURUR	U55nUR5[;a\UR5nURR5SSURSS-UlUR5[;aM\U$)NzInvalid string literalr�rnr�)360r�r�r�rRrTrr�rSr��rstripr�s    rr��&CParser._parse_unified_wstring_literal�s����m�m�o���8�8�=�(����6�����8L�M��~�~�h��	�	�4�?�?�3�3G�H���o�o��=�0��=�=�?�D����*�*�,�S�b�1�D�J�J�q�r�N�B�D�J��o�o��=�0��r"c�2�URS5nU(apURS5(a&[R"/URU55$UR	5nURS5 URS5 U$UR
5$)Nr@r�r�)r�r�InitListrTr�r�r�)rr<�	init_lists   rrL�CParser._parse_initializersw���\�\�(�+�361���|�|�H�%�%��~�~�b�$�/�/�*�*E�F�F��4�4�6�I��L�L��!��L�L��"����0�0�2�2r"c�.�UR5/nURS5(aLUR5S:XaO7URUR55 URS5(aML[R362"XSR5$)Nr�r�r)�_parse_initializer_itemr�r�rcrr�r^)rr�s  rr��CParser._parse_initializer_listss���-�-�/�0���l�l�7�#�#���� �H�,���L�L��5�5�7�8��l�l�7�#�#��~�~�e�1�X�^�^�4�4r"c��SnUR5S;aUR5nUR5nUb[R"X5$U$�N>r�r$)r��_parse_designationrLr�NamedInitializer)r�designationr�s   rr��CParser._parse_initializer_item%sO�����?�?�� 6�6��1�1�3�K��&�&�(���"��)�)�+�<�<��r"c�H�UR5nURS5 U$)NrC)�_parse_designator_listr��r�designatorss  rr��CParser._parse_designation/s"���1�1�3�����X���r"c��/nUR5S;a5URUR55 UR5S;aM5U$r�)r�rc�_parse_designatorr�s  rr��CParser._parse_designator_list5sF�����o�o��#9�9����t�5�5�7�8��o�o��#9�9��r"c��URS5(a#UR5nURS5 U$URS5(aUR5$UR	SUR363R5 g)Nr$r�r�zInvalid designator)r�r}r�r�rRrDrK)rr~s  rr��CParser._parse_designator=si���<�<�364�#�#��2�2�4�D��L�L��$��K��<�<��!�!��3�3�5�5����.��	�	�0B�0B�Cr"c�h�URS5nURSURU55 g)Nr:zDirectives not supported yet)r�rRrTr�s  rrE�CParser._parse_pp_directiveJs*���l�l�8�$�����8�$�/�/�#�:N�Or"c��UR5S:Xa�UR5nUR5S:Xa@UR5n[R"URURU55$[R"SURU55$UR5S:XagUR5nUR
S5nUR5nUR
S5 [R"X@RU55$URSURR5 g)Nr=�PPPRAGMASTRr3r<rrzInvalid pragma)r�r�r�PragmarSrTr�r�rRrDrK)rrV�str_tok�lparen�literals     rrF�!CParser._parse_pppragma_directivePs����?�?��365�*��-�-�/�C���� �M�1��-�-�/���|�|�G�M�M�4�?�?�7�3K�L�L��<�<��D�O�O�C�$8�9�9��?�?��	�)��-�-�/�C��\�\�(�+�F��8�8�:�G��L�L��"��<�<�����)@�A�A����*�D�I�I�,>�,>�?r"c��/nUR5S;a5URUR55 UR5S;aM5U$)Nr;)r�rcrF)rr/s  rr-�&CParser._parse_pppragma_directive_listbsC�����o�o��#:�:��N�N�4�9�9�;�<��o�o��#:�:��r"c�&�URS5nURS5 UR5nSnURS5(aUR5nURS5 [R366"X#UR
U55/$)Nr?rr�r)r�r}r�r�r�StaticAssertrT)rrVrKr]s    rrG�CParser._parse_static_assertisx���l�l�+�,�����X���.�.�0�����<�<�� � ��4�4�6�C����X���"�"�4�d�o�o�c�.B�C�D�Dr")rFrHrD)r3Frb)rN)F�r
)FF)rr�r�)rr�)T)rN)�r$r%r&r'r(r�boolr�r)rIrr1rWr+r	rr[rrRrerjrrrur{r@rArBrCrr�r�r�r�rrr�r�r�r�r�rrQr�r�r�r�r�r�rTr�r�rrr367rrrr%r)r.rPr2r6rXrVrJrKrIrvryrkrlrMr�rpr�r�r�r�rqr�r�r�rrrr�r�r�r�r�r�r�r�r�r�r�r�r�rr,rr
rrr(r1r4r9rHr#r$r%r&r'rSrHr�rirqryr�r�r�r�r�r}rr�r�r�r�rLr�r�r�r�r�rErFr-rGr,r#r"rr1r12s��	�"�$�(�"�*� ��=��=��F�|�=��	=�368�=��
=��=��=�369�=�:<A����#&��48��	����8J�S�J�(�3�-�J�5�J�,��,�E�C�K�$�,>�,�8�,�)� �+�c�+�(�5�/�+�d�+�	,�C�	,����	,�D�	,��c��d��:�3�:�c�:�3�:�4�:���,�#�,�$�,�T�c��S��U�Z�Z��X&��j�j�5�=�=�(�5�>�>�9�&��s�)�&�370���e�m�m�	#�e�n�n�	4�	&�Z���;�'�����	�371��372�
�4#(�	e��e��K� �e� �	e�373374�e�j�j�	�e�N375��376��j�j�377��d�5�:�:�.�/�	378�379�j�j�380�381���
382�*�����$�s�$�8�F�#3�$�5�C�5���
�5�383�&��	�#�	�(�6�*:�	��#��&��#�s�#�!�3�!�4�!�3�f�3��3�'�x��'7�'�4�'�.�h�v�&6�.�$�.�)�4�)�,�$�,�4�,�#�E�(�3�-��2E�,F�#�NS��"��FJ��	�x��384�385�#�T�)�	*��6!�E�(�3�-��2E�,F�!�F;�D�;�?�4�?�%�	�%�����V�3�4�	5�%�6=�%�-�-�=���e�j�j�)9��M�T�%�*�*�-=�M�l�D����$4��?�$�u�z�z�"2�?�'��'�+/�'�	
�e�j�j�	�'�T��e�j�j�)9��%*�v+�!�v+�	�{�D�(�5�/�1�	2�v+�v`�F�D��I��9�E�J�J�9������DI���k�*��<@��	
�k�	��8�d�8�{�8�T�%�*�*�T�B��U�Z�Z�0@��386�8�D����4D�+E�387�D�t�K�/@��=�$=�u�z�z�=�"��388�389���5�:�:���5�:�:��H�e�j�j�H�L�%�*�*�L�M�%�*�*�M��3��T��e�j�j��.2�/��/�&*�/�	���/�*������390�391��T�5�:�:�T�%�*�*�T�IM�7(�!�%�*�*�-�7(�6>�u�o�7(�	���7(�t�e�j�j��U�Z�Z��4����� 4��"�E�O�O���u����I�e�j�j�I�&<��<�'/��392�393�';�<�IQ�RW��<�	���<�,-�H�U�Z�Z�,@�-���394�395��V�%�.�.�V�(
�����0D�
�$/�5�:�:�/�.1�����0I�1�396�E�J�J�397�:�%�*�*�t�E�J�J�/?�"?�:�.'��398�399�T�%�*�*�=M�0M�'�'�5�:�:��U�Z�Z�0@�#@�'�400��U�Z�Z�(8�401�402�5�:�:�403�S�%�*�*�S�BW�E�J�J�W�2&W�E�J�J�&W�TR�u�z�z�R�.�U�Z�Z���x��404�405�';��1�5�:�:�1��e�j�j�� �u�z�z��>B����&.�u�z�z�&:��	����D.��406�407�.�*0����0�@.�5�:�:�.�d!D�5�:�:�!D�J
�5�:�:�
� 1����1�4�E�J�J�4�9�5�:�:�9�4089�U�Z�Z�9�D����D�@�u�z�z����409�410�� 4113�E�J�J�4123�5����5�������D����$4����U�Z�Z�(8��D�5�:�:�D�P�X�P�@�5�:�:�@�$��U�Z�Z�0@��E�d�5�:�:�&6�Er"r1>rC�OREQUAL�ANDEQUAL�DIVEQUAL�MODEQUAL�XOREQUAL�	PLUSEQUAL�413MINUSEQUAL�414TIMESEQUAL�LSHIFTEQUAL�RSHIFTEQUAL�LOR�LAND�ORr��XOR�r���EQ��NE�GT��GE�LT�LE�RSHIFT��LSHIFTr��r�r�	�DIVIDE�MOD>�AUTO�EXTERNr��TYPEDEF�REGISTER�
_THREAD_LOCAL�INLINE�	_NORETURN>�CONSTrf�RESTRICT�VOLATILE>�INT�CHAR�LONG�VOID�FLOAT�SHORT�_BOOL�DOUBLE�SIGNED�UNSIGNED�_COMPLEX�__INT128>rjrhrir415rfrd>
r	r�r�r�r�r�rrr�r�r�r�r�>�
INT_CONST_BIN�
INT_CONST_DEC�
INT_CONST_HEX�
INT_CONST_OCT�INT_CONST_CHAR�FLOAT_CONST�HEX_FLOAT_CONST>�416CHAR_CONST�WCHAR_CONST�U8CHAR_CONST�
U16CHAR_CONST�
U32CHAR_CONSTr�>�WSTRING_LITERAL�U8STRING_LITERAL�U16STRING_LITERAL�U32STRING_LITERAL>rrrrrr>r rr@r"rrr<r!r=r?c��\rSrSrSrS\SS4SjrSS\S\\	4Sjjr417S\\	4S	jrS\4S418jrS\SS4Sjr
S
\SS4SjrSrg)rGi�z�Wraps a lexer to provide convenient, buffered access to the underlying419token stream. The lexer is expected to be initialized with the input420string already.421r5rNc�,�Xl/UlSUlg)Nr)�_lexer�_buffer�_index)rr5s  rrI�_TokenStream.__init__	s����/1�����r"r�c�p�US::agURU5 URURU-S-422$)z�Peek at the k-th next token in the stream, without consuming it.423 424Examples:425    k=1 returns the immediate next token.426    k=2 returns the token after that.427rNr
��_fillrFrGr�s  rr��_TokenStream.peek428	s5��
��6���429�430�1�
��|�|�D�K�K�!�O�a�/�0�0r"c��URS5 URURnU=RS-
slU$)z%Consume a single token and return it.r
rJr�s  rr��_TokenStream.next	s2���431�432�1�
��l�l�4�;�;�'�����q����433r"c��UR$rb�rGrds rr��_TokenStream.mark"	s���{�{�r"r�c��XlgrbrPr�s  rr��_TokenStream.reset%	s���r"�nc��[UR5URU-:abURR	5nURRU5 Ucg[UR5URU-:aMaggrb)rhrFrGrEr�rc)rrTrVs   rrK�_TokenStream._fill(	sb���$�,�,��$�+�+��/�1��+�+�#�#�%�C��L�L����$��{��	�$�,�,��$�+�+��/�1r")rFrGrEr�)r$r%r&r'r(rrIr+r	rr�r�r�r�rKr,r#r"rrGrG�su���434�f����435 4361�c�4371�(�6�"2�4381��h�v�&���c���#��$���s��t�r"rGc�f�\rSrSr%\\\S'\\\S'\\\S'\\\S'\\\S'Srg)	r�i6	r�r�r�r�r�r#N)r$r%r&r'rrr*r,r#r"rr�r�6	s2��439�s�)�O�
�#�Y��440�s�)�O��3�i���C�y�r"r�r�c��\rSrSr%\\R\S'\\R\S'\\R\S'Srg)r�iA	r�r�r�r#N)	r$r%r&r'r	rr�r*r,r#r"rr�r�A	s1��441�5�:�:�442��443�5�:�:�444��
�e�j�j�
!�!r"r�N)+�dataclassesr�typingrrrrrr	r445rrr3r�c_lexerrr�ast_transformsrrr�	Exceptionr.r1r(rzrmrnrror��_EXPR_STARTr�r�r�r�r�r�rrGr�r�r�r#r"r�<module>r_s.��"�446�447�448��#�C������$	��	� E� E�DB��"�	�1��449�A��	�!��450�1�	�451452�1��	�!�
�	�!��	�!��	�!��	�!��	�!��
�a��
�a���A���Q�� �Q�!�"
�a�#�$453�1�%��*V���K�(��>��
�� �������C�	C���� �454��0�1����$�$���
���������	�455�����(.�.�n�	���J�K�
�"�	�"r"
codekingpro/portable-devtools · Team Ai