
    -Ph                       d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZF erd dlGmHZHmIZI d dlmJZJ d dlmKZKmLZLmMZMmNZNmOZOmPZP  G d	 d
e;          ZQdS )    )annotations)TYPE_CHECKING)-ASTAlignofExprASTArrayASTAssignmentExprASTBinOpExprASTBooleanLiteralASTBracedInitListASTCastExprASTCharLiteralASTDeclarationASTDeclaratorNameBitFieldASTDeclaratorNameParamASTDeclaratorParenASTDeclaratorPtrASTDeclSpecsASTDeclSpecsSimpleASTEnumASTEnumeratorASTFallbackExprASTFunctionParameterASTIdentifierASTIdExpressionASTInitializerASTMacroASTMacroParameterASTNestedNameASTNumberLiteralASTParametersASTParenExprASTParenExprListASTPostfixArrayASTPostfixCallExprASTPostfixDecASTPostfixExprASTPostfixIncASTPostfixMemberOfPointerASTSizeofExprASTSizeofTypeASTStringLiteral	ASTStructASTTrailingTypeSpecFundamentalASTTrailingTypeSpecNameASTTypeASTTypeWithInitASTUnaryOpExprASTUnion)_expression_assignment_ops_expression_bin_ops_expression_unary_ops	_keywords_simple_type_specifiers_re
_string_re)ASTAttributeList
BaseParserDefinitionError$UnsupportedMultiCharacterCharLiteralbinary_literal_rechar_literal_refloat_literal_refloat_literal_suffix_rehex_literal_reidentifier_reinteger_literal_reintegers_literal_suffix_reoctal_literal_re)CallableSequence)Any)ASTDeclaratorASTExpression
ASTLiteralASTPostfixOpASTTrailingTypeSpecDeclarationTypec                     e Zd ZedZd            Zed[d            Zed[d            Zd\dZd]d
Zd^dZ	d^dZ
d_dZd`dZdadZdbdZdcdZdcdZdcdZdddZdcd Zdcd!Zdcd"Z	 dedfd*Zdgd,Zd\d-Zdhd/Zdid1Zdjd4Zdkd8Zdedld:Zdmd>Z	 dedmd?Z	 dndodCZ dpdqdEZ!drdGZ"dsdIZ#dtdKZ$dudMZ%dvdOZ&dwdQZ'dxdUZ(dgdVZ)dgdWZ*dydYZ+d@S )zDefinitionParserreturnstrc                    dS )NC selfs    X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/domains/c/_parser.pylanguagezDefinitionParser.language[   s    s    Sequence[str]c                    | j         j        S N)configc_id_attributesrU   s    rW   id_attributeszDefinitionParser.id_attributes_   s    {**rY   c                    | j         j        S r\   )r]   c_paren_attributesrU   s    rW   paren_attributesz!DefinitionParser.paren_attributesc   s    {--rY   
str | Nonec                0   | j         dk    rd S | j        }| xj        dz  c_        d}	 | j        r|                     d           n.| j         dk    r|s| xj        dz  c_        n!| j         dk    rd}nd}| xj        dz  c_        \| j        || j                 S )N"   FTz$Unexpected end during inside string.\)current_charposeoffail
definition)rV   	start_posescapes      rW   _parse_stringzDefinitionParser._parse_stringg   s    ##4H	A
	x 		@AAAA"c))&)A"d**HHMHH
	 y48344rY   ASTLiteral | Nonec                   |                                   |                     d          rt          d          S |                     d          rt          d          S | j        }|                     t
                    r;|                     t                     t          | j        || j                           S t          t          t          t          fD ]T}|                     |          r=|                     t                     t          | j        || j                           c S U|                                 }|t          |          S |                     t                     r| j                            d          }| j                            d          }	 t'          ||          S # t(          $ r"}|                     d|z             Y d }~n(d }~wt,          $ r |                     d           Y nw xY wd S )	NtrueTfalseFrf      z8Can not handle character literal. Internal error was: %szJCan not handle character literal resulting in multiple decoded characters.)skip_ws	skip_wordr	   ri   matchr>   r?   r   rl   r<   r@   rB   rD   rC   ro   r*   r=   
last_matchgroupr   UnicodeDecodeErrorrk   r;   )rV   ri   regexstringprefixdataes          rW   _parse_literalzDefinitionParser._parse_literalz   s$    	>>&!! 	+$T***>>'"" 	,$U+++h::&'' 	EJJ.///#DOC$(N$CDDD	
 	I 	IE zz%   I

5666'dh(GHHHHHI ##%%#F+++ ::o&& 	_**1--F?((++D
%fd333%   		NQRR        8   		A    
 ts   F, ,
G86G"G87G8ASTExpression | Nonec                    | j         dk    rd S | xj        dz  c_        |                                 }|                                  |                     d          s|                     d           t          |          S )N(rf   )z0Expected ')' in end of parenthesized expression.)rh   ri   _parse_expressionru   skip_stringrk   r    )rV   ress     rW   _parse_paren_expressionz(DefinitionParser._parse_paren_expression   sz    ##4A$$&&$$ 	JIIHIIIC   rY   c                    |                                   |                                 }||S |                                 }||S |                                 }|t	          |          S d S r\   )ru   r   r   _parse_nested_namer   )rV   r   nns      rW   _parse_primary_expressionz*DefinitionParser._parse_primary_expression   sp     	$($7$7$9$9?J**,,?J$$&&>"2&&&trY   nameopenclose.tuple[list[ASTExpression] | None, bool | None]c                F   |                                   |                     |          sdS |                     |          rg dfS g }d}	 |                                   |                                 }|                                   |                    |           |                                   |                     |          rnZ|                     d          s|                     d| d| d           | j        |cxk    rdk    rn n| xj        d	z  c_        d}n||fS )
N)NNFT,z	Error in z, expected ',' or 'z'.}rf   )ru   skip_string_and_wsr   r   appendrk   rh   ri   )rV   r   r   r   exprstrailing_commaexprs          rW   _parse_initializer_listz(DefinitionParser._parse_initializer_list   sI    	&&t,, 	:E"" 	u9	LLNNN))++DLLNNNLLLLNNN&& **3// J		HdHHuHHHIII E0000S00000A!%	 n$$rY   ASTParenExprList | Nonec                \    |                      ddd          \  }}|d S t          |          S )Nzparenthesized expression-listr   r   )r   r!   rV   r   r   s      rW   _parse_paren_expression_listz-DefinitionParser._parse_paren_expression_list   s?     !% < <+S#!
 !
~ =4&&&rY   ASTBracedInitList | Nonec                ^    |                      ddd          \  }}|d S t          ||          S )Nzbraced-init-list{r   )r   r
   r   s      rW   _parse_braced_init_listz(DefinitionParser._parse_braced_init_list   sA     !% < <S!
 !
~ =4 777rY   r%   c                   |                                  }g }	 |                                  |                     d          ru|                                 }|                                  |                     d          s|                     d           |                    t          |                     |                     d          r^|                     d          r| xj        dz  c_        n8| 	                                }|                    t          |                     |                     d          r#|                    t                                 J|                     d	          r#|                    t                                 |                                 }|$|                    t          |                     	 t          ||          S )
NT[]z*Expected ']' in end of postfix expression.z->*   z++z--)r   ru   r   r   r   rk   r   r"   ri   r   r'   r&   r$   r   r#   r%   )rV   r}   
post_fixesr   r   lsts         rW   _parse_postfix_expressionz*DefinitionParser._parse_postfix_expression   s    //11 *,
	LLNNN&&s++ --//'',, LIIJKKK!!/$"7"7888%% ##C(( HHMHHH2244D%%&?&E&EFFF%% !!-//222%% !!-//2223355C!!"4S"9"9:::fj111rY   rI   c                   |                                   t          D ]_}|d         dv r|                     |          }n|                     |          }|r&|                                 }t          ||          c S `|                     d          r|                     d          rc|                     d          }|                                   |                     d          s| 	                    d           t          |          S |                                 }t          |          S |                     d	          r|                     d          s| 	                    d
           |                     d          }|                                   |                     d          s| 	                    d           t          |          S |                                 S )Nr   cnsizeofr   F)namedr   zExpecting ')' to end 'sizeof'.alignofzExpecting '(' after 'alignof'.zExpecting ')' to end 'alignof'.)ru   r4   rv   r   _parse_cast_expressionr0   skip_word_and_wsr   _parse_typerk   r)   _parse_unary_expressionr(   r   r   )rV   opr   r   typs        rW   r   z(DefinitionParser._parse_unary_expression&  s    	' 	0 	0B!u}}nnR((&&r** 02244%b$/////0   ** 	'&&s++ *&&U&33'',, @II>???$S)))//11D &&&  ++ 	'**3// <		:;;;"""//CLLNNN##C(( =		;<<<!#&&&--///rY   c                   | j         }|                                  |                     d          r	 |                     d          }|                     d          s|                     d           |                                 }t          ||          S # t          $ rW}|| _         	 |                                 cY d }~S # t          $ r$}|df|dfg}| 	                    |d          |d }~ww xY wd }~ww xY w|                                 S )Nr   Fr   z Expected ')' in cast expression.zIf type cast expressionzIf unary expressionzError in cast expression.)
ri   ru   r   r   rk   r   r   r:   r   _make_multi_error)rV   ri   r   r   ex_castex_unaryerrss          rW   r   z'DefinitionParser._parse_cast_expressionL  sJ   hC   	2$&&u--'',, BII@AAA2244"3---" $ $ $	$7799999999& $ $ $ ";<!#89D 009 #$$	$ //111s<   A"B 
C6C1'C :C6 
C.
C))C..C11C6c                (    d	fd | d          S )
NrV   rO   op_idintrP   rI   c                |    dz   t          t                    k    rd fd}nd	 fd}g }g }|                     |                       	                                    j        }d}t                   D ]}|d         d	v r                     |          s"n                     |          s9| j        cxk    rd
k    rn n xj        dz  c_         nP	  |            }|                    |           |                    |           d} n# t          $ r
 | _        Y w xY w|snt          ||          S )Nrf   rP   rI   c                 ,                                      S r\   )r   rU   s   rW   parserzYDefinitionParser._parse_logical_or_expression.<locals>._parse_bin_op_expr.<locals>.parseru  s    66888rY   c                 "      dz             S )Nrf   rT   )_parse_bin_op_exprr   rV   s   rW   r   zYDefinitionParser._parse_logical_or_expression.<locals>._parse_bin_op_expr.<locals>.parserz  s    --dEAI>>>rY   TFr   abcnox&rP   rI   )
lenr3   r   ru   ri   rv   r   rh   r:   r   )
rV   r   r   r   opsri   one_morer   r   r   s
   ``       rW   r   zIDefinitionParser._parse_logical_or_expression.<locals>._parse_bin_op_exprr  s   qyC 344449 9 9 9 9 9 9
? ? ? ? ? ? ? ? ECLL"""h -e4 ' 'B!u((#~~b11 %$%  $//33 %$T.5555#55555A'%vxxT***

2#'* ' ' '#&' 34  s+++s   6DD'&D'r   )rV   rO   r   r   rP   rI   rT   )rV   r   s    @rW   _parse_logical_or_expressionz-DefinitionParser._parse_logical_or_expressionf  s7    (	, (	, (	, (	, (	, (	,T "!$***rY   or_expr_headrG   c                    d S r\   rT   )rV   r   s     rW   "_parse_conditional_expression_tailz3DefinitionParser._parse_conditional_expression_tail  s	     trY   c                   g }g }|                                  }|                    |           	 d}|                                  t          D ]y}|d         dv r|                     |          s"n|                     |          s9|                                  }|                    |           |                    |           d}z|snt          ||          S )NTFr   r   )r   r   ru   r2   rv   r   r   )rV   r   r   or_exprr   r   r   s          rW   _parse_assignment_expressionz-DefinitionParser._parse_assignment_expression  s     3355W	HLLNNN0 
  
 a5H$$>>"-- ! !  ++B// ! 88::T"""

2 	  !,,,rY   c                .    |                                  }|S r\   )r   )rV   r   s     rW   _parse_constant_expressionz+DefinitionParser._parse_constant_expression  s    3355rY   c                *    |                                  S r\   r   rU   s    rW   r   z"DefinitionParser._parse_expression  s     00222rY   Tend	list[str]r   Callable[[], ASTExpression]allowboolc                d   | j         }	  |            S # t          $ r3}|r| j        s |                     d|z             || _         Y d }~nd }~ww xY w|J |                                  | j         }|                     t                    r| j        }ndddd}g }	| j        st          |	          dk    r
| j
        |v rny| j
        |v r!|	                    || j
                            n8t          |	          dk    r%| j
        |	d         k    r|	                                 | xj         dz  c_         | j        t          |          dk    r| j        r|                     d	|z             | j        || j                                                  }t!          |                                          S )
NzBParsing of expression failed. Using fallback parser. Error was:
%sr   r   r   )r   r   r   r   rf   z0Could not find end of expression starting at %d.)ri   r:   allowFallbackExpressionParsingwarnru   rw   r7   matched_textrj   r   rh   r   poprk   rl   stripr   )
rV   r   r   r   prev_posr   rm   valuebracketssymbolss
             rW   _parse_expression_fallbackz+DefinitionParser._parse_expression_fallback  s    8	 688O 		  		  		    C II"$%&    DHHHHHH		  H	::j!! 	B%EE !s55H!#Gh w<<1$$):c)A)A$00NN8D,=#>????\\A%%$*;wr{*J*JKKMMMA h  3xx!|||		FR   OI$89??AAEu{{}}---s   	 
A)AAr   c                   g }|                                   d}|                     d          rd}	 |                                   |                     t                    s|                     d           | j        }|t          v r|                     d|z             | j        | j        j        v r8d}|                     || j        t          | j        j                  fz             t          |          }|                    |           |                                   |                     d          snt          ||          S )NF.Trf   z#Expected identifier in nested name.z3Expected identifier in nested name, got keyword: %sExpected identifier, got user-defined keyword: %s. Remove it from c_extra_keywords to allow it as identifier.
Currently c_extra_keywords is %s.)ru   r   rw   rA   rk   r   r5   r]   c_extra_keywordsrQ   r   r   r   )rV   namesrooted
identifiermsgidents         rW   r   z#DefinitionParser._parse_nested_name  sH   C   	F	LLNNN::m,, A		?@@@*JY&&		IJV    DK$@@@8 
 		#!2C8T4U4U VVWWW!*--ELLLLNNN##C(( -	. UF+++rY   c                    |                      t                    r| j        S dD ])}|| j        j        v r|                     |          r|c S *d S )N)r   complex	imaginary)rw   r6   r   r]   r   rv   )rV   ts     rW   _parse_simple_type_specifierz-DefinitionParser._parse_simple_type_specifier  sb    ::011 	%$$1 	 	ADK000>>!$$ HHHtrY   %ASTTrailingTypeSpecFundamental | Nonec                    g }|                                   	 |                                 }|n*|                    |           |                                   At          |          dk    rd S t	          |          S )NTr   )ru   r   r   r   r,   )rV   r   r   s      rW   _parse_simple_type_specifiersz.DefinitionParser._parse_simple_type_specifiers$  sw    	1133AyLLOOOLLNNN	 u::??4-e444rY   rL   c                
   |                                   |                                 }||S d }|                                   dD ]}|                     |          r|} n|                                 }t	          ||          S )N)structenumunion)ru   r   r   r   r-   )rV   r   r}   knested_names        rW   _parse_trailing_type_specz*DefinitionParser._parse_trailing_type_spec2  s     	0022?J , 	 	A$$Q''  --//&v{;;;rY   
param_modeASTParameters | Nonec                z   |                                   |                     d          s|dk    r|                     d           nd S g }|                                   |                     d          s%	 |                                   |                     d          rb|                    t	          d d                     |                                   |                     d          s|                     d           n|                     d d	
          }|                    t	          |                     |                                   |                     d          r|                     d          rn |                     d| j         d           $|                                 }t          ||          S )Nr   functionzExpecting "(" in parameters.r   rf   ...Tz'Expected ")" after "..." in parameters.singleouterr   r   z)Expecting "," or ")" in parameters, got "z".)	ru   r   rk   r   r   _parse_type_with_initrh   _parse_attribute_listr   )rV   r   argsargattrss        rW   _parse_parametersz"DefinitionParser._parse_parametersE  s   $$ 	Z''		89999t$$ 	##E** KK 4T4 @ @AAALLNNN++C00 M		"KLLL 00t80LL055666##C(( ##C(( 		U@QUUU  '. **,,T5)))rY   r  typedr   c                   d}d}d}d}d}d}g }		 |                                   |sj|dk    r0|                     d          rd}5|                     d          rd}M|dv r0|                     d          rd}i|                     d          rd}|dk    r2|s0|                     d	          rd	}|                     d
          rd
}|dk    r|s|                     d          }|r|s|r|                     d          }|r|s|r|                     d          }|r|s|r|                     d          }|r/|                                 }
|
r|	                    |
           \	 t	          ||||||t          |	                    S )zJust parse the simple ones.Nrf   memberautoregister>   r  r   staticexternthread_local_Thread_localr   inlinerestrictvolatileconst)ru   rv   _parse_attributer   r   r8   )rV   r  r
  storager  r  r  r  r  r  attrs              rW   _parse_decl_specs_simplez)DefinitionParser._parse_decl_specs_simplej  s    -	LLNNN !H$$~~f-- !"( ~~j11 !", 222~~h// !"* ~~h// !"*    >>.11 #1L>>/22 #2L
""6"11   >>*55   >>*55  U w// ((**D T"""!U##
 
 	
rY   r   c                    |r|dvrt          d|z            |                     ||          }d }|r+|                                 }|                     ||          }nd }t          ||||          S )N>   typer  r   #Internal error, unknown outer "%s".)	Exceptionr  r   r   )rV   r  r
  
left_specsright_specstrailings         rW   _parse_decl_specsz"DefinitionParser._parse_decl_specs  s     	O::: E MNNN225%@@
 	5577H77uEEKKHE:{HEEErY   r   
bool | strrH   c           
     "    |dv sJ |dk    r                      t                    r j        t          v r                     d j        z              j         j        j        v r8d}                     | j        t           j        j                  fz             t           j                  }t          |gd          }nd }n|r 
                                }nd }g }	                                   |r                     d          ri                                  d}d}	d}
d}	 |s                     d
          rd	}|	s                     d          rd	}	5|
s                     d          rd	}
O|s                     d          rd	}i	 |rdn                     d          }|r-                     d          s                     d           d }ns                     d          rd }n[d fd}                     dg|          }                                                       d          s                     d           |                    t#          ||	|
|||                     nn                     |          }|kt'          |          dk    rX|rV|dk    rP|rN                                                       d          r%                                 }t+          ||          S t-          |||          S )N>   FTr  r  z$Expected identifier, got keyword: %sr   Fr   rf   r   Tr  r  r  r  r   r   z&Expected ']' in end of array operator.rP   rI   c                 ,                                      S r\   )r   rU   s   rW   r   z>DefinitionParser._parse_declarator_name_suffix.<locals>.parser  s    #'#9#9#;#;;rY   r   r  :)declIdsize)r(  arrayOpsparamr   )rw   rA   r   r5   rk   r]   r   rQ   r   r   r   ru   r   r   r   r   r   r   r	  r   r   r   r   )rV   r   r   r
  r   r   decl_id	array_opsr  r  r  r  vlar)  r   r+  s   `               rW   _parse_declarator_name_suffixz.DefinitionParser._parse_declarator_name_suffix  s    /////Hzz-(( $	11II>ARR   $(DDD< 
 IIt0#dk6R2S2STT   +4+<==
'UCCC 	--//GGG	-	LLNNN +))#.. +  ! %00:: %%)F$  %0099 %$(E$# %00<< %'+H$# %00<< %'+H$%Gee4+B+B3+G+G P++C00 L		"JKKKDD'',, 
P#< < < < < <  $>>ufMM#//44 P II&NOOO  &%8SRV!W!WXXXX[-	\ &&z22=S^^q00 Pv--%-##C(( P::<<D4G$OOOO%WyPUVVVVrY   c           	        |dvrt          d|z            g }|                                  |r|                     d          r|                                  d}d}d}g }	 |s|                     d          }|r|s|                     d          }|r5|s|                     d          }|rO|                                 }	|	|                    |	           {	 |                     |||          }
t          |
|||t          |          	          S |rS| j	        d
k    rG| j
        }	 |                     |||          }|S # t          $ r}d}|dk    r|dz  }|                    ||f           || _
        	 | j	        d
k    sJ |                     d
           |                     |||          }|                     d          s|                     d           |                     dd|          }
t          ||
          cY d }~S # t          $ rI}|| _
        d}|dk    r|dz  }|                    ||f           d}|                     ||          |d }~ww xY wd }~ww xY w| j
        }	 |                     |||          S # t          $ r<}|| _
        |                    |df           d}|                     ||          |d }~ww xY w)N>   r  r   z(Internal error, unknown param_mode '%s'.r   Frf   r  r  r  )nextr  r  r  r  r   z If declarator-id with parametersr   z (e.g., 'void f(int arg)')r   z$Expected ')' in "( ptr-declarator )"r  r   r   r
  )innerr1  z"If parenthesis in noptr-declaratorz% (e.g., 'void (*f(int arg))(double)')zError in declaratorzIf declarator-idz!Error in declarator or parameters)r  ru   r   r   r  r   _parse_declaratorr   r8   rh   ri   r/  r:   rk   r   r   )rV   r   r   r
  prev_errorsr  r  r  r  r  r1  ri   r   ex_param_qualr   r3  ex_no_ptr_parenheaderr   s                      rW   r4  z"DefinitionParser._parse_declarator  s    111FSTTT 	T%%c** 	LLNNNHHEE !#44Z@@H !  !#44Z@@H !  ! 11'::E ! ,,..#LL&&&))%UCCD#!!&u--     $	+T&#-- (C +88
ERR
" + + +8++77C""M3#7888+,3333$$S))) !225*eLLE++C00 L		"JKKK11#e 2  D .EEEEEEEEEE& 	+ 	+ 	+"DH>C!Z//FF&&'=>>>2F00#V *+	+'+: h	E55eZOOO 	E 	E 	EDH#567778F((f==1D		EsV   +E I'+I";BHI'
IAIII""I'2J	 	
K7K

KNallow_fallbackASTInitializer | Nonec                \                                       |dk    r	                      d          sd S                                  }|t          |          S |dk    rg }n|ddg}n                     d|z             d fd
}                     |||          }t          |          S )Nr  F)	hasAssign=r   r   z;Internal error, initializer for outer '%s' not implemented.rP   rI   c                 ,                                      S r\   r   rU   s   rW   r   z3DefinitionParser._parse_initializer.<locals>.parser  s    44666rY   )r   r   )ru   r   r   r   rk   r   )rV   r  r9  braced_initfallback_endr   r   s   `      rW   _parse_initializerz#DefinitionParser._parse_initializerf  s     	H
 $$ 	42244"!+...H&(LL]:LLIIMPUU  	7 	7 	7 	7 	7 	7 //& 0 
 
 e$$$rY   r.   c                N   |r|dvrt          d|z            |sJ |dk    rg }| j        }	 |                     |d          }|                     d|d          }|                     d           n"# t
          $ r}d	}|                    ||f           || _        	 |                     |
          }|                     d|          }nQ# t
          $ rD}	|| _        d}|                    |	|f           	 d}
|
dz  }
|                     ||
          |	d}	~	ww xY wY d}~nsd}~ww xY w|dk    r.|                     |
          }|                     d|          }n7d}|dk    rd}|                     |
          }|                     ||          }t          ||          S )znamed=False|'single'|True: 'single' is e.g., for function objects which
        doesn't need to name the arguments, but otherwise is a single name
        >   r  r  r   r  r  F)r  r
  Tr2  )allowSemicolonzIf just a namer  )r   r   zIf typedef-like declarationz%Type must be either just a name or a ztypedef-like declaration.Nr   r  )	r  ri   r"  r4  
assert_endr:   r   r   r.   )rV   r   r  r5  rm   
decl_specsdecl
ex_untypeddescex_typedr8  r
  r   s                rW   r   zDefinitionParser._parse_type  s      	::: E MNNNLLLF??KI !33%u3MM
--DURW-XXt4444"   '""J#5666$!%!7!7e!7!D!DJ111OODD&   (DH8D&&$'7888!H"=="44[&IIxW DDDD: j  //e/<<J)))GGDDJ  //e/<<J))*)MMDz4(((s<   AA5 5
D)? D$ -CD$
D?DDD$$D)r/   c                    |r|dv sJ |                      ||          }|                     |          }t          ||          S )N>   r  r  r   r  rD  )r   rA  r/   )rV   r   r  r  inits        rW   r  z&DefinitionParser._parse_type_with_init  s\      	;:::::e599&&U&33tT***rY   r   c                   |                                   |                                 }||                     d           |                                   |                     d          st	          |d           S |                     d          rt	          |g           S g }	 |                                   |                     d          rc|                    t          d d                     |                                   |                     d          s|                     d           nE|                     t                    s|                     d           t          t          | j                  gd	
          }|                                   |                     d          rc|                    t          |d	d                     |                                   |                     d          s|                     d           nf|                    t          |                     |                     d          r|                     d          rn|                     d           t	          ||          S )Nz(Expected identifier in macro definition.r   r   rf   r   Tz-Expected ")" after "..." in macro parameters.z(Expected identifier in macro parameters.Fr%  r   z9Expected identifier, ')', or ',' in macro parameter list.)ru   r   rk   r   r   r   r   r   rw   rA   r   r   r   )rV   r   r  r   s       rW   _parse_macrozDefinitionParser._parse_macro  sT   ''))=II@AAA&&s++ 	)E4(((C   	'E2&&&	SLLNNN&& -dD99:::'',, OIIMNNN::m,, F		DEEEd.? @ @A%PPPB LLNNN&&u-- -b%>>???'',, OIIMNNNKK)"--...&&s++ &&s++ IIQRRR3	S4 t$$$rY   r+   c                H    |                                  }t          |          S r\   )r   r+   rV   r   s     rW   _parse_structzDefinitionParser._parse_struct  s    &&((rY   r1   c                H    |                                  }t          |          S r\   )r   r1   rP  s     rW   _parse_unionzDefinitionParser._parse_union  s    &&((~~rY   r   c                H    |                                  }t          |          S r\   )r   r   rP  s     rW   _parse_enumzDefinitionParser._parse_enum  s    &&((t}}rY   r   c                J                                      }                                 }                                  d }                     d          r?                                  d fd}                     g |          }t          |          }t          |||          S )Nr=  rP   rI   c                 ,                                      S r\   )r   rU   s   rW   r   z2DefinitionParser._parse_enumerator.<locals>.parser  s    66888rY   r   )r   r  ru   r   r   r   r   )rV   r   r  rL  r   init_vals   `     rW   _parse_enumeratorz"DefinitionParser._parse_enumerator  s    &&((**,,C   	,LLNNN9 9 9 9 9 9 66r6BBH!(++DT4///rY   
objectTypedirectiveTyper   c                   |}|}|dvrt          d|z            |dvrt          d|z            d }|dk    r|                     dd          }n|dk    r|                     dd          }n|d	k    r|                                 }n|d
k    r|                                 }nv|dk    r|                                 }n[|dk    r|                                 }n@|dk    r|                                 }n%|dk    r|                     dd          }nt          |d	k    r*| 	                                 | 
                    d          }nd}t          ||||          S )N>   r   r  macror   r  r   r   
enumeratorz(Internal error, unknown objectType "%s".>	   varr   r  r]  r   r  r   r   r^  z+Internal error, unknown directiveType "%s".r  T)r   r  r   r]  r   r   r   r^  r  ;F)r  r  r   rN  rQ  rS  rU  rY  AssertionErrorru   r   r   )rV   rZ  r[  object_typedirective_typedeclaration	semicolons          rW   parse_declarationz"DefinitionParser.parse_declaration  s    & 	
 	
 	
 FTUUU 
"
 

 

 =N   /3(""444x4PPKKJ&&**Z*HHKKG##++--KKH$$,,..KKG##++--KKF""**,,KKL((0022KKF""**V*DDKK  '!!LLNNN((--IIIk>;	RRRrY   c                *    |                                  S r\   )r   rU   s    rW   parse_namespace_objectz'DefinitionParser.parse_namespace_objectC  s    &&(((rY   c                    |                                  }|                                  |                     d           |                                  |S )Nz())r   ru   r   rE  rP  s     rW   parse_xref_objectz"DefinitionParser.parse_xref_objectF  sI    &&((rY   ASTExpression | ASTTypec                   | j         }d }	 |                                 }|                                  |                                  n# t          $ r}|| _         	 |                     d          }|                                  |                                  n3# t          $ r&}d}|df|dfg}|                     ||          |d }~ww xY wY d }~nd }~ww xY w|S )NFz%Error when parsing (type) expression.zIf expressionzIf type)ri   r   ru   rE  r:   r   r   )rV   ri   r   ex_exprex_typer8  r   s          rW   parse_expressionz!DefinitionParser.parse_expressionN  s   h.2	H((**CLLNNNOO 	H 	H 	HDH
H&&u--!!!!" H H H@o.i( ,,T6::GH "!!!!	H 
s;   <A 
CC=BC
C"!CCCC)rP   rQ   )rP   rZ   )rP   rc   )rP   rp   )rP   r   )r   rQ   r   rQ   r   rQ   rP   r   )rP   r   )rP   r   )rP   r%   r   )r   rG   rP   r   )T)r   r   r   r   r   r   rP   rI   )rP   r   )rP   r   )rP   rL   )r   rQ   rP   r   )r  rc   r
  r   rP   r   )r  rc   r
  r   rP   r   )r   r#  r   rQ   r
  r   rP   rH   )NT)r  rc   r9  r   rP   r:  r\   )r   r#  r  rc   rP   r.   )r   r#  r  rc   rP   r/   )rP   r   )rP   r+   )rP   r1   )rP   r   )rP   r   )rZ  rQ   r[  rQ   rP   r   )rP   rk  ),__name__
__module____qualname__propertyrX   r_   rb   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r"  r/  r4  rA  r   r  rN  rQ  rS  rU  rY  rf  rh  rj  ro  rT   rY   rW   rO   rO   Z   s          X + + + X+ . . . X.5 5 5 5&, , , ,\	! 	! 	! 	!    % % % %>' ' ' '8 8 8 8*2 *2 *2 *2X$0 $0 $0 $0L2 2 2 246+ 6+ 6+ 6+p   - - - -<   3 3 3 3 RV+. +. +. +. +.Z, , , ,@   5 5 5 5< < < <&#* #* #* #*JA
 A
 A
 A
FF F F F FSW SW SW SWl AETE TE TE TE TEn @D% % % % %B8) 8) 8) 8) 8)t+ + + +%% %% %% %%N         0 0 0 05S 5S 5S 5Sn) ) ) )        rY   rO   N)R
__future__r   typingr   sphinx.domains.c._astr   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   r1   sphinx.domains.c._idsr2   r3   r4   r5   r6   r7   sphinx.util.cfamilyr8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   collections.abcrE   rF   rG   rH   rI   rJ   rK   rL   rM   rO   rT   rY   rW   <module>rz     s   " " " " " "            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .^                                               22222222               H H H H Hz H H H H HrY   