
    xi                        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      Z9y)j    N)AnyClassVarIOOptionalc                 t    t        | t              rddj                  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   R   K   | ]  }t        |      j                  d d       ! yw)

 N)_reprreplace).0es     [/var/www/html/chatbot/card-advisor-bot/venv/lib/python3.12/site-packages/pycparser/c_ast.py	<genexpr>z_repr.<locals>.<genexpr>   s!     "NQ58#3#3D%#@"Ns   %'z
])
isinstancelistjoinrepr)objs    r   r   r      s8     #tfkk"N#"NOPSXXXCy    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y
)Node .
attr_namescoordc                    | j                   j                  dz   }d}d}| j                  dd D ]  }||z  }||z  }||dz   t        t	        | |            j                  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.	NN3B' 	BDiFfF '$-.66#TS9P9P5Q)Q"RS	F IcC(?(?$@@AF	B" 	&3,r   c                      y)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  }|r4|2|j                  || j                  j                  z   dz   |z   dz          n+|j                  || j                  j                  z   dz          | j                  rd }	| j                  D 
cg c]$  }
|s |	t	        | |
            s|
t	        | |
      f& }}
|rdj                  d |D              }ndj                  d	 |D              }|j                  |       |r|j                  d
| j                   d       |j                  d       | j                         D ]   \  }}|j                  ||dz   |||||       " yc c}
w )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                 P    | d u xs  t        | d      xr t        |       dk(   y  y  y )N__len__r   )hasattrr)   )vs    r   is_emptyzNode.show.<locals>.is_emptyp   s(    T	Dga3CA!CDr   z, c              3   0   K   | ]  \  }}| d |   yw)r!   Nr   )r   r.   values      r   r   zNode.show.<locals>.<genexpr>y   s     #P+$tfAeW$5#Ps   c              3   (   K   | ]
  \  }}|   y wNr   )r   _rA   s      r   r   zNode.show.<locals>.<genexpr>{   s     #F81eugJ#Fs   z (at r$   r
      )r4   r5   r6   r7   r8   r9   )	writer%   r&   r   r(   r   r   r2   show)r*   r3   r4   r5   r6   r7   r8   r9   leadr?   nnvlistattrstr
child_namechilds                  r   rG   z	Node.showF   sV   D V|2IIdT^^444t;mKeSTIIdT^^444t;<??E
 !'$2B)C GD!$%F 
 ))#P#PP))#Fv#FFIIgIIdjj\+,		$!% 		JJJz#-##(  		s   )E)r&   
__module____qualname__r'   r   r   tuplestr__annotations__r   r   r/   r2   sysstdoutr   intboolrG   r   r   r   r   r       s    I,.JsCx).C=6 zz#'+EW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y)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                 B   | j                   i | _         | j                   j                  |j                  j                  d      }|Sd|j                  j                  z   }t	        | || j
                        }|| j                   |j                  j                  <    ||      S )zVisit a node.Nvisit_)_method_cachegetr%   r&   r(   generic_visit)r*   rY   visitormethods       r   visitzNodeVisitor.visit   s     %!#D$$(()@)@$G? 7 77FdFD,>,>?G:ADt~~667t}r   c                 V    |j                         D ]  \  }}| j                  |        y)ztCalled if no explicit visitor function exists for a
        node. Implements preorder visiting of the node.
        N)r2   ra   )r*   rY   rD   cs       r   r^   zNodeVisitor.generic_visit   s(     MMO 	DAqJJqM	r   )r&   rN   rO   __doc__r\   r   ra   r^   r   r   r   rX   rX      s'    B M$ $ r   rX   c                   (    e Zd ZdZddZd Zd ZdZy)	ArrayDecl)typedim	dim_qualsr   __weakref__Nc                 <    || _         || _        || _        || _        y rC   )rg   rh   ri   r   )r*   rg   rh   ri   r   s        r   __init__zArrayDecl.__init__   s    	"
r   c                     g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       t        |      S )Nrg   rh   )rg   appendrh   rP   r*   nodelists     r   r2   zArrayDecl.children   sO    99 OOVTYY/088OOUDHH-.Xr   c              #   v   K   | j                   | j                    | j                  | j                   y y wrC   )rg   rh   r1   s    r   __iter__zArrayDecl.__iter__   s1     99 ))O88((N     79)ri   rC   r&   rN   rO   r'   rl   r2   rr   r   r   r   r   rf   rf      s    DI  Jr   rf   c                   (    e Zd ZdZddZd Zd ZdZy)ArrayRef)r.   	subscriptr   rj   Nc                 .    || _         || _        || _        y rC   )r.   rw   r   )r*   r.   rw   r   s       r   rl   zArrayRef.__init__   s    	"
r   c                     g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       t        |      S )Nr.   rw   )r.   rn   rw   rP   ro   s     r   r2   zArrayRef.children   sO    99 OOVTYY/0>>%OO[$..9:Xr   c              #   v   K   | j                   | j                    | j                  | j                   y y wrC   )r.   rw   r1   s    r   rr   zArrayRef.__iter__   s2     99 ))O>>%..  &rs   r   rC   rt   r   r   r   rv   rv      s    =I
! Jr   rv   c                   (    e Zd ZdZddZd Zd ZdZy)
Assignment)oplvaluervaluer   rj   Nc                 <    || _         || _        || _        || _        y rC   )r}   r~   r   r   )r*   r}   r~   r   r   s        r   rl   zAssignment.__init__   s    
r   c                     g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       t        |      S )Nr~   r   )r~   rn   r   rP   ro   s     r   r2   zAssignment.children  sO    ;;"OOXt{{34;;"OOXt{{34Xr   c              #   v   K   | j                   | j                    | j                  | j                   y y wrC   )r~   r   r1   s    r   rr   zAssignment.__iter__  s3     ;;"++;;"++ #rs   r}   rC   rt   r   r   r   r|   r|      s    BI Jr   r|   c                   (    e Zd ZdZddZd Zd ZdZy)Alignas)	alignmentr   rj   Nc                      || _         || _        y rC   )r   r   )r*   r   r   s      r   rl   zAlignas.__init__  s    "
r   c                 n    g }| j                   |j                  d| j                   f       t        |      S )Nr   )r   rn   rP   ro   s     r   r2   zAlignas.children  s0    >>%OO[$..9:Xr   c              #   B   K   | j                   | j                    y y wrC   )r   r1   s    r   rr   zAlignas.__iter__"  s     >>%..  &   r   rC   rt   r   r   r   r   r     s    5I! Jr   r   c                   (    e Zd ZdZddZd Zd ZdZy)BinaryOp)r}   leftrightr   rj   Nc                 <    || _         || _        || _        || _        y rC   )r}   r   r   r   )r*   r}   r   r   r   s        r   rl   zBinaryOp.__init__,  s    	

r   c                     g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       t        |      S )Nr   r   )r   rn   r   rP   ro   s     r   r2   zBinaryOp.children2  O    99 OOVTYY/0::!OOWdjj12Xr   c              #   v   K   | j                   | j                    | j                  | j                   y y wrC   )r   r   r1   s    r   rr   zBinaryOp.__iter__:  2     99 ))O::!** "rs   r   rC   rt   r   r   r   r   r   )  s    ?I Jr   r   c                   (    e Zd ZdZddZd Zd ZdZy)Breakr   rj   Nc                     || _         y rC   r   r*   r   s     r   rl   zBreak.__init__F  	    
r   c                      yNr   r   r1   s    r   r2   zBreak.childrenI      r   c              #      K   y wrC   r   r1   s    r   rr   zBreak.__iter__L  	        r   rC   rt   r   r   r   r   r   C      (I Jr   r   c                   (    e Zd ZdZddZd Zd ZdZy)Case)exprstmtsr   rj   Nc                 .    || _         || _        || _        y rC   )r   r   r   )r*   r   r   r   s       r   rl   zCase.__init__V      	

r   c                     g }| j                   |j                  d| j                   f       t        | j                  xs g       D ]  \  }}|j                  d| d|f        t	        |      S )Nr   stmts[])r   rn   	enumerater   rP   r*   rp   irM   s       r   r2   zCase.children[  sj    99 OOVTYY/0!$**"23 	4HAuOOvaS]E23	4Xr   c              #   r   K   | j                   | j                    | j                  xs g D ]  }|  y wrC   )r   r   r*   rM   s     r   rr   zCase.__iter__c  s6     99 ))OZZ%2 	EK	   57r   rC   rt   r   r   r   r   r   S  s    9I
 Jr   r   c                   (    e Zd ZdZddZd Zd ZdZy)Cast)to_typer   r   rj   Nc                 .    || _         || _        || _        y rC   )r   r   r   )r*   r   r   r   s       r   rl   zCast.__init__o  s    	
r   c                     g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       t        |      S )Nr   r   )r   rn   r   rP   ro   s     r   r2   zCast.childrent  sO    <<#OOY5699 OOVTYY/0Xr   c              #   v   K   | j                   | j                    | j                  | j                   y y wrC   )r   r   r1   s    r   rr   zCast.__iter__|  s2     <<#,,99 ))O !rs   r   rC   rt   r   r   r   r   r   l  s    ;I
 Jr   r   c                   (    e Zd ZdZddZd Zd ZdZy)Compound)block_itemsr   rj   Nc                      || _         || _        y rC   )r   r   )r*   r   r   s      r   rl   zCompound.__init__      &
r   c                     g }t        | j                  xs g       D ]  \  }}|j                  d| d|f        t        |      S )Nzblock_items[r   )r   r   rn   rP   r   s       r   r2   zCompound.children  N    !$"2"2"8b9 	:HAuOO|A3a0%89	:Xr   c              #   >   K   | j                   xs g D ]  }|  y wrC   )r   r   s     r   rr   zCompound.__iter__  %     %%+ 	EK	   r   rC   rt   r   r   r   r   r         7I Jr   r   c                   (    e Zd ZdZddZd Zd ZdZy)CompoundLiteral)rg   initr   rj   Nc                 .    || _         || _        || _        y rC   )rg   r   r   )r*   rg   r   r   s       r   rl   zCompoundLiteral.__init__      		
r   c                     g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       t        |      S )Nrg   r   )rg   rn   r   rP   ro   s     r   r2   zCompoundLiteral.children  O    99 OOVTYY/099 OOVTYY/0Xr   c              #   v   K   | j                   | j                    | j                  | j                   y y wrC   )rg   r   r1   s    r   rr   zCompoundLiteral.__iter__  1     99 ))O99 ))O !rs   r   rC   rt   r   r   r   r   r         8I
 Jr   r   c                   (    e Zd ZdZddZd Zd ZdZy)Constant)rg   rA   r   rj   Nc                 .    || _         || _        || _        y rC   )rg   rA   r   )r*   rg   rA   r   s       r   rl   zConstant.__init__  r   r   c                     g }t        |      S rC   rP   ro   s     r   r2   zConstant.children      Xr   c              #      K   y wrC   r   r1   s    r   rr   zConstant.__iter__  r   r   )rg   rA   rC   rt   r   r   r   r   r     s    9I
Jr   r   c                   (    e Zd ZdZddZd Zd ZdZy)Continuer   Nc                     || _         y rC   r   r   s     r   rl   zContinue.__init__  r   r   c                      yr   r   r1   s    r   r2   zContinue.children  r   r   c              #      K   y wrC   r   r1   s    r   rr   zContinue.__iter__  r   r   r   rC   rt   r   r   r   r   r     r   r   r   c                   *    e Zd ZdZ	 ddZd Zd ZdZy)Decl)
r.   qualsalignstoragefuncspecrg   r   bitsizer   rj   Nc
                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        y rC   )	r.   r   r   r   r   rg   r   r   r   )
r*   r.   r   r   r   r   rg   r   r   r   s
             r   rl   zDecl.__init__  sC     	

 		
r   c                    g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       | j                  |j                  d| j                  f       t	        |      S )Nrg   r   r   )rg   rn   r   r   rP   ro   s     r   r2   zDecl.children  sn    99 OOVTYY/099 OOVTYY/0<<#OOY56Xr   c              #      K   | j                   | j                    | j                  | j                   | j                  | j                   y y wrC   )rg   r   r   r1   s    r   rr   zDecl.__iter__  sE     99 ))O99 ))O<<#,, $   AA)r.   r   r   r   r   rC   rt   r   r   r   r   r     s&    I QUJr   r   c                   (    e Zd ZdZddZd Zd ZdZy)DeclList)declsr   rj   Nc                      || _         || _        y rC   )r   r   )r*   r   r   s      r   rl   zDeclList.__init__      

r   c                     g }t        | j                  xs g       D ]  \  }}|j                  d| d|f        t        |      S Nzdecls[r   r   r   rn   rP   r   s       r   r2   zDeclList.children  K    !$**"23 	4HAuOOvaS]E23	4Xr   c              #   >   K   | j                   xs g D ]  }|  y wrC   r   r   s     r   rr   zDeclList.__iter__  #     ZZ%2 	EK	r   r   rC   rt   r   r   r   r   r         1I Jr   r   c                   (    e Zd ZdZddZd Zd ZdZy)Default)r   r   rj   Nc                      || _         || _        y rC   )r   r   )r*   r   r   s      r   rl   zDefault.__init__%  r   r   c                     g }t        | j                  xs g       D ]  \  }}|j                  d| d|f        t        |      S )Nr   r   )r   r   rn   rP   r   s       r   r2   zDefault.children)  r   r   c              #   >   K   | j                   xs g D ]  }|  y wrC   )r   r   s     r   rr   zDefault.__iter__/  r   r   r   rC   rt   r   r   r   r   r   "  r   r   r   c                   (    e Zd ZdZddZd Zd ZdZy)DoWhilecondstmtr   rj   Nc                 .    || _         || _        || _        y rC   r   r   r   r*   r   r   r   s       r   rl   zDoWhile.__init__9  r   r   c                     g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       t        |      S Nr   r   r   rn   r   rP   ro   s     r   r2   zDoWhile.children>  r   r   c              #   v   K   | j                   | j                    | j                  | j                   y y wrC   r   r   r1   s    r   rr   zDoWhile.__iter__F  r   rs   r   rC   rt   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y)EllipsisParamr   Nc                     || _         y rC   r   r   s     r   rl   zEllipsisParam.__init__R  r   r   c                      yr   r   r1   s    r   r2   zEllipsisParam.childrenU  r   r   c              #      K   y wrC   r   r1   s    r   rr   zEllipsisParam.__iter__X  r   r   r   rC   rt   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y)EmptyStatementr   Nc                     || _         y rC   r   r   s     r   rl   zEmptyStatement.__init__b  r   r   c                      yr   r   r1   s    r   r2   zEmptyStatement.childrene  r   r   c              #      K   y wrC   r   r1   s    r   rr   zEmptyStatement.__iter__h  r   r   r   rC   rt   r   r   r   r  r  _  r   r   r  c                   (    e Zd ZdZddZd Zd ZdZy)Enum)r.   valuesr   rj   Nc                 .    || _         || _        || _        y rC   )r.   r  r   )r*   r.   r  r   s       r   rl   zEnum.__init__r  s    	
r   c                 n    g }| j                   |j                  d| j                   f       t        |      S )Nr  )r  rn   rP   ro   s     r   r2   zEnum.childrenw  s0    ;;"OOXt{{34Xr   c              #   B   K   | j                   | j                    y y wrC   )r  r1   s    r   rr   zEnum.__iter__}  s     ;;"++ #r   r.   rC   rt   r   r   r   r  r  o  s    :I
 Jr   r  c                   (    e Zd ZdZddZd Zd ZdZy)
Enumerator)r.   rA   r   rj   Nc                 .    || _         || _        || _        y rC   )r.   rA   r   )r*   r.   rA   r   s       r   rl   zEnumerator.__init__  r   r   c                 n    g }| j                   |j                  d| j                   f       t        |      S )NrA   )rA   rn   rP   ro   s     r   r2   zEnumerator.children  s0    ::!OOWdjj12Xr   c              #   B   K   | j                   | j                    y y wrC   )rA   r1   s    r   rr   zEnumerator.__iter__  s     ::!** "r   r  rC   rt   r   r   r   r  r    s    9I
 Jr   r  c                   (    e Zd ZdZddZd Zd ZdZy)EnumeratorList)enumeratorsr   rj   Nc                      || _         || _        y rC   )r  r   )r*   r  r   s      r   rl   zEnumeratorList.__init__  r   r   c                     g }t        | j                  xs g       D ]  \  }}|j                  d| d|f        t        |      S )Nzenumerators[r   )r   r  rn   rP   r   s       r   r2   zEnumeratorList.children  r   r   c              #   >   K   | j                   xs g D ]  }|  y wrC   )r  r   s     r   rr   zEnumeratorList.__iter__  r   r   r   rC   rt   r   r   r   r  r    r   r   r  c                   (    e Zd ZdZddZd Zd ZdZy)ExprListexprsr   rj   Nc                      || _         || _        y rC   r!  r   r*   r!  r   s      r   rl   zExprList.__init__  r   r   c                     g }t        | j                  xs g       D ]  \  }}|j                  d| d|f        t        |      S Nzexprs[r   r   r!  rn   rP   r   s       r   r2   zExprList.children  r   r   c              #   >   K   | j                   xs g D ]  }|  y wrC   r!  r   s     r   rr   zExprList.__iter__  r   r   r   rC   rt   r   r   r   r  r    r   r   r  c                   (    e Zd ZdZddZd Zd ZdZy)FileAST)extr   rj   Nc                      || _         || _        y rC   )r,  r   )r*   r,  r   s      r   rl   zFileAST.__init__  s    
r   c                     g }t        | j                  xs g       D ]  \  }}|j                  d| d|f        t        |      S )Nzext[r   )r   r,  rn   rP   r   s       r   r2   zFileAST.children  sJ    !$((.b1 	2HAuOOtA3a[%01	2Xr   c              #   >   K   | j                   xs g D ]  }|  y wrC   )r,  r   s     r   rr   zFileAST.__iter__  s"     XX^ 	EK	r   r   rC   rt   r   r   r   r+  r+    s    /I Jr   r+  c                   (    e Zd ZdZddZd Zd ZdZy)For)r   r   nextr   r   rj   Nc                 J    || _         || _        || _        || _        || _        y rC   )r   r   r2  r   r   )r*   r   r   r2  r   r   s         r   rl   zFor.__init__  s%    				
r   c                 d   g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       | j                  |j                  d| j                  f       | j                  |j                  d| j                  f       t        |      S )Nr   r   r2  r   )r   rn   r   r2  r   rP   ro   s     r   r2   zFor.children  s    99 OOVTYY/099 OOVTYY/099 OOVTYY/099 OOVTYY/0Xr   c              #      K   | j                   | j                    | j                  | j                   | j                  | j                   | j                  | j                   y y wrC   )r   r   r2  r   r1   s    r   rr   zFor.__iter__  sW     99 ))O99 ))O99 ))O99 ))O !s   A+A-r   rC   rt   r   r   r   r1  r1    s    HI
 Jr   r1  c                   (    e Zd ZdZddZd Zd ZdZy)FuncCall)r.   argsr   rj   Nc                 .    || _         || _        || _        y rC   )r.   r8  r   )r*   r.   r8  r   s       r   rl   zFuncCall.__init__  r   r   c                     g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       t        |      S )Nr.   r8  )r.   rn   r8  rP   ro   s     r   r2   zFuncCall.children   r   r   c              #   v   K   | j                   | j                    | j                  | j                   y y wrC   )r.   r8  r1   s    r   rr   zFuncCall.__iter__  r   rs   r   rC   rt   r   r   r   r7  r7    r   r   r7  c                   (    e Zd ZdZddZd Zd ZdZy)FuncDecl)r8  rg   r   rj   Nc                 .    || _         || _        || _        y rC   )r8  rg   r   )r*   r8  rg   r   s       r   rl   zFuncDecl.__init__  r   r   c                     g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       t        |      S )Nr8  rg   )r8  rn   rg   rP   ro   s     r   r2   zFuncDecl.children  r   r   c              #   v   K   | j                   | j                    | j                  | j                   y y wrC   )r8  rg   r1   s    r   rr   zFuncDecl.__iter__!  r   rs   r   rC   rt   r   r   r   r=  r=    r   r   r=  c                   (    e Zd ZdZddZd Zd ZdZy)FuncDef)declparam_declsbodyr   rj   Nc                 <    || _         || _        || _        || _        y rC   )rC  rD  rE  r   )r*   rC  rD  rE  r   s        r   rl   zFuncDef.__init__-  s    	&	
r   c                 0   g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       t        | j                  xs g       D ]  \  }}|j                  d| d|f        t        |      S )NrC  rE  zparam_decls[r   )rC  rn   rE  r   rD  rP   r   s       r   r2   zFuncDef.children3  s    99 OOVTYY/099 OOVTYY/0!$"2"2"8b9 	:HAuOO|A3a0%89	:Xr   c              #      K   | j                   | j                    | j                  | j                   | j                  xs g D ]  }|  y wrC   )rC  rE  rD  r   s     r   rr   zFuncDef.__iter__=  sK     99 ))O99 ))O%%+ 	EK	s   AAr   rC   rt   r   r   r   rB  rB  *  s    GI Jr   rB  c                   (    e Zd ZdZddZd Zd ZdZy)Gotor.   r   rj   Nc                      || _         || _        y rC   r.   r   r*   r.   r   s      r   rl   zGoto.__init__K      	
r   c                     g }t        |      S rC   r   ro   s     r   r2   zGoto.childrenO  r   r   c              #      K   y wrC   r   r1   s    r   rr   zGoto.__iter__S  r   r   r  rC   rt   r   r   r   rJ  rJ  H      0I Jr   rJ  c                   (    e Zd ZdZddZd Zd ZdZy)IDrK  Nc                      || _         || _        y rC   rM  rN  s      r   rl   zID.__init__]  rO  r   c                     g }t        |      S rC   r   ro   s     r   r2   zID.childrena  r   r   c              #      K   y wrC   r   r1   s    r   rr   zID.__iter__e  r   r   r  rC   rt   r   r   r   rT  rT  Z  rR  r   rT  c                   (    e Zd ZdZddZd Zd ZdZy)IdentifierType)namesr   rj   Nc                      || _         || _        y rC   )rZ  r   )r*   rZ  r   s      r   rl   zIdentifierType.__init__o  r   r   c                     g }t        |      S rC   r   ro   s     r   r2   zIdentifierType.childrens  r   r   c              #      K   y wrC   r   r1   s    r   rr   zIdentifierType.__iter__w  r   r   )rZ  rC   rt   r   r   r   rY  rY  l  s    1I Jr   rY  c                   (    e Zd ZdZddZd Zd ZdZy)Ifr   iftrueiffalser   rj   Nc                 <    || _         || _        || _        || _        y rC   r   ra  rb  r   r*   r   ra  rb  r   s        r   rl   zIf.__init__      	
r   c                    g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       | j                  |j                  d| j                  f       t	        |      S Nr   ra  rb  r   rn   ra  rb  rP   ro   s     r   r2   zIf.children  n    99 OOVTYY/0;;"OOXt{{34<<#OOY56Xr   c              #      K   | j                   | j                    | j                  | j                   | j                  | j                   y y wrC   r   ra  rb  r1   s    r   rr   zIf.__iter__  F     99 ))O;;"++<<#,, $r   r   rC   rt   r   r   r   r_  r_  ~      EI Jr   r_  c                   (    e Zd ZdZddZd Zd ZdZy)InitListr   Nc                      || _         || _        y rC   r#  r$  s      r   rl   zInitList.__init__  r   r   c                     g }t        | j                  xs g       D ]  \  }}|j                  d| d|f        t        |      S r&  r'  r   s       r   r2   zInitList.children  r   r   c              #   >   K   | j                   xs g D ]  }|  y wrC   r)  r   s     r   rr   zInitList.__iter__  r   r   r   rC   rt   r   r   r   rp  rp    r   r   rp  c                   (    e Zd ZdZddZd Zd ZdZy)Label)r.   r   r   rj   Nc                 .    || _         || _        || _        y rC   )r.   r   r   )r*   r.   r   r   s       r   rl   zLabel.__init__  r   r   c                 n    g }| j                   |j                  d| j                   f       t        |      S )Nr   )r   rn   rP   ro   s     r   r2   zLabel.children  0    99 OOVTYY/0Xr   c              #   B   K   | j                   | j                    y y wrC   )r   r1   s    r   rr   zLabel.__iter__       99 ))O !r   r  rC   rt   r   r   r   ru  ru    s    8I
 Jr   ru  c                   (    e Zd ZdZddZd Zd ZdZy)NamedInitializer)r.   r   r   rj   Nc                 .    || _         || _        || _        y rC   )r.   r   r   )r*   r.   r   r   s       r   rl   zNamedInitializer.__init__  r   r   c                     g }| j                   |j                  d| j                   f       t        | j                  xs g       D ]  \  }}|j                  d| d|f        t	        |      S )Nr   zname[r   )r   rn   r   r.   rP   r   s       r   r2   zNamedInitializer.children  si    99 OOVTYY/0!$))/r2 	3HAuOOuQCq\512	3Xr   c              #   r   K   | j                   | j                    | j                  xs g D ]  }|  y wrC   )r   r.   r   s     r   rr   zNamedInitializer.__iter__  s5     99 ))OYY_" 	EK	r   r   rC   rt   r   r   r   r|  r|    s    8I
 Jr   r|  c                   (    e Zd ZdZddZd Zd ZdZy)	ParamList)paramsr   rj   Nc                      || _         || _        y rC   )r  r   )r*   r  r   s      r   rl   zParamList.__init__      
r   c                     g }t        | j                  xs g       D ]  \  }}|j                  d| d|f        t        |      S )Nzparams[r   )r   r  rn   rP   r   s       r   r2   zParamList.children  sK    !$++"34 	5HAuOOwqc^U34	5Xr   c              #   >   K   | j                   xs g D ]  }|  y wrC   )r  r   s     r   rr   zParamList.__iter__  s#     [[&B 	EK	r   r   rC   rt   r   r   r   r  r    s    2I Jr   r  c                   (    e Zd ZdZddZd Zd ZdZy)PtrDecl)r   rg   r   rj   Nc                 .    || _         || _        || _        y rC   )r   rg   r   )r*   r   rg   r   s       r   rl   zPtrDecl.__init__  s    
	
r   c                 n    g }| j                   |j                  d| j                   f       t        |      S Nrg   rg   rn   rP   ro   s     r   r2   zPtrDecl.children  rx  r   c              #   B   K   | j                   | j                    y y wrC   rg   r1   s    r   rr   zPtrDecl.__iter__   rz  r   )r   rC   rt   r   r   r   r  r    s    9I
 Jr   r  c                   (    e Zd ZdZddZd Zd ZdZy)Return)r   r   rj   Nc                      || _         || _        y rC   )r   r   )r*   r   r   s      r   rl   zReturn.__init__
  rO  r   c                 n    g }| j                   |j                  d| j                   f       t        |      S Nr   r   rn   rP   ro   s     r   r2   zReturn.children  rx  r   c              #   B   K   | j                   | j                    y y wrC   r   r1   s    r   rr   zReturn.__iter__  rz  r   r   rC   rt   r   r   r   r  r    s    0I Jr   r  c                   (    e Zd ZdZddZd Zd ZdZy)StaticAssert)r   messager   rj   Nc                 .    || _         || _        || _        y rC   )r   r  r   )r*   r   r  r   s       r   rl   zStaticAssert.__init__  s    	
r   c                     g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       t        |      S )Nr   r  )r   rn   r  rP   ro   s     r   r2   zStaticAssert.children#  sO    99 OOVTYY/0<<#OOY56Xr   c              #   v   K   | j                   | j                    | j                  | j                   y y wrC   )r   r  r1   s    r   rr   zStaticAssert.__iter__+  s2     99 ))O<<#,, $rs   r   rC   rt   r   r   r   r  r    s    ;I
 Jr   r  c                   (    e Zd ZdZddZd Zd ZdZy)Structr.   r   r   rj   Nc                 .    || _         || _        || _        y rC   r.   r   r   r*   r.   r   r   s       r   rl   zStruct.__init__7  r   r   c                     g }t        | j                  xs g       D ]  \  }}|j                  d| d|f        t        |      S r   r   r   s       r   r2   zStruct.children<  r   r   c              #   >   K   | j                   xs g D ]  }|  y wrC   r   r   s     r   rr   zStruct.__iter__B  r   r   r  rC   rt   r   r   r   r  r  4      9I
 Jr   r  c                   (    e Zd ZdZddZd Zd ZdZy)	StructRef)r.   rg   fieldr   rj   Nc                 <    || _         || _        || _        || _        y rC   )r.   rg   r  r   )r*   r.   rg   r  r   s        r   rl   zStructRef.__init__L  s    		

r   c                     g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       t        |      S )Nr.   r  )r.   rn   r  rP   ro   s     r   r2   zStructRef.childrenR  r   r   c              #   v   K   | j                   | j                    | j                  | j                   y y wrC   )r.   r  r1   s    r   rr   zStructRef.__iter__Z  r   rs   r  rC   rt   r   r   r   r  r  I  s    AI Jr   r  c                   (    e Zd ZdZddZd Zd ZdZy)Switchr   Nc                 .    || _         || _        || _        y rC   r   r   s       r   rl   zSwitch.__init__f  r   r   c                     g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       t        |      S r   r   ro   s     r   r2   zSwitch.childrenk  r   r   c              #   v   K   | j                   | j                    | j                  | j                   y y wrC   r  r1   s    r   rr   zSwitch.__iter__s  r   rs   r   rC   rt   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y)	TernaryOpr`  Nc                 <    || _         || _        || _        || _        y rC   rd  re  s        r   rl   zTernaryOp.__init__  rf  r   c                    g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       | j                  |j                  d| j                  f       t	        |      S rh  ri  ro   s     r   r2   zTernaryOp.children  rj  r   c              #      K   | j                   | j                    | j                  | j                   | j                  | j                   y y wrC   rl  r1   s    r   rr   zTernaryOp.__iter__  rm  r   r   rC   rt   r   r   r   r  r  |  rn  r   r  c                   (    e Zd ZdZddZd Zd ZdZy)TypeDecl)declnamer   r   rg   r   rj   Nc                 J    || _         || _        || _        || _        || _        y rC   )r  r   r   rg   r   )r*   r  r   r   rg   r   s         r   rl   zTypeDecl.__init__  s%     

	
r   c                 n    g }| j                   |j                  d| j                   f       t        |      S r  r  ro   s     r   r2   zTypeDecl.children  rx  r   c              #   B   K   | j                   | j                    y y wrC   r  r1   s    r   rr   zTypeDecl.__iter__  rz  r   )r  r   r   rC   rt   r   r   r   r  r    s    NIJr   r  c                   (    e Zd ZdZddZd Zd ZdZy)Typedef)r.   r   r   rg   r   rj   Nc                 J    || _         || _        || _        || _        || _        y rC   )r.   r   r   rg   r   )r*   r.   r   r   rg   r   s         r   rl   zTypedef.__init__  s%    	
	
r   c                 n    g }| j                   |j                  d| j                   f       t        |      S r  r  ro   s     r   r2   zTypedef.children  rx  r   c              #   B   K   | j                   | j                    y y wrC   r  r1   s    r   rr   zTypedef.__iter__  rz  r   )r.   r   r   rC   rt   r   r   r   r  r    s    LIJr   r  c                   (    e Zd ZdZddZd Zd ZdZy)Typename)r.   r   r   rg   r   rj   Nc                 J    || _         || _        || _        || _        || _        y rC   )r.   r   r   rg   r   )r*   r.   r   r   rg   r   s         r   rl   zTypename.__init__  s%    	

	
r   c                 n    g }| j                   |j                  d| j                   f       t        |      S r  r  ro   s     r   r2   zTypename.children  rx  r   c              #   B   K   | j                   | j                    y y wrC   r  r1   s    r   rr   zTypename.__iter__  rz  r   )r.   r   r   rC   rt   r   r   r   r  r    s    JIJr   r  c                   (    e Zd ZdZddZd Zd ZdZy)UnaryOp)r}   r   r   rj   Nc                 .    || _         || _        || _        y rC   )r}   r   r   )r*   r}   r   r   s       r   rl   zUnaryOp.__init__  s    	
r   c                 n    g }| j                   |j                  d| j                   f       t        |      S r  r  ro   s     r   r2   zUnaryOp.children  rx  r   c              #   B   K   | j                   | j                    y y wrC   r  r1   s    r   rr   zUnaryOp.__iter__  rz  r   r   rC   rt   r   r   r   r  r    s    6I
 Jr   r  c                   (    e Zd ZdZddZd Zd ZdZy)Unionr  Nc                 .    || _         || _        || _        y rC   r  r  s       r   rl   zUnion.__init__  r   r   c                     g }t        | j                  xs g       D ]  \  }}|j                  d| d|f        t        |      S r   r   r   s       r   r2   zUnion.children  r   r   c              #   >   K   | j                   xs g D ]  }|  y wrC   r   r   s     r   rr   zUnion.__iter__  r   r   r  rC   rt   r   r   r   r  r     r  r   r  c                   (    e Zd ZdZddZd Zd ZdZy)Whiler   Nc                 .    || _         || _        || _        y rC   r   r   s       r   rl   zWhile.__init__  r   r   c                     g }| j                   |j                  d| j                   f       | j                  |j                  d| j                  f       t        |      S r   r   ro   s     r   r2   zWhile.children  r   r   c              #   v   K   | j                   | j                    | j                  | j                   y y wrC   r  r1   s    r   rr   zWhile.__iter__%  r   rs   r   rC   rt   r   r   r   r  r    r   r   r  c                   (    e Zd ZdZddZd Zd ZdZy)Pragma)stringr   rj   Nc                      || _         || _        y rC   )r  r   )r*   r  r   s      r   rl   zPragma.__init__1  r  r   c                     g }t        |      S rC   r   ro   s     r   r2   zPragma.children5  r   r   c              #      K   y wrC   r   r1   s    r   rr   zPragma.__iter__9  r   r   )r  rC   rt   r   r   r   r  r  .  s    2I Jr   r  ):rS   typingr   r   r   r   r   r   rX   rf   rv   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r+  r1  r7  r=  rB  rJ  rT  rY  r_  rp  ru  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     s{  $  . .k k\7 7t   4t 2 4d (t 4D  4 24 2t (d 2t ,t  34 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   