o
    ţaz                     @   sD  d dl Z 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*d+ d+eZG d,d- d-eZG d.d/ d/eZG d0d1 d1eZG d2d3 d3eZG d4d5 d5eZG d6d7 d7eZG d8d9 d9eZG d:d; d;eZG d<d= d=eZG d>d? d?eZ G d@dA dAeZ!G dBdC dCeZ"G dDdE dEeZ#G dFdG dGeZ$G dHdI dIeZ%G dJdK dKeZ&G dLdM dMeZ'G dNdO dOeZ(G dPdQ dQeZ)G dRdS dSeZ*G dTdU dUeZ+G dVdW dWeZ,G dXdY dYeZ-G dZd[ d[eZ.G d\d] d]eZ/G d^d_ d_eZ0G d`da daeZ1G dbdc dceZ2G ddde deeZ3G dfdg dgeZ4G dhdi dieZ5dS )j    Nc                 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	   /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dZ	 dd Zdd Zejdddddfd	d
ZdS )Noder	   c                 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 )z? Generates 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 )z3 A sequence of all children that are Nodes
        Nr	   r   r	   r	   r
   children5   s   zNode.childrenr   FNc              	      s   d| }|r|dur| | jj d | d  n| | jj d   jrX|r? fdd jD }dd	d
 |D }	n fdd jD }
ddd
 |
D }	| |	 |rb| d j  | d   D ]\}}|j||d ||||d qkd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.

            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   g | ]	}|t  |fqS r	   r   r   nr%   r	   r
   
<listcomp>X   s    zNode.show.<locals>.<listcomp>z, c                 s       | ]}d | V  qdS )z%s=%sNr	   )r   nvr	   r	   r
   r   Y       zNode.show.<locals>.<genexpr>c                    s   g | ]}t  |qS r	   r'   r(   r%   r	   r
   r*   [   s    c                 s   r+   )z%sNr	   )r   vr	   r	   r
   r   \   r-   z (at %s)r      )offset	attrnames	nodenames	showcoord_my_node_name)writer   r   
attr_namesr   coordr&   show)r   bufr0   r1   r2   r3   r4   ZleadZnvlistZattrstrZvlistZ
child_namechildr	   r%   r
   r8   :   s0    

z	Node.show)	r   
__module____qualname__r   r#   r&   sysstdoutr8   r	   r	   r	   r
   r      s    r   c                   @   s$   e Zd ZdZdZdd Z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)
    Nc                 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.
        NZvisit_)_method_cachegetr   r   r   generic_visit)r   nodeZvisitormethodr	   r	   r
   visit   s   
zNodeVisitor.visitc                 C   s   |D ]}|  | qdS )zy Called if no explicit visitor function exists for a
            node. Implements preorder visiting of the node.
        N)rE   )r   rC   cr	   r	   r
   rB      s   zNodeVisitor.generic_visit)r   r;   r<   __doc__r@   rE   rB   r	   r	   r	   r
   r?   m   s
    !r?   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_qualsr7   __weakref__Nc                 C      || _ || _|| _|| _d S N)rJ   rK   rL   r7   )r   rJ   rK   rL   r7   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 )NrJ   rK   )rJ   appendrK   tuple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 rO   )rJ   rK   r%   r	   r	   r
   __iter__      

zArrayDecl.__iter__)rL   rO   r   r;   r<   r   rP   r&   rY   r6   r	   r	   r	   r
   rI          
rI   c                   @   rH   )ArrayRef)r"   	subscriptr7   rM   Nc                 C      || _ || _|| _d S rO   )r"   r^   r7   )r   r"   r^   r7   r	   r	   r
   rP         
zArrayRef.__init__c                 C   rR   )Nr"   r^   )r"   rS   r^   rT   rU   r	   r	   r
   r&      rW   zArrayRef.childrenc                 c   rX   rO   )r"   r^   r%   r	   r	   r
   rY      rZ   zArrayRef.__iter__r	   rO   r[   r	   r	   r	   r
   r]          
r]   c                   @   rH   )
Assignment)oplvaluervaluer7   rM   Nc                 C   rN   rO   )rc   rd   re   r7   )r   rc   rd   re   r7   r	   r	   r
   rP      rQ   zAssignment.__init__c                 C   rR   )Nrd   re   )rd   rS   re   rT   rU   r	   r	   r
   r&      rW   zAssignment.childrenc                 c   rX   rO   )rd   re   r%   r	   r	   r
   rY      rZ   zAssignment.__iter__rc   rO   r[   r	   r	   r	   r
   rb      r\   rb   c                   @   rH   )Alignas)	alignmentr7   rM   Nc                 C      || _ || _d S rO   )rh   r7   )r   rh   r7   r	   r	   r
   rP         
zAlignas.__init__c                 C   &   g }| j d ur|d| j f t|S )Nrh   )rh   rS   rT   rU   r	   r	   r
   r&         zAlignas.childrenc                 c       | j d ur| j V  d S d S rO   )rh   r%   r	   r	   r
   rY         
zAlignas.__iter__r	   rO   r[   r	   r	   r	   r
   rg          
rg   c                   @   rH   )BinaryOp)rc   leftrightr7   rM   Nc                 C   rN   rO   )rc   rq   rr   r7   )r   rc   rq   rr   r7   r	   r	   r
   rP      rQ   zBinaryOp.__init__c                 C   rR   )Nrq   rr   )rq   rS   rr   rT   rU   r	   r	   r
   r&     rW   zBinaryOp.childrenc                 c   rX   rO   )rq   rr   r%   r	   r	   r
   rY     rZ   zBinaryOp.__iter__rf   rO   r[   r	   r	   r	   r
   rp      r\   rp   c                   @   rH   )Breakr7   rM   Nc                 C   
   || _ d S rO   r7   r   r7   r	   r	   r
   rP        
zBreak.__init__c                 C   r$   Nr	   r	   r%   r	   r	   r
   r&        zBreak.childrenc                 c       d S rO   r	   r%   r	   r	   r
   rY        zBreak.__iter__r	   rO   r[   r	   r	   r	   r
   rs         
rs   c                   @   rH   )Case)exprstmtsr7   rM   Nc                 C   r_   rO   )r   r   r7   )r   r   r   r7   r	   r	   r
   rP     r`   zCase.__init__c                 C   P   g }| j d ur|d| j f t| jpg D ]\}}|d| |f qt|S )Nr   	stmts[%d])r   rS   	enumerater   rT   r   rV   ir:   r	   r	   r
   r&   $  
   zCase.childrenc                 c   .    | j d ur
| j V  | jpg D ]}|V  qd S rO   )r   r   r   r:   r	   r	   r
   rY   +     
zCase.__iter__r	   rO   r[   r	   r	   r	   r
   r~         
r~   c                   @   rH   )Cast)to_typer   r7   rM   Nc                 C   r_   rO   )r   r   r7   )r   r   r   r7   r	   r	   r
   rP   5  r`   zCast.__init__c                 C   rR   )Nr   r   )r   rS   r   rT   rU   r	   r	   r
   r&   :  rW   zCast.childrenc                 c   rX   rO   )r   r   r%   r	   r	   r
   rY   @  rZ   zCast.__iter__r	   rO   r[   r	   r	   r	   r
   r   3  ra   r   c                   @   rH   )Compound)block_itemsr7   rM   Nc                 C   ri   rO   )r   r7   )r   r   r7   r	   r	   r
   rP   J  rj   zCompound.__init__c                 C   6   g }t | jpg D ]\}}|d| |f q	t|S )Nzblock_items[%d])r   r   rS   rT   r   r	   r	   r
   r&   N     zCompound.childrenc                 c       | j pg D ]}|V  qd S rO   )r   r   r	   r	   r
   rY   T     zCompound.__iter__r	   rO   r[   r	   r	   r	   r
   r   H      
r   c                   @   rH   )CompoundLiteral)rJ   initr7   rM   Nc                 C   r_   rO   )rJ   r   r7   )r   rJ   r   r7   r	   r	   r
   rP   \  r`   zCompoundLiteral.__init__c                 C   rR   )NrJ   r   )rJ   rS   r   rT   rU   r	   r	   r
   r&   a  rW   zCompoundLiteral.childrenc                 c   rX   rO   )rJ   r   r%   r	   r	   r
   rY   g  rZ   zCompoundLiteral.__iter__r	   rO   r[   r	   r	   r	   r
   r   Z  ra   r   c                   @   rH   )Constant)rJ   valuer7   rM   Nc                 C   r_   rO   )rJ   r   r7   )r   rJ   r   r7   r	   r	   r
   rP   q  r`   zConstant.__init__c                 C      g }t |S rO   rT   rU   r	   r	   r
   r&   v     zConstant.childrenc                 c   r{   rO   r	   r%   r	   r	   r
   rY   z  r|   zConstant.__iter__)rJ   r   rO   r[   r	   r	   r	   r
   r   o  s    
r   c                   @   rH   )Continuert   Nc                 C   ru   rO   rv   rw   r	   r	   r
   rP     rx   zContinue.__init__c                 C   r$   ry   r	   r%   r	   r	   r
   r&     rz   zContinue.childrenc                 c   r{   rO   r	   r%   r	   r	   r
   rY     r|   zContinue.__iter__r	   rO   r[   r	   r	   r	   r
   r     r}   r   c                   @   rH   )Decl)
r"   qualsalignstoragefuncspecrJ   r   bitsizer7   rM   Nc
           
      C   s:   || _ || _|| _|| _|| _|| _|| _|| _|	| _d S rO   )	r"   r   r   r   r   rJ   r   r   r7   )
r   r"   r   r   r   r   rJ   r   r   r7   r	   r	   r
   rP     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 )NrJ   r   r   )rJ   rS   r   r   rT   rU   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 rO   )rJ   r   r   r%   r	   r	   r
   rY        


zDecl.__iter__)r"   r   r   r   r   rO   r[   r	   r	   r	   r
   r     s    
r   c                   @   rH   )DeclList)declsr7   rM   Nc                 C   ri   rO   )r   r7   )r   r   r7   r	   r	   r
   rP     rj   zDeclList.__init__c                 C   r   Nz	decls[%d]r   r   rS   rT   r   r	   r	   r
   r&     r   zDeclList.childrenc                 c   r   rO   r   r   r	   r	   r
   rY     r   zDeclList.__iter__r	   rO   r[   r	   r	   r	   r
   r     r   r   c                   @   rH   )Default)r   r7   rM   Nc                 C   ri   rO   )r   r7   )r   r   r7   r	   r	   r
   rP     rj   zDefault.__init__c                 C   r   )Nr   )r   r   rS   rT   r   r	   r	   r
   r&     r   zDefault.childrenc                 c   r   rO   )r   r   r	   r	   r
   rY     r   zDefault.__iter__r	   rO   r[   r	   r	   r	   r
   r     r   r   c                   @   rH   )DoWhilecondstmtr7   rM   Nc                 C   r_   rO   r   r   r7   r   r   r   r7   r	   r	   r
   rP     r`   zDoWhile.__init__c                 C   rR   Nr   r   r   rS   r   rT   rU   r	   r	   r
   r&     rW   zDoWhile.childrenc                 c   rX   rO   r   r   r%   r	   r	   r
   rY     rZ   zDoWhile.__iter__r	   rO   r[   r	   r	   r	   r
   r     ra   r   c                   @   rH   )EllipsisParamrt   Nc                 C   ru   rO   rv   rw   r	   r	   r
   rP     rx   zEllipsisParam.__init__c                 C   r$   ry   r	   r%   r	   r	   r
   r&     rz   zEllipsisParam.childrenc                 c   r{   rO   r	   r%   r	   r	   r
   rY     r|   zEllipsisParam.__iter__r	   rO   r[   r	   r	   r	   r
   r     r}   r   c                   @   rH   )EmptyStatementrt   Nc                 C   ru   rO   rv   rw   r	   r	   r
   rP     rx   zEmptyStatement.__init__c                 C   r$   ry   r	   r%   r	   r	   r
   r&     rz   zEmptyStatement.childrenc                 c   r{   rO   r	   r%   r	   r	   r
   rY     r|   zEmptyStatement.__iter__r	   rO   r[   r	   r	   r	   r
   r     r}   r   c                   @   rH   )Enum)r"   valuesr7   rM   Nc                 C   r_   rO   )r"   r   r7   )r   r"   r   r7   r	   r	   r
   rP     r`   zEnum.__init__c                 C   rk   )Nr   )r   rS   rT   rU   r	   r	   r
   r&     rl   zEnum.childrenc                 c   rm   rO   )r   r%   r	   r	   r
   rY     rn   zEnum.__iter__r"   rO   r[   r	   r	   r	   r
   r         
r   c                   @   rH   )
Enumerator)r"   r   r7   rM   Nc                 C   r_   rO   )r"   r   r7   )r   r"   r   r7   r	   r	   r
   rP     r`   zEnumerator.__init__c                 C   rk   )Nr   )r   rS   rT   rU   r	   r	   r
   r&     rl   zEnumerator.childrenc                 c   rm   rO   )r   r%   r	   r	   r
   rY     rn   zEnumerator.__iter__r   rO   r[   r	   r	   r	   r
   r     r   r   c                   @   rH   )EnumeratorList)enumeratorsr7   rM   Nc                 C   ri   rO   )r   r7   )r   r   r7   r	   r	   r
   rP   '  rj   zEnumeratorList.__init__c                 C   r   )Nzenumerators[%d])r   r   rS   rT   r   r	   r	   r
   r&   +  r   zEnumeratorList.childrenc                 c   r   rO   )r   r   r	   r	   r
   rY   1  r   zEnumeratorList.__iter__r	   rO   r[   r	   r	   r	   r
   r   %  r   r   c                   @   rH   )ExprListexprsr7   rM   Nc                 C   ri   rO   r   r7   r   r   r7   r	   r	   r
   rP   9  rj   zExprList.__init__c                 C   r   Nz	exprs[%d]r   r   rS   rT   r   r	   r	   r
   r&   =  r   zExprList.childrenc                 c   r   rO   r   r   r	   r	   r
   rY   C  r   zExprList.__iter__r	   rO   r[   r	   r	   r	   r
   r   7  r   r   c                   @   rH   )FileAST)extr7   rM   Nc                 C   ri   rO   )r   r7   )r   r   r7   r	   r	   r
   rP   K  rj   zFileAST.__init__c                 C   r   )Nzext[%d])r   r   rS   rT   r   r	   r	   r
   r&   O  r   zFileAST.childrenc                 c   r   rO   )r   r   r	   r	   r
   rY   U  r   zFileAST.__iter__r	   rO   r[   r	   r	   r	   r
   r   I  r   r   c                   @   rH   )For)r   r   nextr   r7   rM   Nc                 C   "   || _ || _|| _|| _|| _d S rO   )r   r   r   r   r7   )r   r   r   r   r   r7   r	   r	   r
   rP   ]  
   
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   rS   r   r   r   rT   rU   r	   r	   r
   r&   d  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 rO   )r   r   r   r   r%   r	   r	   r
   rY   l  s   



zFor.__iter__r	   rO   r[   r	   r	   r	   r
   r   [  s    

r   c                   @   rH   )FuncCall)r"   argsr7   rM   Nc                 C   r_   rO   )r"   r   r7   )r   r"   r   r7   r	   r	   r
   rP   z  r`   zFuncCall.__init__c                 C   rR   )Nr"   r   )r"   rS   r   rT   rU   r	   r	   r
   r&     rW   zFuncCall.childrenc                 c   rX   rO   )r"   r   r%   r	   r	   r
   rY     rZ   zFuncCall.__iter__r	   rO   r[   r	   r	   r	   r
   r   x  ra   r   c                   @   rH   )FuncDecl)r   rJ   r7   rM   Nc                 C   r_   rO   )r   rJ   r7   )r   r   rJ   r7   r	   r	   r
   rP     r`   zFuncDecl.__init__c                 C   rR   )Nr   rJ   )r   rS   rJ   rT   rU   r	   r	   r
   r&     rW   zFuncDecl.childrenc                 c   rX   rO   )r   rJ   r%   r	   r	   r
   rY     rZ   zFuncDecl.__iter__r	   rO   r[   r	   r	   r	   r
   r     ra   r   c                   @   rH   )FuncDef)declparam_declsbodyr7   rM   Nc                 C   rN   rO   )r   r   r   r7   )r   r   r   r   r7   r	   r	   r
   rP     rQ   zFuncDef.__init__c                 C   sj   g }| j d ur|d| j f | jd ur|d| jf t| jp!g D ]\}}|d| |f q#t|S )Nr   r   zparam_decls[%d])r   rS   r   r   r   rT   r   r	   r	   r
   r&     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 rO   )r   r   r   r   r	   r	   r
   rY     s   

zFuncDef.__iter__r	   rO   r[   r	   r	   r	   r
   r     s    
r   c                   @   rH   )Gotor"   r7   rM   Nc                 C   ri   rO   r"   r7   r   r"   r7   r	   r	   r
   rP     rj   zGoto.__init__c                 C   r   rO   r   rU   r	   r	   r
   r&     r   zGoto.childrenc                 c   r{   rO   r	   r%   r	   r	   r
   rY     r|   zGoto.__iter__r   rO   r[   r	   r	   r	   r
   r         
r   c                   @   rH   )IDr   Nc                 C   ri   rO   r   r   r	   r	   r
   rP     rj   zID.__init__c                 C   r   rO   r   rU   r	   r	   r
   r&     r   zID.childrenc                 c   r{   rO   r	   r%   r	   r	   r
   rY     r|   zID.__iter__r   rO   r[   r	   r	   r	   r
   r     r   r   c                   @   rH   )IdentifierType)namesr7   rM   Nc                 C   ri   rO   )r   r7   )r   r   r7   r	   r	   r
   rP     rj   zIdentifierType.__init__c                 C   r   rO   r   rU   r	   r	   r
   r&     r   zIdentifierType.childrenc                 c   r{   rO   r	   r%   r	   r	   r
   rY     r|   zIdentifierType.__iter__)r   rO   r[   r	   r	   r	   r
   r     r   r   c                   @   rH   )Ifr   iftrueiffalser7   rM   Nc                 C   rN   rO   r   r   r   r7   r   r   r   r   r7   r	   r	   r
   rP     rQ   zIf.__init__c                 C   r   Nr   r   r   r   rS   r   r   rT   rU   r	   r	   r
   r&     r   zIf.childrenc                 c   r   rO   r   r   r   r%   r	   r	   r
   rY     r   zIf.__iter__r	   rO   r[   r	   r	   r	   r
   r         
r   c                   @   rH   )InitListr   Nc                 C   ri   rO   r   r   r	   r	   r
   rP     rj   zInitList.__init__c                 C   r   r   r   r   r	   r	   r
   r&     r   zInitList.childrenc                 c   r   rO   r   r   r	   r	   r
   rY     r   zInitList.__iter__r	   rO   r[   r	   r	   r	   r
   r     r   r   c                   @   rH   )Label)r"   r   r7   rM   Nc                 C   r_   rO   )r"   r   r7   )r   r"   r   r7   r	   r	   r
   rP     r`   zLabel.__init__c                 C   rk   )Nr   )r   rS   rT   rU   r	   r	   r
   r&     rl   zLabel.childrenc                 c   rm   rO   )r   r%   r	   r	   r
   rY   #  rn   zLabel.__iter__r   rO   r[   r	   r	   r	   r
   r     r   r   c                   @   rH   )NamedInitializer)r"   r   r7   rM   Nc                 C   r_   rO   )r"   r   r7   )r   r"   r   r7   r	   r	   r
   rP   +  r`   zNamedInitializer.__init__c                 C   r   )Nr   zname[%d])r   rS   r   r"   rT   r   r	   r	   r
   r&   0  r   zNamedInitializer.childrenc                 c   r   rO   )r   r"   r   r	   r	   r
   rY   7  r   zNamedInitializer.__iter__r	   rO   r[   r	   r	   r	   r
   r   )  r   r   c                   @   rH   )	ParamList)paramsr7   rM   Nc                 C   ri   rO   )r   r7   )r   r   r7   r	   r	   r
   rP   A  rj   zParamList.__init__c                 C   r   )Nz
params[%d])r   r   rS   rT   r   r	   r	   r
   r&   E  r   zParamList.childrenc                 c   r   rO   )r   r   r	   r	   r
   rY   K  r   zParamList.__iter__r	   rO   r[   r	   r	   r	   r
   r   ?  r   r   c                   @   rH   )PtrDecl)r   rJ   r7   rM   Nc                 C   r_   rO   )r   rJ   r7   )r   r   rJ   r7   r	   r	   r
   rP   S  r`   zPtrDecl.__init__c                 C   rk   NrJ   rJ   rS   rT   rU   r	   r	   r
   r&   X  rl   zPtrDecl.childrenc                 c   rm   rO   rJ   r%   r	   r	   r
   rY   ]  rn   zPtrDecl.__iter__)r   rO   r[   r	   r	   r	   r
   r   Q  r   r   c                   @   rH   )Return)r   r7   rM   Nc                 C   ri   rO   )r   r7   )r   r   r7   r	   r	   r
   rP   e  rj   zReturn.__init__c                 C   rk   Nr   r   rS   rT   rU   r	   r	   r
   r&   i  rl   zReturn.childrenc                 c   rm   rO   r   r%   r	   r	   r
   rY   n  rn   zReturn.__iter__r	   rO   r[   r	   r	   r	   r
   r   c  ro   r   c                   @   rH   )StaticAssert)r   messager7   rM   Nc                 C   r_   rO   )r   r   r7   )r   r   r   r7   r	   r	   r
   rP   v  r`   zStaticAssert.__init__c                 C   rR   )Nr   r   )r   rS   r   rT   rU   r	   r	   r
   r&   {  rW   zStaticAssert.childrenc                 c   rX   rO   )r   r   r%   r	   r	   r
   rY     rZ   zStaticAssert.__iter__r	   rO   r[   r	   r	   r	   r
   r   t  ra   r   c                   @   rH   )Structr"   r   r7   rM   Nc                 C   r_   rO   r"   r   r7   r   r"   r   r7   r	   r	   r
   rP     r`   zStruct.__init__c                 C   r   r   r   r   r	   r	   r
   r&     r   zStruct.childrenc                 c   r   rO   r   r   r	   r	   r
   rY     r   zStruct.__iter__r   rO   r[   r	   r	   r	   r
   r         
r   c                   @   rH   )	StructRef)r"   rJ   fieldr7   rM   Nc                 C   rN   rO   )r"   rJ   r   r7   )r   r"   rJ   r   r7   r	   r	   r
   rP     rQ   zStructRef.__init__c                 C   rR   )Nr"   r   )r"   rS   r   rT   rU   r	   r	   r
   r&     rW   zStructRef.childrenc                 c   rX   rO   )r"   r   r%   r	   r	   r
   rY     rZ   zStructRef.__iter__r   rO   r[   r	   r	   r	   r
   r     r\   r   c                   @   rH   )Switchr   Nc                 C   r_   rO   r   r   r	   r	   r
   rP     r`   zSwitch.__init__c                 C   rR   r   r   rU   r	   r	   r
   r&     rW   zSwitch.childrenc                 c   rX   rO   r   r%   r	   r	   r
   rY     rZ   zSwitch.__iter__r	   rO   r[   r	   r	   r	   r
   r     ra   r   c                   @   rH   )	TernaryOpr   Nc                 C   rN   rO   r   r   r	   r	   r
   rP     rQ   zTernaryOp.__init__c                 C   r   r   r   rU   r	   r	   r
   r&     r   zTernaryOp.childrenc                 c   r   rO   r   r%   r	   r	   r
   rY     r   zTernaryOp.__iter__r	   rO   r[   r	   r	   r	   r
   r     r   r   c                   @   rH   )TypeDecl)declnamer   r   rJ   r7   rM   Nc                 C   r   rO   )r   r   r   rJ   r7   )r   r   r   r   rJ   r7   r	   r	   r
   rP     r   zTypeDecl.__init__c                 C   rk   r   r   rU   r	   r	   r
   r&     rl   zTypeDecl.childrenc                 c   rm   rO   r   r%   r	   r	   r
   rY     rn   zTypeDecl.__iter__)r   r   r   rO   r[   r	   r	   r	   r
   r         
r   c                   @   rH   )Typedef)r"   r   r   rJ   r7   rM   Nc                 C   r   rO   )r"   r   r   rJ   r7   )r   r"   r   r   rJ   r7   r	   r	   r
   rP     r   zTypedef.__init__c                 C   rk   r   r   rU   r	   r	   r
   r&     rl   zTypedef.childrenc                 c   rm   rO   r   r%   r	   r	   r
   rY     rn   zTypedef.__iter__)r"   r   r   rO   r[   r	   r	   r	   r
   r     r   r   c                   @   rH   )Typename)r"   r   r   rJ   r7   rM   Nc                 C   r   rO   )r"   r   r   rJ   r7   )r   r"   r   r   rJ   r7   r	   r	   r
   rP   
  r   zTypename.__init__c                 C   rk   r   r   rU   r	   r	   r
   r&     rl   zTypename.childrenc                 c   rm   rO   r   r%   r	   r	   r
   rY     rn   zTypename.__iter__)r"   r   r   rO   r[   r	   r	   r	   r
   r    r   r  c                   @   rH   )UnaryOp)rc   r   r7   rM   Nc                 C   r_   rO   )rc   r   r7   )r   rc   r   r7   r	   r	   r
   rP     r`   zUnaryOp.__init__c                 C   rk   r   r   rU   r	   r	   r
   r&   #  rl   zUnaryOp.childrenc                 c   rm   rO   r   r%   r	   r	   r
   rY   (  rn   zUnaryOp.__iter__rf   rO   r[   r	   r	   r	   r
   r    r   r  c                   @   rH   )Unionr   Nc                 C   r_   rO   r   r   r	   r	   r
   rP   0  r`   zUnion.__init__c                 C   r   r   r   r   r	   r	   r
   r&   5  r   zUnion.childrenc                 c   r   rO   r   r   r	   r	   r
   rY   ;  r   zUnion.__iter__r   rO   r[   r	   r	   r	   r
   r  .  r   r  c                   @   rH   )Whiler   Nc                 C   r_   rO   r   r   r	   r	   r
   rP   C  r`   zWhile.__init__c                 C   rR   r   r   rU   r	   r	   r
   r&   H  rW   zWhile.childrenc                 c   rX   rO   r   r%   r	   r	   r
   rY   N  rZ   zWhile.__iter__r	   rO   r[   r	   r	   r	   r
   r  A  ra   r  c                   @   rH   )Pragma)stringr7   rM   Nc                 C   ri   rO   )r  r7   )r   r  r7   r	   r	   r
   rP   X  rj   zPragma.__init__c                 C   r   rO   r   rU   r	   r	   r
   r&   \  r   zPragma.childrenc                 c   r{   rO   r	   r%   r	   r	   r
   rY   `  r|   zPragma.__iter__)r  rO   r[   r	   r	   r	   r
   r  V  r   r  )6r=   r   objectr   r?   rI   r]   rb   rg   rp   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
   <module>   sj   	O: