3
ãdeÕ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j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 |ƒjd dƒV  qdS )Ú
z
 N)Ú_reprÚreplace)Ú.0Úe© r   úF/var/www/agendate/envp3/lib/python3.6/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f Zdd„ Zdd„ Zejdddddfdd	„ZdS )
ÚNodec          
   C   sž   | j jd }d}d}xx| jdd… D ]f}||7 }||7 }||d tt| |ƒƒjdddt|ƒt| j jƒ   ƒ 7 }d	}d
dt| j jƒ  }q$W ||d 7 }|S )z? Generates a python representation of the current node
        ú(Ú Né   ú=r   z
  ú ú,z
 ú)éþÿÿÿ)Ú	__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j d | d ƒ n|j |ˆ jj d ƒ ˆ jr°|r~‡ fdd„ˆ jD ƒ}djd	d
„ |D ƒƒ}	n(‡ fdd„ˆ jD ƒ}
djdd
„ |
D ƒƒ}	|j |	ƒ |rÄ|j dˆ j ƒ |j dƒ x.ˆ jƒ D ]"\}}|j||d ||||d� qØW 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   Ún)r   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	   r&   [   s    c             s   s   | ]}d | V  qdS )z%sNr   )r   Úvr   r   r	   r
   \   s    z (at %s)r   r   )ÚoffsetÚ	attrnamesÚ	nodenamesÚ	showcoordÚ_my_node_name)Úwriter   r   Ú
attr_namesr   Úcoordr$   Úshow)r   Úbufr)   r*   r+   r,   r-   ZleadZnvlistZattrstrÚvlistZ
child_nameÚchildr   )r   r	   r1   :   s,     

z	Node.show)	r   Ú
__module__Ú__qualname__r   r#   r$   ÚsysÚstdoutr1   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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   x|D ]}| j |ƒ qW dS )zy Called if no explicit visitor function exists for a
            node. Implements preorder visiting of the node.
        N)rA   )r   r>   Úcr   r   r	   r=       s    
zNodeVisitor.generic_visit)r   r5   r6   Ú__doc__r;   rA   r=   r   r   r   r	   r9   m   s    r9   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_qualsr0   Ú__weakref__Nc             C   s   || _ || _|| _|| _d S )N)rE   rF   rG   r0   )r   rE   rF   rG   r0   r   r   r	   Ú__init__©   s    zArrayDecl.__init__c             C   s@   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ t|ƒS )NrE   rF   )rE   ÚappendrF   Ú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 )N)rE   rF   )r   r   r   r	   Ú__iter__µ   s    

zArrayDecl.__iter__)rE   rF   rG   r0   rH   )N)rG   )r   r5   r6   r   rI   r$   rM   r/   r   r   r   r	   rD   §   s
   
rD   c               @   s.   e Zd ZdZddd„Zdd	„ Zd
d„ Zf ZdS )ÚArrayRefr"   Ú	subscriptr0   rH   Nc             C   s   || _ || _|| _d S )N)r"   rO   r0   )r   r"   rO   r0   r   r   r	   rI   ¿   s    zArrayRef.__init__c             C   s@   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ t|ƒS )Nr"   rO   )r"   rJ   rO   rK   )r   rL   r   r   r	   r$   Ä   s    
 
 zArrayRef.childrenc             c   s(   | j d k	r| j V  | jd k	r$| jV  d S )N)r"   rO   )r   r   r   r	   rM   Ê   s    

zArrayRef.__iter__)r"   rO   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   r   r   r   r	   rN   ½   s
   
rN   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Úrvaluer0   rH   Nc             C   s   || _ || _|| _|| _d S )N)rQ   rR   rS   r0   )r   rQ   rR   rS   r0   r   r   r	   rI   Ô   s    zAssignment.__init__c             C   s@   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ t|ƒS )NrR   rS   )rR   rJ   rS   rK   )r   rL   r   r   r	   r$   Ú   s    
 
 zAssignment.childrenc             c   s(   | j d k	r| j V  | jd k	r$| jV  d S )N)rR   rS   )r   r   r   r	   rM   à   s    

zAssignment.__iter__)rQ   rR   rS   r0   rH   )N)rQ   )r   r5   r6   r   rI   r$   rM   r/   r   r   r   r	   rP   Ò   s
   
rP   c               @   s.   e Zd ZdZddd„Zdd„ Zd	d
„ Zf ZdS )ÚAlignasÚ	alignmentr0   rH   Nc             C   s   || _ || _d S )N)rU   r0   )r   rU   r0   r   r   r	   rI   ê   s    zAlignas.__init__c             C   s&   g }| j d k	r|jd| j fƒ t|ƒS )NrU   )rU   rJ   rK   )r   rL   r   r   r	   r$   î   s    
 zAlignas.childrenc             c   s   | j d k	r| j V  d S )N)rU   )r   r   r   r	   rM   ó   s    
zAlignas.__iter__)rU   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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 )ÚBinaryOprQ   ÚleftÚrightr0   rH   Nc             C   s   || _ || _|| _|| _d S )N)rQ   rW   rX   r0   )r   rQ   rW   rX   r0   r   r   r	   rI   û   s    zBinaryOp.__init__c             C   s@   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ t|ƒS )NrW   rX   )rW   rJ   rX   rK   )r   rL   r   r   r	   r$     s    
 
 zBinaryOp.childrenc             c   s(   | j d k	r| j V  | jd k	r$| jV  d S )N)rW   rX   )r   r   r   r	   rM     s    

zBinaryOp.__iter__)rQ   rW   rX   r0   rH   )N)rQ   )r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚBreakr0   rH   Nc             C   s
   || _ d S )N)r0   )r   r0   r   r   r	   rI     s    zBreak.__init__c             C   s   f S )Nr   )r   r   r   r	   r$     s    zBreak.childrenc             c   s   d S )Nr   )r   r   r   r	   rM     s    zBreak.__iter__)r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚCaseÚexprÚstmtsr0   rH   Nc             C   s   || _ || _|| _d S )N)r[   r\   r0   )r   r[   r\   r0   r   r   r	   rI     s    zCase.__init__c             C   sT   g }| j d k	r|jd| j fƒ x,t| jp*g ƒD ]\}}|jd| |fƒ q.W t|ƒS )Nr[   z	stmts[%d])r[   rJ   Ú	enumerater\   rK   )r   rL   Úir4   r   r   r	   r$   $  s    
 zCase.childrenc             c   s0   | j d k	r| j V  x| jpg D ]
}|V  qW d S )N)r[   r\   )r   r4   r   r   r	   rM   +  s    
zCase.__iter__)r[   r\   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚCastÚto_typer[   r0   rH   Nc             C   s   || _ || _|| _d S )N)r`   r[   r0   )r   r`   r[   r0   r   r   r	   rI   5  s    zCast.__init__c             C   s@   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ t|ƒS )Nr`   r[   )r`   rJ   r[   rK   )r   rL   r   r   r	   r$   :  s    
 
 zCast.childrenc             c   s(   | j d k	r| j V  | jd k	r$| jV  d S )N)r`   r[   )r   r   r   r	   rM   @  s    

zCast.__iter__)r`   r[   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   r   r   r   r	   r_   3  s
   
r_   c               @   s.   e Zd ZdZddd„Zdd„ Zd	d
„ Zf ZdS )ÚCompoundÚblock_itemsr0   rH   Nc             C   s   || _ || _d S )N)rb   r0   )r   rb   r0   r   r   r	   rI   J  s    zCompound.__init__c             C   s:   g }x,t | jpg ƒD ]\}}|jd| |fƒ qW t|ƒS )Nzblock_items[%d])r]   rb   rJ   rK   )r   rL   r^   r4   r   r   r	   r$   N  s    zCompound.childrenc             c   s   x| j p
g D ]
}|V  qW d S )N)rb   )r   r4   r   r   r	   rM   T  s    zCompound.__iter__)rb   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   r   r   r   r	   ra   H  s
   
ra   c               @   s.   e Zd ZdZddd„Zdd	„ Zd
d„ Zf ZdS )ÚCompoundLiteralrE   Úinitr0   rH   Nc             C   s   || _ || _|| _d S )N)rE   rd   r0   )r   rE   rd   r0   r   r   r	   rI   \  s    zCompoundLiteral.__init__c             C   s@   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ t|ƒS )NrE   rd   )rE   rJ   rd   rK   )r   rL   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 )N)rE   rd   )r   r   r   r	   rM   g  s    

zCompoundLiteral.__iter__)rE   rd   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   r   r   r   r	   rc   Z  s
   
rc   c               @   s.   e Zd ZdZddd„Zdd	„ Zd
d„ ZdZdS )ÚConstantrE   Úvaluer0   rH   Nc             C   s   || _ || _|| _d S )N)rE   rf   r0   )r   rE   rf   r0   r   r   r	   rI   q  s    zConstant.__init__c             C   s   g }t |ƒS )N)rK   )r   rL   r   r   r	   r$   v  s    zConstant.childrenc             c   s   d S )Nr   )r   r   r   r	   rM   z  s    zConstant.__iter__)rE   rf   r0   rH   )N)rE   rf   )r   r5   r6   r   rI   r$   rM   r/   r   r   r   r	   re   o  s
   
re   c               @   s.   e Zd Zd
Zddd„Zdd„ Zdd	„ Zf ZdS )ÚContinuer0   rH   Nc             C   s
   || _ d S )N)r0   )r   r0   r   r   r	   rI   ‚  s    zContinue.__init__c             C   s   f S )Nr   )r   r   r   r	   r$   …  s    zContinue.childrenc             c   s   d S )Nr   )r   r   r   r	   rM   ˆ  s    zContinue.__iter__)r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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 )ÚDeclr"   ÚqualsÚalignÚstorageÚfuncspecrE   rd   Úbitsizer0   rH   Nc
       
      C   s:   || _ || _|| _|| _|| _|| _|| _|| _|	| _d S )N)	r"   ri   rj   rk   rl   rE   rd   rm   r0   )
r   r"   ri   rj   rk   rl   rE   rd   rm   r0   r   r   r	   rI   �  s    zDecl.__init__c             C   sZ   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ | jd k	rR|jd| jfƒ t|ƒS )NrE   rd   rm   )rE   rJ   rd   rm   rK   )r   rL   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 )N)rE   rd   rm   )r   r   r   r	   rM   ¢  s    


zDecl.__iter__)
r"   ri   rj   rk   rl   rE   rd   rm   r0   rH   )N)r"   ri   rj   rk   rl   )r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚDeclListÚdeclsr0   rH   Nc             C   s   || _ || _d S )N)ro   r0   )r   ro   r0   r   r   r	   rI   ®  s    zDeclList.__init__c             C   s:   g }x,t | jpg ƒD ]\}}|jd| |fƒ qW t|ƒS )Nz	decls[%d])r]   ro   rJ   rK   )r   rL   r^   r4   r   r   r	   r$   ²  s    zDeclList.childrenc             c   s   x| j p
g D ]
}|V  qW d S )N)ro   )r   r4   r   r   r	   rM   ¸  s    zDeclList.__iter__)ro   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   r   r   r   r	   rn   ¬  s
   
rn   c               @   s.   e Zd ZdZddd„Zdd„ Zd	d
„ Zf ZdS )ÚDefaultr\   r0   rH   Nc             C   s   || _ || _d S )N)r\   r0   )r   r\   r0   r   r   r	   rI   À  s    zDefault.__init__c             C   s:   g }x,t | jpg ƒD ]\}}|jd| |fƒ qW t|ƒS )Nz	stmts[%d])r]   r\   rJ   rK   )r   rL   r^   r4   r   r   r	   r$   Ä  s    zDefault.childrenc             c   s   x| j p
g D ]
}|V  qW d S )N)r\   )r   r4   r   r   r	   rM   Ê  s    zDefault.__iter__)r\   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   r   r   r   r	   rp   ¾  s
   
rp   c               @   s.   e Zd ZdZddd„Zdd	„ Zd
d„ Zf ZdS )ÚDoWhileÚcondÚstmtr0   rH   Nc             C   s   || _ || _|| _d S )N)rr   rs   r0   )r   rr   rs   r0   r   r   r	   rI   Ò  s    zDoWhile.__init__c             C   s@   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ t|ƒS )Nrr   rs   )rr   rJ   rs   rK   )r   rL   r   r   r	   r$   ×  s    
 
 zDoWhile.childrenc             c   s(   | j d k	r| j V  | jd k	r$| jV  d S )N)rr   rs   )r   r   r   r	   rM   Ý  s    

zDoWhile.__iter__)rr   rs   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   r   r   r   r	   rq   Ð  s
   
rq   c               @   s.   e Zd Zd
Zddd„Zdd„ Zdd	„ Zf ZdS )ÚEllipsisParamr0   rH   Nc             C   s
   || _ d S )N)r0   )r   r0   r   r   r	   rI   ç  s    zEllipsisParam.__init__c             C   s   f S )Nr   )r   r   r   r	   r$   ê  s    zEllipsisParam.childrenc             c   s   d S )Nr   )r   r   r   r	   rM   í  s    zEllipsisParam.__iter__)r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚEmptyStatementr0   rH   Nc             C   s
   || _ d S )N)r0   )r   r0   r   r   r	   rI   õ  s    zEmptyStatement.__init__c             C   s   f S )Nr   )r   r   r   r	   r$   ø  s    zEmptyStatement.childrenc             c   s   d S )Nr   )r   r   r   r	   rM   û  s    zEmptyStatement.__iter__)r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   r   r   r   r	   ru   ó  s
   
ru   c               @   s.   e Zd ZdZddd„Zdd	„ Zd
d„ ZdZdS )ÚEnumr"   Úvaluesr0   rH   Nc             C   s   || _ || _|| _d S )N)r"   rw   r0   )r   r"   rw   r0   r   r   r	   rI     s    zEnum.__init__c             C   s&   g }| j d k	r|jd| j fƒ t|ƒS )Nrw   )rw   rJ   rK   )r   rL   r   r   r	   r$     s    
 zEnum.childrenc             c   s   | j d k	r| j V  d S )N)rw   )r   r   r   r	   rM     s    
zEnum.__iter__)r"   rw   r0   rH   )N)r"   )r   r5   r6   r   rI   r$   rM   r/   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 )Ú
Enumeratorr"   rf   r0   rH   Nc             C   s   || _ || _|| _d S )N)r"   rf   r0   )r   r"   rf   r0   r   r   r	   rI     s    zEnumerator.__init__c             C   s&   g }| j d k	r|jd| j fƒ t|ƒS )Nrf   )rf   rJ   rK   )r   rL   r   r   r	   r$     s    
 zEnumerator.childrenc             c   s   | j d k	r| j V  d S )N)rf   )r   r   r   r	   rM     s    
zEnumerator.__iter__)r"   rf   r0   rH   )N)r"   )r   r5   r6   r   rI   r$   rM   r/   r   r   r   r	   rx     s
   
rx   c               @   s.   e Zd ZdZddd„Zdd„ Zd	d
„ Zf ZdS )ÚEnumeratorListÚenumeratorsr0   rH   Nc             C   s   || _ || _d S )N)rz   r0   )r   rz   r0   r   r   r	   rI   '  s    zEnumeratorList.__init__c             C   s:   g }x,t | jpg ƒD ]\}}|jd| |fƒ qW t|ƒS )Nzenumerators[%d])r]   rz   rJ   rK   )r   rL   r^   r4   r   r   r	   r$   +  s    zEnumeratorList.childrenc             c   s   x| j p
g D ]
}|V  qW d S )N)rz   )r   r4   r   r   r	   rM   1  s    zEnumeratorList.__iter__)rz   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚExprListÚexprsr0   rH   Nc             C   s   || _ || _d S )N)r|   r0   )r   r|   r0   r   r   r	   rI   9  s    zExprList.__init__c             C   s:   g }x,t | jpg ƒD ]\}}|jd| |fƒ qW t|ƒS )Nz	exprs[%d])r]   r|   rJ   rK   )r   rL   r^   r4   r   r   r	   r$   =  s    zExprList.childrenc             c   s   x| j p
g D ]
}|V  qW d S )N)r|   )r   r4   r   r   r	   rM   C  s    zExprList.__iter__)r|   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚFileASTÚextr0   rH   Nc             C   s   || _ || _d S )N)r~   r0   )r   r~   r0   r   r   r	   rI   K  s    zFileAST.__init__c             C   s:   g }x,t | jpg ƒD ]\}}|jd| |fƒ qW t|ƒS )Nzext[%d])r]   r~   rJ   rK   )r   rL   r^   r4   r   r   r	   r$   O  s    zFileAST.childrenc             c   s   x| j p
g D ]
}|V  qW d S )N)r~   )r   r4   r   r   r	   rM   U  s    zFileAST.__iter__)r~   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚForrd   rr   Únextrs   r0   rH   Nc             C   s"   || _ || _|| _|| _|| _d S )N)rd   rr   r€   rs   r0   )r   rd   rr   r€   rs   r0   r   r   r	   rI   ]  s
    zFor.__init__c             C   st   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ | jd k	rR|jd| jfƒ | jd k	rl|jd| jfƒ t|ƒS )Nrd   rr   r€   rs   )rd   rJ   rr   r€   rs   rK   )r   rL   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 )N)rd   rr   r€   rs   )r   r   r   r	   rM   l  s    



zFor.__iter__)rd   rr   r€   rs   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚFuncCallr"   Úargsr0   rH   Nc             C   s   || _ || _|| _d S )N)r"   r‚   r0   )r   r"   r‚   r0   r   r   r	   rI   z  s    zFuncCall.__init__c             C   s@   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ t|ƒS )Nr"   r‚   )r"   rJ   r‚   rK   )r   rL   r   r   r	   r$     s    
 
 zFuncCall.childrenc             c   s(   | j d k	r| j V  | jd k	r$| jV  d S )N)r"   r‚   )r   r   r   r	   rM   …  s    

zFuncCall.__iter__)r"   r‚   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚFuncDeclr‚   rE   r0   rH   Nc             C   s   || _ || _|| _d S )N)r‚   rE   r0   )r   r‚   rE   r0   r   r   r	   rI   �  s    zFuncDecl.__init__c             C   s@   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ t|ƒS )Nr‚   rE   )r‚   rJ   rE   rK   )r   rL   r   r   r	   r$   ”  s    
 
 zFuncDecl.childrenc             c   s(   | j d k	r| j V  | jd k	r$| jV  d S )N)r‚   rE   )r   r   r   r	   rM   š  s    

zFuncDecl.__iter__)r‚   rE   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚFuncDefÚdeclÚparam_declsÚbodyr0   rH   Nc             C   s   || _ || _|| _|| _d S )N)r…   r†   r‡   r0   )r   r…   r†   r‡   r0   r   r   r	   rI   ¤  s    zFuncDef.__init__c             C   sn   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ x,t| jpDg ƒD ]\}}|jd| |fƒ qHW t|ƒS )Nr…   r‡   zparam_decls[%d])r…   rJ   r‡   r]   r†   rK   )r   rL   r^   r4   r   r   r	   r$   ª  s    
 
 zFuncDef.childrenc             c   sB   | j d k	r| j V  | jd k	r$| jV  x| jp.g D ]
}|V  q0W d S )N)r…   r‡   r†   )r   r4   r   r   r	   rM   ²  s    

zFuncDef.__iter__)r…   r†   r‡   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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 )ÚGotor"   r0   rH   Nc             C   s   || _ || _d S )N)r"   r0   )r   r"   r0   r   r   r	   rI   ¾  s    zGoto.__init__c             C   s   g }t |ƒS )N)rK   )r   rL   r   r   r	   r$   Â  s    zGoto.childrenc             c   s   d S )Nr   )r   r   r   r	   rM   Æ  s    zGoto.__iter__)r"   r0   rH   )N)r"   )r   r5   r6   r   rI   r$   rM   r/   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"   r0   rH   Nc             C   s   || _ || _d S )N)r"   r0   )r   r"   r0   r   r   r	   rI   Î  s    zID.__init__c             C   s   g }t |ƒS )N)rK   )r   rL   r   r   r	   r$   Ò  s    zID.childrenc             c   s   d S )Nr   )r   r   r   r	   rM   Ö  s    zID.__iter__)r"   r0   rH   )N)r"   )r   r5   r6   r   rI   r$   rM   r/   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Únamesr0   rH   Nc             C   s   || _ || _d S )N)r‹   r0   )r   r‹   r0   r   r   r	   rI   Þ  s    zIdentifierType.__init__c             C   s   g }t |ƒS )N)rK   )r   rL   r   r   r	   r$   â  s    zIdentifierType.childrenc             c   s   d S )Nr   )r   r   r   r	   rM   æ  s    zIdentifierType.__iter__)r‹   r0   rH   )N)r‹   )r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚIfrr   ÚiftrueÚiffalser0   rH   Nc             C   s   || _ || _|| _|| _d S )N)rr   r�   rŽ   r0   )r   rr   r�   rŽ   r0   r   r   r	   rI   î  s    zIf.__init__c             C   sZ   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ | jd k	rR|jd| jfƒ t|ƒS )Nrr   r�   rŽ   )rr   rJ   r�   rŽ   rK   )r   rL   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 )N)rr   r�   rŽ   )r   r   r   r	   rM   û  s    


zIf.__iter__)rr   r�   rŽ   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚInitListr|   r0   rH   Nc             C   s   || _ || _d S )N)r|   r0   )r   r|   r0   r   r   r	   rI     s    zInitList.__init__c             C   s:   g }x,t | jpg ƒD ]\}}|jd| |fƒ qW t|ƒS )Nz	exprs[%d])r]   r|   rJ   rK   )r   rL   r^   r4   r   r   r	   r$     s    zInitList.childrenc             c   s   x| j p
g D ]
}|V  qW d S )N)r|   )r   r4   r   r   r	   rM     s    zInitList.__iter__)r|   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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 )ÚLabelr"   rs   r0   rH   Nc             C   s   || _ || _|| _d S )N)r"   rs   r0   )r   r"   rs   r0   r   r   r	   rI     s    zLabel.__init__c             C   s&   g }| j d k	r|jd| j fƒ t|ƒS )Nrs   )rs   rJ   rK   )r   rL   r   r   r	   r$     s    
 zLabel.childrenc             c   s   | j d k	r| j V  d S )N)rs   )r   r   r   r	   rM   #  s    
zLabel.__iter__)r"   rs   r0   rH   )N)r"   )r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚNamedInitializerr"   r[   r0   rH   Nc             C   s   || _ || _|| _d S )N)r"   r[   r0   )r   r"   r[   r0   r   r   r	   rI   +  s    zNamedInitializer.__init__c             C   sT   g }| j d k	r|jd| j fƒ x,t| jp*g ƒD ]\}}|jd| |fƒ q.W t|ƒS )Nr[   zname[%d])r[   rJ   r]   r"   rK   )r   rL   r^   r4   r   r   r	   r$   0  s    
 zNamedInitializer.childrenc             c   s0   | j d k	r| j V  x| jpg D ]
}|V  qW d S )N)r[   r"   )r   r4   r   r   r	   rM   7  s    
zNamedInitializer.__iter__)r"   r[   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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f ZdS )Ú	ParamListÚparamsr0   rH   Nc             C   s   || _ || _d S )N)r“   r0   )r   r“   r0   r   r   r	   rI   A  s    zParamList.__init__c             C   s:   g }x,t | jpg ƒD ]\}}|jd| |fƒ qW t|ƒS )Nz
params[%d])r]   r“   rJ   rK   )r   rL   r^   r4   r   r   r	   r$   E  s    zParamList.childrenc             c   s   x| j p
g D ]
}|V  qW d S )N)r“   )r   r4   r   r   r	   rM   K  s    zParamList.__iter__)r“   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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 )ÚPtrDeclri   rE   r0   rH   Nc             C   s   || _ || _|| _d S )N)ri   rE   r0   )r   ri   rE   r0   r   r   r	   rI   S  s    zPtrDecl.__init__c             C   s&   g }| j d k	r|jd| j fƒ t|ƒS )NrE   )rE   rJ   rK   )r   rL   r   r   r	   r$   X  s    
 zPtrDecl.childrenc             c   s   | j d k	r| j V  d S )N)rE   )r   r   r   r	   rM   ]  s    
zPtrDecl.__iter__)ri   rE   r0   rH   )N)ri   )r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚReturnr[   r0   rH   Nc             C   s   || _ || _d S )N)r[   r0   )r   r[   r0   r   r   r	   rI   e  s    zReturn.__init__c             C   s&   g }| j d k	r|jd| j fƒ t|ƒS )Nr[   )r[   rJ   rK   )r   rL   r   r   r	   r$   i  s    
 zReturn.childrenc             c   s   | j d k	r| j V  d S )N)r[   )r   r   r   r	   rM   n  s    
zReturn.__iter__)r[   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚStaticAssertrr   Úmessager0   rH   Nc             C   s   || _ || _|| _d S )N)rr   r—   r0   )r   rr   r—   r0   r   r   r	   rI   v  s    zStaticAssert.__init__c             C   s@   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ t|ƒS )Nrr   r—   )rr   rJ   r—   rK   )r   rL   r   r   r	   r$   {  s    
 
 zStaticAssert.childrenc             c   s(   | j d k	r| j V  | jd k	r$| jV  d S )N)rr   r—   )r   r   r   r	   rM   �  s    

zStaticAssert.__iter__)rr   r—   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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 )ÚStructr"   ro   r0   rH   Nc             C   s   || _ || _|| _d S )N)r"   ro   r0   )r   r"   ro   r0   r   r   r	   rI   ‹  s    zStruct.__init__c             C   s:   g }x,t | jpg ƒD ]\}}|jd| |fƒ qW t|ƒS )Nz	decls[%d])r]   ro   rJ   rK   )r   rL   r^   r4   r   r   r	   r$   �  s    zStruct.childrenc             c   s   x| j p
g D ]
}|V  qW d S )N)ro   )r   r4   r   r   r	   rM   –  s    zStruct.__iter__)r"   ro   r0   rH   )N)r"   )r   r5   r6   r   rI   r$   rM   r/   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 )Ú	StructRefr"   rE   Úfieldr0   rH   Nc             C   s   || _ || _|| _|| _d S )N)r"   rE   rš   r0   )r   r"   rE   rš   r0   r   r   r	   rI   ž  s    zStructRef.__init__c             C   s@   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ t|ƒS )Nr"   rš   )r"   rJ   rš   rK   )r   rL   r   r   r	   r$   ¤  s    
 
 zStructRef.childrenc             c   s(   | j d k	r| j V  | jd k	r$| jV  d S )N)r"   rš   )r   r   r   r	   rM   ª  s    

zStructRef.__iter__)r"   rE   rš   r0   rH   )N)rE   )r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚSwitchrr   rs   r0   rH   Nc             C   s   || _ || _|| _d S )N)rr   rs   r0   )r   rr   rs   r0   r   r   r	   rI   ´  s    zSwitch.__init__c             C   s@   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ t|ƒS )Nrr   rs   )rr   rJ   rs   rK   )r   rL   r   r   r	   r$   ¹  s    
 
 zSwitch.childrenc             c   s(   | j d k	r| j V  | jd k	r$| jV  d S )N)rr   rs   )r   r   r   r	   rM   ¿  s    

zSwitch.__iter__)rr   rs   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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f ZdS )Ú	TernaryOprr   r�   rŽ   r0   rH   Nc             C   s   || _ || _|| _|| _d S )N)rr   r�   rŽ   r0   )r   rr   r�   rŽ   r0   r   r   r	   rI   É  s    zTernaryOp.__init__c             C   sZ   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ | jd k	rR|jd| jfƒ t|ƒS )Nrr   r�   rŽ   )rr   rJ   r�   rŽ   rK   )r   rL   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 )N)rr   r�   rŽ   )r   r   r   r	   rM   Ö  s    


zTernaryOp.__iter__)rr   r�   rŽ   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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Údeclnameri   rj   rE   r0   rH   Nc             C   s"   || _ || _|| _|| _|| _d S )N)rž   ri   rj   rE   r0   )r   rž   ri   rj   rE   r0   r   r   r	   rI   â  s
    zTypeDecl.__init__c             C   s&   g }| j d k	r|jd| j fƒ t|ƒS )NrE   )rE   rJ   rK   )r   rL   r   r   r	   r$   é  s    
 zTypeDecl.childrenc             c   s   | j d k	r| j V  d S )N)rE   )r   r   r   r	   rM   î  s    
zTypeDecl.__iter__)rž   ri   rj   rE   r0   rH   )N)rž   ri   rj   )r   r5   r6   r   rI   r$   rM   r/   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 )ÚTypedefr"   ri   rk   rE   r0   rH   Nc             C   s"   || _ || _|| _|| _|| _d S )N)r"   ri   rk   rE   r0   )r   r"   ri   rk   rE   r0   r   r   r	   rI   ö  s
    zTypedef.__init__c             C   s&   g }| j d k	r|jd| j fƒ t|ƒS )NrE   )rE   rJ   rK   )r   rL   r   r   r	   r$   ý  s    
 zTypedef.childrenc             c   s   | j d k	r| j V  d S )N)rE   )r   r   r   r	   rM     s    
zTypedef.__iter__)r"   ri   rk   rE   r0   rH   )N)r"   ri   rk   )r   r5   r6   r   rI   r$   rM   r/   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 )ÚTypenamer"   ri   rj   rE   r0   rH   Nc             C   s"   || _ || _|| _|| _|| _d S )N)r"   ri   rj   rE   r0   )r   r"   ri   rj   rE   r0   r   r   r	   rI   
  s
    zTypename.__init__c             C   s&   g }| j d k	r|jd| j fƒ t|ƒS )NrE   )rE   rJ   rK   )r   rL   r   r   r	   r$     s    
 zTypename.childrenc             c   s   | j d k	r| j V  d S )N)rE   )r   r   r   r	   rM     s    
zTypename.__iter__)r"   ri   rj   rE   r0   rH   )N)r"   ri   rj   )r   r5   r6   r   rI   r$   rM   r/   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 )ÚUnaryOprQ   r[   r0   rH   Nc             C   s   || _ || _|| _d S )N)rQ   r[   r0   )r   rQ   r[   r0   r   r   r	   rI     s    zUnaryOp.__init__c             C   s&   g }| j d k	r|jd| j fƒ t|ƒS )Nr[   )r[   rJ   rK   )r   rL   r   r   r	   r$   #  s    
 zUnaryOp.childrenc             c   s   | j d k	r| j V  d S )N)r[   )r   r   r   r	   rM   (  s    
zUnaryOp.__iter__)rQ   r[   r0   rH   )N)rQ   )r   r5   r6   r   rI   r$   rM   r/   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"   ro   r0   rH   Nc             C   s   || _ || _|| _d S )N)r"   ro   r0   )r   r"   ro   r0   r   r   r	   rI   0  s    zUnion.__init__c             C   s:   g }x,t | jpg ƒD ]\}}|jd| |fƒ qW t|ƒS )Nz	decls[%d])r]   ro   rJ   rK   )r   rL   r^   r4   r   r   r	   r$   5  s    zUnion.childrenc             c   s   x| j p
g D ]
}|V  qW d S )N)ro   )r   r4   r   r   r	   rM   ;  s    zUnion.__iter__)r"   ro   r0   rH   )N)r"   )r   r5   r6   r   rI   r$   rM   r/   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f ZdS )ÚWhilerr   rs   r0   rH   Nc             C   s   || _ || _|| _d S )N)rr   rs   r0   )r   rr   rs   r0   r   r   r	   rI   C  s    zWhile.__init__c             C   s@   g }| j d k	r|jd| j fƒ | jd k	r8|jd| jfƒ t|ƒS )Nrr   rs   )rr   rJ   rs   rK   )r   rL   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 )N)rr   rs   )r   r   r   r	   rM   N  s    

zWhile.__iter__)rr   rs   r0   rH   )N)r   r5   r6   r   rI   r$   rM   r/   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Ústringr0   rH   Nc             C   s   || _ || _d S )N)r¥   r0   )r   r¥   r0   r   r   r	   rI   X  s    zPragma.__init__c             C   s   g }t |ƒS )N)rK   )r   rL   r   r   r	   r$   \  s    zPragma.childrenc             c   s   d S )Nr   )r   r   r   r	   rM   `  s    zPragma.__iter__)r¥   r0   rH   )N)r¥   )r   r5   r6   r   rI   r$   rM   r/   r   r   r   r	   r¤   V  s
   
r¤   )6r7   r   Úobjectr   r9   rD   rN   rP   rT   rV   rY   rZ   r_   ra   rc   re   rg   rh   rn   rp   rq   rt   ru   rv   rx   ry   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: