o
    i                     @   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   F/home/app/Keep/.python/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   leadZnvlistZattrstrZ
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$   rM   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,   rT   )r$   rM   r=   cr   r   r   rQ      s   zNodeVisitor.generic_visit)r    rC   rD   __doc__rO   r   rT   rQ   r   r   r   r   rL      s
    !rL   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<   )rY   rZ   r[   r   )r$   rY   rZ   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 )NrY   rZ   )rY   appendrZ   rE   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<   )rY   rZ   r+   r   r   r   __iter__      

zArrayDecl.__iter__)r[   r<   r    rC   rD   r!   r^   r,   rf   r   r   r   r   r   rX          
rX   c                   @   rW   )ArrayRef)r(   	subscriptr   r\   Nc                 C      || _ || _|| _d S r<   )r(   rk   r   )r$   r(   rk   r   r   r   r   r^         
zArrayRef.__init__c                 C   r`   )Nr(   rk   )r(   ra   rk   rE   rb   r   r   r   r,      rd   zArrayRef.childrenc                 c   re   r<   )r(   rk   r+   r   r   r   rf      rg   zArrayRef.__iter__r   r<   rh   r   r   r   r   rj          
rj   c                   @   rW   )
Assignment)oplvaluervaluer   r\   Nc                 C   r]   r<   )rp   rq   rr   r   )r$   rp   rq   rr   r   r   r   r   r^      r_   zAssignment.__init__c                 C   r`   )Nrq   rr   )rq   ra   rr   rE   rb   r   r   r   r,     rd   zAssignment.childrenc                 c   re   r<   )rq   rr   r+   r   r   r   rf     rg   zAssignment.__iter__rp   r<   rh   r   r   r   r   ro      ri   ro   c                   @   rW   )Alignas)	alignmentr   r\   Nc                 C      || _ || _d S r<   )ru   r   )r$   ru   r   r   r   r   r^        
zAlignas.__init__c                 C   &   g }| j d ur|d| j f t|S )Nru   )ru   ra   rE   rb   r   r   r   r,        
zAlignas.childrenc                 c       | j d ur| j V  d S d S r<   )ru   r+   r   r   r   rf   "     
zAlignas.__iter__r   r<   rh   r   r   r   r   rt         
rt   c                   @   rW   )BinaryOp)rp   leftrightr   r\   Nc                 C   r]   r<   )rp   r~   r   r   )r$   rp   r~   r   r   r   r   r   r^   ,  r_   zBinaryOp.__init__c                 C   r`   )Nr~   r   )r~   ra   r   rE   rb   r   r   r   r,   2  rd   zBinaryOp.childrenc                 c   re   r<   )r~   r   r+   r   r   r   rf   :  rg   zBinaryOp.__iter__rs   r<   rh   r   r   r   r   r}   )  ri   r}   c                   @   rW   )Breakr   r\   Nc                 C   
   || _ d S r<   r   r$   r   r   r   r   r^   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   rf   L     zBreak.__iter__r   r<   rh   r   r   r   r   r   C      
r   c                   @   rW   )Case)exprstmtsr   r\   Nc                 C   rl   r<   )r   r   r   )r$   r   r   r   r   r   r   r^   V  rm   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   ra   	enumerater   rE   r$   rc   irB   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$   rB   r   r   r   rf   c     
zCase.__iter__r   r<   rh   r   r   r   r   r   S  rn   r   c                   @   rW   )Cast)to_typer   r   r\   Nc                 C   rl   r<   )r   r   r   )r$   r   r   r   r   r   r   r^   o  rm   zCast.__init__c                 C   r`   )Nr   r   )r   ra   r   rE   rb   r   r   r   r,   t  rd   zCast.childrenc                 c   re   r<   )r   r   r+   r   r   r   rf   |  rg   zCast.__iter__r   r<   rh   r   r   r   r   r   l  rn   r   c                   @   rW   )Compound)block_itemsr   r\   Nc                 C   rv   r<   )r   r   )r$   r   r   r   r   r   r^     rw   zCompound.__init__c                 C   :   g }t | jpg D ]\}}|d| d|f q	t|S )Nzblock_items[r   )r   r   ra   rE   r   r   r   r   r,        zCompound.childrenc                 c       | j pg D ]}|V  qd S r<   )r   r   r   r   r   rf        zCompound.__iter__r   r<   rh   r   r   r   r   r     r|   r   c                   @   rW   )CompoundLiteral)rY   initr   r\   Nc                 C   rl   r<   )rY   r   r   )r$   rY   r   r   r   r   r   r^     rm   zCompoundLiteral.__init__c                 C   r`   )NrY   r   )rY   ra   r   rE   rb   r   r   r   r,     rd   zCompoundLiteral.childrenc                 c   re   r<   )rY   r   r+   r   r   r   rf     rg   zCompoundLiteral.__iter__r   r<   rh   r   r   r   r   r     rn   r   c                   @   rW   )Constant)rY   r;   r   r\   Nc                 C   rl   r<   )rY   r;   r   )r$   rY   r;   r   r   r   r   r^     rm   zConstant.__init__c                 C      g }t |S r<   rE   rb   r   r   r   r,        zConstant.childrenc                 c   r   r<   r   r+   r   r   r   rf     r   zConstant.__iter__)rY   r;   r<   rh   r   r   r   r   r     s    
r   c                   @   rW   )Continuer   Nc                 C   r   r<   r   r   r   r   r   r^     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   rf     r   zContinue.__iter__r   r<   rh   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funcspecrY   r   bitsizer   r\   Nc
           
      C   s:   || _ || _|| _|| _|| _|| _|| _|| _|	| _d S r<   )	r(   r   r   r   r   rY   r   r   r   )
r$   r(   r   r   r   r   rY   r   r   r   r   r   r   r^     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 )NrY   r   r   )rY   ra   r   r   rE   rb   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<   )rY   r   r   r+   r   r   r   rf        


zDecl.__iter__)r(   r   r   r   r   r<   rh   r   r   r   r   r     s    

r   c                   @   rW   )DeclList)declsr   r\   Nc                 C   rv   r<   )r   r   )r$   r   r   r   r   r   r^     rw   zDeclList.__init__c                 C   r   Nzdecls[r   r   r   ra   rE   r   r   r   r   r,     r   zDeclList.childrenc                 c   r   r<   r   r   r   r   r   rf     r   zDeclList.__iter__r   r<   rh   r   r   r   r   r     r|   r   c                   @   rW   )Default)r   r   r\   Nc                 C   rv   r<   )r   r   )r$   r   r   r   r   r   r^   %  rw   zDefault.__init__c                 C   r   )Nr   r   )r   r   ra   rE   r   r   r   r   r,   )  r   zDefault.childrenc                 c   r   r<   )r   r   r   r   r   rf   /  r   zDefault.__iter__r   r<   rh   r   r   r   r   r   "  r|   r   c                   @   rW   )DoWhilecondstmtr   r\   Nc                 C   rl   r<   r   r   r   r$   r   r   r   r   r   r   r^   9  rm   zDoWhile.__init__c                 C   r`   Nr   r   r   ra   r   rE   rb   r   r   r   r,   >  rd   zDoWhile.childrenc                 c   re   r<   r   r   r+   r   r   r   rf   F  rg   zDoWhile.__iter__r   r<   rh   r   r   r   r   r   6  rn   r   c                   @   rW   )EllipsisParamr   Nc                 C   r   r<   r   r   r   r   r   r^   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   rf   X  r   zEllipsisParam.__iter__r   r<   rh   r   r   r   r   r   O  r   r   c                   @   rW   )EmptyStatementr   Nc                 C   r   r<   r   r   r   r   r   r^   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   rf   h  r   zEmptyStatement.__iter__r   r<   rh   r   r   r   r   r   _  r   r   c                   @   rW   )Enum)r(   valuesr   r\   Nc                 C   rl   r<   )r(   r   r   )r$   r(   r   r   r   r   r   r^   r  rm   zEnum.__init__c                 C   rx   )Nr   )r   ra   rE   rb   r   r   r   r,   w  ry   zEnum.childrenc                 c   rz   r<   )r   r+   r   r   r   rf   }  r{   zEnum.__iter__r(   r<   rh   r   r   r   r   r   o      
r   c                   @   rW   )
Enumerator)r(   r;   r   r\   Nc                 C   rl   r<   )r(   r;   r   )r$   r(   r;   r   r   r   r   r^     rm   zEnumerator.__init__c                 C   rx   )Nr;   )r;   ra   rE   rb   r   r   r   r,     ry   zEnumerator.childrenc                 c   rz   r<   )r;   r+   r   r   r   rf     r{   zEnumerator.__iter__r   r<   rh   r   r   r   r   r     r   r   c                   @   rW   )EnumeratorList)enumeratorsr   r\   Nc                 C   rv   r<   )r   r   )r$   r   r   r   r   r   r^     rw   zEnumeratorList.__init__c                 C   r   )Nzenumerators[r   )r   r   ra   rE   r   r   r   r   r,     r   zEnumeratorList.childrenc                 c   r   r<   )r   r   r   r   r   rf     r   zEnumeratorList.__iter__r   r<   rh   r   r   r   r   r     r|   r   c                   @   rW   )ExprListexprsr   r\   Nc                 C   rv   r<   r   r   r$   r   r   r   r   r   r^     rw   zExprList.__init__c                 C   r   Nzexprs[r   r   r   ra   rE   r   r   r   r   r,     r   zExprList.childrenc                 c   r   r<   r   r   r   r   r   rf     r   zExprList.__iter__r   r<   rh   r   r   r   r   r     r|   r   c                   @   rW   )FileAST)extr   r\   Nc                 C   rv   r<   )r   r   )r$   r   r   r   r   r   r^     rw   zFileAST.__init__c                 C   r   )Nzext[r   )r   r   ra   rE   r   r   r   r   r,     r   zFileAST.childrenc                 c   r   r<   )r   r   r   r   r   rf     r   zFileAST.__iter__r   r<   rh   r   r   r   r   r     r|   r   c                   @   rW   )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   r^     
   
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   ra   r   r   r   rE   rb   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   rf     s   



zFor.__iter__r   r<   rh   r   r   r   r   r     s    

r   c                   @   rW   )FuncCall)r(   argsr   r\   Nc                 C   rl   r<   )r(   r   r   )r$   r(   r   r   r   r   r   r^     rm   zFuncCall.__init__c                 C   r`   )Nr(   r   )r(   ra   r   rE   rb   r   r   r   r,      rd   zFuncCall.childrenc                 c   re   r<   )r(   r   r+   r   r   r   rf     rg   zFuncCall.__iter__r   r<   rh   r   r   r   r   r     rn   r   c                   @   rW   )FuncDecl)r   rY   r   r\   Nc                 C   rl   r<   )r   rY   r   )r$   r   rY   r   r   r   r   r^     rm   zFuncDecl.__init__c                 C   r`   )Nr   rY   )r   ra   rY   rE   rb   r   r   r   r,     rd   zFuncDecl.childrenc                 c   re   r<   )r   rY   r+   r   r   r   rf   !  rg   zFuncDecl.__iter__r   r<   rh   r   r   r   r   r     rn   r   c                   @   rW   )FuncDef)declparam_declsbodyr   r\   Nc                 C   r]   r<   )r   r   r   r   )r$   r   r   r   r   r   r   r   r^   -  r_   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   ra   r   r   r   rE   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   rf   =  s   

zFuncDef.__iter__r   r<   rh   r   r   r   r   r   *      

r   c                   @   rW   )Gotor(   r   r\   Nc                 C   rv   r<   r(   r   r$   r(   r   r   r   r   r^   K  rw   zGoto.__init__c                 C   r   r<   r   rb   r   r   r   r,   O  r   zGoto.childrenc                 c   r   r<   r   r+   r   r   r   rf   S  r   zGoto.__iter__r   r<   rh   r   r   r   r   r   H      
r   c                   @   rW   )IDr   Nc                 C   rv   r<   r   r   r   r   r   r^   ]  rw   zID.__init__c                 C   r   r<   r   rb   r   r   r   r,   a  r   zID.childrenc                 c   r   r<   r   r+   r   r   r   rf   e  r   zID.__iter__r   r<   rh   r   r   r   r   r   Z  r   r   c                   @   rW   )IdentifierType)namesr   r\   Nc                 C   rv   r<   )r   r   )r$   r   r   r   r   r   r^   o  rw   zIdentifierType.__init__c                 C   r   r<   r   rb   r   r   r   r,   s  r   zIdentifierType.childrenc                 c   r   r<   r   r+   r   r   r   rf   w  r   zIdentifierType.__iter__)r   r<   rh   r   r   r   r   r   l  r   r   c                   @   rW   )Ifr   iftrueiffalser   r\   Nc                 C   r]   r<   r   r   r   r   r$   r   r   r   r   r   r   r   r^     r_   zIf.__init__c                 C   r   Nr   r   r   r   ra   r   r   rE   rb   r   r   r   r,     r   zIf.childrenc                 c   r   r<   r   r   r   r+   r   r   r   rf     r   zIf.__iter__r   r<   rh   r   r   r   r   r   ~  r   r   c                   @   rW   )InitListr   Nc                 C   rv   r<   r   r   r   r   r   r^     rw   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   rf     r   zInitList.__iter__r   r<   rh   r   r   r   r   r     r|   r   c                   @   rW   )Label)r(   r   r   r\   Nc                 C   rl   r<   )r(   r   r   )r$   r(   r   r   r   r   r   r^     rm   zLabel.__init__c                 C   rx   )Nr   )r   ra   rE   rb   r   r   r   r,     ry   zLabel.childrenc                 c   rz   r<   )r   r+   r   r   r   rf     r{   zLabel.__iter__r   r<   rh   r   r   r   r   r     r   r   c                   @   rW   )NamedInitializer)r(   r   r   r\   Nc                 C   rl   r<   )r(   r   r   )r$   r(   r   r   r   r   r   r^     rm   zNamedInitializer.__init__c                 C   r   )Nr   zname[r   )r   ra   r   r(   rE   r   r   r   r   r,     r   zNamedInitializer.childrenc                 c   r   r<   )r   r(   r   r   r   r   rf     r   zNamedInitializer.__iter__r   r<   rh   r   r   r   r   r     rn   r   c                   @   rW   )	ParamList)paramsr   r\   Nc                 C   rv   r<   )r   r   )r$   r   r   r   r   r   r^     rw   zParamList.__init__c                 C   r   )Nzparams[r   )r   r   ra   rE   r   r   r   r   r,     r   zParamList.childrenc                 c   r   r<   )r   r   r   r   r   rf     r   zParamList.__iter__r   r<   rh   r   r   r   r   r     r|   r   c                   @   rW   )PtrDecl)r   rY   r   r\   Nc                 C   rl   r<   )r   rY   r   )r$   r   rY   r   r   r   r   r^     rm   zPtrDecl.__init__c                 C   rx   NrY   rY   ra   rE   rb   r   r   r   r,     ry   zPtrDecl.childrenc                 c   rz   r<   rY   r+   r   r   r   rf      r{   zPtrDecl.__iter__)r   r<   rh   r   r   r   r   r     r   r   c                   @   rW   )Return)r   r   r\   Nc                 C   rv   r<   )r   r   )r$   r   r   r   r   r   r^   
  rw   zReturn.__init__c                 C   rx   Nr   r   ra   rE   rb   r   r   r   r,     ry   zReturn.childrenc                 c   rz   r<   r   r+   r   r   r   rf     r{   zReturn.__iter__r   r<   rh   r   r   r   r   r     r|   r   c                   @   rW   )StaticAssert)r   messager   r\   Nc                 C   rl   r<   )r   r   r   )r$   r   r   r   r   r   r   r^     rm   zStaticAssert.__init__c                 C   r`   )Nr   r   )r   ra   r   rE   rb   r   r   r   r,   #  rd   zStaticAssert.childrenc                 c   re   r<   )r   r   r+   r   r   r   rf   +  rg   zStaticAssert.__iter__r   r<   rh   r   r   r   r   r     rn   r   c                   @   rW   )Structr(   r   r   r\   Nc                 C   rl   r<   r(   r   r   r$   r(   r   r   r   r   r   r^   7  rm   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   rf   B  r   zStruct.__iter__r   r<   rh   r   r   r   r   r   4  r   r   c                   @   rW   )	StructRef)r(   rY   fieldr   r\   Nc                 C   r]   r<   )r(   rY   r  r   )r$   r(   rY   r  r   r   r   r   r^   L  r_   zStructRef.__init__c                 C   r`   )Nr(   r  )r(   ra   r  rE   rb   r   r   r   r,   R  rd   zStructRef.childrenc                 c   re   r<   )r(   r  r+   r   r   r   rf   Z  rg   zStructRef.__iter__r   r<   rh   r   r   r   r   r  I  ri   r  c                   @   rW   )Switchr   Nc                 C   rl   r<   r   r   r   r   r   r^   f  rm   zSwitch.__init__c                 C   r`   r   r   rb   r   r   r   r,   k  rd   zSwitch.childrenc                 c   re   r<   r   r+   r   r   r   rf   s  rg   zSwitch.__iter__r   r<   rh   r   r   r   r   r  c  rn   r  c                   @   rW   )	TernaryOpr   Nc                 C   r]   r<   r   r   r   r   r   r^     r_   zTernaryOp.__init__c                 C   r   r   r   rb   r   r   r   r,     r   zTernaryOp.childrenc                 c   r   r<   r   r+   r   r   r   rf     r   zTernaryOp.__iter__r   r<   rh   r   r   r   r   r  |  r   r  c                   @   rW   )TypeDecl)declnamer   r   rY   r   r\   Nc                 C   r   r<   )r  r   r   rY   r   )r$   r  r   r   rY   r   r   r   r   r^     r   zTypeDecl.__init__c                 C   rx   r   r   rb   r   r   r   r,     ry   zTypeDecl.childrenc                 c   rz   r<   r   r+   r   r   r   rf     r{   zTypeDecl.__iter__)r  r   r   r<   rh   r   r   r   r   r        
r  c                   @   rW   )Typedef)r(   r   r   rY   r   r\   Nc                 C   r   r<   )r(   r   r   rY   r   )r$   r(   r   r   rY   r   r   r   r   r^     r   zTypedef.__init__c                 C   rx   r   r   rb   r   r   r   r,     ry   zTypedef.childrenc                 c   rz   r<   r   r+   r   r   r   rf     r{   zTypedef.__iter__)r(   r   r   r<   rh   r   r   r   r   r
    r	  r
  c                   @   rW   )Typename)r(   r   r   rY   r   r\   Nc                 C   r   r<   )r(   r   r   rY   r   )r$   r(   r   r   rY   r   r   r   r   r^     r   zTypename.__init__c                 C   rx   r   r   rb   r   r   r   r,     ry   zTypename.childrenc                 c   rz   r<   r   r+   r   r   r   rf     r{   zTypename.__iter__)r(   r   r   r<   rh   r   r   r   r   r    r	  r  c                   @   rW   )UnaryOp)rp   r   r   r\   Nc                 C   rl   r<   )rp   r   r   )r$   rp   r   r   r   r   r   r^     rm   zUnaryOp.__init__c                 C   rx   r   r   rb   r   r   r   r,     ry   zUnaryOp.childrenc                 c   rz   r<   r   r+   r   r   r   rf     r{   zUnaryOp.__iter__rs   r<   rh   r   r   r   r   r    r   r  c                   @   rW   )Unionr   Nc                 C   rl   r<   r  r  r   r   r   r^     rm   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   rf     r   zUnion.__iter__r   r<   rh   r   r   r   r   r     r   r  c                   @   rW   )Whiler   Nc                 C   rl   r<   r   r   r   r   r   r^     rm   zWhile.__init__c                 C   r`   r   r   rb   r   r   r   r,     rd   zWhile.childrenc                 c   re   r<   r   r+   r   r   r   rf   %  rg   zWhile.__iter__r   r<   rh   r   r   r   r   r    rn   r  c                   @   rW   )Pragma)stringr   r\   Nc                 C   rv   r<   )r  r   )r$   r  r   r   r   r   r^   1  rw   zPragma.__init__c                 C   r   r<   r   rb   r   r   r   r,   5  r   zPragma.childrenc                 c   r   r<   r   r+   r   r   r   rf   9  r   zPragma.__iter__)r  r<   rh   r   r   r   r   r  .  r   r  ):rH   typingr   r   r   r   r	   r   rL   rX   rj   ro   rt   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#