a
    .cz                     @   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   s2   t | tr&dddd | D  d S t| S d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/var/www/brookimports/venv/lib/python3.9/site-packages/pycparser/c_ast.py	<genexpr>       z_repr.<locals>.<genexpr>z
]N)
isinstancelistjoinrepr)objr	   r	   r
   r      s    
r   c                   @   s8   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 ]f}||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   s   dS )z3 A sequence of all children that are Nodes
        Nr	   r   r	   r	   r
   children5   s    zNode.childrenr   FNc              	      s   d| }|r4|dur4| | jj d | d  n| | jj d   jr|r~ fdd jD }dd	d
 |D }	n( fdd jD }
ddd
 |
D }	| |	 |r| d j  | d   D ]"\}}|j||d ||||d qd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   r   zNode.show.<locals>.<listcomp>z, c                 s   s   | ]}d | V  qdS )z%s=%sNr	   )r   nvr	   r	   r
   r   Y   r   zNode.show.<locals>.<genexpr>c                    s   g | ]}t  |qS r	   r'   r(   r%   r	   r
   r*   [   r   c                 s   s   | ]}d | V  qdS )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   bufr.   r/   r0   r1   r2   leadZnvlistZattrstrvlistZ
child_namechildr	   r%   r
   r6   :   s.     

z	Node.show)	r   
__module____qualname__r   r$   r&   sysstdoutr6   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 rRd|jj }t| || j}|| j |jj< ||S )z Visit a node.
        Nvisit_)_method_cachegetr   r   r   generic_visit)r   node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)rG   )r   rD   cr	   r	   r
   rC      s    zNodeVisitor.generic_visit)r   r;   r<   __doc__rA   rG   rC   r	   r	   r	   r
   r?   m   s   !r?   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )	ArrayDecl)typedim	dim_qualsr5   __weakref__Nc                 C   s   || _ || _|| _|| _d S N)rK   rL   rM   r5   )r   rK   rL   rM   r5   r	   r	   r
   __init__   s    zArrayDecl.__init__c                 C   s@   g }| j d ur|d| j f | jd ur8|d| jf t|S )NrK   rL   )rK   appendrL   tupler   nodelistr	   r	   r
   r&      s    zArrayDecl.childrenc                 c   s(   | j d ur| j V  | jd ur$| jV  d S rO   )rK   rL   r%   r	   r	   r
   __iter__   s    

zArrayDecl.__iter__)rM   )Nr   r;   r<   r   rP   r&   rU   r4   r	   r	   r	   r
   rJ      s
   
rJ   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )ArrayRef)r#   	subscriptr5   rN   Nc                 C   s   || _ || _|| _d S rO   )r#   rX   r5   )r   r#   rX   r5   r	   r	   r
   rP      s    zArrayRef.__init__c                 C   s@   g }| j d ur|d| j f | jd ur8|d| jf t|S )Nr#   rX   )r#   rQ   rX   rR   rS   r	   r	   r
   r&      s    zArrayRef.childrenc                 c   s(   | j d ur| j V  | jd ur$| jV  d S rO   )r#   rX   r%   r	   r	   r
   rU      s    

zArrayRef.__iter__r	   )NrV   r	   r	   r	   r
   rW      s
   
rW   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )
Assignment)oplvaluervaluer5   rN   Nc                 C   s   || _ || _|| _|| _d S rO   )rZ   r[   r\   r5   )r   rZ   r[   r\   r5   r	   r	   r
   rP      s    zAssignment.__init__c                 C   s@   g }| j d ur|d| j f | jd ur8|d| jf t|S )Nr[   r\   )r[   rQ   r\   rR   rS   r	   r	   r
   r&      s    zAssignment.childrenc                 c   s(   | j d ur| j V  | jd ur$| jV  d S rO   )r[   r\   r%   r	   r	   r
   rU      s    

zAssignment.__iter__rZ   )NrV   r	   r	   r	   r
   rY      s
   
rY   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Alignas)	alignmentr5   rN   Nc                 C   s   || _ || _d S rO   )r_   r5   )r   r_   r5   r	   r	   r
   rP      s    zAlignas.__init__c                 C   s&   g }| j d ur|d| j f t|S )Nr_   )r_   rQ   rR   rS   r	   r	   r
   r&      s    zAlignas.childrenc                 c   s   | j d ur| j V  d S rO   )r_   r%   r	   r	   r
   rU      s    
zAlignas.__iter__r	   )NrV   r	   r	   r	   r
   r^      s
   
r^   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )BinaryOp)rZ   leftrightr5   rN   Nc                 C   s   || _ || _|| _|| _d S rO   )rZ   ra   rb   r5   )r   rZ   ra   rb   r5   r	   r	   r
   rP      s    zBinaryOp.__init__c                 C   s@   g }| j d ur|d| j f | jd ur8|d| jf t|S )Nra   rb   )ra   rQ   rb   rR   rS   r	   r	   r
   r&     s    zBinaryOp.childrenc                 c   s(   | j d ur| j V  | jd ur$| jV  d S rO   )ra   rb   r%   r	   r	   r
   rU     s    

zBinaryOp.__iter__r]   )NrV   r	   r	   r	   r
   r`      s
   
r`   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Breakr5   rN   Nc                 C   s
   || _ d S rO   r5   r   r5   r	   r	   r
   rP     s    zBreak.__init__c                 C   s   dS Nr	   r	   r%   r	   r	   r
   r&     s    zBreak.childrenc                 c   s   d S rO   r	   r%   r	   r	   r
   rU     s    zBreak.__iter__r	   )NrV   r	   r	   r	   r
   rc     s
   
rc   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Case)exprstmtsr5   rN   Nc                 C   s   || _ || _|| _d S rO   )ri   rj   r5   )r   ri   rj   r5   r	   r	   r
   rP     s    zCase.__init__c                 C   sP   g }| j d ur|d| j f t| jp(g D ]\}}|d| |f q,t|S )Nri   	stmts[%d])ri   rQ   	enumeraterj   rR   r   rT   ir:   r	   r	   r
   r&   $  s
    zCase.childrenc                 c   s,   | j d ur| j V  | jpg D ]
}|V  qd S rO   )ri   rj   r   r:   r	   r	   r
   rU   +  s    
zCase.__iter__r	   )NrV   r	   r	   r	   r
   rh     s
   
rh   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Cast)to_typeri   r5   rN   Nc                 C   s   || _ || _|| _d S rO   )rq   ri   r5   )r   rq   ri   r5   r	   r	   r
   rP   5  s    zCast.__init__c                 C   s@   g }| j d ur|d| j f | jd ur8|d| jf t|S )Nrq   ri   )rq   rQ   ri   rR   rS   r	   r	   r
   r&   :  s    zCast.childrenc                 c   s(   | j d ur| j V  | jd ur$| jV  d S rO   )rq   ri   r%   r	   r	   r
   rU   @  s    

zCast.__iter__r	   )NrV   r	   r	   r	   r
   rp   3  s
   
rp   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Compound)block_itemsr5   rN   Nc                 C   s   || _ || _d S rO   )rs   r5   )r   rs   r5   r	   r	   r
   rP   J  s    zCompound.__init__c                 C   s6   g }t | jpg D ]\}}|d| |f qt|S )Nzblock_items[%d])rl   rs   rQ   rR   rm   r	   r	   r
   r&   N  s    zCompound.childrenc                 c   s   | j pg D ]
}|V  q
d S rO   )rs   ro   r	   r	   r
   rU   T  s    zCompound.__iter__r	   )NrV   r	   r	   r	   r
   rr   H  s
   
rr   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )CompoundLiteral)rK   initr5   rN   Nc                 C   s   || _ || _|| _d S rO   )rK   ru   r5   )r   rK   ru   r5   r	   r	   r
   rP   \  s    zCompoundLiteral.__init__c                 C   s@   g }| j d ur|d| j f | jd ur8|d| jf t|S )NrK   ru   )rK   rQ   ru   rR   rS   r	   r	   r
   r&   a  s    zCompoundLiteral.childrenc                 c   s(   | j d ur| j V  | jd ur$| jV  d S rO   )rK   ru   r%   r	   r	   r
   rU   g  s    

zCompoundLiteral.__iter__r	   )NrV   r	   r	   r	   r
   rt   Z  s
   
rt   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Constant)rK   valuer5   rN   Nc                 C   s   || _ || _|| _d S rO   )rK   rw   r5   )r   rK   rw   r5   r	   r	   r
   rP   q  s    zConstant.__init__c                 C   s   g }t |S rO   rR   rS   r	   r	   r
   r&   v  s    zConstant.childrenc                 c   s   d S rO   r	   r%   r	   r	   r
   rU   z  s    zConstant.__iter__)rK   rw   )NrV   r	   r	   r	   r
   rv   o  s
   
rv   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Continuerd   Nc                 C   s
   || _ d S rO   re   rf   r	   r	   r
   rP     s    zContinue.__init__c                 C   s   dS rg   r	   r%   r	   r	   r
   r&     s    zContinue.childrenc                 c   s   d S rO   r	   r%   r	   r	   r
   rU     s    zContinue.__iter__r	   )NrV   r	   r	   r	   r
   ry     s
   
ry   c                   @   s.   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funcspecrK   ru   bitsizer5   rN   Nc
           
      C   s:   || _ || _|| _|| _|| _|| _|| _|| _|	| _d S rO   )	r#   r{   r|   r}   r~   rK   ru   r   r5   )
r   r#   r{   r|   r}   r~   rK   ru   r   r5   r	   r	   r
   rP     s    zDecl.__init__c                 C   sZ   g }| j d ur|d| j f | jd ur8|d| jf | jd urR|d| jf t|S )NrK   ru   r   )rK   rQ   ru   r   rR   rS   r	   r	   r
   r&     s
    zDecl.childrenc                 c   s:   | j d ur| j V  | jd ur$| jV  | jd ur6| jV  d S rO   )rK   ru   r   r%   r	   r	   r
   rU     s    


zDecl.__iter__)r#   r{   r|   r}   r~   )NrV   r	   r	   r	   r
   rz     s
   
rz   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )DeclList)declsr5   rN   Nc                 C   s   || _ || _d S rO   )r   r5   )r   r   r5   r	   r	   r
   rP     s    zDeclList.__init__c                 C   s6   g }t | jpg D ]\}}|d| |f qt|S Nz	decls[%d]rl   r   rQ   rR   rm   r	   r	   r
   r&     s    zDeclList.childrenc                 c   s   | j pg D ]
}|V  q
d S rO   r   ro   r	   r	   r
   rU     s    zDeclList.__iter__r	   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Default)rj   r5   rN   Nc                 C   s   || _ || _d S rO   )rj   r5   )r   rj   r5   r	   r	   r
   rP     s    zDefault.__init__c                 C   s6   g }t | jpg D ]\}}|d| |f qt|S )Nrk   )rl   rj   rQ   rR   rm   r	   r	   r
   r&     s    zDefault.childrenc                 c   s   | j pg D ]
}|V  q
d S rO   )rj   ro   r	   r	   r
   rU     s    zDefault.__iter__r	   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )DoWhilecondstmtr5   rN   Nc                 C   s   || _ || _|| _d S rO   r   r   r5   r   r   r   r5   r	   r	   r
   rP     s    zDoWhile.__init__c                 C   s@   g }| j d ur|d| j f | jd ur8|d| jf t|S Nr   r   r   rQ   r   rR   rS   r	   r	   r
   r&     s    zDoWhile.childrenc                 c   s(   | j d ur| j V  | jd ur$| jV  d S rO   r   r   r%   r	   r	   r
   rU     s    

zDoWhile.__iter__r	   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )EllipsisParamrd   Nc                 C   s
   || _ d S rO   re   rf   r	   r	   r
   rP     s    zEllipsisParam.__init__c                 C   s   dS rg   r	   r%   r	   r	   r
   r&     s    zEllipsisParam.childrenc                 c   s   d S rO   r	   r%   r	   r	   r
   rU     s    zEllipsisParam.__iter__r	   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )EmptyStatementrd   Nc                 C   s
   || _ d S rO   re   rf   r	   r	   r
   rP     s    zEmptyStatement.__init__c                 C   s   dS rg   r	   r%   r	   r	   r
   r&     s    zEmptyStatement.childrenc                 c   s   d S rO   r	   r%   r	   r	   r
   rU     s    zEmptyStatement.__iter__r	   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Enum)r#   valuesr5   rN   Nc                 C   s   || _ || _|| _d S rO   )r#   r   r5   )r   r#   r   r5   r	   r	   r
   rP     s    zEnum.__init__c                 C   s&   g }| j d ur|d| j f t|S )Nr   )r   rQ   rR   rS   r	   r	   r
   r&     s    zEnum.childrenc                 c   s   | j d ur| j V  d S rO   )r   r%   r	   r	   r
   rU     s    
zEnum.__iter__r#   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )
Enumerator)r#   rw   r5   rN   Nc                 C   s   || _ || _|| _d S rO   )r#   rw   r5   )r   r#   rw   r5   r	   r	   r
   rP     s    zEnumerator.__init__c                 C   s&   g }| j d ur|d| j f t|S )Nrw   )rw   rQ   rR   rS   r	   r	   r
   r&     s    zEnumerator.childrenc                 c   s   | j d ur| j V  d S rO   )rw   r%   r	   r	   r
   rU     s    
zEnumerator.__iter__r   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )EnumeratorList)enumeratorsr5   rN   Nc                 C   s   || _ || _d S rO   )r   r5   )r   r   r5   r	   r	   r
   rP   '  s    zEnumeratorList.__init__c                 C   s6   g }t | jpg D ]\}}|d| |f qt|S )Nzenumerators[%d])rl   r   rQ   rR   rm   r	   r	   r
   r&   +  s    zEnumeratorList.childrenc                 c   s   | j pg D ]
}|V  q
d S rO   )r   ro   r	   r	   r
   rU   1  s    zEnumeratorList.__iter__r	   )NrV   r	   r	   r	   r
   r   %  s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )ExprListexprsr5   rN   Nc                 C   s   || _ || _d S rO   r   r5   r   r   r5   r	   r	   r
   rP   9  s    zExprList.__init__c                 C   s6   g }t | jpg D ]\}}|d| |f qt|S Nz	exprs[%d]rl   r   rQ   rR   rm   r	   r	   r
   r&   =  s    zExprList.childrenc                 c   s   | j pg D ]
}|V  q
d S rO   r   ro   r	   r	   r
   rU   C  s    zExprList.__iter__r	   )NrV   r	   r	   r	   r
   r   7  s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )FileAST)extr5   rN   Nc                 C   s   || _ || _d S rO   )r   r5   )r   r   r5   r	   r	   r
   rP   K  s    zFileAST.__init__c                 C   s6   g }t | jpg D ]\}}|d| |f qt|S )Nzext[%d])rl   r   rQ   rR   rm   r	   r	   r
   r&   O  s    zFileAST.childrenc                 c   s   | j pg D ]
}|V  q
d S rO   )r   ro   r	   r	   r
   rU   U  s    zFileAST.__iter__r	   )NrV   r	   r	   r	   r
   r   I  s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )For)ru   r   nextr   r5   rN   Nc                 C   s"   || _ || _|| _|| _|| _d S rO   )ru   r   r   r   r5   )r   ru   r   r   r   r5   r	   r	   r
   rP   ]  s
    zFor.__init__c                 C   st   g }| j d ur|d| j f | jd ur8|d| jf | jd urR|d| jf | jd url|d| jf t|S )Nru   r   r   r   )ru   rQ   r   r   r   rR   rS   r	   r	   r
   r&   d  s    zFor.childrenc                 c   sL   | j d ur| j V  | jd ur$| jV  | jd ur6| jV  | jd urH| jV  d S rO   )ru   r   r   r   r%   r	   r	   r
   rU   l  s    



zFor.__iter__r	   )NrV   r	   r	   r	   r
   r   [  s
   

r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )FuncCall)r#   argsr5   rN   Nc                 C   s   || _ || _|| _d S rO   )r#   r   r5   )r   r#   r   r5   r	   r	   r
   rP   z  s    zFuncCall.__init__c                 C   s@   g }| j d ur|d| j f | jd ur8|d| jf t|S )Nr#   r   )r#   rQ   r   rR   rS   r	   r	   r
   r&     s    zFuncCall.childrenc                 c   s(   | j d ur| j V  | jd ur$| jV  d S rO   )r#   r   r%   r	   r	   r
   rU     s    

zFuncCall.__iter__r	   )NrV   r	   r	   r	   r
   r   x  s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )FuncDecl)r   rK   r5   rN   Nc                 C   s   || _ || _|| _d S rO   )r   rK   r5   )r   r   rK   r5   r	   r	   r
   rP     s    zFuncDecl.__init__c                 C   s@   g }| j d ur|d| j f | jd ur8|d| jf t|S )Nr   rK   )r   rQ   rK   rR   rS   r	   r	   r
   r&     s    zFuncDecl.childrenc                 c   s(   | j d ur| j V  | jd ur$| jV  d S rO   )r   rK   r%   r	   r	   r
   rU     s    

zFuncDecl.__iter__r	   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )FuncDef)declparam_declsbodyr5   rN   Nc                 C   s   || _ || _|| _|| _d S rO   )r   r   r   r5   )r   r   r   r   r5   r	   r	   r
   rP     s    zFuncDef.__init__c                 C   sj   g }| j d ur|d| j f | jd ur8|d| jf t| jpBg D ]\}}|d| |f qFt|S )Nr   r   zparam_decls[%d])r   rQ   r   rl   r   rR   rm   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   ro   r	   r	   r
   rU     s    

zFuncDef.__iter__r	   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Gotor#   r5   rN   Nc                 C   s   || _ || _d S rO   r#   r5   r   r#   r5   r	   r	   r
   rP     s    zGoto.__init__c                 C   s   g }t |S rO   rx   rS   r	   r	   r
   r&     s    zGoto.childrenc                 c   s   d S rO   r	   r%   r	   r	   r
   rU     s    zGoto.__iter__r   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )IDr   Nc                 C   s   || _ || _d S rO   r   r   r	   r	   r
   rP     s    zID.__init__c                 C   s   g }t |S rO   rx   rS   r	   r	   r
   r&     s    zID.childrenc                 c   s   d S rO   r	   r%   r	   r	   r
   rU     s    zID.__iter__r   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )IdentifierType)namesr5   rN   Nc                 C   s   || _ || _d S rO   )r   r5   )r   r   r5   r	   r	   r
   rP     s    zIdentifierType.__init__c                 C   s   g }t |S rO   rx   rS   r	   r	   r
   r&     s    zIdentifierType.childrenc                 c   s   d S rO   r	   r%   r	   r	   r
   rU     s    zIdentifierType.__iter__)r   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Ifr   iftrueiffalser5   rN   Nc                 C   s   || _ || _|| _|| _d S rO   r   r   r   r5   r   r   r   r   r5   r	   r	   r
   rP     s    zIf.__init__c                 C   sZ   g }| j d ur|d| j f | jd ur8|d| jf | jd urR|d| jf t|S Nr   r   r   r   rQ   r   r   rR   rS   r	   r	   r
   r&     s
    zIf.childrenc                 c   s:   | j d ur| j V  | jd ur$| jV  | jd ur6| jV  d S rO   r   r   r   r%   r	   r	   r
   rU     s    


zIf.__iter__r	   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )InitListr   Nc                 C   s   || _ || _d S rO   r   r   r	   r	   r
   rP     s    zInitList.__init__c                 C   s6   g }t | jpg D ]\}}|d| |f qt|S r   r   rm   r	   r	   r
   r&     s    zInitList.childrenc                 c   s   | j pg D ]
}|V  q
d S rO   r   ro   r	   r	   r
   rU     s    zInitList.__iter__r	   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Label)r#   r   r5   rN   Nc                 C   s   || _ || _|| _d S rO   )r#   r   r5   )r   r#   r   r5   r	   r	   r
   rP     s    zLabel.__init__c                 C   s&   g }| j d ur|d| j f t|S )Nr   )r   rQ   rR   rS   r	   r	   r
   r&     s    zLabel.childrenc                 c   s   | j d ur| j V  d S rO   )r   r%   r	   r	   r
   rU   #  s    
zLabel.__iter__r   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )NamedInitializer)r#   ri   r5   rN   Nc                 C   s   || _ || _|| _d S rO   )r#   ri   r5   )r   r#   ri   r5   r	   r	   r
   rP   +  s    zNamedInitializer.__init__c                 C   sP   g }| j d ur|d| j f t| jp(g D ]\}}|d| |f q,t|S )Nri   zname[%d])ri   rQ   rl   r#   rR   rm   r	   r	   r
   r&   0  s
    zNamedInitializer.childrenc                 c   s,   | j d ur| j V  | jpg D ]
}|V  qd S rO   )ri   r#   ro   r	   r	   r
   rU   7  s    
zNamedInitializer.__iter__r	   )NrV   r	   r	   r	   r
   r   )  s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )	ParamList)paramsr5   rN   Nc                 C   s   || _ || _d S rO   )r   r5   )r   r   r5   r	   r	   r
   rP   A  s    zParamList.__init__c                 C   s6   g }t | jpg D ]\}}|d| |f qt|S )Nz
params[%d])rl   r   rQ   rR   rm   r	   r	   r
   r&   E  s    zParamList.childrenc                 c   s   | j pg D ]
}|V  q
d S rO   )r   ro   r	   r	   r
   rU   K  s    zParamList.__iter__r	   )NrV   r	   r	   r	   r
   r   ?  s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )PtrDecl)r{   rK   r5   rN   Nc                 C   s   || _ || _|| _d S rO   )r{   rK   r5   )r   r{   rK   r5   r	   r	   r
   rP   S  s    zPtrDecl.__init__c                 C   s&   g }| j d ur|d| j f t|S NrK   rK   rQ   rR   rS   r	   r	   r
   r&   X  s    zPtrDecl.childrenc                 c   s   | j d ur| j V  d S rO   rK   r%   r	   r	   r
   rU   ]  s    
zPtrDecl.__iter__)r{   )NrV   r	   r	   r	   r
   r   Q  s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Return)ri   r5   rN   Nc                 C   s   || _ || _d S rO   )ri   r5   )r   ri   r5   r	   r	   r
   rP   e  s    zReturn.__init__c                 C   s&   g }| j d ur|d| j f t|S Nri   ri   rQ   rR   rS   r	   r	   r
   r&   i  s    zReturn.childrenc                 c   s   | j d ur| j V  d S rO   ri   r%   r	   r	   r
   rU   n  s    
zReturn.__iter__r	   )NrV   r	   r	   r	   r
   r   c  s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )StaticAssert)r   messager5   rN   Nc                 C   s   || _ || _|| _d S rO   )r   r   r5   )r   r   r   r5   r	   r	   r
   rP   v  s    zStaticAssert.__init__c                 C   s@   g }| j d ur|d| j f | jd ur8|d| jf t|S )Nr   r   )r   rQ   r   rR   rS   r	   r	   r
   r&   {  s    zStaticAssert.childrenc                 c   s(   | j d ur| j V  | jd ur$| jV  d S rO   )r   r   r%   r	   r	   r
   rU     s    

zStaticAssert.__iter__r	   )NrV   r	   r	   r	   r
   r   t  s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Structr#   r   r5   rN   Nc                 C   s   || _ || _|| _d S rO   r#   r   r5   r   r#   r   r5   r	   r	   r
   rP     s    zStruct.__init__c                 C   s6   g }t | jpg D ]\}}|d| |f qt|S r   r   rm   r	   r	   r
   r&     s    zStruct.childrenc                 c   s   | j pg D ]
}|V  q
d S rO   r   ro   r	   r	   r
   rU     s    zStruct.__iter__r   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )	StructRef)r#   rK   fieldr5   rN   Nc                 C   s   || _ || _|| _|| _d S rO   )r#   rK   r   r5   )r   r#   rK   r   r5   r	   r	   r
   rP     s    zStructRef.__init__c                 C   s@   g }| j d ur|d| j f | jd ur8|d| jf t|S )Nr#   r   )r#   rQ   r   rR   rS   r	   r	   r
   r&     s    zStructRef.childrenc                 c   s(   | j d ur| j V  | jd ur$| jV  d S rO   )r#   r   r%   r	   r	   r
   rU     s    

zStructRef.__iter__r   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Switchr   Nc                 C   s   || _ || _|| _d S rO   r   r   r	   r	   r
   rP     s    zSwitch.__init__c                 C   s@   g }| j d ur|d| j f | jd ur8|d| jf t|S r   r   rS   r	   r	   r
   r&     s    zSwitch.childrenc                 c   s(   | j d ur| j V  | jd ur$| jV  d S rO   r   r%   r	   r	   r
   rU     s    

zSwitch.__iter__r	   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )	TernaryOpr   Nc                 C   s   || _ || _|| _|| _d S rO   r   r   r	   r	   r
   rP     s    zTernaryOp.__init__c                 C   sZ   g }| j d ur|d| j f | jd ur8|d| jf | jd urR|d| jf t|S r   r   rS   r	   r	   r
   r&     s
    zTernaryOp.childrenc                 c   s:   | j d ur| j V  | jd ur$| jV  | jd ur6| jV  d S rO   r   r%   r	   r	   r
   rU     s    


zTernaryOp.__iter__r	   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )TypeDecl)declnamer{   r|   rK   r5   rN   Nc                 C   s"   || _ || _|| _|| _|| _d S rO   )r   r{   r|   rK   r5   )r   r   r{   r|   rK   r5   r	   r	   r
   rP     s
    zTypeDecl.__init__c                 C   s&   g }| j d ur|d| j f t|S r   r   rS   r	   r	   r
   r&     s    zTypeDecl.childrenc                 c   s   | j d ur| j V  d S rO   r   r%   r	   r	   r
   rU     s    
zTypeDecl.__iter__)r   r{   r|   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Typedef)r#   r{   r}   rK   r5   rN   Nc                 C   s"   || _ || _|| _|| _|| _d S rO   )r#   r{   r}   rK   r5   )r   r#   r{   r}   rK   r5   r	   r	   r
   rP     s
    zTypedef.__init__c                 C   s&   g }| j d ur|d| j f t|S r   r   rS   r	   r	   r
   r&     s    zTypedef.childrenc                 c   s   | j d ur| j V  d S rO   r   r%   r	   r	   r
   rU     s    
zTypedef.__iter__)r#   r{   r}   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Typename)r#   r{   r|   rK   r5   rN   Nc                 C   s"   || _ || _|| _|| _|| _d S rO   )r#   r{   r|   rK   r5   )r   r#   r{   r|   rK   r5   r	   r	   r
   rP   
  s
    zTypename.__init__c                 C   s&   g }| j d ur|d| j f t|S r   r   rS   r	   r	   r
   r&     s    zTypename.childrenc                 c   s   | j d ur| j V  d S rO   r   r%   r	   r	   r
   rU     s    
zTypename.__iter__)r#   r{   r|   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )UnaryOp)rZ   ri   r5   rN   Nc                 C   s   || _ || _|| _d S rO   )rZ   ri   r5   )r   rZ   ri   r5   r	   r	   r
   rP     s    zUnaryOp.__init__c                 C   s&   g }| j d ur|d| j f t|S r   r   rS   r	   r	   r
   r&   #  s    zUnaryOp.childrenc                 c   s   | j d ur| j V  d S rO   r   r%   r	   r	   r
   rU   (  s    
zUnaryOp.__iter__r]   )NrV   r	   r	   r	   r
   r     s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Unionr   Nc                 C   s   || _ || _|| _d S rO   r   r   r	   r	   r
   rP   0  s    zUnion.__init__c                 C   s6   g }t | jpg D ]\}}|d| |f qt|S r   r   rm   r	   r	   r
   r&   5  s    zUnion.childrenc                 c   s   | j pg D ]
}|V  q
d S rO   r   ro   r	   r	   r
   rU   ;  s    zUnion.__iter__r   )NrV   r	   r	   r	   r
   r   .  s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Whiler   Nc                 C   s   || _ || _|| _d S rO   r   r   r	   r	   r
   rP   C  s    zWhile.__init__c                 C   s@   g }| j d ur|d| j f | jd ur8|d| jf t|S r   r   rS   r	   r	   r
   r&   H  s    zWhile.childrenc                 c   s(   | j d ur| j V  | jd ur$| jV  d S rO   r   r%   r	   r	   r
   rU   N  s    

zWhile.__iter__r	   )NrV   r	   r	   r	   r
   r   A  s
   
r   c                   @   s.   e Zd ZdZd
ddZdd Zdd Zd	ZdS )Pragma)stringr5   rN   Nc                 C   s   || _ || _d S rO   )r   r5   )r   r   r5   r	   r	   r
   rP   X  s    zPragma.__init__c                 C   s   g }t |S rO   rx   rS   r	   r	   r
   r&   \  s    zPragma.childrenc                 c   s   d S rO   r	   r%   r	   r	   r
   rU   `  s    zPragma.__iter__)r   )NrV   r	   r	   r	   r
   r   V  s
   
r   )6r=   r   objectr   r?   rJ   rW   rY   r^   r`   rc   rh   rp   rr   rt   rv   ry   rz   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>   sh   	O: