a bz@sDddlZddZGdddeZGdddeZGdd d eZGd d d eZGd d d eZGdddeZGdddeZ GdddeZ GdddeZ GdddeZ GdddeZ GdddeZGdddeZGdddeZGd d!d!eZGd"d#d#eZGd$d%d%eZGd&d'd'eZGd(d)d)eZGd*d+d+eZGd,d-d-eZGd.d/d/eZGd0d1d1eZGd2d3d3eZGd4d5d5eZGd6d7d7eZGd8d9d9eZGd:d;d;eZGdd?d?eZ Gd@dAdAeZ!GdBdCdCeZ"GdDdEdEeZ#GdFdGdGeZ$GdHdIdIeZ%GdJdKdKeZ&GdLdMdMeZ'GdNdOdOeZ(GdPdQdQeZ)GdRdSdSeZ*GdTdUdUeZ+GdVdWdWeZ,GdXdYdYeZ-GdZd[d[eZ.Gd\d]d]eZ/Gd^d_d_eZ0Gd`dadaeZ1GdbdcdceZ2GdddedeeZ3GdfdgdgeZ4GdhdidieZ5dS)jNcCs2t|tr&dddd|DdSt|SdS)z[ Get the representation of an object, with dedicated pprint-like format for lists. [z, css|]}t|ddVqdS)  N)_reprreplace).0er 6/tmp/pip-target-98j97qn4/lib/python/pycparser/c_ast.py z_repr..z ]N) isinstancelistjoinrepr)objr r r rs rc@s8eZdZdZddZddZejdddddfd d ZdS) Noder c Cs|jjd}d}d}|jddD]f}||7}||7}||dtt||dddt|t|jj7}d }d dt|jj}q"||d 7}|S) z? Generates a python representation of the current node (N=rz  ,r)) __class____name__ __slots__rgetattrrlen)selfresultindent separatornamer r r __repr__"s : z Node.__repr__cCsdS)z3 A sequence of all children that are Nodes Nr rr r r children5sz Node.childrenrFNc sd|}|r4|dur4||jjd|dn||jjdjr|r~fddjD}dd d |D} n(fd djD} dd d | D} || |r|d j|dD]"\} } | j||d|||| dqdS)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. rNz : z: csg|]}|t|fqSr rrnr%r r Xr zNode.show..z, css|]}d|VqdS)z%s=%sNr )rnvr r r r Yr zNode.show..csg|]}t|qSr r'r(r%r r r*[r css|]}d|VqdS)z%sNr )rvr r r r \r z (at %s)r)offset attrnames nodenames showcoord _my_node_name)writerr attr_namesrcoordr&show) rbufr.r/r0r1r2leadZnvlistZattrstrvlistZ child_namechildr r%r r6:s.    z Node.show) r __module__ __qualname__rr$r&sysstdoutr6r r r r rsrc@s$eZdZdZdZddZddZdS) 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) NcCsZ|jduri|_|j|jjd}|durRd|jj}t|||j}||j|jj<||S)z Visit a node. Nvisit_) _method_cachegetrrr generic_visit)rnodevisitormethodr r r visits  zNodeVisitor.visitcCs|D]}||qdS)zy Called if no explicit visitor function exists for a node. Implements preorder visiting of the node. N)rG)rrDcr r r rCszNodeVisitor.generic_visit)rr;r<__doc__rArGrCr r r r r?ms!r?c@s.eZdZdZd ddZddZddZd ZdS) ArrayDecl)typedim dim_qualsr5 __weakref__NcCs||_||_||_||_dSN)rKrLrMr5)rrKrLrMr5r r r __init__szArrayDecl.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)NrKrL)rKappendrLtuplernodelistr r r r&szArrayDecl.childrenccs(|jdur|jV|jdur$|jVdSrO)rKrLr%r r r __iter__s  zArrayDecl.__iter__)rM)Nrr;r<rrPr&rUr4r r r r rJs  rJc@s.eZdZdZd ddZddZddZd ZdS) ArrayRef)r# subscriptr5rNNcCs||_||_||_dSrO)r#rXr5)rr#rXr5r r r rPszArrayRef.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)Nr#rX)r#rQrXrRrSr r r r&szArrayRef.childrenccs(|jdur|jV|jdur$|jVdSrO)r#rXr%r r r rUs  zArrayRef.__iter__r )NrVr r r r rWs  rWc@s.eZdZdZd ddZddZddZd ZdS) Assignment)oplvaluervaluer5rNNcCs||_||_||_||_dSrO)rZr[r\r5)rrZr[r\r5r r r rPszAssignment.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)Nr[r\)r[rQr\rRrSr r r r&szAssignment.childrenccs(|jdur|jV|jdur$|jVdSrO)r[r\r%r r r rUs  zAssignment.__iter__rZ)NrVr r r r rYs  rYc@s.eZdZdZd ddZddZddZd ZdS) Alignas) alignmentr5rNNcCs||_||_dSrO)r_r5)rr_r5r r r rPszAlignas.__init__cCs&g}|jdur|d|jft|S)Nr_)r_rQrRrSr r r r&szAlignas.childrenccs|jdur|jVdSrO)r_r%r r r rUs zAlignas.__iter__r )NrVr r r r r^s  r^c@s.eZdZdZd ddZddZddZd ZdS) BinaryOp)rZleftrightr5rNNcCs||_||_||_||_dSrO)rZrarbr5)rrZrarbr5r r r rPszBinaryOp.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)Nrarb)rarQrbrRrSr r r r&szBinaryOp.childrenccs(|jdur|jV|jdur$|jVdSrO)rarbr%r r r rUs  zBinaryOp.__iter__r])NrVr r r r r`s  r`c@s.eZdZdZd ddZddZddZd ZdS) Breakr5rNNcCs ||_dSrOr5rr5r r r rPszBreak.__init__cCsdSNr r r%r r r r&szBreak.childrenccsdSrOr r%r r r rUszBreak.__iter__r )NrVr r r r rcs  rcc@s.eZdZdZd ddZddZddZd ZdS) Case)exprstmtsr5rNNcCs||_||_||_dSrO)rirjr5)rrirjr5r r r rPsz Case.__init__cCsPg}|jdur|d|jft|jp(gD]\}}|d||fq,t|S)Nri stmts[%d])rirQ enumeraterjrRrrTir:r r r r&$s z Case.childrenccs,|jdur|jV|jpgD] }|VqdSrO)rirjrr:r r r rU+s z Case.__iter__r )NrVr r r r rhs  rhc@s.eZdZdZd ddZddZddZd ZdS) Cast)to_typerir5rNNcCs||_||_||_dSrO)rqrir5)rrqrir5r r r rP5sz Cast.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)Nrqri)rqrQrirRrSr r r r&:sz Cast.childrenccs(|jdur|jV|jdur$|jVdSrO)rqrir%r r r rU@s  z Cast.__iter__r )NrVr r r r rp3s  rpc@s.eZdZdZd ddZddZddZd ZdS) Compound) block_itemsr5rNNcCs||_||_dSrO)rsr5)rrsr5r r r rPJszCompound.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nzblock_items[%d])rlrsrQrRrmr r r r&NszCompound.childrenccs|jpgD] }|Vq dSrO)rsror r r rUTszCompound.__iter__r )NrVr r r r rrHs  rrc@s.eZdZdZd ddZddZddZd ZdS) CompoundLiteral)rKinitr5rNNcCs||_||_||_dSrO)rKrur5)rrKrur5r r r rP\szCompoundLiteral.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)NrKru)rKrQrurRrSr r r r&aszCompoundLiteral.childrenccs(|jdur|jV|jdur$|jVdSrO)rKrur%r r r rUgs  zCompoundLiteral.__iter__r )NrVr r r r rtZs  rtc@s.eZdZdZd ddZddZddZd ZdS) Constant)rKvaluer5rNNcCs||_||_||_dSrO)rKrwr5)rrKrwr5r r r rPqszConstant.__init__cCs g}t|SrOrRrSr r r r&vszConstant.childrenccsdSrOr r%r r r rUzszConstant.__iter__)rKrw)NrVr r r r rvos  rvc@s.eZdZdZd ddZddZddZd ZdS) ContinuerdNcCs ||_dSrOrerfr r r rPszContinue.__init__cCsdSrgr r%r r r r&szContinue.childrenccsdSrOr r%r r r rUszContinue.__iter__r )NrVr r r r rys  ryc@s.eZdZdZd ddZddZddZd ZdS) Decl) r#qualsalignstoragefuncspecrKrubitsizer5rNNc Cs:||_||_||_||_||_||_||_||_| |_dSrO) r#r{r|r}r~rKrurr5) rr#r{r|r}r~rKrurr5r r r rPsz Decl.__init__cCsZg}|jdur|d|jf|jdur8|d|jf|jdurR|d|jft|S)NrKrur)rKrQrurrRrSr r r r&s z Decl.childrenccs:|jdur|jV|jdur$|jV|jdur6|jVdSrO)rKrurr%r r r rUs    z Decl.__iter__)r#r{r|r}r~)NrVr r r r rzs  rzc@s.eZdZdZd ddZddZddZd ZdS) DeclList)declsr5rNNcCs||_||_dSrO)rr5)rrr5r r r rPszDeclList.__init__cCs6g}t|jpgD]\}}|d||fqt|SNz decls[%d]rlrrQrRrmr r r r&szDeclList.childrenccs|jpgD] }|Vq dSrOrror r r rUszDeclList.__iter__r )NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Default)rjr5rNNcCs||_||_dSrO)rjr5)rrjr5r r r rPszDefault.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nrk)rlrjrQrRrmr r r r&szDefault.childrenccs|jpgD] }|Vq dSrO)rjror r r rUszDefault.__iter__r )NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) DoWhilecondstmtr5rNNcCs||_||_||_dSrOrrr5rrrr5r r r rPszDoWhile.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|SNrrrrQrrRrSr r r r&szDoWhile.childrenccs(|jdur|jV|jdur$|jVdSrOrrr%r r r rUs  zDoWhile.__iter__r )NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) EllipsisParamrdNcCs ||_dSrOrerfr r r rPszEllipsisParam.__init__cCsdSrgr r%r r r r&szEllipsisParam.childrenccsdSrOr r%r r r rUszEllipsisParam.__iter__r )NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) EmptyStatementrdNcCs ||_dSrOrerfr r r rPszEmptyStatement.__init__cCsdSrgr r%r r r r&szEmptyStatement.childrenccsdSrOr r%r r r rUszEmptyStatement.__iter__r )NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Enum)r#valuesr5rNNcCs||_||_||_dSrO)r#rr5)rr#rr5r r r rPsz Enum.__init__cCs&g}|jdur|d|jft|S)Nr)rrQrRrSr r r r&sz Enum.childrenccs|jdur|jVdSrO)rr%r r r rU s z Enum.__iter__r#)NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Enumerator)r#rwr5rNNcCs||_||_||_dSrO)r#rwr5)rr#rwr5r r r rPszEnumerator.__init__cCs&g}|jdur|d|jft|S)Nrw)rwrQrRrSr r r r&szEnumerator.childrenccs|jdur|jVdSrO)rwr%r r r rUs zEnumerator.__iter__r)NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) EnumeratorList) enumeratorsr5rNNcCs||_||_dSrO)rr5)rrr5r r r rP'szEnumeratorList.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nzenumerators[%d])rlrrQrRrmr r r r&+szEnumeratorList.childrenccs|jpgD] }|Vq dSrO)rror r r rU1szEnumeratorList.__iter__r )NrVr r r r r%s  rc@s.eZdZdZd ddZddZddZd ZdS) ExprListexprsr5rNNcCs||_||_dSrOrr5rrr5r r r rP9szExprList.__init__cCs6g}t|jpgD]\}}|d||fqt|SNz exprs[%d]rlrrQrRrmr r r r&=szExprList.childrenccs|jpgD] }|Vq dSrOrror r r rUCszExprList.__iter__r )NrVr r r r r7s  rc@s.eZdZdZd ddZddZddZd ZdS) FileAST)extr5rNNcCs||_||_dSrO)rr5)rrr5r r r rPKszFileAST.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nzext[%d])rlrrQrRrmr r r r&OszFileAST.childrenccs|jpgD] }|Vq dSrO)rror r r rUUszFileAST.__iter__r )NrVr r r r rIs  rc@s.eZdZdZd ddZddZddZd ZdS) For)rurnextrr5rNNcCs"||_||_||_||_||_dSrO)rurrrr5)rrurrrr5r r r rP]s z For.__init__cCstg}|jdur|d|jf|jdur8|d|jf|jdurR|d|jf|jdurl|d|jft|S)Nrurrr)rurQrrrrRrSr r r r&ds z For.childrenccsL|jdur|jV|jdur$|jV|jdur6|jV|jdurH|jVdSrO)rurrrr%r r r rUls    z For.__iter__r )NrVr r r r r[s   rc@s.eZdZdZd ddZddZddZd ZdS) FuncCall)r#argsr5rNNcCs||_||_||_dSrO)r#rr5)rr#rr5r r r rPzszFuncCall.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)Nr#r)r#rQrrRrSr r r r&szFuncCall.childrenccs(|jdur|jV|jdur$|jVdSrO)r#rr%r r r rUs  zFuncCall.__iter__r )NrVr r r r rxs  rc@s.eZdZdZd ddZddZddZd ZdS) FuncDecl)rrKr5rNNcCs||_||_||_dSrO)rrKr5)rrrKr5r r r rPszFuncDecl.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)NrrK)rrQrKrRrSr r r r&szFuncDecl.childrenccs(|jdur|jV|jdur$|jVdSrO)rrKr%r r r rUs  zFuncDecl.__iter__r )NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) FuncDef)decl param_declsbodyr5rNNcCs||_||_||_||_dSrO)rrrr5)rrrrr5r r r rPszFuncDef.__init__cCsjg}|jdur|d|jf|jdur8|d|jft|jpBgD]\}}|d||fqFt|S)Nrrzparam_decls[%d])rrQrrlrrRrmr r r r&s zFuncDef.childrenccs>|jdur|jV|jdur$|jV|jp,gD] }|Vq.dSrO)rrrror r r rUs   zFuncDef.__iter__r )NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Gotor#r5rNNcCs||_||_dSrOr#r5rr#r5r r r rPsz Goto.__init__cCs g}t|SrOrxrSr r r r&sz Goto.childrenccsdSrOr r%r r r rUsz Goto.__iter__r)NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) IDrNcCs||_||_dSrOrrr r r rPsz ID.__init__cCs g}t|SrOrxrSr r r r&sz ID.childrenccsdSrOr r%r r r rUsz ID.__iter__r)NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) IdentifierType)namesr5rNNcCs||_||_dSrO)rr5)rrr5r r r rPszIdentifierType.__init__cCs g}t|SrOrxrSr r r r&szIdentifierType.childrenccsdSrOr r%r r r rUszIdentifierType.__iter__)r)NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Ifriftrueiffalser5rNNcCs||_||_||_||_dSrOrrrr5rrrrr5r r r rPsz If.__init__cCsZg}|jdur|d|jf|jdur8|d|jf|jdurR|d|jft|SNrrrrrQrrrRrSr r r r&s z If.childrenccs:|jdur|jV|jdur$|jV|jdur6|jVdSrOrrrr%r r r rUs    z If.__iter__r )NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) InitListrNcCs||_||_dSrOrrr r r rPszInitList.__init__cCs6g}t|jpgD]\}}|d||fqt|Srrrmr r r r& szInitList.childrenccs|jpgD] }|Vq dSrOrror r r rUszInitList.__iter__r )NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Label)r#rr5rNNcCs||_||_||_dSrO)r#rr5)rr#rr5r r r rPszLabel.__init__cCs&g}|jdur|d|jft|S)Nr)rrQrRrSr r r r&szLabel.childrenccs|jdur|jVdSrO)rr%r r r rU#s zLabel.__iter__r)NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) NamedInitializer)r#rir5rNNcCs||_||_||_dSrO)r#rir5)rr#rir5r r r rP+szNamedInitializer.__init__cCsPg}|jdur|d|jft|jp(gD]\}}|d||fq,t|S)Nrizname[%d])rirQrlr#rRrmr r r r&0s zNamedInitializer.childrenccs,|jdur|jV|jpgD] }|VqdSrO)rir#ror r r rU7s zNamedInitializer.__iter__r )NrVr r r r r)s  rc@s.eZdZdZd ddZddZddZd ZdS) ParamList)paramsr5rNNcCs||_||_dSrO)rr5)rrr5r r r rPAszParamList.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nz params[%d])rlrrQrRrmr r r r&EszParamList.childrenccs|jpgD] }|Vq dSrO)rror r r rUKszParamList.__iter__r )NrVr r r r r?s  rc@s.eZdZdZd ddZddZddZd ZdS) PtrDecl)r{rKr5rNNcCs||_||_||_dSrO)r{rKr5)rr{rKr5r r r rPSszPtrDecl.__init__cCs&g}|jdur|d|jft|SNrKrKrQrRrSr r r r&XszPtrDecl.childrenccs|jdur|jVdSrOrKr%r r r rU]s zPtrDecl.__iter__)r{)NrVr r r r rQs  rc@s.eZdZdZd ddZddZddZd ZdS) Return)rir5rNNcCs||_||_dSrO)rir5)rrir5r r r rPeszReturn.__init__cCs&g}|jdur|d|jft|SNririrQrRrSr r r r&iszReturn.childrenccs|jdur|jVdSrOrir%r r r rUns zReturn.__iter__r )NrVr r r r rcs  rc@s.eZdZdZd ddZddZddZd ZdS) StaticAssert)rmessager5rNNcCs||_||_||_dSrO)rrr5)rrrr5r r r rPvszStaticAssert.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)Nrr)rrQrrRrSr r r r&{szStaticAssert.childrenccs(|jdur|jV|jdur$|jVdSrO)rrr%r r r rUs  zStaticAssert.__iter__r )NrVr r r r rts  rc@s.eZdZdZd ddZddZddZd ZdS) Structr#rr5rNNcCs||_||_||_dSrOr#rr5rr#rr5r r r rPszStruct.__init__cCs6g}t|jpgD]\}}|d||fqt|Srrrmr r r r&szStruct.childrenccs|jpgD] }|Vq dSrOrror r r rUszStruct.__iter__r)NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) StructRef)r#rKfieldr5rNNcCs||_||_||_||_dSrO)r#rKrr5)rr#rKrr5r r r rPszStructRef.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)Nr#r)r#rQrrRrSr r r r&szStructRef.childrenccs(|jdur|jV|jdur$|jVdSrO)r#rr%r r r rUs  zStructRef.__iter__r)NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) SwitchrNcCs||_||_||_dSrOrrr r r rPszSwitch.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|SrrrSr r r r&szSwitch.childrenccs(|jdur|jV|jdur$|jVdSrOrr%r r r rUs  zSwitch.__iter__r )NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) TernaryOprNcCs||_||_||_||_dSrOrrr r r rPszTernaryOp.__init__cCsZg}|jdur|d|jf|jdur8|d|jf|jdurR|d|jft|SrrrSr r r r&s zTernaryOp.childrenccs:|jdur|jV|jdur$|jV|jdur6|jVdSrOrr%r r r rUs    zTernaryOp.__iter__r )NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) TypeDecl)declnamer{r|rKr5rNNcCs"||_||_||_||_||_dSrO)rr{r|rKr5)rrr{r|rKr5r r r rPs zTypeDecl.__init__cCs&g}|jdur|d|jft|SrrrSr r r r&szTypeDecl.childrenccs|jdur|jVdSrOrr%r r r rUs zTypeDecl.__iter__)rr{r|)NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Typedef)r#r{r}rKr5rNNcCs"||_||_||_||_||_dSrO)r#r{r}rKr5)rr#r{r}rKr5r r r rPs zTypedef.__init__cCs&g}|jdur|d|jft|SrrrSr r r r&szTypedef.childrenccs|jdur|jVdSrOrr%r r r rUs zTypedef.__iter__)r#r{r})NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Typename)r#r{r|rKr5rNNcCs"||_||_||_||_||_dSrO)r#r{r|rKr5)rr#r{r|rKr5r r r rP s zTypename.__init__cCs&g}|jdur|d|jft|SrrrSr r r r&szTypename.childrenccs|jdur|jVdSrOrr%r r r rUs zTypename.__iter__)r#r{r|)NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) UnaryOp)rZrir5rNNcCs||_||_||_dSrO)rZrir5)rrZrir5r r r rPszUnaryOp.__init__cCs&g}|jdur|d|jft|SrrrSr r r r&#szUnaryOp.childrenccs|jdur|jVdSrOrr%r r r rU(s zUnaryOp.__iter__r])NrVr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) UnionrNcCs||_||_||_dSrOrrr r r rP0szUnion.__init__cCs6g}t|jpgD]\}}|d||fqt|Srrrmr r r r&5szUnion.childrenccs|jpgD] }|Vq dSrOrror r r rU;szUnion.__iter__r)NrVr r r r r.s  rc@s.eZdZdZd ddZddZddZd ZdS) WhilerNcCs||_||_||_dSrOrrr r r rPCszWhile.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|SrrrSr r r r&HszWhile.childrenccs(|jdur|jV|jdur$|jVdSrOrr%r r r rUNs  zWhile.__iter__r )NrVr r r r rAs  rc@s.eZdZdZd ddZddZddZd ZdS) Pragma)stringr5rNNcCs||_||_dSrO)rr5)rrr5r r r rPXszPragma.__init__cCs g}t|SrOrxrSr r r r&\szPragma.childrenccsdSrOr r%r r r rU`szPragma.__iter__)r)NrVr r r r rVs  r)6r=robjectrr?rJrWrYr^r`rcrhrprrrtrvryrzrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r sh O: