
    Pi                        d dl Z d dlmZmZmZmZ d Z G d d          Z G d d          Z G d d	e          Z	 G d
 de          Z
 G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d  d!e          Z G d" d#e          Z G d$ d%e          Z G d& d'e          Z G d( d)e          Z G d* d+e          Z G d, d-e          Z G d. d/e          Z G d0 d1e          Z G d2 d3e          Z G d4 d5e          Z G d6 d7e          Z  G d8 d9e          Z! G d: d;e          Z" G d< d=e          Z# G d> d?e          Z$ G d@ dAe          Z% G dB dCe          Z& G dD dEe          Z' G dF dGe          Z( G dH dIe          Z) G dJ dKe          Z* G dL dMe          Z+ G dN dOe          Z, G dP dQe          Z- G dR dSe          Z. G dT dUe          Z/ G dV dWe          Z0 G dX dYe          Z1 G dZ d[e          Z2 G d\ d]e          Z3 G d^ d_e          Z4 G d` dae          Z5 G db dce          Z6 G dd dee          Z7 G df dge          Z8 G dh die          Z9dS )j    N)AnyClassVarIOOptionalc                     t          | t                    r%dd                    d | D                       z   dz   S t          |           S )z[
    Get the representation of an object, with dedicated pprint-like format for lists.
    [z,
 c              3   \   K   | ]'}t          |                              d d          V  (dS )

 N)_reprreplace).0es     c/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pycparser/c_ast.py	<genexpr>z_repr.<locals>.<genexpr>   s8      "N"NQ588#3#3D%#@#@"N"N"N"N"N"N    z
])
isinstancelistjoinrepr)objs    r   r   r      sN     #t fkk"N"N#"N"N"NOOPSXXXCyyr   c                       e Zd ZU dZ	 dZeeedf                  ed<   e	e
         ed<   d Zd Zej        ddd	ddd
fdee         dededededede	e         fdZd
S )Node .
attr_namescoordc                    | j         j        dz   }d}d}| j        dd         D ]}||z  }||z  }||dz   t          t	          | |                                        dddt          |          t          | j         j                  z   z  z             z   z  }d	}d
dt          | j         j                  z  z   }||dz   z  }|S )z5Generates a python representation of the current node( N=r
   z
   ,r   ))	__class____name__	__slots__r   getattrr   len)selfresultindent	separatornames        r   __repr__zNode.__repr__'   s    (3.	N3B3' 	B 	BDiFfF '$--..66#TS9P5Q5Q)Q"RS 	F IcC(?$@$@@AFF&3,r   c                     dS )z)A sequence of all children that are NodesNr   r*   s    r   childrenzNode.childrenB   s    r   r   FTNbufoffset	attrnamesshowemptyattrs	nodenames	showcoord_my_node_namec           
          d|z  }|r.|,|                     | j        j        z   dz   |z   dz              n%|                     | j        j        z   dz               j        rnd  fd j        D             }	|r d                    d	 |	D                       }
nd                    d
 |	D                       }
|                     |
           |r|                     d j         d           |                     d                                            D ]$\  }}|                    ||dz   ||||           %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.

        showemptyattrs:
            False if you want to suppress printing empty attributes.

        nodenames:
            True if you want to see the actual node names
            within their parents.

        showcoord:
            Do you want the coordinates of each Node to be
            displayed.
        r"   Nz <z>: z: c                 `    | d u p%t          | d          ot          |           dk     d S  d S  d S )N__len__r   )hasattrr)   )vs    r   is_emptyzNode.show.<locals>.is_emptyp   s?    T	Dga33CA!DDDCCCr   c                 j    g | ]/}s t          |                    |t          |          f0S r   )r(   )r   nr?   r*   r6   s     r   
<listcomp>zNode.show.<locals>.<listcomp>s   s\       ! *2'$2B2B)C)CGD!$$%  r   z, c              3   *   K   | ]\  }}| d | V  dS )r!   Nr   )r   r.   values      r   r   zNode.show.<locals>.<genexpr>y   s4      #P#P+$t$5$5e$5$5#P#P#P#P#P#Pr   c              3   "   K   | ]
\  }}| V  d S Nr   )r   _rD   s      r   r   zNode.show.<locals>.<genexpr>{   s(      #F#F81euJ#F#F#F#F#F#Fr   z (at r$   r
      )r4   r5   r6   r7   r8   r9   )writer%   r&   r   r   r   r2   show)r*   r3   r4   r5   r6   r7   r8   r9   leadnvlistattrstr
child_namechildr?   s   `   `        @r   rJ   z	Node.showF   s   D V| 	=2IIdT^44t;mKeSTTTTIIdT^44t;<<<? 	E E E       F
  G))#P#P#P#P#PPP))#F#Fv#F#F#FFFIIg 	-II+dj+++,,,		$!% 		 		JJJz#-##(     		 		r   )r&   
__module____qualname__r'   r   r   tuplestr__annotations__r   r   r/   r2   sysstdoutr   intboolrJ   r   r   r   r   r       s         I,.JsCx)...C=  6   z#'+E EWE E 	E
 E E E  }E E E E E Er   r   c                   .    e Zd ZdZdZdefdZdefdZdS )NodeVisitora  A base NodeVisitor class for visiting c_ast nodes.
    Subclass it and define your own visit_XXX methods, where
    XXX is the class name you want to visit with these
    methods.

    For example:

    class ConstantVisitor(NodeVisitor):
        def __init__(self):
            self.values = []

        def visit_Constant(self, node):
            self.values.append(node.value)

    Creates a list of values of all the constant nodes
    encountered below the given node. To use it:

    cv = ConstantVisitor()
    cv.visit(node)

    Notes:

    *   generic_visit() will be called for AST nodes for which
        no visit_XXX method was defined.
    *   The children of nodes for which a visit_XXX was
        defined will not be visited - if you need this, call
        generic_visit() on the node.
        You can use:
            NodeVisitor.generic_visit(self, node)
    *   Modeled after Python's own AST visiting facilities
        (the ast module of Python 3.0)
    Nnodec                     | j         i | _         | j                             |j        j        d          }|9d|j        j        z   }t	          | || j                  }|| j         |j        j        <    ||          S )zVisit a node.Nvisit_)_method_cachegetr%   r&   r(   generic_visit)r*   r[   visitormethods       r   visitzNodeVisitor.visit   sz     %!#D$(()@$GG? 77FdFD,>??G:ADt~67wt}}r   c                 d    |                                 D ]\  }}|                     |           dS )ztCalled if no explicit visitor function exists for a
        node. Implements preorder visiting of the node.
        N)r2   rc   )r*   r[   rG   cs       r   r`   zNodeVisitor.generic_visit   s:     MMOO 	 	DAqJJqMMMM	 	r   )r&   rP   rQ   __doc__r^   r   rc   r`   r   r   r   rZ   rZ      s\         B M$    $      r   rZ   c                   *    e Zd ZdZddZd Zd ZdZdS )	ArrayDecl)typedim	dim_qualsr   __weakref__Nc                 >    || _         || _        || _        || _        d S rF   )ri   rj   rk   r   )r*   ri   rj   rk   r   s        r   __init__zArrayDecl.__init__   s"    	"


r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nri   rj   )ri   appendrj   rR   r*   nodelists     r   r2   zArrayDecl.children   sU    9 OOVTY/0008OOUDH-...Xr   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rF   )ri   rj   r1   s    r   __iter__zArrayDecl.__iter__   s8      9 )OOO8(NNNNN  r   )rk   rF   r&   rP   rQ   r'   rn   r2   rt   r   r   r   r   rh   rh      sL        DI         JJJr   rh   c                   *    e Zd ZdZddZd Zd ZdZdS )ArrayRef)r.   	subscriptr   rl   Nc                 0    || _         || _        || _        d S rF   )r.   rx   r   )r*   r.   rx   r   s       r   rn   zArrayRef.__init__   s    	"


r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nr.   rx   )r.   rp   rx   rR   rq   s     r   r2   zArrayRef.children   sU    9 OOVTY/000>%OO[$.9:::Xr   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rF   )r.   rx   r1   s    r   rt   zArrayRef.__iter__   s=      9 )OOO>%.      &%r   r   rF   ru   r   r   r   rw   rw      sL        =I   
  ! ! ! JJJr   rw   c                   *    e Zd ZdZddZd Zd ZdZdS )
Assignment)oplvaluervaluer   rl   Nc                 >    || _         || _        || _        || _        d S rF   )r~   r   r   r   )r*   r~   r   r   r   s        r   rn   zAssignment.__init__   s"    


r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nr   r   )r   rp   r   rR   rq   s     r   r2   zAssignment.children  sU    ;"OOXt{3444;"OOXt{3444Xr   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rF   )r   r   r1   s    r   rt   zAssignment.__iter__  s@      ;"+;"+ #"r   r~   rF   ru   r   r   r   r}   r}      sL        BI        JJJr   r}   c                   *    e Zd ZdZddZd Zd ZdZdS )Alignas)	alignmentr   rl   Nc                 "    || _         || _        d S rF   )r   r   )r*   r   r   s      r   rn   zAlignas.__init__  s    "


r   c                 j    g }| j         |                    d| j         f           t          |          S )Nr   )r   rp   rR   rq   s     r   r2   zAlignas.children  s4    >%OO[$.9:::Xr   c              #   .   K   | j         | j         V  d S d S rF   )r   r1   s    r   rt   zAlignas.__iter__"  s*      >%.      &%r   r   rF   ru   r   r   r   r   r     sL        5I     ! ! ! JJJr   r   c                   *    e Zd ZdZddZd Zd ZdZdS )BinaryOp)r~   leftrightr   rl   Nc                 >    || _         || _        || _        || _        d S rF   )r~   r   r   r   )r*   r~   r   r   r   s        r   rn   zBinaryOp.__init__,  s"    	



r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nr   r   )r   rp   r   rR   rq   s     r   r2   zBinaryOp.children2  U    9 OOVTY/000:!OOWdj1222Xr   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rF   )r   r   r1   s    r   rt   zBinaryOp.__iter__:  =      9 )OOO:!* "!r   r   rF   ru   r   r   r   r   r   )  sL        ?I        JJJr   r   c                   *    e Zd ZdZddZd Zd ZdZdS )Breakr   rl   Nc                     || _         d S rF   r   r*   r   s     r   rn   zBreak.__init__F      


r   c                     dS Nr   r   r1   s    r   r2   zBreak.childrenI      rr   c              #   
   K   d S rF   r   r1   s    r   rt   zBreak.__iter__L        r   r   rF   ru   r   r   r   r   r   C  L        (I        JJJr   r   c                   *    e Zd ZdZddZd Zd ZdZdS )Case)exprstmtsr   rl   Nc                 0    || _         || _        || _        d S rF   )r   r   r   )r*   r   r   r   s       r   rn   zCase.__init__V      	



r   c                     g }| j         |                    d| j         f           t          | j        pg           D ] \  }}|                    d| d|f           !t	          |          S )Nr   stmts[])r   rp   	enumerater   rR   r*   rr   irO   s       r   r2   zCase.children[  sx    9 OOVTY/000!$*"233 	4 	4HAuOO]a]]]E23333Xr   c              #   J   K   | j         	| j         V  | j        pg D ]}|V  d S rF   )r   r   r*   rO   s     r   rt   zCase.__iter__c  sD      9 )OOOZ%2 	 	EKKKK	 	r   r   rF   ru   r   r   r   r   r   S  sL        9I   
     JJJr   r   c                   *    e Zd ZdZddZd Zd ZdZdS )Cast)to_typer   r   rl   Nc                 0    || _         || _        || _        d S rF   )r   r   r   )r*   r   r   r   s       r   rn   zCast.__init__o  s    	


r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nr   r   )r   rp   r   rR   rq   s     r   r2   zCast.childrent  sU    <#OOY56669 OOVTY/000Xr   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rF   )r   r   r1   s    r   rt   zCast.__iter__|  s;      <#,9 )OOOOO ! r   r   rF   ru   r   r   r   r   r   l  sL        ;I   
     JJJr   r   c                   *    e Zd ZdZddZd Zd ZdZdS )Compound)block_itemsr   rl   Nc                 "    || _         || _        d S rF   )r   r   )r*   r   r   s      r   rn   zCompound.__init__      &


r   c                     g }t          | j        pg           D ] \  }}|                    d| d|f           !t          |          S )Nzblock_items[r   )r   r   rp   rR   r   s       r   r2   zCompound.children  \    !$"2"8b99 	: 	:HAuOO0A000%89999Xr   c              #   *   K   | j         pg D ]}|V  d S rF   )r   r   s     r   rt   zCompound.__iter__  2      %+ 	 	EKKKK	 	r   r   rF   ru   r   r   r   r   r     L        7I        JJJr   r   c                   *    e Zd ZdZddZd Zd ZdZdS )CompoundLiteral)ri   initr   rl   Nc                 0    || _         || _        || _        d S rF   )ri   r   r   )r*   ri   r   r   s       r   rn   zCompoundLiteral.__init__      		


r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nri   r   )ri   rp   r   rR   rq   s     r   r2   zCompoundLiteral.children  U    9 OOVTY/0009 OOVTY/000Xr   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rF   )ri   r   r1   s    r   rt   zCompoundLiteral.__iter__  8      9 )OOO9 )OOOOO ! r   r   rF   ru   r   r   r   r   r     L        8I   
     JJJr   r   c                   *    e Zd ZdZddZd Zd ZdZdS )Constant)ri   rD   r   rl   Nc                 0    || _         || _        || _        d S rF   )ri   rD   r   )r*   ri   rD   r   s       r   rn   zConstant.__init__  r   r   c                 $    g }t          |          S rF   rR   rq   s     r   r2   zConstant.children      Xr   c              #   
   K   d S rF   r   r1   s    r   rt   zConstant.__iter__  r   r   )ri   rD   rF   ru   r   r   r   r   r     sL        9I   
    JJJr   r   c                   *    e Zd ZdZddZd Zd ZdZdS )Continuer   Nc                     || _         d S rF   r   r   s     r   rn   zContinue.__init__  r   r   c                     dS r   r   r1   s    r   r2   zContinue.children  r   r   c              #   
   K   d S rF   r   r1   s    r   rt   zContinue.__iter__  r   r   r   rF   ru   r   r   r   r   r     r   r   r   c                   ,    e Zd ZdZ	 ddZd Zd ZdZdS )Decl)
r.   qualsalignstoragefuncspecri   r   bitsizer   rl   Nc
                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        d S rF   )	r.   r   r   r   r   ri   r   r   r   )
r*   r.   r   r   r   r   ri   r   r   r   s
             r   rn   zDecl.__init__  sG     	

 		


r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           | j        |                    d| j        f           t	          |          S )Nri   r   r   )ri   rp   r   r   rR   rq   s     r   r2   zDecl.children  sv    9 OOVTY/0009 OOVTY/000<#OOY5666Xr   c              #   n   K   | j         	| j         V  | j        	| j        V  | j        | j        V  d S d S rF   )ri   r   r   r1   s    r   rt   zDecl.__iter__  sP      9 )OOO9 )OOO<#, $#r   )r.   r   r   r   r   rF   ru   r   r   r   r   r     sU        I QU       JJJr   r   c                   *    e Zd ZdZddZd Zd ZdZdS )DeclList)declsr   rl   Nc                 "    || _         || _        d S rF   )r   r   )r*   r   r   s      r   rn   zDeclList.__init__      



r   c                     g }t          | j        pg           D ] \  }}|                    d| d|f           !t          |          S Nzdecls[r   r   r   rp   rR   r   s       r   r2   zDeclList.children  W    !$*"233 	4 	4HAuOO]a]]]E23333Xr   c              #   *   K   | j         pg D ]}|V  d S rF   r   r   s     r   rt   zDeclList.__iter__  1      Z%2 	 	EKKKK	 	r   r   rF   ru   r   r   r   r   r     L        1I        JJJr   r   c                   *    e Zd ZdZddZd Zd ZdZdS )Default)r   r   rl   Nc                 "    || _         || _        d S rF   )r   r   )r*   r   r   s      r   rn   zDefault.__init__%  r   r   c                     g }t          | j        pg           D ] \  }}|                    d| d|f           !t          |          S )Nr   r   )r   r   rp   rR   r   s       r   r2   zDefault.children)  r   r   c              #   *   K   | j         pg D ]}|V  d S rF   )r   r   s     r   rt   zDefault.__iter__/  r   r   r   rF   ru   r   r   r   r   r   "  r   r   r   c                   *    e Zd ZdZddZd Zd ZdZdS )DoWhilecondstmtr   rl   Nc                 0    || _         || _        || _        d S rF   r   r   r   r*   r   r   r   s       r   rn   zDoWhile.__init__9  r   r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S Nr   r   r   rp   r   rR   rq   s     r   r2   zDoWhile.children>  r   r   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rF   r   r   r1   s    r   rt   zDoWhile.__iter__F  r   r   r   rF   ru   r   r   r   r   r   6  r   r   r   c                   *    e Zd ZdZddZd Zd ZdZdS )EllipsisParamr   Nc                     || _         d S rF   r   r   s     r   rn   zEllipsisParam.__init__R  r   r   c                     dS r   r   r1   s    r   r2   zEllipsisParam.childrenU  r   r   c              #   
   K   d S rF   r   r1   s    r   rt   zEllipsisParam.__iter__X  r   r   r   rF   ru   r   r   r   r   r   O  r   r   r   c                   *    e Zd ZdZddZd Zd ZdZdS )EmptyStatementr   Nc                     || _         d S rF   r   r   s     r   rn   zEmptyStatement.__init__b  r   r   c                     dS r   r   r1   s    r   r2   zEmptyStatement.childrene  r   r   c              #   
   K   d S rF   r   r1   s    r   rt   zEmptyStatement.__iter__h  r   r   r   rF   ru   r   r   r   r  r  _  r   r   r  c                   *    e Zd ZdZddZd Zd ZdZdS )Enum)r.   valuesr   rl   Nc                 0    || _         || _        || _        d S rF   )r.   r
  r   )r*   r.   r
  r   s       r   rn   zEnum.__init__r  s    	


r   c                 j    g }| j         |                    d| j         f           t          |          S )Nr
  )r
  rp   rR   rq   s     r   r2   zEnum.childrenw  s4    ;"OOXt{3444Xr   c              #   .   K   | j         | j         V  d S d S rF   )r
  r1   s    r   rt   zEnum.__iter__}  s*      ;"+ #"r   r.   rF   ru   r   r   r   r	  r	  o  sL        :I   
     JJJr   r	  c                   *    e Zd ZdZddZd Zd ZdZdS )
Enumerator)r.   rD   r   rl   Nc                 0    || _         || _        || _        d S rF   )r.   rD   r   )r*   r.   rD   r   s       r   rn   zEnumerator.__init__  r   r   c                 j    g }| j         |                    d| j         f           t          |          S )NrD   )rD   rp   rR   rq   s     r   r2   zEnumerator.children  s4    :!OOWdj1222Xr   c              #   .   K   | j         | j         V  d S d S rF   )rD   r1   s    r   rt   zEnumerator.__iter__  s*      :!* "!r   r  rF   ru   r   r   r   r  r    sL        9I   
     JJJr   r  c                   *    e Zd ZdZddZd Zd ZdZdS )EnumeratorList)enumeratorsr   rl   Nc                 "    || _         || _        d S rF   )r  r   )r*   r  r   s      r   rn   zEnumeratorList.__init__  r   r   c                     g }t          | j        pg           D ] \  }}|                    d| d|f           !t          |          S )Nzenumerators[r   )r   r  rp   rR   r   s       r   r2   zEnumeratorList.children  r   r   c              #   *   K   | j         pg D ]}|V  d S rF   )r  r   s     r   rt   zEnumeratorList.__iter__  r   r   r   rF   ru   r   r   r   r  r    r   r   r  c                   *    e Zd ZdZddZd Zd ZdZdS )ExprListexprsr   rl   Nc                 "    || _         || _        d S rF   r  r   r*   r  r   s      r   rn   zExprList.__init__  r   r   c                     g }t          | j        pg           D ] \  }}|                    d| d|f           !t          |          S Nzexprs[r   r   r  rp   rR   r   s       r   r2   zExprList.children  r   r   c              #   *   K   | j         pg D ]}|V  d S rF   r  r   s     r   rt   zExprList.__iter__  r   r   r   rF   ru   r   r   r   r  r    r   r   r  c                   *    e Zd ZdZddZd Zd ZdZdS )FileAST)extr   rl   Nc                 "    || _         || _        d S rF   )r(  r   )r*   r(  r   s      r   rn   zFileAST.__init__  s    


r   c                     g }t          | j        pg           D ] \  }}|                    d| d|f           !t          |          S )Nzext[r   )r   r(  rp   rR   r   s       r   r2   zFileAST.children  sV    !$(.b11 	2 	2HAuOO[A[[[%01111Xr   c              #   *   K   | j         pg D ]}|V  d S rF   )r(  r   s     r   rt   zFileAST.__iter__  s0      X^ 	 	EKKKK	 	r   r   rF   ru   r   r   r   r'  r'    sL        /I        JJJr   r'  c                   *    e Zd ZdZddZd Zd ZdZdS )For)r   r   nextr   r   rl   Nc                 L    || _         || _        || _        || _        || _        d S rF   )r   r   r.  r   r   )r*   r   r   r.  r   r   s         r   rn   zFor.__init__  s)    				


r   c                 <   g }| j         |                    d| j         f           | j        |                    d| j        f           | j        |                    d| j        f           | j        |                    d| j        f           t          |          S )Nr   r   r.  r   )r   rp   r   r.  r   rR   rq   s     r   r2   zFor.children  s    9 OOVTY/0009 OOVTY/0009 OOVTY/0009 OOVTY/000Xr   c              #      K   | j         	| j         V  | j        	| j        V  | j        	| j        V  | j        | j        V  d S d S rF   )r   r   r.  r   r1   s    r   rt   zFor.__iter__  s^      9 )OOO9 )OOO9 )OOO9 )OOOOO ! r   r   rF   ru   r   r   r   r-  r-    sL        HI   
 
 
   JJJr   r-  c                   *    e Zd ZdZddZd Zd ZdZdS )FuncCall)r.   argsr   rl   Nc                 0    || _         || _        || _        d S rF   )r.   r4  r   )r*   r.   r4  r   s       r   rn   zFuncCall.__init__  r   r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nr.   r4  )r.   rp   r4  rR   rq   s     r   r2   zFuncCall.children   r   r   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rF   )r.   r4  r1   s    r   rt   zFuncCall.__iter__  r   r   r   rF   ru   r   r   r   r3  r3    r   r   r3  c                   *    e Zd ZdZddZd Zd ZdZdS )FuncDecl)r4  ri   r   rl   Nc                 0    || _         || _        || _        d S rF   )r4  ri   r   )r*   r4  ri   r   s       r   rn   zFuncDecl.__init__  r   r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nr4  ri   )r4  rp   ri   rR   rq   s     r   r2   zFuncDecl.children  r   r   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rF   )r4  ri   r1   s    r   rt   zFuncDecl.__iter__!  r   r   r   rF   ru   r   r   r   r9  r9    r   r   r9  c                   *    e Zd ZdZddZd Zd ZdZdS )FuncDef)declparam_declsbodyr   rl   Nc                 >    || _         || _        || _        || _        d S rF   )r?  r@  rA  r   )r*   r?  r@  rA  r   s        r   rn   zFuncDef.__init__-  s#    	&	


r   c                    g }| j         |                    d| j         f           | j        |                    d| j        f           t          | j        pg           D ] \  }}|                    d| d|f           !t          |          S )Nr?  rA  zparam_decls[r   )r?  rp   rA  r   r@  rR   r   s       r   r2   zFuncDef.children3  s    9 OOVTY/0009 OOVTY/000!$"2"8b99 	: 	:HAuOO0A000%89999Xr   c              #   j   K   | j         	| j         V  | j        	| j        V  | j        pg D ]}|V  d S rF   )r?  rA  r@  r   s     r   rt   zFuncDef.__iter__=  sX      9 )OOO9 )OOO%+ 	 	EKKKK	 	r   r   rF   ru   r   r   r   r>  r>  *  sL        GI        JJJr   r>  c                   *    e Zd ZdZddZd Zd ZdZdS )Gotor.   r   rl   Nc                 "    || _         || _        d S rF   r.   r   r*   r.   r   s      r   rn   zGoto.__init__K      	


r   c                 $    g }t          |          S rF   r   rq   s     r   r2   zGoto.childrenO  r   r   c              #   
   K   d S rF   r   r1   s    r   rt   zGoto.__iter__S  r   r   r  rF   ru   r   r   r   rF  rF  H  L        0I        JJJr   rF  c                   *    e Zd ZdZddZd Zd ZdZdS )IDrG  Nc                 "    || _         || _        d S rF   rI  rJ  s      r   rn   zID.__init__]  rK  r   c                 $    g }t          |          S rF   r   rq   s     r   r2   zID.childrena  r   r   c              #   
   K   d S rF   r   r1   s    r   rt   zID.__iter__e  r   r   r  rF   ru   r   r   r   rP  rP  Z  rN  r   rP  c                   *    e Zd ZdZddZd Zd ZdZdS )IdentifierType)namesr   rl   Nc                 "    || _         || _        d S rF   )rV  r   )r*   rV  r   s      r   rn   zIdentifierType.__init__o  r   r   c                 $    g }t          |          S rF   r   rq   s     r   r2   zIdentifierType.childrens  r   r   c              #   
   K   d S rF   r   r1   s    r   rt   zIdentifierType.__iter__w  r   r   )rV  rF   ru   r   r   r   rU  rU  l  sL        1I        JJJr   rU  c                   *    e Zd ZdZddZd Zd ZdZdS )Ifr   iftrueiffalser   rl   Nc                 >    || _         || _        || _        || _        d S rF   r   r]  r^  r   r*   r   r]  r^  r   s        r   rn   zIf.__init__  "    	


r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           | j        |                    d| j        f           t	          |          S Nr   r]  r^  r   rp   r]  r^  rR   rq   s     r   r2   zIf.children  v    9 OOVTY/000;"OOXt{3444<#OOY5666Xr   c              #   n   K   | j         	| j         V  | j        	| j        V  | j        | j        V  d S d S rF   r   r]  r^  r1   s    r   rt   zIf.__iter__  S      9 )OOO;"+<#, $#r   r   rF   ru   r   r   r   r[  r[  ~  L        EI        JJJr   r[  c                   *    e Zd ZdZddZd Zd ZdZdS )InitListr  Nc                 "    || _         || _        d S rF   r  r   s      r   rn   zInitList.__init__  r   r   c                     g }t          | j        pg           D ] \  }}|                    d| d|f           !t          |          S r"  r#  r   s       r   r2   zInitList.children  r   r   c              #   *   K   | j         pg D ]}|V  d S rF   r%  r   s     r   rt   zInitList.__iter__  r   r   r   rF   ru   r   r   r   rl  rl    r   r   rl  c                   *    e Zd ZdZddZd Zd ZdZdS )Label)r.   r   r   rl   Nc                 0    || _         || _        || _        d S rF   )r.   r   r   )r*   r.   r   r   s       r   rn   zLabel.__init__  r   r   c                 j    g }| j         |                    d| j         f           t          |          S )Nr   )r   rp   rR   rq   s     r   r2   zLabel.children  4    9 OOVTY/000Xr   c              #   .   K   | j         | j         V  d S d S rF   )r   r1   s    r   rt   zLabel.__iter__  %      9 )OOOOO ! r   r  rF   ru   r   r   r   rq  rq    sL        8I   
     JJJr   rq  c                   *    e Zd ZdZddZd Zd ZdZdS )NamedInitializer)r.   r   r   rl   Nc                 0    || _         || _        || _        d S rF   )r.   r   r   )r*   r.   r   r   s       r   rn   zNamedInitializer.__init__  r   r   c                     g }| j         |                    d| j         f           t          | j        pg           D ] \  }}|                    d| d|f           !t	          |          S )Nr   zname[r   )r   rp   r   r.   rR   r   s       r   r2   zNamedInitializer.children  sw    9 OOVTY/000!$)/r22 	3 	3HAuOO\Q\\\512222Xr   c              #   J   K   | j         	| j         V  | j        pg D ]}|V  d S rF   )r   r.   r   s     r   rt   zNamedInitializer.__iter__  sC      9 )OOOY_" 	 	EKKKK	 	r   r   rF   ru   r   r   r   rx  rx    sL        8I   
     JJJr   rx  c                   *    e Zd ZdZddZd Zd ZdZdS )	ParamList)paramsr   rl   Nc                 "    || _         || _        d S rF   )r~  r   )r*   r~  r   s      r   rn   zParamList.__init__      


r   c                     g }t          | j        pg           D ] \  }}|                    d| d|f           !t          |          S )Nzparams[r   )r   r~  rp   rR   r   s       r   r2   zParamList.children  sW    !$+"344 	5 	5HAuOO^q^^^U34444Xr   c              #   *   K   | j         pg D ]}|V  d S rF   )r~  r   s     r   rt   zParamList.__iter__  s1      [&B 	 	EKKKK	 	r   r   rF   ru   r   r   r   r}  r}    sL        2I        JJJr   r}  c                   *    e Zd ZdZddZd Zd ZdZdS )PtrDecl)r   ri   r   rl   Nc                 0    || _         || _        || _        d S rF   )r   ri   r   )r*   r   ri   r   s       r   rn   zPtrDecl.__init__  s    
	


r   c                 j    g }| j         |                    d| j         f           t          |          S Nri   ri   rp   rR   rq   s     r   r2   zPtrDecl.children  rt  r   c              #   .   K   | j         | j         V  d S d S rF   ri   r1   s    r   rt   zPtrDecl.__iter__   rv  r   )r   rF   ru   r   r   r   r  r    sL        9I   
     JJJr   r  c                   *    e Zd ZdZddZd Zd ZdZdS )Return)r   r   rl   Nc                 "    || _         || _        d S rF   )r   r   )r*   r   r   s      r   rn   zReturn.__init__
  rK  r   c                 j    g }| j         |                    d| j         f           t          |          S Nr   r   rp   rR   rq   s     r   r2   zReturn.children  rt  r   c              #   .   K   | j         | j         V  d S d S rF   r   r1   s    r   rt   zReturn.__iter__  rv  r   r   rF   ru   r   r   r   r  r    sL        0I        JJJr   r  c                   *    e Zd ZdZddZd Zd ZdZdS )StaticAssert)r   messager   rl   Nc                 0    || _         || _        || _        d S rF   )r   r  r   )r*   r   r  r   s       r   rn   zStaticAssert.__init__  s    	


r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nr   r  )r   rp   r  rR   rq   s     r   r2   zStaticAssert.children#  sU    9 OOVTY/000<#OOY5666Xr   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rF   )r   r  r1   s    r   rt   zStaticAssert.__iter__+  s=      9 )OOO<#, $#r   r   rF   ru   r   r   r   r  r    sL        ;I   
     JJJr   r  c                   *    e Zd ZdZddZd Zd ZdZdS )Structr.   r   r   rl   Nc                 0    || _         || _        || _        d S rF   r.   r   r   r*   r.   r   r   s       r   rn   zStruct.__init__7  r   r   c                     g }t          | j        pg           D ] \  }}|                    d| d|f           !t          |          S r   r   r   s       r   r2   zStruct.children<  r   r   c              #   *   K   | j         pg D ]}|V  d S rF   r   r   s     r   rt   zStruct.__iter__B  r   r   r  rF   ru   r   r   r   r  r  4  L        9I   
     JJJr   r  c                   *    e Zd ZdZddZd Zd ZdZdS )	StructRef)r.   ri   fieldr   rl   Nc                 >    || _         || _        || _        || _        d S rF   )r.   ri   r  r   )r*   r.   ri   r  r   s        r   rn   zStructRef.__init__L  s"    		



r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nr.   r  )r.   rp   r  rR   rq   s     r   r2   zStructRef.childrenR  r   r   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rF   )r.   r  r1   s    r   rt   zStructRef.__iter__Z  r   r   r  rF   ru   r   r   r   r  r  I  sL        AI        JJJr   r  c                   *    e Zd ZdZddZd Zd ZdZdS )Switchr   Nc                 0    || _         || _        || _        d S rF   r   r   s       r   rn   zSwitch.__init__f  r   r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S r   r   rq   s     r   r2   zSwitch.childrenk  r   r   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rF   r   r1   s    r   rt   zSwitch.__iter__s  r   r   r   rF   ru   r   r   r   r  r  c  r   r   r  c                   *    e Zd ZdZddZd Zd ZdZdS )	TernaryOpr\  Nc                 >    || _         || _        || _        || _        d S rF   r`  ra  s        r   rn   zTernaryOp.__init__  rb  r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           | j        |                    d| j        f           t	          |          S rd  re  rq   s     r   r2   zTernaryOp.children  rf  r   c              #   n   K   | j         	| j         V  | j        	| j        V  | j        | j        V  d S d S rF   rh  r1   s    r   rt   zTernaryOp.__iter__  ri  r   r   rF   ru   r   r   r   r  r  |  rj  r   r  c                   *    e Zd ZdZddZd Zd ZdZdS )TypeDecl)declnamer   r   ri   r   rl   Nc                 L    || _         || _        || _        || _        || _        d S rF   )r  r   r   ri   r   )r*   r  r   r   ri   r   s         r   rn   zTypeDecl.__init__  s)     

	


r   c                 j    g }| j         |                    d| j         f           t          |          S r  r  rq   s     r   r2   zTypeDecl.children  rt  r   c              #   .   K   | j         | j         V  d S d S rF   r  r1   s    r   rt   zTypeDecl.__iter__  rv  r   )r  r   r   rF   ru   r   r   r   r  r    sL        NI       JJJr   r  c                   *    e Zd ZdZddZd Zd ZdZdS )Typedef)r.   r   r   ri   r   rl   Nc                 L    || _         || _        || _        || _        || _        d S rF   )r.   r   r   ri   r   )r*   r.   r   r   ri   r   s         r   rn   zTypedef.__init__  s)    	
	


r   c                 j    g }| j         |                    d| j         f           t          |          S r  r  rq   s     r   r2   zTypedef.children  rt  r   c              #   .   K   | j         | j         V  d S d S rF   r  r1   s    r   rt   zTypedef.__iter__  rv  r   )r.   r   r   rF   ru   r   r   r   r  r    sL        LI       JJJr   r  c                   *    e Zd ZdZddZd Zd ZdZdS )Typename)r.   r   r   ri   r   rl   Nc                 L    || _         || _        || _        || _        || _        d S rF   )r.   r   r   ri   r   )r*   r.   r   r   ri   r   s         r   rn   zTypename.__init__  s)    	

	


r   c                 j    g }| j         |                    d| j         f           t          |          S r  r  rq   s     r   r2   zTypename.children  rt  r   c              #   .   K   | j         | j         V  d S d S rF   r  r1   s    r   rt   zTypename.__iter__  rv  r   )r.   r   r   rF   ru   r   r   r   r  r    sL        JI       JJJr   r  c                   *    e Zd ZdZddZd Zd ZdZdS )UnaryOp)r~   r   r   rl   Nc                 0    || _         || _        || _        d S rF   )r~   r   r   )r*   r~   r   r   s       r   rn   zUnaryOp.__init__  s    	


r   c                 j    g }| j         |                    d| j         f           t          |          S r  r  rq   s     r   r2   zUnaryOp.children  rt  r   c              #   .   K   | j         | j         V  d S d S rF   r  r1   s    r   rt   zUnaryOp.__iter__  rv  r   r   rF   ru   r   r   r   r  r    sL        6I   
     JJJr   r  c                   *    e Zd ZdZddZd Zd ZdZdS )Unionr  Nc                 0    || _         || _        || _        d S rF   r  r  s       r   rn   zUnion.__init__  r   r   c                     g }t          | j        pg           D ] \  }}|                    d| d|f           !t          |          S r   r   r   s       r   r2   zUnion.children  r   r   c              #   *   K   | j         pg D ]}|V  d S rF   r   r   s     r   rt   zUnion.__iter__  r   r   r  rF   ru   r   r   r   r  r     r  r   r  c                   *    e Zd ZdZddZd Zd ZdZdS )Whiler   Nc                 0    || _         || _        || _        d S rF   r   r   s       r   rn   zWhile.__init__  r   r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S r   r   rq   s     r   r2   zWhile.children  r   r   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rF   r   r1   s    r   rt   zWhile.__iter__%  r   r   r   rF   ru   r   r   r   r  r    r   r   r  c                   *    e Zd ZdZddZd Zd ZdZdS )Pragma)stringr   rl   Nc                 "    || _         || _        d S rF   )r  r   )r*   r  r   s      r   rn   zPragma.__init__1  r  r   c                 $    g }t          |          S rF   r   rq   s     r   r2   zPragma.children5  r   r   c              #   
   K   d S rF   r   r1   s    r   rt   zPragma.__iter__9  r   r   )r  rF   ru   r   r   r   r  r  .  sL        2I        JJJr   r  ):rU   typingr   r   r   r   r   r   rZ   rh   rw   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r'  r-  r3  r9  r>  rF  rP  rU  r[  rl  rq  rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     s  $ 


 . . . . . . . . . . . .  k k k k k k k k\7 7 7 7 7 7 7 7t               4    t   2       4    d   (    t   4    D        4   2    4   2    t   (    d   2    t   ,    t    3 3 3 3 34 3 3 3l    t   (    d   (    d   2    D        T        4   *       *    T   (    t   (    d   (         $      F    t   2    t   2    d   <    4   $       $    T   $       <    t   (    D   *    t   2       (    d   *    T   (    4   2    T   *       4    T   2       <    t   6    d   6    t   6    d   *    D   *    D   2    T     r   