U
    ÈZjÕz  ã                   @   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	   úR/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/pycparser/c_ast.pyÚ	<genexpr>   s     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k	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� qÖd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   s   | ]}d | V  qdS )z%s=%sNr	   )r   Únvr	   r	   r
   r   Y   s     zNode.show.<locals>.<genexpr>c                    s   g | ]}t ˆ |ƒ‘qS r	   r&   r'   r$   r	   r
   r)   [   s     c                 s   s   | ]}d | V  qdS )z%sNr	   )r   Úvr	   r	   r
   r   \   s     z (at %s)r   é   )ÚoffsetÚ	attrnamesÚ	nodenamesÚ	showcoordÚ_my_node_name)Úwriter   r   Ú
attr_namesr   Úcoordr%   Úshow)r   Úbufr-   r.   r/   r0   r1   ZleadZnvlistZattrstrZvlistZ
child_nameÚchildr	   r$   r
   r5   :   s.     

úz	Node.show)	r   Ú
__module__Ú__qualname__r   r#   r%   ÚsysÚstdoutr5   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kri | _ | j  |jjd¡}|dk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)rD   )r   rA   Úcr	   r	   r
   r@       s    zNodeVisitor.generic_visit)r   r8   r9   Ú__doc__r>   rD   r@   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_qualsr4   Ú__weakref__Nc                 C   s   || _ || _|| _|| _d S ©N)rH   rI   rJ   r4   )r   rH   rI   rJ   r4   r	   r	   r
   Ú__init__©   s    zArrayDecl.__init__c                 C   s@   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ t|ƒS )NrH   rI   )rH   ÚappendrI   Útuple©r   Únodelistr	   r	   r
   r%   ¯   s    
 
 zArrayDecl.childrenc                 c   s(   | j d k	r| j V  | jd k	r$| jV  d S rL   )rH   rI   r$   r	   r	   r
   Ú__iter__µ   s    

zArrayDecl.__iter__)rJ   )N©r   r8   r9   r   rM   r%   rR   r3   r	   r	   r	   r
   rG   §   s
   
rG   c                   @   s.   e Zd ZdZd
dd„Zdd„ Zdd„ Zd	ZdS )ÚArrayRef)r"   Ú	subscriptr4   rK   Nc                 C   s   || _ || _|| _d S rL   )r"   rU   r4   )r   r"   rU   r4   r	   r	   r
   rM   ¿   s    zArrayRef.__init__c                 C   s@   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ t|ƒS )Nr"   rU   )r"   rN   rU   rO   rP   r	   r	   r
   r%   Ä   s    
 
 zArrayRef.childrenc                 c   s(   | j d k	r| j V  | jd k	r$| jV  d S rL   )r"   rU   r$   r	   r	   r
   rR   Ê   s    

zArrayRef.__iter__r	   )NrS   r	   r	   r	   r
   rT   ½   s
   
rT   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Úrvaluer4   rK   Nc                 C   s   || _ || _|| _|| _d S rL   )rW   rX   rY   r4   )r   rW   rX   rY   r4   r	   r	   r
   rM   Ô   s    zAssignment.__init__c                 C   s@   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ t|ƒS )NrX   rY   )rX   rN   rY   rO   rP   r	   r	   r
   r%   Ú   s    
 
 zAssignment.childrenc                 c   s(   | j d k	r| j V  | jd k	r$| jV  d S rL   )rX   rY   r$   r	   r	   r
   rR   à   s    

zAssignment.__iter__©rW   )NrS   r	   r	   r	   r
   rV   Ò   s
   
rV   c                   @   s.   e Zd ZdZd
dd„Zdd„ Zdd„ Zd	ZdS )ÚAlignas)Ú	alignmentr4   rK   Nc                 C   s   || _ || _d S rL   )r\   r4   )r   r\   r4   r	   r	   r
   rM   ê   s    zAlignas.__init__c                 C   s&   g }| j d k	r| d| j f¡ t|ƒS )Nr\   )r\   rN   rO   rP   r	   r	   r
   r%   î   s    
 zAlignas.childrenc                 c   s   | j d k	r| j V  d S rL   )r\   r$   r	   r	   r
   rR   ó   s    
zAlignas.__iter__r	   )NrS   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)rW   ÚleftÚrightr4   rK   Nc                 C   s   || _ || _|| _|| _d S rL   )rW   r^   r_   r4   )r   rW   r^   r_   r4   r	   r	   r
   rM   û   s    zBinaryOp.__init__c                 C   s@   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ t|ƒS )Nr^   r_   )r^   rN   r_   rO   rP   r	   r	   r
   r%     s    
 
 zBinaryOp.childrenc                 c   s(   | j d k	r| j V  | jd k	r$| jV  d S rL   )r^   r_   r$   r	   r	   r
   rR     s    

zBinaryOp.__iter__rZ   )NrS   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©r4   rK   Nc                 C   s
   || _ d S rL   ©r4   ©r   r4   r	   r	   r
   rM     s    zBreak.__init__c                 C   s   dS ©Nr	   r	   r$   r	   r	   r
   r%     s    zBreak.childrenc                 c   s   d S rL   r	   r$   r	   r	   r
   rR     s    zBreak.__iter__r	   )NrS   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 )ÚCase)ÚexprÚstmtsr4   rK   Nc                 C   s   || _ || _|| _d S rL   )rf   rg   r4   )r   rf   rg   r4   r	   r	   r
   rM     s    zCase.__init__c                 C   sP   g }| j d k	r| d| j f¡ t| jp(g ƒD ]\}}| d| |f¡ q,t|ƒS )Nrf   ú	stmts[%d])rf   rN   Ú	enumeraterg   rO   ©r   rQ   Úir7   r	   r	   r
   r%   $  s    
 zCase.childrenc                 c   s,   | j d k	r| j V  | jpg D ]
}|V  qd S rL   )rf   rg   ©r   r7   r	   r	   r
   rR   +  s    
zCase.__iter__r	   )NrS   r	   r	   r	   r
   re     s
   
re   c                   @   s.   e Zd ZdZd
dd„Zdd„ Zdd„ Zd	ZdS )ÚCast)Úto_typerf   r4   rK   Nc                 C   s   || _ || _|| _d S rL   )rn   rf   r4   )r   rn   rf   r4   r	   r	   r
   rM   5  s    zCast.__init__c                 C   s@   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ t|ƒS )Nrn   rf   )rn   rN   rf   rO   rP   r	   r	   r
   r%   :  s    
 
 zCast.childrenc                 c   s(   | j d k	r| j V  | jd k	r$| jV  d S rL   )rn   rf   r$   r	   r	   r
   rR   @  s    

zCast.__iter__r	   )NrS   r	   r	   r	   r
   rm   3  s
   
rm   c                   @   s.   e Zd ZdZd
dd„Zdd„ Zdd„ Zd	ZdS )ÚCompound)Úblock_itemsr4   rK   Nc                 C   s   || _ || _d S rL   )rp   r4   )r   rp   r4   r	   r	   r
   rM   J  s    zCompound.__init__c                 C   s6   g }t | jpg ƒD ]\}}| d| |f¡ qt|ƒS )Nzblock_items[%d])ri   rp   rN   rO   rj   r	   r	   r
   r%   N  s    zCompound.childrenc                 c   s   | j pg D ]
}|V  q
d S rL   )rp   rl   r	   r	   r
   rR   T  s    zCompound.__iter__r	   )NrS   r	   r	   r	   r
   ro   H  s
   
ro   c                   @   s.   e Zd ZdZd
dd„Zdd„ Zdd„ Zd	ZdS )ÚCompoundLiteral)rH   Úinitr4   rK   Nc                 C   s   || _ || _|| _d S rL   )rH   rr   r4   )r   rH   rr   r4   r	   r	   r
   rM   \  s    zCompoundLiteral.__init__c                 C   s@   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ t|ƒS )NrH   rr   )rH   rN   rr   rO   rP   r	   r	   r
   r%   a  s    
 
 zCompoundLiteral.childrenc                 c   s(   | j d k	r| j V  | jd k	r$| jV  d S rL   )rH   rr   r$   r	   r	   r
   rR   g  s    

zCompoundLiteral.__iter__r	   )NrS   r	   r	   r	   r
   rq   Z  s
   
rq   c                   @   s.   e Zd ZdZd
dd„Zdd„ Zdd„ Zd	ZdS )ÚConstant)rH   Úvaluer4   rK   Nc                 C   s   || _ || _|| _d S rL   )rH   rt   r4   )r   rH   rt   r4   r	   r	   r
   rM   q  s    zConstant.__init__c                 C   s   g }t |ƒS rL   ©rO   rP   r	   r	   r
   r%   v  s    zConstant.childrenc                 c   s   d S rL   r	   r$   r	   r	   r
   rR   z  s    zConstant.__iter__)rH   rt   )NrS   r	   r	   r	   r
   rs   o  s
   
rs   c                   @   s.   e Zd ZdZd
dd„Zdd„ Zdd„ Zd	ZdS )ÚContinuera   Nc                 C   s
   || _ d S rL   rb   rc   r	   r	   r
   rM   ‚  s    zContinue.__init__c                 C   s   dS rd   r	   r$   r	   r	   r
   r%   …  s    zContinue.childrenc                 c   s   d S rL   r	   r$   r	   r	   r
   rR   ˆ  s    zContinue.__iter__r	   )NrS   r	   r	   r	   r
   rv   €  s
   
rv   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ÚfuncspecrH   rr   Úbitsizer4   rK   Nc
           
      C   s:   || _ || _|| _|| _|| _|| _|| _|| _|	| _d S rL   )	r"   rx   ry   rz   r{   rH   rr   r|   r4   )
r   r"   rx   ry   rz   r{   rH   rr   r|   r4   r	   r	   r
   rM   �  s    zDecl.__init__c                 C   sZ   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ | jd k	rR| d| jf¡ t|ƒS )NrH   rr   r|   )rH   rN   rr   r|   rO   rP   r	   r	   r
   r%   ›  s    
 
 
 zDecl.childrenc                 c   s:   | j d k	r| j V  | jd k	r$| jV  | jd k	r6| jV  d S rL   )rH   rr   r|   r$   r	   r	   r
   rR   ¢  s    


zDecl.__iter__)r"   rx   ry   rz   r{   )NrS   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 )ÚDeclList)Údeclsr4   rK   Nc                 C   s   || _ || _d S rL   )r~   r4   )r   r~   r4   r	   r	   r
   rM   ®  s    zDeclList.__init__c                 C   s6   g }t | jpg ƒD ]\}}| d| |f¡ qt|ƒS ©Nz	decls[%d]©ri   r~   rN   rO   rj   r	   r	   r
   r%   ²  s    zDeclList.childrenc                 c   s   | j pg D ]
}|V  q
d S rL   ©r~   rl   r	   r	   r
   rR   ¸  s    zDeclList.__iter__r	   )NrS   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)rg   r4   rK   Nc                 C   s   || _ || _d S rL   )rg   r4   )r   rg   r4   r	   r	   r
   rM   À  s    zDefault.__init__c                 C   s6   g }t | jpg ƒD ]\}}| d| |f¡ qt|ƒS )Nrh   )ri   rg   rN   rO   rj   r	   r	   r
   r%   Ä  s    zDefault.childrenc                 c   s   | j pg D ]
}|V  q
d S rL   )rg   rl   r	   r	   r
   rR   Ê  s    zDefault.__iter__r	   )NrS   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Ústmtr4   rK   Nc                 C   s   || _ || _|| _d S rL   ©r…   r†   r4   ©r   r…   r†   r4   r	   r	   r
   rM   Ò  s    zDoWhile.__init__c                 C   s@   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ t|ƒS ©Nr…   r†   ©r…   rN   r†   rO   rP   r	   r	   r
   r%   ×  s    
 
 zDoWhile.childrenc                 c   s(   | j d k	r| j V  | jd k	r$| jV  d S rL   ©r…   r†   r$   r	   r	   r
   rR   Ý  s    

zDoWhile.__iter__r	   )NrS   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 )ÚEllipsisParamra   Nc                 C   s
   || _ d S rL   rb   rc   r	   r	   r
   rM   ç  s    zEllipsisParam.__init__c                 C   s   dS rd   r	   r$   r	   r	   r
   r%   ê  s    zEllipsisParam.childrenc                 c   s   d S rL   r	   r$   r	   r	   r
   rR   í  s    zEllipsisParam.__iter__r	   )NrS   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 )ÚEmptyStatementra   Nc                 C   s
   || _ d S rL   rb   rc   r	   r	   r
   rM   õ  s    zEmptyStatement.__init__c                 C   s   dS rd   r	   r$   r	   r	   r
   r%   ø  s    zEmptyStatement.childrenc                 c   s   d S rL   r	   r$   r	   r	   r
   rR   û  s    zEmptyStatement.__iter__r	   )NrS   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"   Úvaluesr4   rK   Nc                 C   s   || _ || _|| _d S rL   )r"   r�   r4   )r   r"   r�   r4   r	   r	   r
   rM     s    zEnum.__init__c                 C   s&   g }| j d k	r| d| j f¡ t|ƒS )Nr�   )r�   rN   rO   rP   r	   r	   r
   r%     s    
 zEnum.childrenc                 c   s   | j d k	r| j V  d S rL   )r�   r$   r	   r	   r
   rR     s    
zEnum.__iter__©r"   )NrS   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"   rt   r4   rK   Nc                 C   s   || _ || _|| _d S rL   )r"   rt   r4   )r   r"   rt   r4   r	   r	   r
   rM     s    zEnumerator.__init__c                 C   s&   g }| j d k	r| d| j f¡ t|ƒS )Nrt   )rt   rN   rO   rP   r	   r	   r
   r%     s    
 zEnumerator.childrenc                 c   s   | j d k	r| j V  d S rL   )rt   r$   r	   r	   r
   rR     s    
zEnumerator.__iter__r�   )NrS   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)Úenumeratorsr4   rK   Nc                 C   s   || _ || _d S rL   )r“   r4   )r   r“   r4   r	   r	   r
   rM   '  s    zEnumeratorList.__init__c                 C   s6   g }t | jpg ƒD ]\}}| d| |f¡ qt|ƒS )Nzenumerators[%d])ri   r“   rN   rO   rj   r	   r	   r
   r%   +  s    zEnumeratorList.childrenc                 c   s   | j pg D ]
}|V  q
d S rL   )r“   rl   r	   r	   r
   rR   1  s    zEnumeratorList.__iter__r	   )NrS   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©Úexprsr4   rK   Nc                 C   s   || _ || _d S rL   ©r–   r4   ©r   r–   r4   r	   r	   r
   rM   9  s    zExprList.__init__c                 C   s6   g }t | jpg ƒD ]\}}| d| |f¡ qt|ƒS ©Nz	exprs[%d]©ri   r–   rN   rO   rj   r	   r	   r
   r%   =  s    zExprList.childrenc                 c   s   | j pg D ]
}|V  q
d S rL   ©r–   rl   r	   r	   r
   rR   C  s    zExprList.__iter__r	   )NrS   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)Úextr4   rK   Nc                 C   s   || _ || _d S rL   )r�   r4   )r   r�   r4   r	   r	   r
   rM   K  s    zFileAST.__init__c                 C   s6   g }t | jpg ƒD ]\}}| d| |f¡ qt|ƒS )Nzext[%d])ri   r�   rN   rO   rj   r	   r	   r
   r%   O  s    zFileAST.childrenc                 c   s   | j pg D ]
}|V  q
d S rL   )r�   rl   r	   r	   r
   rR   U  s    zFileAST.__iter__r	   )NrS   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)rr   r…   Únextr†   r4   rK   Nc                 C   s"   || _ || _|| _|| _|| _d S rL   )rr   r…   rŸ   r†   r4   )r   rr   r…   rŸ   r†   r4   r	   r	   r
   rM   ]  s
    zFor.__init__c                 C   st   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ | jd k	rR| d| jf¡ | jd k	rl| d| jf¡ t|ƒS )Nrr   r…   rŸ   r†   )rr   rN   r…   rŸ   r†   rO   rP   r	   r	   r
   r%   d  s    
 
 
 
 zFor.childrenc                 c   sL   | j d k	r| j V  | jd k	r$| jV  | jd k	r6| jV  | jd k	rH| jV  d S rL   )rr   r…   rŸ   r†   r$   r	   r	   r
   rR   l  s    



zFor.__iter__r	   )NrS   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"   Úargsr4   rK   Nc                 C   s   || _ || _|| _d S rL   )r"   r¡   r4   )r   r"   r¡   r4   r	   r	   r
   rM   z  s    zFuncCall.__init__c                 C   s@   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ t|ƒS )Nr"   r¡   )r"   rN   r¡   rO   rP   r	   r	   r
   r%     s    
 
 zFuncCall.childrenc                 c   s(   | j d k	r| j V  | jd k	r$| jV  d S rL   )r"   r¡   r$   r	   r	   r
   rR   …  s    

zFuncCall.__iter__r	   )NrS   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¡   rH   r4   rK   Nc                 C   s   || _ || _|| _d S rL   )r¡   rH   r4   )r   r¡   rH   r4   r	   r	   r
   rM   �  s    zFuncDecl.__init__c                 C   s@   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ t|ƒS )Nr¡   rH   )r¡   rN   rH   rO   rP   r	   r	   r
   r%   ”  s    
 
 zFuncDecl.childrenc                 c   s(   | j d k	r| j V  | jd k	r$| jV  d S rL   )r¡   rH   r$   r	   r	   r
   rR   š  s    

zFuncDecl.__iter__r	   )NrS   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Úbodyr4   rK   Nc                 C   s   || _ || _|| _|| _d S rL   )r¤   r¥   r¦   r4   )r   r¤   r¥   r¦   r4   r	   r	   r
   rM   ¤  s    zFuncDef.__init__c                 C   sj   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ t| jpBg ƒD ]\}}| d| |f¡ qFt|ƒS )Nr¤   r¦   zparam_decls[%d])r¤   rN   r¦   ri   r¥   rO   rj   r	   r	   r
   r%   ª  s    
 
 zFuncDef.childrenc                 c   s>   | j d k	r| j V  | jd k	r$| jV  | jp,g D ]
}|V  q.d S rL   )r¤   r¦   r¥   rl   r	   r	   r
   rR   ²  s    

zFuncDef.__iter__r	   )NrS   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"   r4   rK   Nc                 C   s   || _ || _d S rL   ©r"   r4   ©r   r"   r4   r	   r	   r
   rM   ¾  s    zGoto.__init__c                 C   s   g }t |ƒS rL   ru   rP   r	   r	   r
   r%   Â  s    zGoto.childrenc                 c   s   d S rL   r	   r$   r	   r	   r
   rR   Æ  s    zGoto.__iter__r�   )NrS   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 rL   r©   rª   r	   r	   r
   rM   Î  s    zID.__init__c                 C   s   g }t |ƒS rL   ru   rP   r	   r	   r
   r%   Ò  s    zID.childrenc                 c   s   d S rL   r	   r$   r	   r	   r
   rR   Ö  s    zID.__iter__r�   )NrS   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)Únamesr4   rK   Nc                 C   s   || _ || _d S rL   )r­   r4   )r   r­   r4   r	   r	   r
   rM   Þ  s    zIdentifierType.__init__c                 C   s   g }t |ƒS rL   ru   rP   r	   r	   r
   r%   â  s    zIdentifierType.childrenc                 c   s   d S rL   r	   r$   r	   r	   r
   rR   æ  s    zIdentifierType.__iter__)r­   )NrS   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Úiffalser4   rK   Nc                 C   s   || _ || _|| _|| _d S rL   ©r…   r°   r±   r4   ©r   r…   r°   r±   r4   r	   r	   r
   rM   î  s    zIf.__init__c                 C   sZ   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ | jd k	rR| d| jf¡ t|ƒS ©Nr…   r°   r±   ©r…   rN   r°   r±   rO   rP   r	   r	   r
   r%   ô  s    
 
 
 zIf.childrenc                 c   s:   | j d k	r| j V  | jd k	r$| jV  | jd k	r6| jV  d S rL   ©r…   r°   r±   r$   r	   r	   r
   rR   û  s    


zIf.__iter__r	   )NrS   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 rL   r—   r˜   r	   r	   r
   rM     s    zInitList.__init__c                 C   s6   g }t | jpg ƒD ]\}}| d| |f¡ qt|ƒS r™   rš   rj   r	   r	   r
   r%     s    zInitList.childrenc                 c   s   | j pg D ]
}|V  q
d S rL   r›   rl   r	   r	   r
   rR     s    zInitList.__iter__r	   )NrS   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†   r4   rK   Nc                 C   s   || _ || _|| _d S rL   )r"   r†   r4   )r   r"   r†   r4   r	   r	   r
   rM     s    zLabel.__init__c                 C   s&   g }| j d k	r| d| j f¡ t|ƒS )Nr†   )r†   rN   rO   rP   r	   r	   r
   r%     s    
 zLabel.childrenc                 c   s   | j d k	r| j V  d S rL   )r†   r$   r	   r	   r
   rR   #  s    
zLabel.__iter__r�   )NrS   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"   rf   r4   rK   Nc                 C   s   || _ || _|| _d S rL   )r"   rf   r4   )r   r"   rf   r4   r	   r	   r
   rM   +  s    zNamedInitializer.__init__c                 C   sP   g }| j d k	r| d| j f¡ t| jp(g ƒD ]\}}| d| |f¡ q,t|ƒS )Nrf   zname[%d])rf   rN   ri   r"   rO   rj   r	   r	   r
   r%   0  s    
 zNamedInitializer.childrenc                 c   s,   | j d k	r| j V  | jpg D ]
}|V  qd S rL   )rf   r"   rl   r	   r	   r
   rR   7  s    
zNamedInitializer.__iter__r	   )NrS   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)Úparamsr4   rK   Nc                 C   s   || _ || _d S rL   )r»   r4   )r   r»   r4   r	   r	   r
   rM   A  s    zParamList.__init__c                 C   s6   g }t | jpg ƒD ]\}}| d| |f¡ qt|ƒS )Nz
params[%d])ri   r»   rN   rO   rj   r	   r	   r
   r%   E  s    zParamList.childrenc                 c   s   | j pg D ]
}|V  q
d S rL   )r»   rl   r	   r	   r
   rR   K  s    zParamList.__iter__r	   )NrS   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)rx   rH   r4   rK   Nc                 C   s   || _ || _|| _d S rL   )rx   rH   r4   )r   rx   rH   r4   r	   r	   r
   rM   S  s    zPtrDecl.__init__c                 C   s&   g }| j d k	r| d| j f¡ t|ƒS ©NrH   ©rH   rN   rO   rP   r	   r	   r
   r%   X  s    
 zPtrDecl.childrenc                 c   s   | j d k	r| j V  d S rL   ©rH   r$   r	   r	   r
   rR   ]  s    
zPtrDecl.__iter__)rx   )NrS   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)rf   r4   rK   Nc                 C   s   || _ || _d S rL   )rf   r4   )r   rf   r4   r	   r	   r
   rM   e  s    zReturn.__init__c                 C   s&   g }| j d k	r| d| j f¡ t|ƒS ©Nrf   ©rf   rN   rO   rP   r	   r	   r
   r%   i  s    
 zReturn.childrenc                 c   s   | j d k	r| j V  d S rL   ©rf   r$   r	   r	   r
   rR   n  s    
zReturn.__iter__r	   )NrS   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…   Úmessager4   rK   Nc                 C   s   || _ || _|| _d S rL   )r…   rÅ   r4   )r   r…   rÅ   r4   r	   r	   r
   rM   v  s    zStaticAssert.__init__c                 C   s@   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ t|ƒS )Nr…   rÅ   )r…   rN   rÅ   rO   rP   r	   r	   r
   r%   {  s    
 
 zStaticAssert.childrenc                 c   s(   | j d k	r| j V  | jd k	r$| jV  d S rL   )r…   rÅ   r$   r	   r	   r
   rR   �  s    

zStaticAssert.__iter__r	   )NrS   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~   r4   rK   Nc                 C   s   || _ || _|| _d S rL   ©r"   r~   r4   ©r   r"   r~   r4   r	   r	   r
   rM   ‹  s    zStruct.__init__c                 C   s6   g }t | jpg ƒD ]\}}| d| |f¡ qt|ƒS r   r€   rj   r	   r	   r
   r%   �  s    zStruct.childrenc                 c   s   | j pg D ]
}|V  q
d S rL   r�   rl   r	   r	   r
   rR   –  s    zStruct.__iter__r�   )NrS   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"   rH   Úfieldr4   rK   Nc                 C   s   || _ || _|| _|| _d S rL   )r"   rH   rË   r4   )r   r"   rH   rË   r4   r	   r	   r
   rM   ž  s    zStructRef.__init__c                 C   s@   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ t|ƒS )Nr"   rË   )r"   rN   rË   rO   rP   r	   r	   r
   r%   ¤  s    
 
 zStructRef.childrenc                 c   s(   | j d k	r| j V  | jd k	r$| jV  d S rL   )r"   rË   r$   r	   r	   r
   rR   ª  s    

zStructRef.__iter__r¿   )NrS   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 rL   r‡   rˆ   r	   r	   r
   rM   ´  s    zSwitch.__init__c                 C   s@   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ t|ƒS r‰   rŠ   rP   r	   r	   r
   r%   ¹  s    
 
 zSwitch.childrenc                 c   s(   | j d k	r| j V  | jd k	r$| jV  d S rL   r‹   r$   r	   r	   r
   rR   ¿  s    

zSwitch.__iter__r	   )NrS   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 rL   r²   r³   r	   r	   r
   rM   É  s    zTernaryOp.__init__c                 C   sZ   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ | jd k	rR| d| jf¡ t|ƒS r´   rµ   rP   r	   r	   r
   r%   Ï  s    
 
 
 zTernaryOp.childrenc                 c   s:   | j d k	r| j V  | jd k	r$| jV  | jd k	r6| jV  d S rL   r¶   r$   r	   r	   r
   rR   Ö  s    


zTernaryOp.__iter__r	   )NrS   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)Údeclnamerx   ry   rH   r4   rK   Nc                 C   s"   || _ || _|| _|| _|| _d S rL   )rÏ   rx   ry   rH   r4   )r   rÏ   rx   ry   rH   r4   r	   r	   r
   rM   â  s
    zTypeDecl.__init__c                 C   s&   g }| j d k	r| d| j f¡ t|ƒS r½   r¾   rP   r	   r	   r
   r%   é  s    
 zTypeDecl.childrenc                 c   s   | j d k	r| j V  d S rL   r¿   r$   r	   r	   r
   rR   î  s    
zTypeDecl.__iter__)rÏ   rx   ry   )NrS   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"   rx   rz   rH   r4   rK   Nc                 C   s"   || _ || _|| _|| _|| _d S rL   )r"   rx   rz   rH   r4   )r   r"   rx   rz   rH   r4   r	   r	   r
   rM   ö  s
    zTypedef.__init__c                 C   s&   g }| j d k	r| d| j f¡ t|ƒS r½   r¾   rP   r	   r	   r
   r%   ý  s    
 zTypedef.childrenc                 c   s   | j d k	r| j V  d S rL   r¿   r$   r	   r	   r
   rR     s    
zTypedef.__iter__)r"   rx   rz   )NrS   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"   rx   ry   rH   r4   rK   Nc                 C   s"   || _ || _|| _|| _|| _d S rL   )r"   rx   ry   rH   r4   )r   r"   rx   ry   rH   r4   r	   r	   r
   rM   
  s
    zTypename.__init__c                 C   s&   g }| j d k	r| d| j f¡ t|ƒS r½   r¾   rP   r	   r	   r
   r%     s    
 zTypename.childrenc                 c   s   | j d k	r| j V  d S rL   r¿   r$   r	   r	   r
   rR     s    
zTypename.__iter__)r"   rx   ry   )NrS   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)rW   rf   r4   rK   Nc                 C   s   || _ || _|| _d S rL   )rW   rf   r4   )r   rW   rf   r4   r	   r	   r
   rM     s    zUnaryOp.__init__c                 C   s&   g }| j d k	r| d| j f¡ t|ƒS rÁ   rÂ   rP   r	   r	   r
   r%   #  s    
 zUnaryOp.childrenc                 c   s   | j d k	r| j V  d S rL   rÃ   r$   r	   r	   r
   rR   (  s    
zUnaryOp.__iter__rZ   )NrS   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 rL   rÈ   rÉ   r	   r	   r
   rM   0  s    zUnion.__init__c                 C   s6   g }t | jpg ƒD ]\}}| d| |f¡ qt|ƒS r   r€   rj   r	   r	   r
   r%   5  s    zUnion.childrenc                 c   s   | j pg D ]
}|V  q
d S rL   r�   rl   r	   r	   r
   rR   ;  s    zUnion.__iter__r�   )NrS   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 rL   r‡   rˆ   r	   r	   r
   rM   C  s    zWhile.__init__c                 C   s@   g }| j d k	r| d| j f¡ | jd k	r8| d| jf¡ t|ƒS r‰   rŠ   rP   r	   r	   r
   r%   H  s    
 
 zWhile.childrenc                 c   s(   | j d k	r| j V  | jd k	r$| jV  d S rL   r‹   r$   r	   r	   r
   rR   N  s    

zWhile.__iter__r	   )NrS   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)Ústringr4   rK   Nc                 C   s   || _ || _d S rL   )rÖ   r4   )r   rÖ   r4   r	   r	   r
   rM   X  s    zPragma.__init__c                 C   s   g }t |ƒS rL   ru   rP   r	   r	   r
   r%   \  s    zPragma.childrenc                 c   s   d S rL   r	   r$   r	   r	   r
   rR   `  s    zPragma.__iter__)rÖ   )NrS   r	   r	   r	   r
   rÕ   V  s
   
rÕ   )6r:   r   Úobjectr   r<   rG   rT   rV   r[   r]   r`   re   rm   ro   rq   rs   rv   rw   r}   r‚   rƒ   rŒ   r�   rŽ   r‘   r’   r”   rœ   rž   r    r¢   r£   r§   r«   r¬   r®   r·   r¸   r¹   rº   r¼   rÀ   rÄ   rÆ   rÊ   rÌ   rÍ   rÎ   rÐ   rÑ   rÒ   rÓ   rÔ   rÕ   r	   r	   r	   r
   Ú<module>   sh   	O: