
    Mhz                        d dl Z 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 d+ d,e          Z G d- d.e          Z G d/ d0e          Z G d1 d2e          Z G d3 d4e          Z G d5 d6e          Z G d7 d8e          Z G d9 d:e          Z G d; d<e          Z G d= d>e          Z  G d? d@e          Z! G dA dBe          Z" G dC dDe          Z# G dE dFe          Z$ G dG dHe          Z% G dI dJe          Z& G dK dLe          Z' G dM dNe          Z( G dO dPe          Z) G dQ dRe          Z* G dS dTe          Z+ G dU dVe          Z, G dW dXe          Z- G dY dZe          Z. G d[ d\e          Z/ G d] d^e          Z0 G d_ d`e          Z1 G da dbe          Z2 G dc dde          Z3 G de dfe          Z4 G dg dhe          Z5dS )i    Nc                     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     O/var/www/html/test/jupyter/venv/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dZ	 d Zd Zej        dddddfdZdS )Node c                    | 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 )z? Generates 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dSjE'$*=*=$>$>$F$FtVWZ^abf^g^gjmnrn|  oF  kG  kG  _G  XH  NI  %J  %J  K  KFIcC(?$@$@@AFF&3,r   c                     dS )z3 A sequence of all children that are Nodes
        Nr   r$   s    r   childrenzNode.children5   s	     	r   r   FNc           	          d|z  }|r.|,|                     | j        j        z   dz   |z   dz              n%|                     | j        j        z   dz               j        r||r3 fd j        D             }d                    d |D                       }	n2 fd	 j        D             }
d                    d
 |
D                       }	|                     |	           |r|                     d j        z             |                     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.

            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                 4    g | ]}|t          |          fS r   r"   r
   nr$   s     r   
<listcomp>zNode.show.<locals>.<listcomp>X   s&    HHH11gd1oo.HHHr   z, c              3       K   | ]	}d |z  V  
dS )z%s=%sNr   )r
   nvs     r   r   zNode.show.<locals>.<genexpr>Y   s&      #B#BRGbL#B#B#B#B#B#Br   c                 0    g | ]}t          |          S r   r/   r0   s     r   r2   zNode.show.<locals>.<listcomp>[   s#    CCCaq))CCCr   c              3       K   | ]	}d |z  V  
dS )z%sNr   )r
   vs     r   r   zNode.show.<locals>.<genexpr>\   s&      #<#<D1H#<#<#<#<#<#<r   z (at %s)r      )offset	attrnames	nodenames	showcoord_my_node_name)writer   r    
attr_namesr   coordr,   show)r$   bufr9   r:   r;   r<   r=   leadnvlistattrstrvlist
child_namechilds   `            r   rA   z	Node.show:   s   , V| 	<2IIdT^44d:]JURSSSSIIdT^44d:;;;? 	 =HHHHHHH))#B#B6#B#B#BBBCCCC4?CCC))#<#<e#<#<#<<<IIg 	/IIj4:-...		$#'==?? 	* 	*ZJJz###(  * * * *	* 	*r   )	r    
__module____qualname__r!   r)   r,   sysstdoutrA   r   r   r   r   r      sc        I  &  
 z!uY^nr 0* 0* 0* 0* 0* 0*r   r   c                   "    e Zd ZdZdZd Z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                     | 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$   nodevisitormethods       r   visitzNodeVisitor.visit   sz     %!#D$(()@$GG? 77FdFD,>??G:ADt~67wt}}r   c                 :    |D ]}|                      |           dS )zy Called if no explicit visitor function exists for a
            node. Implements preorder visiting of the node.
        N)rW   )r$   rT   cs      r   rS   zNodeVisitor.generic_visit   s.      	 	AJJqMMMM	 	r   )r    rI   rJ   __doc__rQ   rW   rS   r   r   r   rN   rN   m   sD         B M      r   rN   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 N)r]   r^   r_   r@   )r$   r]   r^   r_   r@   s        r   __init__zArrayDecl.__init__   s"    	"


r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nr]   r^   )r]   appendr^   tupler$   nodelists     r   r,   zArrayDecl.children   sS    9 (//6492E"F"F"F8%1B!C!C!CXr   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rb   )r]   r^   r+   s    r   __iter__zArrayDecl.__iter__   s8      9 )OOO8(NNNNN  r   )r_   rb   r    rI   rJ   r!   rc   r,   rj   r?   r   r   r   r\   r\      sL        DI        !JJJr   r\   c                   *    e Zd ZdZddZd Zd ZdZdS )ArrayRef)r(   	subscriptr@   r`   Nc                 0    || _         || _        || _        d S rb   )r(   rn   r@   )r$   r(   rn   r@   s       r   rc   zArrayRef.__init__   s    	"


r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nr(   rn   )r(   re   rn   rf   rg   s     r   r,   zArrayRef.children   sS    9 (//6492E"F"F"F>%xT^7T'U'U'UXr   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rb   )r(   rn   r+   s    r   rj   zArrayRef.__iter__   s=      9 )OOO>%.      &%r   r   rb   rk   r   r   r   rm   rm      sL        =I   
  ! ! ! JJJr   rm   c                   *    e Zd ZdZddZd Zd ZdZdS )
Assignment)oplvaluervaluer@   r`   Nc                 >    || _         || _        || _        || _        d S rb   )rt   ru   rv   r@   )r$   rt   ru   rv   r@   s        r   rc   zAssignment.__init__   s"    


r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nru   rv   )ru   re   rv   rf   rg   s     r   r,   zAssignment.children   sS    ;"HOOXt{4K$L$L$L;"HOOXt{4K$L$L$LXr   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rb   )ru   rv   r+   s    r   rj   zAssignment.__iter__   s@      ;"+;"+ #"r   rt   rb   rk   r   r   r   rs   rs      sL        BI        JJJr   rs   c                   *    e Zd ZdZddZd Zd ZdZdS )Alignas)	alignmentr@   r`   Nc                 "    || _         || _        d S rb   )r}   r@   )r$   r}   r@   s      r   rc   zAlignas.__init__   s    "


r   c                 j    g }| j         |                    d| j         f           t          |          S )Nr}   )r}   re   rf   rg   s     r   r,   zAlignas.children   s3    >%xT^7T'U'U'UXr   c              #   .   K   | j         | j         V  d S d S rb   )r}   r+   s    r   rj   zAlignas.__iter__   s*      >%.      &%r   r   rb   rk   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)rt   leftrightr@   r`   Nc                 >    || _         || _        || _        || _        d S rb   )rt   r   r   r@   )r$   rt   r   r   r@   s        r   rc   zBinaryOp.__init__   s"    	



r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nr   r   )r   re   r   rf   rg   s     r   r,   zBinaryOp.children  S    9 (//6492E"F"F"F:!8??GTZ3H#I#I#IXr   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rb   )r   r   r+   s    r   rj   zBinaryOp.__iter__  =      9 )OOO:!* "!r   rz   rb   rk   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@   r`   Nc                     || _         d S rb   r@   r$   r@   s     r   rc   zBreak.__init__      


r   c                     dS Nr   r   r+   s    r   r,   zBreak.children      rr   c              #   
   K   d S rb   r   r+   s    r   rj   zBreak.__iter__        r   r   rb   rk   r   r   r   r   r     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@   r`   Nc                 0    || _         || _        || _        d S rb   )r   r   r@   )r$   r   r   r@   s       r   rc   zCase.__init__      	



r   c                     g }| j         |                    d| j         f           t          | j        pg           D ]\  }}|                    d|z  |f            t	          |          S )Nr   	stmts[%d])r   re   	enumerater   rf   r$   rh   irH   s       r   r,   zCase.children$  ss    9 (//6492E"F"F"F!$*"233 	6 	6HAuOO[1_e45555Xr   c              #   J   K   | j         	| j         V  | j        pg D ]}|V  d S rb   )r   r   r$   rH   s     r   rj   zCase.__iter__+  sD      9 )OOOj&B 	 	EKKKK	 	r   r   rb   rk   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 )Cast)to_typer   r@   r`   Nc                 0    || _         || _        || _        d S rb   )r   r   r@   )r$   r   r   r@   s       r   rc   zCast.__init__5  s    	


r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nr   r   )r   re   r   rf   rg   s     r   r,   zCast.children:  sS    <#X__i5N%O%O%O9 (//6492E"F"F"FXr   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rb   )r   r   r+   s    r   rj   zCast.__iter__@  s;      <#,9 )OOOOO ! r   r   rb   rk   r   r   r   r   r   3  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@   r`   Nc                 "    || _         || _        d S rb   )r   r@   )r$   r   r@   s      r   rc   zCompound.__init__J      &


r   c                     g }t          | j        pg           D ]\  }}|                    d|z  |f            t          |          S )Nzblock_items[%d])r   r   re   rf   r   s       r   r,   zCompound.childrenN  V    !$"2"8b99 	< 	<HAuOO.2E:;;;;Xr   c              #   *   K   | j         pg D ]}|V  d S rb   )r   r   s     r   rj   zCompound.__iter__T  2      &," 	 	EKKKK	 	r   r   rb   rk   r   r   r   r   r   H  L        7I        JJJr   r   c                   *    e Zd ZdZddZd Zd ZdZdS )CompoundLiteral)r]   initr@   r`   Nc                 0    || _         || _        || _        d S rb   )r]   r   r@   )r$   r]   r   r@   s       r   rc   zCompoundLiteral.__init__\      		


r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nr]   r   )r]   re   r   rf   rg   s     r   r,   zCompoundLiteral.childrena  S    9 (//6492E"F"F"F9 (//6492E"F"F"FXr   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rb   )r]   r   r+   s    r   rj   zCompoundLiteral.__iter__g  8      9 )OOO9 )OOOOO ! r   r   rb   rk   r   r   r   r   r   Z  L        8I   
     JJJr   r   c                   *    e Zd ZdZddZd Zd ZdZdS )Constant)r]   valuer@   r`   Nc                 0    || _         || _        || _        d S rb   )r]   r   r@   )r$   r]   r   r@   s       r   rc   zConstant.__init__q  r   r   c                 $    g }t          |          S rb   rf   rg   s     r   r,   zConstant.childrenv      Xr   c              #   
   K   d S rb   r   r+   s    r   rj   zConstant.__iter__z  r   r   )r]   r   rb   rk   r   r   r   r   r   o  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 rb   r   r   s     r   rc   zContinue.__init__  r   r   c                     dS r   r   r+   s    r   r,   zContinue.children  r   r   c              #   
   K   d S rb   r   r+   s    r   rj   zContinue.__iter__  r   r   r   rb   rk   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funcspecr]   r   bitsizer@   r`   Nc
                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        d S rb   )	r(   r   r   r   r   r]   r   r   r@   )
r$   r(   r   r   r   r   r]   r   r   r@   s
             r   rc   zDecl.__init__  sE    	

 		


r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           | j        |                    d| j        f           t	          |          S )Nr]   r   r   )r]   re   r   r   rf   rg   s     r   r,   zDecl.children  ss    9 (//6492E"F"F"F9 (//6492E"F"F"F<#X__i5N%O%O%OXr   c              #   n   K   | j         	| j         V  | j        	| j        V  | j        | j        V  d S d S rb   )r]   r   r   r+   s    r   rj   zDecl.__iter__  sP      9 )OOO9 )OOO<#, $#r   )r(   r   r   r   r   rb   rk   r   r   r   r   r     sM        tI	 	 	 	     EJJJr   r   c                   *    e Zd ZdZddZd Zd ZdZdS )DeclList)declsr@   r`   Nc                 "    || _         || _        d S rb   )r   r@   )r$   r   r@   s      r   rc   zDeclList.__init__      



r   c                     g }t          | j        pg           D ]\  }}|                    d|z  |f            t          |          S Nz	decls[%d]r   r   re   rf   r   s       r   r,   zDeclList.children  S    !$*"233 	6 	6HAuOO[1_e45555Xr   c              #   *   K   | j         pg D ]}|V  d S rb   r   r   s     r   rj   zDeclList.__iter__  1      j&B 	 	EKKKK	 	r   r   rb   rk   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@   r`   Nc                 "    || _         || _        d S rb   )r   r@   )r$   r   r@   s      r   rc   zDefault.__init__  r   r   c                     g }t          | j        pg           D ]\  }}|                    d|z  |f            t          |          S )Nr   )r   r   re   rf   r   s       r   r,   zDefault.children  r   r   c              #   *   K   | j         pg D ]}|V  d S rb   )r   r   s     r   rj   zDefault.__iter__  r   r   r   rb   rk   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@   r`   Nc                 0    || _         || _        || _        d S rb   r   r   r@   r$   r   r   r@   s       r   rc   zDoWhile.__init__  r   r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S Nr   r   r   re   r   rf   rg   s     r   r,   zDoWhile.children  r   r   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rb   r   r   r+   s    r   rj   zDoWhile.__iter__  r   r   r   rb   rk   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 )EllipsisParamr   Nc                     || _         d S rb   r   r   s     r   rc   zEllipsisParam.__init__  r   r   c                     dS r   r   r+   s    r   r,   zEllipsisParam.children  r   r   c              #   
   K   d S rb   r   r+   s    r   rj   zEllipsisParam.__iter__  r   r   r   rb   rk   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 )EmptyStatementr   Nc                     || _         d S rb   r   r   s     r   rc   zEmptyStatement.__init__  r   r   c                     dS r   r   r+   s    r   r,   zEmptyStatement.children  r   r   c              #   
   K   d S rb   r   r+   s    r   rj   zEmptyStatement.__iter__  r   r   r   rb   rk   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@   r`   Nc                 0    || _         || _        || _        d S rb   )r(   r   r@   )r$   r(   r   r@   s       r   rc   zEnum.__init__  s    	


r   c                 j    g }| j         |                    d| j         f           t          |          S )Nr   )r   re   rf   rg   s     r   r,   zEnum.children  s3    ;"HOOXt{4K$L$L$LXr   c              #   .   K   | j         | j         V  d S d S rb   )r   r+   s    r   rj   zEnum.__iter__  s*      ;"+ #"r   r(   rb   rk   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 )
Enumerator)r(   r   r@   r`   Nc                 0    || _         || _        || _        d S rb   )r(   r   r@   )r$   r(   r   r@   s       r   rc   zEnumerator.__init__  r   r   c                 j    g }| j         |                    d| j         f           t          |          S )Nr   )r   re   rf   rg   s     r   r,   zEnumerator.children  s3    :!8??GTZ3H#I#I#IXr   c              #   .   K   | j         | j         V  d S d S rb   )r   r+   s    r   rj   zEnumerator.__iter__  s*      :!* "!r   r  rb   rk   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@   r`   Nc                 "    || _         || _        d S rb   )r  r@   )r$   r  r@   s      r   rc   zEnumeratorList.__init__'  r   r   c                     g }t          | j        pg           D ]\  }}|                    d|z  |f            t          |          S )Nzenumerators[%d])r   r  re   rf   r   s       r   r,   zEnumeratorList.children+  r   r   c              #   *   K   | j         pg D ]}|V  d S rb   )r  r   s     r   rj   zEnumeratorList.__iter__1  r   r   r   rb   rk   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@   r`   Nc                 "    || _         || _        d S rb   r  r@   r$   r  r@   s      r   rc   zExprList.__init__9  r   r   c                     g }t          | j        pg           D ]\  }}|                    d|z  |f            t          |          S Nz	exprs[%d]r   r  re   rf   r   s       r   r,   zExprList.children=  r   r   c              #   *   K   | j         pg D ]}|V  d S rb   r  r   s     r   rj   zExprList.__iter__C  r   r   r   rb   rk   r   r   r   r  r  7  r   r   r  c                   *    e Zd ZdZddZd Zd ZdZdS )FileAST)extr@   r`   Nc                 "    || _         || _        d S rb   )r  r@   )r$   r  r@   s      r   rc   zFileAST.__init__K  s    


r   c                     g }t          | j        pg           D ]\  }}|                    d|z  |f            t          |          S )Nzext[%d])r   r  re   rf   r   s       r   r,   zFileAST.childrenO  sR    !$(.b11 	4 	4HAuOOY]E23333Xr   c              #   *   K   | j         pg D ]}|V  d S rb   )r  r   s     r   rj   zFileAST.__iter__U  s0      hn" 	 	EKKKK	 	r   r   rb   rk   r   r   r   r  r  I  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@   r`   Nc                 L    || _         || _        || _        || _        || _        d S rb   )r   r   r$  r   r@   )r$   r   r   r$  r   r@   s         r   rc   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   re   r   r$  r   rf   rg   s     r   r,   zFor.childrend  s    9 (//6492E"F"F"F9 (//6492E"F"F"F9 (//6492E"F"F"F9 (//6492E"F"F"FXr   c              #      K   | j         	| j         V  | j        	| j        V  | j        	| j        V  | j        | j        V  d S d S rb   )r   r   r$  r   r+   s    r   rj   zFor.__iter__l  s^      9 )OOO9 )OOO9 )OOO9 )OOOOO ! r   r   rb   rk   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@   r`   Nc                 0    || _         || _        || _        d S rb   )r(   r*  r@   )r$   r(   r*  r@   s       r   rc   zFuncCall.__init__z  r   r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nr(   r*  )r(   re   r*  rf   rg   s     r   r,   zFuncCall.children  r   r   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rb   )r(   r*  r+   s    r   rj   zFuncCall.__iter__  r   r   r   rb   rk   r   r   r   r)  r)  x  r   r   r)  c                   *    e Zd ZdZddZd Zd ZdZdS )FuncDecl)r*  r]   r@   r`   Nc                 0    || _         || _        || _        d S rb   )r*  r]   r@   )r$   r*  r]   r@   s       r   rc   zFuncDecl.__init__  r   r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nr*  r]   )r*  re   r]   rf   rg   s     r   r,   zFuncDecl.children  r   r   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rb   )r*  r]   r+   s    r   rj   zFuncDecl.__iter__  r   r   r   rb   rk   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 )FuncDef)declparam_declsbodyr@   r`   Nc                 >    || _         || _        || _        || _        d S rb   )r5  r6  r7  r@   )r$   r5  r6  r7  r@   s        r   rc   zFuncDef.__init__  s#    	&	


r   c                    g }| j         |                    d| j         f           | j        |                    d| j        f           t          | j        pg           D ]\  }}|                    d|z  |f            t          |          S )Nr5  r7  zparam_decls[%d])r5  re   r7  r   r6  rf   r   s       r   r,   zFuncDef.children  s    9 (//6492E"F"F"F9 (//6492E"F"F"F!$"2"8b99 	< 	<HAuOO.2E:;;;;Xr   c              #   j   K   | j         	| j         V  | j        	| j        V  | j        pg D ]}|V  d S rb   )r5  r7  r6  r   s     r   rj   zFuncDef.__iter__  sX      9 )OOO9 )OOO&," 	 	EKKKK	 	r   r   rb   rk   r   r   r   r4  r4    sL        GI        JJJr   r4  c                   *    e Zd ZdZddZd Zd ZdZdS )Gotor(   r@   r`   Nc                 "    || _         || _        d S rb   r(   r@   r$   r(   r@   s      r   rc   zGoto.__init__      	


r   c                 $    g }t          |          S rb   r   rg   s     r   r,   zGoto.children  r   r   c              #   
   K   d S rb   r   r+   s    r   rj   zGoto.__iter__  r   r   r  rb   rk   r   r   r   r<  r<    L        0I        JJJr   r<  c                   *    e Zd ZdZddZd Zd ZdZdS )IDr=  Nc                 "    || _         || _        d S rb   r?  r@  s      r   rc   zID.__init__  rA  r   c                 $    g }t          |          S rb   r   rg   s     r   r,   zID.children  r   r   c              #   
   K   d S rb   r   r+   s    r   rj   zID.__iter__  r   r   r  rb   rk   r   r   r   rF  rF    rD  r   rF  c                   *    e Zd ZdZddZd Zd ZdZdS )IdentifierType)namesr@   r`   Nc                 "    || _         || _        d S rb   )rL  r@   )r$   rL  r@   s      r   rc   zIdentifierType.__init__  r   r   c                 $    g }t          |          S rb   r   rg   s     r   r,   zIdentifierType.children  r   r   c              #   
   K   d S rb   r   r+   s    r   rj   zIdentifierType.__iter__  r   r   )rL  rb   rk   r   r   r   rK  rK    sL        1I        JJJr   rK  c                   *    e Zd ZdZddZd Zd ZdZdS )Ifr   iftrueiffalser@   r`   Nc                 >    || _         || _        || _        || _        d S rb   r   rS  rT  r@   r$   r   rS  rT  r@   s        r   rc   zIf.__init__  "    	


r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           | j        |                    d| j        f           t	          |          S Nr   rS  rT  r   re   rS  rT  rf   rg   s     r   r,   zIf.children  s    9 (//6492E"F"F"F;"HOOXt{4K$L$L$L<#X__i5N%O%O%OXr   c              #   n   K   | j         	| j         V  | j        	| j        V  | j        | j        V  d S d S rb   r   rS  rT  r+   s    r   rj   zIf.__iter__  S      9 )OOO;"+<#, $#r   r   rb   rk   r   r   r   rQ  rQ    L        EI        JJJr   rQ  c                   *    e Zd ZdZddZd Zd ZdZdS )InitListr  Nc                 "    || _         || _        d S rb   r  r  s      r   rc   zInitList.__init__  r   r   c                     g }t          | j        pg           D ]\  }}|                    d|z  |f            t          |          S r  r  r   s       r   r,   zInitList.children  r   r   c              #   *   K   | j         pg D ]}|V  d S rb   r  r   s     r   rj   zInitList.__iter__  r   r   r   rb   rk   r   r   r   rb  rb    r   r   rb  c                   *    e Zd ZdZddZd Zd ZdZdS )Label)r(   r   r@   r`   Nc                 0    || _         || _        || _        d S rb   )r(   r   r@   )r$   r(   r   r@   s       r   rc   zLabel.__init__  r   r   c                 j    g }| j         |                    d| j         f           t          |          S )Nr   )r   re   rf   rg   s     r   r,   zLabel.children  3    9 (//6492E"F"F"FXr   c              #   .   K   | j         | j         V  d S d S rb   )r   r+   s    r   rj   zLabel.__iter__#  %      9 )OOOOO ! r   r  rb   rk   r   r   r   rg  rg    sL        8I   
  
   JJJr   rg  c                   *    e Zd ZdZddZd Zd ZdZdS )NamedInitializer)r(   r   r@   r`   Nc                 0    || _         || _        || _        d S rb   )r(   r   r@   )r$   r(   r   r@   s       r   rc   zNamedInitializer.__init__+  r   r   c                     g }| j         |                    d| j         f           t          | j        pg           D ]\  }}|                    d|z  |f            t	          |          S )Nr   zname[%d])r   re   r   r(   rf   r   s       r   r,   zNamedInitializer.children0  sr    9 (//6492E"F"F"F!$)/r22 	5 	5HAuOOZ!^U34444Xr   c              #   J   K   | j         	| j         V  | j        pg D ]}|V  d S rb   )r   r(   r   s     r   rj   zNamedInitializer.__iter__7  sC      9 )OOOio2 	 	EKKKK	 	r   r   rb   rk   r   r   r   rn  rn  )  sL        8I   
     JJJr   rn  c                   *    e Zd ZdZddZd Zd ZdZdS )	ParamList)paramsr@   r`   Nc                 "    || _         || _        d S rb   )rt  r@   )r$   rt  r@   s      r   rc   zParamList.__init__A      


r   c                     g }t          | j        pg           D ]\  }}|                    d|z  |f            t          |          S )Nz
params[%d])r   rt  re   rf   r   s       r   r,   zParamList.childrenE  sT    !$+"344 	7 	7HAuOO\A-u56666Xr   c              #   *   K   | j         pg D ]}|V  d S rb   )rt  r   s     r   rj   zParamList.__iter__K  s1      k'R 	 	EKKKK	 	r   r   rb   rk   r   r   r   rs  rs  ?  sL        2I        JJJr   rs  c                   *    e Zd ZdZddZd Zd ZdZdS )PtrDecl)r   r]   r@   r`   Nc                 0    || _         || _        || _        d S rb   )r   r]   r@   )r$   r   r]   r@   s       r   rc   zPtrDecl.__init__S  s    
	


r   c                 j    g }| j         |                    d| j         f           t          |          S Nr]   r]   re   rf   rg   s     r   r,   zPtrDecl.childrenX  rj  r   c              #   .   K   | j         | j         V  d S d S rb   r]   r+   s    r   rj   zPtrDecl.__iter__]  rl  r   )r   rb   rk   r   r   r   rz  rz  Q  sL        9I   
  
   JJJr   rz  c                   *    e Zd ZdZddZd Zd ZdZdS )Return)r   r@   r`   Nc                 "    || _         || _        d S rb   )r   r@   )r$   r   r@   s      r   rc   zReturn.__init__e  rA  r   c                 j    g }| j         |                    d| j         f           t          |          S Nr   r   re   rf   rg   s     r   r,   zReturn.childreni  rj  r   c              #   .   K   | j         | j         V  d S d S rb   r   r+   s    r   rj   zReturn.__iter__n  rl  r   r   rb   rk   r   r   r   r  r  c  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@   r`   Nc                 0    || _         || _        || _        d S rb   )r   r  r@   )r$   r   r  r@   s       r   rc   zStaticAssert.__init__v  s    	


r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nr   r  )r   re   r  rf   rg   s     r   r,   zStaticAssert.children{  sS    9 (//6492E"F"F"F<#X__i5N%O%O%OXr   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rb   )r   r  r+   s    r   rj   zStaticAssert.__iter__  s=      9 )OOO<#, $#r   r   rb   rk   r   r   r   r  r  t  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@   r`   Nc                 0    || _         || _        || _        d S rb   r(   r   r@   r$   r(   r   r@   s       r   rc   zStruct.__init__  r   r   c                     g }t          | j        pg           D ]\  }}|                    d|z  |f            t          |          S r   r   r   s       r   r,   zStruct.children  r   r   c              #   *   K   | j         pg D ]}|V  d S rb   r   r   s     r   rj   zStruct.__iter__  r   r   r  rb   rk   r   r   r   r  r    L        9I   
     JJJr   r  c                   *    e Zd ZdZddZd Zd ZdZdS )	StructRef)r(   r]   fieldr@   r`   Nc                 >    || _         || _        || _        || _        d S rb   )r(   r]   r  r@   )r$   r(   r]   r  r@   s        r   rc   zStructRef.__init__  s"    		



r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S )Nr(   r  )r(   re   r  rf   rg   s     r   r,   zStructRef.children  r   r   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rb   )r(   r  r+   s    r   rj   zStructRef.__iter__  r   r   r  rb   rk   r   r   r   r  r    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 rb   r   r   s       r   rc   zSwitch.__init__  r   r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S r   r   rg   s     r   r,   zSwitch.children  r   r   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rb   r   r+   s    r   rj   zSwitch.__iter__  r   r   r   rb   rk   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 )	TernaryOprR  Nc                 >    || _         || _        || _        || _        d S rb   rV  rW  s        r   rc   zTernaryOp.__init__  rX  r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           | j        |                    d| j        f           t	          |          S rZ  r[  rg   s     r   r,   zTernaryOp.children  r\  r   c              #   n   K   | j         	| j         V  | j        	| j        V  | j        | j        V  d S d S rb   r^  r+   s    r   rj   zTernaryOp.__iter__  r_  r   r   rb   rk   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 )TypeDecl)declnamer   r   r]   r@   r`   Nc                 L    || _         || _        || _        || _        || _        d S rb   )r  r   r   r]   r@   )r$   r  r   r   r]   r@   s         r   rc   zTypeDecl.__init__  s)     

	


r   c                 j    g }| j         |                    d| j         f           t          |          S r}  r~  rg   s     r   r,   zTypeDecl.children  rj  r   c              #   .   K   | j         | j         V  d S d S rb   r  r+   s    r   rj   zTypeDecl.__iter__  rl  r   )r  r   r   rb   rk   r   r   r   r  r    sL        NI     
   2JJJr   r  c                   *    e Zd ZdZddZd Zd ZdZdS )Typedef)r(   r   r   r]   r@   r`   Nc                 L    || _         || _        || _        || _        || _        d S rb   )r(   r   r   r]   r@   )r$   r(   r   r   r]   r@   s         r   rc   zTypedef.__init__  s)    	
	


r   c                 j    g }| j         |                    d| j         f           t          |          S r}  r~  rg   s     r   r,   zTypedef.children  rj  r   c              #   .   K   | j         | j         V  d S d S rb   r  r+   s    r   rj   zTypedef.__iter__  rl  r   )r(   r   r   rb   rk   r   r   r   r  r    sL        LI     
   0JJJr   r  c                   *    e Zd ZdZddZd Zd ZdZdS )Typename)r(   r   r   r]   r@   r`   Nc                 L    || _         || _        || _        || _        || _        d S rb   )r(   r   r   r]   r@   )r$   r(   r   r   r]   r@   s         r   rc   zTypename.__init__
  s)    	

	


r   c                 j    g }| j         |                    d| j         f           t          |          S r}  r~  rg   s     r   r,   zTypename.children  rj  r   c              #   .   K   | j         | j         V  d S d S rb   r  r+   s    r   rj   zTypename.__iter__  rl  r   )r(   r   r   rb   rk   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)rt   r   r@   r`   Nc                 0    || _         || _        || _        d S rb   )rt   r   r@   )r$   rt   r   r@   s       r   rc   zUnaryOp.__init__  s    	


r   c                 j    g }| j         |                    d| j         f           t          |          S r  r  rg   s     r   r,   zUnaryOp.children#  rj  r   c              #   .   K   | j         | j         V  d S d S rb   r  r+   s    r   rj   zUnaryOp.__iter__(  rl  r   rz   rb   rk   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 rb   r  r  s       r   rc   zUnion.__init__0  r   r   c                     g }t          | j        pg           D ]\  }}|                    d|z  |f            t          |          S r   r   r   s       r   r,   zUnion.children5  r   r   c              #   *   K   | j         pg D ]}|V  d S rb   r   r   s     r   rj   zUnion.__iter__;  r   r   r  rb   rk   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 rb   r   r   s       r   rc   zWhile.__init__C  r   r   c                     g }| j         |                    d| j         f           | j        |                    d| j        f           t          |          S r   r   rg   s     r   r,   zWhile.childrenH  r   r   c              #   N   K   | j         	| j         V  | j        | j        V  d S d S rb   r   r+   s    r   rj   zWhile.__iter__N  r   r   r   rb   rk   r   r   r   r  r  A  r   r   r  c                   *    e Zd ZdZddZd Zd ZdZdS )Pragma)stringr@   r`   Nc                 "    || _         || _        d S rb   )r  r@   )r$   r  r@   s      r   rc   zPragma.__init__X  rv  r   c                 $    g }t          |          S rb   r   rg   s     r   r,   zPragma.children\  r   r   c              #   
   K   d S rb   r   r+   s    r   rj   zPragma.__iter__`  r   r   )r  rb   rk   r   r   r   r  r  V  sL        2I        JJJr   r  )6rK   r   objectr   rN   r\   rm   rs   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r#  r)  r/  r4  r<  rF  rK  rQ  rb  rg  rn  rs  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     s  & 


  L* L* L* L* L*6 L* L* L*^8 8 8 8 8& 8 8 8t! ! ! ! ! ! ! !,    t   *       ,    d   "    t   ,    D       4   ,    4   *    t   $    d   *% % % % %t % % %"    t   E E E E E4 E E E<    t   $    d   $    d   *    D       T       4   $       $    T   $    t   $    d   $    $   :    t   *    t   *    d   4    4                T           2    t   $    D   $    t   ,       $    d   $    T   "    4   *    T   &       ,    T   *       22 2 2 2 2t 2 2 2(0 0 0 0 0d 0 0 0(. . . . .t . . .(    d   $    D   &    D   *    T     r   