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