U afz@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 @/opt/nydus/tmp/pip-target-53d1vnqk/lib/python/pycparser/c_ast.py sz_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|dk r4||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 XszNode.show..z, css|]}d|VqdS)z%s=%sNr )rnvr r r r YszNode.show..csg|]}t|qSr r&r'r$r r r)[scss|]}d|VqdS)z%sNr )rvr r r r \sz (at %s)r)offset attrnames nodenames showcoord _my_node_name)writerr attr_namesrcoordr%show) rbufr-r.r/r0r1ZleadZnvlistZattrstrvlistZ child_namechildr r$r r5:s.    z Node.show) r __module__ __qualname__rr#r%sysstdoutr5r 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|jdkri|_|j|jjd}|dkrRd|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)rE)rrBcr r r rAszNodeVisitor.generic_visit)rr9r:__doc__r?rErAr r r r r=ms!r=c@s.eZdZdZd ddZddZddZd ZdS) ArrayDecl)typedim dim_qualsr4 __weakref__NcCs||_||_||_||_dSN)rIrJrKr4)rrIrJrKr4r r r __init__szArrayDecl.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)NrIrJ)rIappendrJtuplernodelistr r r r%s   zArrayDecl.childrenccs(|jdk r|jV|jdk r$|jVdSrM)rIrJr$r r r __iter__s  zArrayDecl.__iter__)rK)Nrr9r:rrNr%rSr3r r r r rHs  rHc@s.eZdZdZd ddZddZddZd ZdS) ArrayRef)r" subscriptr4rLNcCs||_||_||_dSrM)r"rVr4)rr"rVr4r r r rNszArrayRef.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nr"rV)r"rOrVrPrQr r r r%s   zArrayRef.childrenccs(|jdk r|jV|jdk r$|jVdSrM)r"rVr$r r r rSs  zArrayRef.__iter__r )NrTr r r r rUs  rUc@s.eZdZdZd ddZddZddZd ZdS) Assignment)oplvaluervaluer4rLNcCs||_||_||_||_dSrM)rXrYrZr4)rrXrYrZr4r r r rNszAssignment.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)NrYrZ)rYrOrZrPrQr r r r%s   zAssignment.childrenccs(|jdk r|jV|jdk r$|jVdSrM)rYrZr$r r r rSs  zAssignment.__iter__rX)NrTr r r r rWs  rWc@s.eZdZdZd ddZddZddZd ZdS) Alignas) alignmentr4rLNcCs||_||_dSrM)r]r4)rr]r4r r r rNszAlignas.__init__cCs&g}|jdk r|d|jft|S)Nr])r]rOrPrQr r r r%s zAlignas.childrenccs|jdk r|jVdSrM)r]r$r r r rSs zAlignas.__iter__r )NrTr r r r r\s  r\c@s.eZdZdZd ddZddZddZd ZdS) BinaryOp)rXleftrightr4rLNcCs||_||_||_||_dSrM)rXr_r`r4)rrXr_r`r4r r r rNszBinaryOp.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nr_r`)r_rOr`rPrQr r r r%s   zBinaryOp.childrenccs(|jdk r|jV|jdk r$|jVdSrM)r_r`r$r r r rSs  zBinaryOp.__iter__r[)NrTr r r r r^s  r^c@s.eZdZdZd ddZddZddZd ZdS) Breakr4rLNcCs ||_dSrMr4rr4r r r rNszBreak.__init__cCsdSNr r r$r r r r%szBreak.childrenccsdSrMr r$r r r rSszBreak.__iter__r )NrTr r r r ras  rac@s.eZdZdZd ddZddZddZd ZdS) Case)exprstmtsr4rLNcCs||_||_||_dSrM)rgrhr4)rrgrhr4r r r rNsz Case.__init__cCsPg}|jdk r|d|jft|jp(gD]\}}|d||fq,t|S)Nrg stmts[%d])rgrO enumeraterhrPrrRir8r r r r%$s  z Case.childrenccs,|jdk r|jV|jpgD] }|VqdSrM)rgrhrr8r r r rS+s z Case.__iter__r )NrTr r r r rfs  rfc@s.eZdZdZd ddZddZddZd ZdS) Cast)to_typergr4rLNcCs||_||_||_dSrM)rorgr4)rrorgr4r r r rN5sz Cast.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nrorg)rorOrgrPrQr r r r%:s   z Cast.childrenccs(|jdk r|jV|jdk r$|jVdSrM)rorgr$r r r rS@s  z Cast.__iter__r )NrTr r r r rn3s  rnc@s.eZdZdZd ddZddZddZd ZdS) Compound) block_itemsr4rLNcCs||_||_dSrM)rqr4)rrqr4r r r rNJszCompound.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nzblock_items[%d])rjrqrOrPrkr r r r%NszCompound.childrenccs|jpgD] }|Vq dSrM)rqrmr r r rSTszCompound.__iter__r )NrTr r r r rpHs  rpc@s.eZdZdZd ddZddZddZd ZdS) CompoundLiteral)rIinitr4rLNcCs||_||_||_dSrM)rIrsr4)rrIrsr4r r r rN\szCompoundLiteral.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)NrIrs)rIrOrsrPrQr r r r%as   zCompoundLiteral.childrenccs(|jdk r|jV|jdk r$|jVdSrM)rIrsr$r r r rSgs  zCompoundLiteral.__iter__r )NrTr r r r rrZs  rrc@s.eZdZdZd ddZddZddZd ZdS) Constant)rIvaluer4rLNcCs||_||_||_dSrM)rIrur4)rrIrur4r r r rNqszConstant.__init__cCs g}t|SrMrPrQr r r r%vszConstant.childrenccsdSrMr r$r r r rSzszConstant.__iter__)rIru)NrTr r r r rtos  rtc@s.eZdZdZd ddZddZddZd ZdS) ContinuerbNcCs ||_dSrMrcrdr r r rNszContinue.__init__cCsdSrer r$r r r r%szContinue.childrenccsdSrMr r$r r r rSszContinue.__iter__r )NrTr r r r rws  rwc@s.eZdZdZd ddZddZddZd ZdS) Decl) r"qualsalignstoragefuncspecrIrsbitsizer4rLNc Cs:||_||_||_||_||_||_||_||_| |_dSrM) r"ryrzr{r|rIrsr}r4) rr"ryrzr{r|rIrsr}r4r r r rNsz Decl.__init__cCsZg}|jdk r|d|jf|jdk r8|d|jf|jdk rR|d|jft|S)NrIrsr})rIrOrsr}rPrQr r r r%s   z Decl.childrenccs:|jdk r|jV|jdk r$|jV|jdk r6|jVdSrM)rIrsr}r$r r r rSs    z Decl.__iter__)r"ryrzr{r|)NrTr r r r rxs  rxc@s.eZdZdZd ddZddZddZd ZdS) DeclList)declsr4rLNcCs||_||_dSrM)rr4)rrr4r r r rNszDeclList.__init__cCs6g}t|jpgD]\}}|d||fqt|SNz decls[%d]rjrrOrPrkr r r r%szDeclList.childrenccs|jpgD] }|Vq dSrMrrmr r r rSszDeclList.__iter__r )NrTr r r r r~s  r~c@s.eZdZdZd ddZddZddZd ZdS) Default)rhr4rLNcCs||_||_dSrM)rhr4)rrhr4r r r rNszDefault.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nri)rjrhrOrPrkr r r r%szDefault.childrenccs|jpgD] }|Vq dSrM)rhrmr r r rSszDefault.__iter__r )NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) DoWhilecondstmtr4rLNcCs||_||_||_dSrMrrr4rrrr4r r r rNszDoWhile.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|SNrrrrOrrPrQr r r r%s   zDoWhile.childrenccs(|jdk r|jV|jdk r$|jVdSrMrrr$r r r rSs  zDoWhile.__iter__r )NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) EllipsisParamrbNcCs ||_dSrMrcrdr r r rNszEllipsisParam.__init__cCsdSrer r$r r r r%szEllipsisParam.childrenccsdSrMr r$r r r rSszEllipsisParam.__iter__r )NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) EmptyStatementrbNcCs ||_dSrMrcrdr r r rNszEmptyStatement.__init__cCsdSrer r$r r r r%szEmptyStatement.childrenccsdSrMr r$r r r rSszEmptyStatement.__iter__r )NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Enum)r"valuesr4rLNcCs||_||_||_dSrM)r"rr4)rr"rr4r r r rNsz Enum.__init__cCs&g}|jdk r|d|jft|S)Nr)rrOrPrQr r r r%s z Enum.childrenccs|jdk r|jVdSrM)rr$r r r rS s z Enum.__iter__r")NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Enumerator)r"rur4rLNcCs||_||_||_dSrM)r"rur4)rr"rur4r r r rNszEnumerator.__init__cCs&g}|jdk r|d|jft|S)Nru)rurOrPrQr r r r%s zEnumerator.childrenccs|jdk r|jVdSrM)rur$r r r rSs zEnumerator.__iter__r)NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) EnumeratorList) enumeratorsr4rLNcCs||_||_dSrM)rr4)rrr4r r r rN'szEnumeratorList.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nzenumerators[%d])rjrrOrPrkr r r r%+szEnumeratorList.childrenccs|jpgD] }|Vq dSrM)rrmr r r rS1szEnumeratorList.__iter__r )NrTr r r r r%s  rc@s.eZdZdZd ddZddZddZd ZdS) ExprListexprsr4rLNcCs||_||_dSrMrr4rrr4r r r rN9szExprList.__init__cCs6g}t|jpgD]\}}|d||fqt|SNz exprs[%d]rjrrOrPrkr r r r%=szExprList.childrenccs|jpgD] }|Vq dSrMrrmr r r rSCszExprList.__iter__r )NrTr r r r r7s  rc@s.eZdZdZd ddZddZddZd ZdS) FileAST)extr4rLNcCs||_||_dSrM)rr4)rrr4r r r rNKszFileAST.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nzext[%d])rjrrOrPrkr r r r%OszFileAST.childrenccs|jpgD] }|Vq dSrM)rrmr r r rSUszFileAST.__iter__r )NrTr r r r rIs  rc@s.eZdZdZd ddZddZddZd ZdS) For)rsrnextrr4rLNcCs"||_||_||_||_||_dSrM)rsrrrr4)rrsrrrr4r r r rN]s z For.__init__cCstg}|jdk r|d|jf|jdk r8|d|jf|jdk rR|d|jf|jdk rl|d|jft|S)Nrsrrr)rsrOrrrrPrQr r r r%ds    z For.childrenccsL|jdk r|jV|jdk r$|jV|jdk r6|jV|jdk rH|jVdSrM)rsrrrr$r r r rSls    z For.__iter__r )NrTr r r r r[s   rc@s.eZdZdZd ddZddZddZd ZdS) FuncCall)r"argsr4rLNcCs||_||_||_dSrM)r"rr4)rr"rr4r r r rNzszFuncCall.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nr"r)r"rOrrPrQr r r r%s   zFuncCall.childrenccs(|jdk r|jV|jdk r$|jVdSrM)r"rr$r r r rSs  zFuncCall.__iter__r )NrTr r r r rxs  rc@s.eZdZdZd ddZddZddZd ZdS) FuncDecl)rrIr4rLNcCs||_||_||_dSrM)rrIr4)rrrIr4r r r rNszFuncDecl.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)NrrI)rrOrIrPrQr r r r%s   zFuncDecl.childrenccs(|jdk r|jV|jdk r$|jVdSrM)rrIr$r r r rSs  zFuncDecl.__iter__r )NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) FuncDef)decl param_declsbodyr4rLNcCs||_||_||_||_dSrM)rrrr4)rrrrr4r r r rNszFuncDef.__init__cCsjg}|jdk r|d|jf|jdk r8|d|jft|jpBgD]\}}|d||fqFt|S)Nrrzparam_decls[%d])rrOrrjrrPrkr r r r%s  zFuncDef.childrenccs>|jdk r|jV|jdk r$|jV|jp,gD] }|Vq.dSrM)rrrrmr r r rSs   zFuncDef.__iter__r )NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Gotor"r4rLNcCs||_||_dSrMr"r4rr"r4r r r rNsz Goto.__init__cCs g}t|SrMrvrQr r r r%sz Goto.childrenccsdSrMr r$r r r rSsz Goto.__iter__r)NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) IDrNcCs||_||_dSrMrrr r r rNsz ID.__init__cCs g}t|SrMrvrQr r r r%sz ID.childrenccsdSrMr r$r r r rSsz ID.__iter__r)NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) IdentifierType)namesr4rLNcCs||_||_dSrM)rr4)rrr4r r r rNszIdentifierType.__init__cCs g}t|SrMrvrQr r r r%szIdentifierType.childrenccsdSrMr r$r r r rSszIdentifierType.__iter__)r)NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Ifriftrueiffalser4rLNcCs||_||_||_||_dSrMrrrr4rrrrr4r r r rNsz If.__init__cCsZg}|jdk r|d|jf|jdk r8|d|jf|jdk rR|d|jft|SNrrrrrOrrrPrQr r r r%s   z If.childrenccs:|jdk r|jV|jdk r$|jV|jdk r6|jVdSrMrrrr$r r r rSs    z If.__iter__r )NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) InitListrNcCs||_||_dSrMrrr r r rNszInitList.__init__cCs6g}t|jpgD]\}}|d||fqt|Srrrkr r r r% szInitList.childrenccs|jpgD] }|Vq dSrMrrmr r r rSszInitList.__iter__r )NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Label)r"rr4rLNcCs||_||_||_dSrM)r"rr4)rr"rr4r r r rNszLabel.__init__cCs&g}|jdk r|d|jft|S)Nr)rrOrPrQr r r r%s zLabel.childrenccs|jdk r|jVdSrM)rr$r r r rS#s zLabel.__iter__r)NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) NamedInitializer)r"rgr4rLNcCs||_||_||_dSrM)r"rgr4)rr"rgr4r r r rN+szNamedInitializer.__init__cCsPg}|jdk r|d|jft|jp(gD]\}}|d||fq,t|S)Nrgzname[%d])rgrOrjr"rPrkr r r r%0s  zNamedInitializer.childrenccs,|jdk r|jV|jpgD] }|VqdSrM)rgr"rmr r r rS7s zNamedInitializer.__iter__r )NrTr r r r r)s  rc@s.eZdZdZd ddZddZddZd ZdS) ParamList)paramsr4rLNcCs||_||_dSrM)rr4)rrr4r r r rNAszParamList.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nz params[%d])rjrrOrPrkr r r r%EszParamList.childrenccs|jpgD] }|Vq dSrM)rrmr r r rSKszParamList.__iter__r )NrTr r r r r?s  rc@s.eZdZdZd ddZddZddZd ZdS) PtrDecl)ryrIr4rLNcCs||_||_||_dSrM)ryrIr4)rryrIr4r r r rNSszPtrDecl.__init__cCs&g}|jdk r|d|jft|SNrIrIrOrPrQr r r r%Xs zPtrDecl.childrenccs|jdk r|jVdSrMrIr$r r r rS]s zPtrDecl.__iter__)ry)NrTr r r r rQs  rc@s.eZdZdZd ddZddZddZd ZdS) Return)rgr4rLNcCs||_||_dSrM)rgr4)rrgr4r r r rNeszReturn.__init__cCs&g}|jdk r|d|jft|SNrgrgrOrPrQr r r r%is zReturn.childrenccs|jdk r|jVdSrMrgr$r r r rSns zReturn.__iter__r )NrTr r r r rcs  rc@s.eZdZdZd ddZddZddZd ZdS) StaticAssert)rmessager4rLNcCs||_||_||_dSrM)rrr4)rrrr4r r r rNvszStaticAssert.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nrr)rrOrrPrQr r r r%{s   zStaticAssert.childrenccs(|jdk r|jV|jdk r$|jVdSrM)rrr$r r r rSs  zStaticAssert.__iter__r )NrTr r r r rts  rc@s.eZdZdZd ddZddZddZd ZdS) Structr"rr4rLNcCs||_||_||_dSrMr"rr4rr"rr4r r r rNszStruct.__init__cCs6g}t|jpgD]\}}|d||fqt|Srrrkr r r r%szStruct.childrenccs|jpgD] }|Vq dSrMrrmr r r rSszStruct.__iter__r)NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) StructRef)r"rIfieldr4rLNcCs||_||_||_||_dSrM)r"rIrr4)rr"rIrr4r r r rNszStructRef.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nr"r)r"rOrrPrQr r r r%s   zStructRef.childrenccs(|jdk r|jV|jdk r$|jVdSrM)r"rr$r r r rSs  zStructRef.__iter__r)NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) SwitchrNcCs||_||_||_dSrMrrr r r rNszSwitch.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|SrrrQr r r r%s   zSwitch.childrenccs(|jdk r|jV|jdk r$|jVdSrMrr$r r r rSs  zSwitch.__iter__r )NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) TernaryOprNcCs||_||_||_||_dSrMrrr r r rNszTernaryOp.__init__cCsZg}|jdk r|d|jf|jdk r8|d|jf|jdk rR|d|jft|SrrrQr r r r%s   zTernaryOp.childrenccs:|jdk r|jV|jdk r$|jV|jdk r6|jVdSrMrr$r r r rSs    zTernaryOp.__iter__r )NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) TypeDecl)declnameryrzrIr4rLNcCs"||_||_||_||_||_dSrM)rryrzrIr4)rrryrzrIr4r r r rNs zTypeDecl.__init__cCs&g}|jdk r|d|jft|SrrrQr r r r%s zTypeDecl.childrenccs|jdk r|jVdSrMrr$r r r rSs zTypeDecl.__iter__)rryrz)NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Typedef)r"ryr{rIr4rLNcCs"||_||_||_||_||_dSrM)r"ryr{rIr4)rr"ryr{rIr4r r r rNs zTypedef.__init__cCs&g}|jdk r|d|jft|SrrrQr r r r%s zTypedef.childrenccs|jdk r|jVdSrMrr$r r r rSs zTypedef.__iter__)r"ryr{)NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Typename)r"ryrzrIr4rLNcCs"||_||_||_||_||_dSrM)r"ryrzrIr4)rr"ryrzrIr4r r r rN s zTypename.__init__cCs&g}|jdk r|d|jft|SrrrQr r r r%s zTypename.childrenccs|jdk r|jVdSrMrr$r r r rSs zTypename.__iter__)r"ryrz)NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) UnaryOp)rXrgr4rLNcCs||_||_||_dSrM)rXrgr4)rrXrgr4r r r rNszUnaryOp.__init__cCs&g}|jdk r|d|jft|SrrrQr r r r%#s zUnaryOp.childrenccs|jdk r|jVdSrMrr$r r r rS(s zUnaryOp.__iter__r[)NrTr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) UnionrNcCs||_||_||_dSrMrrr r r rN0szUnion.__init__cCs6g}t|jpgD]\}}|d||fqt|Srrrkr r r r%5szUnion.childrenccs|jpgD] }|Vq dSrMrrmr r r rS;szUnion.__iter__r)NrTr r r r r.s  rc@s.eZdZdZd ddZddZddZd ZdS) WhilerNcCs||_||_||_dSrMrrr r r rNCszWhile.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|SrrrQr r r r%Hs   zWhile.childrenccs(|jdk r|jV|jdk r$|jVdSrMrr$r r r rSNs  zWhile.__iter__r )NrTr r r r rAs  rc@s.eZdZdZd ddZddZddZd ZdS) Pragma)stringr4rLNcCs||_||_dSrM)rr4)rrr4r r r rNXszPragma.__init__cCs g}t|SrMrvrQr r r r%\szPragma.childrenccsdSrMr r$r r r rS`szPragma.__iter__)r)NrTr r r r rVs  r)6r;robjectrr=rHrUrWr\r^rarfrnrprrrtrwrxr~rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r sh O: