o
    'vi                     @   sX  d dl Z d dlmZmZmZmZ dd ZG dd dZG dd dZG d	d
 d
eZ	G dd deZ
G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZG d!d" d"eZG d#d$ d$eZG d%d& d&eZG d'd( d(eZG d)d* d*eZG d+d, d,eZG d-d. d.eZG d/d0 d0eZG d1d2 d2eZG d3d4 d4eZG d5d6 d6eZG d7d8 d8eZ G d9d: d:eZ!G d;d< d<eZ"G d=d> d>eZ#G d?d@ d@eZ$G dAdB dBeZ%G dCdD dDeZ&G dEdF dFeZ'G dGdH dHeZ(G dIdJ dJeZ)G dKdL dLeZ*G dMdN dNeZ+G dOdP dPeZ,G dQdR dReZ-G dSdT dTeZ.G dUdV dVeZ/G dWdX dXeZ0G dYdZ dZeZ1G d[d\ d\eZ2G d]d^ d^eZ3G d_d` d`eZ4G dadb dbeZ5G dcdd ddeZ6G dedf dfeZ7G dgdh dheZ8G didj djeZ9dS )k    N)AnyClassVarIOOptionalc                 C   s.   t | trdddd | D  d S t| S )z[
    Get the representation of an object, with dedicated pprint-like format for lists.
    [z,
 c                 s   s     | ]}t |d dV  qdS )

 N)_reprreplace).0e r   N/home/air/biblejyuku/back/venv/lib/python3.10/site-packages/pycparser/c_ast.py	<genexpr>   s    z_repr.<locals>.<genexpr>z
])
isinstancelistjoinrepr)objr   r   r   r	      s   
r	   c                   @   s   e Zd ZU dZ	 dZeeedf  ed< e	e
 ed< dd Zdd Zejd	d
dd
d
dfdee dededededede	e fddZdS )Noder   .
attr_namescoordc                 C   s   | j jd }d}d}| jdd D ]3}||7 }||7 }||d tt| |dddt|t| j j    7 }d	}d
dt| j j  }q||d 7 }|S )z5Generates a python representation of the current node( N=r   z
   ,r   ))	__class____name__	__slots__r	   getattrr
   len)selfresultindent	separatornamer   r   r   __repr__'   s(   zNode.__repr__c                 C      dS )z)A sequence of all children that are NodesNr   r$   r   r   r   childrenB   s   zNode.childrenr   FTNbufoffset	attrnamesshowemptyattrs	nodenames	showcoord_my_node_namec              
      s   d| }|r|dur| |jj d | d  n| |jj d  jrTdd   fdd	jD }	|rEd
dd |	D }
n
d
dd |	D }
| |
 |r`| dj d | d  D ]\}}|j||d ||||d qidS )a  Pretty print the Node and all its attributes and
        children (recursively) to a buffer.

        buf:
            Open IO buffer into which the Node is printed.

        offset:
            Initial offset (amount of leading spaces)

        attrnames:
            True if you want to see the attribute names in
            name=value pairs. False to only see the values.

        showemptyattrs:
            False if you want to suppress printing empty attributes.

        nodenames:
            True if you want to see the actual node names
            within their parents.

        showcoord:
            Do you want the coordinates of each Node to be
            displayed.
        r   Nz <z>: z: c                 S   s.   | d u pt | dot| dk d S  d S  d S )N__len__r   )hasattrr#   )vr   r   r   is_emptyp   s   .zNode.show.<locals>.is_emptyc                    s,   g | ]}s t |s|t |fqS r   )r"   )r   nr7   r$   r0   r   r   
<listcomp>s   s    zNode.show.<locals>.<listcomp>z, c                 s   s"    | ]\}}| d | V  qdS )r   Nr   )r   r(   valuer   r   r   r   y   s     zNode.show.<locals>.<genexpr>c                 s   s    | ]\}}| V  qd S Nr   )r   _r;   r   r   r   r   {   s    z (at r   r      )r.   r/   r0   r1   r2   r3   )writer   r    r   r   r   r,   show)r$   r-   r.   r/   r0   r1   r2   r3   leadnvlistattrstr
child_namechildr   r9   r   r@   F   s6   " 

z	Node.show)r    
__module____qualname__r!   r   r   tuplestr__annotations__r   r   r)   r,   sysstdoutr   intboolr@   r   r   r   r   r       s:   
 r   c                   @   s0   e Zd ZdZdZdefddZdefddZdS )NodeVisitora  A base NodeVisitor class for visiting c_ast nodes.
    Subclass it and define your own visit_XXX methods, where
    XXX is the class name you want to visit with these
    methods.

    For example:

    class ConstantVisitor(NodeVisitor):
        def __init__(self):
            self.values = []

        def visit_Constant(self, node):
            self.values.append(node.value)

    Creates a list of values of all the constant nodes
    encountered below the given node. To use it:

    cv = ConstantVisitor()
    cv.visit(node)

    Notes:

    *   generic_visit() will be called for AST nodes for which
        no visit_XXX method was defined.
    *   The children of nodes for which a visit_XXX was
        defined will not be visited - if you need this, call
        generic_visit() on the node.
        You can use:
            NodeVisitor.generic_visit(self, node)
    *   Modeled after Python's own AST visiting facilities
        (the ast module of Python 3.0)
    Nnodec                 C   sZ   | j du ri | _ | j |jjd}|du r)d|jj }t| || j}|| j |jj< ||S )zVisit a node.Nvisit_)_method_cachegetr   r    r"   generic_visit)r$   rP   visitormethodr   r   r   visit   s   
zNodeVisitor.visitc                 C   s    |  D ]	\}}| | qdS )ztCalled if no explicit visitor function exists for a
        node. Implements preorder visiting of the node.
        N)r,   rW   )r$   rP   r=   cr   r   r   rT      s   zNodeVisitor.generic_visit)r    rF   rG   __doc__rR   r   rW   rT   r   r   r   r   rO      s
    !rO   c                   @   .   e Zd ZdZd
ddZdd Zdd Zd	ZdS )	ArrayDecl)typedim	dim_qualsr   __weakref__Nc                 C      || _ || _|| _|| _d S r<   )r\   r]   r^   r   )r$   r\   r]   r^   r   r   r   r   __init__      
zArrayDecl.__init__c                 C   @   g }| j d ur|d| j f | jd ur|d| jf t|S )Nr\   r]   )r\   appendr]   rH   r$   nodelistr   r   r   r,         

zArrayDecl.childrenc                 c   .    | j d ur
| j V  | jd ur| jV  d S d S r<   )r\   r]   r+   r   r   r   __iter__      

zArrayDecl.__iter__)r^   r<   r    rF   rG   r!   ra   r,   ri   r   r   r   r   r   r[          
r[   c                   @   rZ   )ArrayRef)r(   	subscriptr   r_   Nc                 C      || _ || _|| _d S r<   )r(   rn   r   )r$   r(   rn   r   r   r   r   ra         
zArrayRef.__init__c                 C   rc   )Nr(   rn   )r(   rd   rn   rH   re   r   r   r   r,      rg   zArrayRef.childrenc                 c   rh   r<   )r(   rn   r+   r   r   r   ri      rj   zArrayRef.__iter__r   r<   rk   r   r   r   r   rm          
rm   c                   @   rZ   )
Assignment)oplvaluervaluer   r_   Nc                 C   r`   r<   )rs   rt   ru   r   )r$   rs   rt   ru   r   r   r   r   ra      rb   zAssignment.__init__c                 C   rc   )Nrt   ru   )rt   rd   ru   rH   re   r   r   r   r,     rg   zAssignment.childrenc                 c   rh   r<   )rt   ru   r+   r   r   r   ri     rj   zAssignment.__iter__rs   r<   rk   r   r   r   r   rr      rl   rr   c                   @   rZ   )Alignas)	alignmentr   r_   Nc                 C      || _ || _d S r<   )rx   r   )r$   rx   r   r   r   r   ra        
zAlignas.__init__c                 C   &   g }| j d ur|d| j f t|S )Nrx   )rx   rd   rH   re   r   r   r   r,        
zAlignas.childrenc                 c       | j d ur| j V  d S d S r<   )rx   r+   r   r   r   ri   "     
zAlignas.__iter__r   r<   rk   r   r   r   r   rw         
rw   c                   @   rZ   )BinaryOp)rs   leftrightr   r_   Nc                 C   r`   r<   )rs   r   r   r   )r$   rs   r   r   r   r   r   r   ra   ,  rb   zBinaryOp.__init__c                 C   rc   )Nr   r   )r   rd   r   rH   re   r   r   r   r,   2  rg   zBinaryOp.childrenc                 c   rh   r<   )r   r   r+   r   r   r   ri   :  rj   zBinaryOp.__iter__rv   r<   rk   r   r   r   r   r   )  rl   r   c                   @   rZ   )Breakr   r_   Nc                 C   
   || _ d S r<   r   r$   r   r   r   r   ra   F     
zBreak.__init__c                 C   r*   Nr   r   r+   r   r   r   r,   I     zBreak.childrenc                 c       d S r<   r   r+   r   r   r   ri   L     zBreak.__iter__r   r<   rk   r   r   r   r   r   C      
r   c                   @   rZ   )Case)exprstmtsr   r_   Nc                 C   ro   r<   )r   r   r   )r$   r   r   r   r   r   r   ra   V  rp   zCase.__init__c                 C   T   g }| j d ur|d| j f t| jpg D ]\}}|d| d|f qt|S )Nr   stmts[])r   rd   	enumerater   rH   r$   rf   irE   r   r   r   r,   [     
zCase.childrenc                 c   .    | j d ur
| j V  | jpg D ]}|V  qd S r<   )r   r   r$   rE   r   r   r   ri   c     
zCase.__iter__r   r<   rk   r   r   r   r   r   S  rq   r   c                   @   rZ   )Cast)to_typer   r   r_   Nc                 C   ro   r<   )r   r   r   )r$   r   r   r   r   r   r   ra   o  rp   zCast.__init__c                 C   rc   )Nr   r   )r   rd   r   rH   re   r   r   r   r,   t  rg   zCast.childrenc                 c   rh   r<   )r   r   r+   r   r   r   ri   |  rj   zCast.__iter__r   r<   rk   r   r   r   r   r   l  rq   r   c                   @   rZ   )Compound)block_itemsr   r_   Nc                 C   ry   r<   )r   r   )r$   r   r   r   r   r   ra     rz   zCompound.__init__c                 C   :   g }t | jpg D ]\}}|d| d|f q	t|S )Nzblock_items[r   )r   r   rd   rH   r   r   r   r   r,        zCompound.childrenc                 c       | j pg D ]}|V  qd S r<   )r   r   r   r   r   ri        zCompound.__iter__r   r<   rk   r   r   r   r   r     r   r   c                   @   rZ   )CompoundLiteral)r\   initr   r_   Nc                 C   ro   r<   )r\   r   r   )r$   r\   r   r   r   r   r   ra     rp   zCompoundLiteral.__init__c                 C   rc   )Nr\   r   )r\   rd   r   rH   re   r   r   r   r,     rg   zCompoundLiteral.childrenc                 c   rh   r<   )r\   r   r+   r   r   r   ri     rj   zCompoundLiteral.__iter__r   r<   rk   r   r   r   r   r     rq   r   c                   @   rZ   )Constant)r\   r;   r   r_   Nc                 C   ro   r<   )r\   r;   r   )r$   r\   r;   r   r   r   r   ra     rp   zConstant.__init__c                 C      g }t |S r<   rH   re   r   r   r   r,        zConstant.childrenc                 c   r   r<   r   r+   r   r   r   ri     r   zConstant.__iter__)r\   r;   r<   rk   r   r   r   r   r     s    
r   c                   @   rZ   )Continuer   Nc                 C   r   r<   r   r   r   r   r   ra     r   zContinue.__init__c                 C   r*   r   r   r+   r   r   r   r,     r   zContinue.childrenc                 c   r   r<   r   r+   r   r   r   ri     r   zContinue.__iter__r   r<   rk   r   r   r   r   r     r   r   c                   @   s0   e Zd ZdZ	d
ddZdd Zdd Zd	ZdS )Decl)
r(   qualsalignstoragefuncspecr\   r   bitsizer   r_   Nc
           
      C   s:   || _ || _|| _|| _|| _|| _|| _|| _|	| _d S r<   )	r(   r   r   r   r   r\   r   r   r   )
r$   r(   r   r   r   r   r\   r   r   r   r   r   r   ra     s   
zDecl.__init__c                 C   Z   g }| j d ur|d| j f | jd ur|d| jf | jd ur)|d| jf t|S )Nr\   r   r   )r\   rd   r   r   rH   re   r   r   r   r,        


zDecl.childrenc                 c   @    | j d ur
| j V  | jd ur| jV  | jd ur| jV  d S d S r<   )r\   r   r   r+   r   r   r   ri        


zDecl.__iter__)r(   r   r   r   r   r<   rk   r   r   r   r   r     s    

r   c                   @   rZ   )DeclList)declsr   r_   Nc                 C   ry   r<   )r   r   )r$   r   r   r   r   r   ra     rz   zDeclList.__init__c                 C   r   Nzdecls[r   r   r   rd   rH   r   r   r   r   r,     r   zDeclList.childrenc                 c   r   r<   r   r   r   r   r   ri     r   zDeclList.__iter__r   r<   rk   r   r   r   r   r     r   r   c                   @   rZ   )Default)r   r   r_   Nc                 C   ry   r<   )r   r   )r$   r   r   r   r   r   ra   %  rz   zDefault.__init__c                 C   r   )Nr   r   )r   r   rd   rH   r   r   r   r   r,   )  r   zDefault.childrenc                 c   r   r<   )r   r   r   r   r   ri   /  r   zDefault.__iter__r   r<   rk   r   r   r   r   r   "  r   r   c                   @   rZ   )DoWhilecondstmtr   r_   Nc                 C   ro   r<   r   r   r   r$   r   r   r   r   r   r   ra   9  rp   zDoWhile.__init__c                 C   rc   Nr   r   r   rd   r   rH   re   r   r   r   r,   >  rg   zDoWhile.childrenc                 c   rh   r<   r   r   r+   r   r   r   ri   F  rj   zDoWhile.__iter__r   r<   rk   r   r   r   r   r   6  rq   r   c                   @   rZ   )EllipsisParamr   Nc                 C   r   r<   r   r   r   r   r   ra   R  r   zEllipsisParam.__init__c                 C   r*   r   r   r+   r   r   r   r,   U  r   zEllipsisParam.childrenc                 c   r   r<   r   r+   r   r   r   ri   X  r   zEllipsisParam.__iter__r   r<   rk   r   r   r   r   r   O  r   r   c                   @   rZ   )EmptyStatementr   Nc                 C   r   r<   r   r   r   r   r   ra   b  r   zEmptyStatement.__init__c                 C   r*   r   r   r+   r   r   r   r,   e  r   zEmptyStatement.childrenc                 c   r   r<   r   r+   r   r   r   ri   h  r   zEmptyStatement.__iter__r   r<   rk   r   r   r   r   r   _  r   r   c                   @   rZ   )Enum)r(   valuesr   r_   Nc                 C   ro   r<   )r(   r   r   )r$   r(   r   r   r   r   r   ra   r  rp   zEnum.__init__c                 C   r{   )Nr   )r   rd   rH   re   r   r   r   r,   w  r|   zEnum.childrenc                 c   r}   r<   )r   r+   r   r   r   ri   }  r~   zEnum.__iter__r(   r<   rk   r   r   r   r   r   o      
r   c                   @   rZ   )
Enumerator)r(   r;   r   r_   Nc                 C   ro   r<   )r(   r;   r   )r$   r(   r;   r   r   r   r   ra     rp   zEnumerator.__init__c                 C   r{   )Nr;   )r;   rd   rH   re   r   r   r   r,     r|   zEnumerator.childrenc                 c   r}   r<   )r;   r+   r   r   r   ri     r~   zEnumerator.__iter__r   r<   rk   r   r   r   r   r     r   r   c                   @   rZ   )EnumeratorList)enumeratorsr   r_   Nc                 C   ry   r<   )r   r   )r$   r   r   r   r   r   ra     rz   zEnumeratorList.__init__c                 C   r   )Nzenumerators[r   )r   r   rd   rH   r   r   r   r   r,     r   zEnumeratorList.childrenc                 c   r   r<   )r   r   r   r   r   ri     r   zEnumeratorList.__iter__r   r<   rk   r   r   r   r   r     r   r   c                   @   rZ   )ExprListexprsr   r_   Nc                 C   ry   r<   r   r   r$   r   r   r   r   r   ra     rz   zExprList.__init__c                 C   r   Nzexprs[r   r   r   rd   rH   r   r   r   r   r,     r   zExprList.childrenc                 c   r   r<   r   r   r   r   r   ri     r   zExprList.__iter__r   r<   rk   r   r   r   r   r     r   r   c                   @   rZ   )FileAST)extr   r_   Nc                 C   ry   r<   )r   r   )r$   r   r   r   r   r   ra     rz   zFileAST.__init__c                 C   r   )Nzext[r   )r   r   rd   rH   r   r   r   r   r,     r   zFileAST.childrenc                 c   r   r<   )r   r   r   r   r   ri     r   zFileAST.__iter__r   r<   rk   r   r   r   r   r     r   r   c                   @   rZ   )For)r   r   nextr   r   r_   Nc                 C   "   || _ || _|| _|| _|| _d S r<   )r   r   r   r   r   )r$   r   r   r   r   r   r   r   r   ra     
   
zFor.__init__c                 C   st   g }| j d ur|d| j f | jd ur|d| jf | jd ur)|d| jf | jd ur6|d| jf t|S )Nr   r   r   r   )r   rd   r   r   r   rH   re   r   r   r   r,     s   



zFor.childrenc                 c   sR    | j d ur
| j V  | jd ur| jV  | jd ur| jV  | jd ur'| jV  d S d S r<   )r   r   r   r   r+   r   r   r   ri     s   



zFor.__iter__r   r<   rk   r   r   r   r   r     s    

r   c                   @   rZ   )FuncCall)r(   argsr   r_   Nc                 C   ro   r<   )r(   r   r   )r$   r(   r   r   r   r   r   ra     rp   zFuncCall.__init__c                 C   rc   )Nr(   r   )r(   rd   r   rH   re   r   r   r   r,      rg   zFuncCall.childrenc                 c   rh   r<   )r(   r   r+   r   r   r   ri     rj   zFuncCall.__iter__r   r<   rk   r   r   r   r   r     rq   r   c                   @   rZ   )FuncDecl)r   r\   r   r_   Nc                 C   ro   r<   )r   r\   r   )r$   r   r\   r   r   r   r   ra     rp   zFuncDecl.__init__c                 C   rc   )Nr   r\   )r   rd   r\   rH   re   r   r   r   r,     rg   zFuncDecl.childrenc                 c   rh   r<   )r   r\   r+   r   r   r   ri   !  rj   zFuncDecl.__iter__r   r<   rk   r   r   r   r   r     rq   r   c                   @   rZ   )FuncDef)declparam_declsbodyr   r_   Nc                 C   r`   r<   )r   r   r   r   )r$   r   r   r   r   r   r   r   ra   -  rb   zFuncDef.__init__c                 C   sn   g }| j d ur|d| j f | jd ur|d| jf t| jp!g D ]\}}|d| d|f q#t|S )Nr   r   zparam_decls[r   )r   rd   r   r   r   rH   r   r   r   r   r,   3  s   

zFuncDef.childrenc                 c   s@    | j d ur
| j V  | jd ur| jV  | jpg D ]}|V  qd S r<   )r   r   r   r   r   r   r   ri   =  s   

zFuncDef.__iter__r   r<   rk   r   r   r   r   r   *      

r   c                   @   rZ   )Gotor(   r   r_   Nc                 C   ry   r<   r(   r   r$   r(   r   r   r   r   ra   K  rz   zGoto.__init__c                 C   r   r<   r   re   r   r   r   r,   O  r   zGoto.childrenc                 c   r   r<   r   r+   r   r   r   ri   S  r   zGoto.__iter__r   r<   rk   r   r   r   r   r   H      
r   c                   @   rZ   )IDr   Nc                 C   ry   r<   r   r   r   r   r   ra   ]  rz   zID.__init__c                 C   r   r<   r   re   r   r   r   r,   a  r   zID.childrenc                 c   r   r<   r   r+   r   r   r   ri   e  r   zID.__iter__r   r<   rk   r   r   r   r   r   Z  r   r   c                   @   rZ   )IdentifierType)namesr   r_   Nc                 C   ry   r<   )r   r   )r$   r   r   r   r   r   ra   o  rz   zIdentifierType.__init__c                 C   r   r<   r   re   r   r   r   r,   s  r   zIdentifierType.childrenc                 c   r   r<   r   r+   r   r   r   ri   w  r   zIdentifierType.__iter__)r   r<   rk   r   r   r   r   r   l  r   r   c                   @   rZ   )Ifr   iftrueiffalser   r_   Nc                 C   r`   r<   r   r   r   r   r$   r   r   r   r   r   r   r   ra     rb   zIf.__init__c                 C   r   Nr   r   r   r   rd   r   r   rH   re   r   r   r   r,     r   zIf.childrenc                 c   r   r<   r   r   r   r+   r   r   r   ri     r   zIf.__iter__r   r<   rk   r   r   r   r   r   ~  r   r   c                   @   rZ   )InitListr   Nc                 C   ry   r<   r   r   r   r   r   ra     rz   zInitList.__init__c                 C   r   r   r   r   r   r   r   r,     r   zInitList.childrenc                 c   r   r<   r   r   r   r   r   ri     r   zInitList.__iter__r   r<   rk   r   r   r   r   r     r   r   c                   @   rZ   )Label)r(   r   r   r_   Nc                 C   ro   r<   )r(   r   r   )r$   r(   r   r   r   r   r   ra     rp   zLabel.__init__c                 C   r{   )Nr   )r   rd   rH   re   r   r   r   r,     r|   zLabel.childrenc                 c   r}   r<   )r   r+   r   r   r   ri     r~   zLabel.__iter__r   r<   rk   r   r   r   r   r     r   r   c                   @   rZ   )NamedInitializer)r(   r   r   r_   Nc                 C   ro   r<   )r(   r   r   )r$   r(   r   r   r   r   r   ra     rp   zNamedInitializer.__init__c                 C   r   )Nr   zname[r   )r   rd   r   r(   rH   r   r   r   r   r,     r   zNamedInitializer.childrenc                 c   r   r<   )r   r(   r   r   r   r   ri     r   zNamedInitializer.__iter__r   r<   rk   r   r   r   r   r     rq   r   c                   @   rZ   )	ParamList)paramsr   r_   Nc                 C   ry   r<   )r   r   )r$   r   r   r   r   r   ra     rz   zParamList.__init__c                 C   r   )Nzparams[r   )r   r   rd   rH   r   r   r   r   r,     r   zParamList.childrenc                 c   r   r<   )r   r   r   r   r   ri     r   zParamList.__iter__r   r<   rk   r   r   r   r   r     r   r   c                   @   rZ   )PtrDecl)r   r\   r   r_   Nc                 C   ro   r<   )r   r\   r   )r$   r   r\   r   r   r   r   ra     rp   zPtrDecl.__init__c                 C   r{   Nr\   r\   rd   rH   re   r   r   r   r,     r|   zPtrDecl.childrenc                 c   r}   r<   r\   r+   r   r   r   ri      r~   zPtrDecl.__iter__)r   r<   rk   r   r   r   r   r     r   r   c                   @   rZ   )Return)r   r   r_   Nc                 C   ry   r<   )r   r   )r$   r   r   r   r   r   ra   
  rz   zReturn.__init__c                 C   r{   Nr   r   rd   rH   re   r   r   r   r,     r|   zReturn.childrenc                 c   r}   r<   r   r+   r   r   r   ri     r~   zReturn.__iter__r   r<   rk   r   r   r   r   r     r   r   c                   @   rZ   )StaticAssert)r   messager   r_   Nc                 C   ro   r<   )r   r  r   )r$   r   r  r   r   r   r   ra     rp   zStaticAssert.__init__c                 C   rc   )Nr   r  )r   rd   r  rH   re   r   r   r   r,   #  rg   zStaticAssert.childrenc                 c   rh   r<   )r   r  r+   r   r   r   ri   +  rj   zStaticAssert.__iter__r   r<   rk   r   r   r   r   r     rq   r   c                   @   rZ   )Structr(   r   r   r_   Nc                 C   ro   r<   r(   r   r   r$   r(   r   r   r   r   r   ra   7  rp   zStruct.__init__c                 C   r   r   r   r   r   r   r   r,   <  r   zStruct.childrenc                 c   r   r<   r   r   r   r   r   ri   B  r   zStruct.__iter__r   r<   rk   r   r   r   r   r  4  r   r  c                   @   rZ   )	StructRef)r(   r\   fieldr   r_   Nc                 C   r`   r<   )r(   r\   r  r   )r$   r(   r\   r  r   r   r   r   ra   L  rb   zStructRef.__init__c                 C   rc   )Nr(   r  )r(   rd   r  rH   re   r   r   r   r,   R  rg   zStructRef.childrenc                 c   rh   r<   )r(   r  r+   r   r   r   ri   Z  rj   zStructRef.__iter__r   r<   rk   r   r   r   r   r  I  rl   r  c                   @   rZ   )Switchr   Nc                 C   ro   r<   r   r   r   r   r   ra   f  rp   zSwitch.__init__c                 C   rc   r   r   re   r   r   r   r,   k  rg   zSwitch.childrenc                 c   rh   r<   r   r+   r   r   r   ri   s  rj   zSwitch.__iter__r   r<   rk   r   r   r   r   r  c  rq   r  c                   @   rZ   )	TernaryOpr   Nc                 C   r`   r<   r   r   r   r   r   ra     rb   zTernaryOp.__init__c                 C   r   r   r   re   r   r   r   r,     r   zTernaryOp.childrenc                 c   r   r<   r   r+   r   r   r   ri     r   zTernaryOp.__iter__r   r<   rk   r   r   r   r   r	  |  r   r	  c                   @   rZ   )TypeDecl)declnamer   r   r\   r   r_   Nc                 C   r   r<   )r  r   r   r\   r   )r$   r  r   r   r\   r   r   r   r   ra     r   zTypeDecl.__init__c                 C   r{   r   r   re   r   r   r   r,     r|   zTypeDecl.childrenc                 c   r}   r<   r   r+   r   r   r   ri     r~   zTypeDecl.__iter__)r  r   r   r<   rk   r   r   r   r   r
        
r
  c                   @   rZ   )Typedef)r(   r   r   r\   r   r_   Nc                 C   r   r<   )r(   r   r   r\   r   )r$   r(   r   r   r\   r   r   r   r   ra     r   zTypedef.__init__c                 C   r{   r   r   re   r   r   r   r,     r|   zTypedef.childrenc                 c   r}   r<   r   r+   r   r   r   ri     r~   zTypedef.__iter__)r(   r   r   r<   rk   r   r   r   r   r    r  r  c                   @   rZ   )Typename)r(   r   r   r\   r   r_   Nc                 C   r   r<   )r(   r   r   r\   r   )r$   r(   r   r   r\   r   r   r   r   ra     r   zTypename.__init__c                 C   r{   r   r   re   r   r   r   r,     r|   zTypename.childrenc                 c   r}   r<   r   r+   r   r   r   ri     r~   zTypename.__iter__)r(   r   r   r<   rk   r   r   r   r   r    r  r  c                   @   rZ   )UnaryOp)rs   r   r   r_   Nc                 C   ro   r<   )rs   r   r   )r$   rs   r   r   r   r   r   ra     rp   zUnaryOp.__init__c                 C   r{   r   r   re   r   r   r   r,     r|   zUnaryOp.childrenc                 c   r}   r<   r   r+   r   r   r   ri     r~   zUnaryOp.__iter__rv   r<   rk   r   r   r   r   r    r   r  c                   @   rZ   )Unionr  Nc                 C   ro   r<   r  r  r   r   r   ra     rp   zUnion.__init__c                 C   r   r   r   r   r   r   r   r,     r   zUnion.childrenc                 c   r   r<   r   r   r   r   r   ri     r   zUnion.__iter__r   r<   rk   r   r   r   r   r     r   r  c                   @   rZ   )Whiler   Nc                 C   ro   r<   r   r   r   r   r   ra     rp   zWhile.__init__c                 C   rc   r   r   re   r   r   r   r,     rg   zWhile.childrenc                 c   rh   r<   r   r+   r   r   r   ri   %  rj   zWhile.__iter__r   r<   rk   r   r   r   r   r    rq   r  c                   @   rZ   )Pragma)stringr   r_   Nc                 C   ry   r<   )r  r   )r$   r  r   r   r   r   ra   1  rz   zPragma.__init__c                 C   r   r<   r   re   r   r   r   r,   5  r   zPragma.childrenc                 c   r   r<   r   r+   r   r   r   ri   9  r   zPragma.__iter__)r  r<   rk   r   r   r   r   r  .  r   r  ):rK   typingr   r   r   r   r	   r   rO   r[   rm   rr   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r	  r
  r  r  r  r  r  r  r   r   r   r   <module>   sl   
n:6#