U Ecz@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-wmutx79v/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. NZvisit_) _method_cachegetrrr generic_visit)rnodeZvisitormethodr 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)rC)rrAcr r r r@szNodeVisitor.generic_visit)rr9r:__doc__r>rCr@r r r r r=ms!r=c@s.eZdZdZd ddZddZddZd ZdS) ArrayDecl)typedim dim_qualsr4 __weakref__NcCs||_||_||_||_dSN)rGrHrIr4)rrGrHrIr4r r r __init__szArrayDecl.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)NrGrH)rGappendrHtuplernodelistr r r r%s   zArrayDecl.childrenccs(|jdk r|jV|jdk r$|jVdSrK)rGrHr$r r r __iter__s  zArrayDecl.__iter__)rI)Nrr9r:rrLr%rQr3r r r r rFs  rFc@s.eZdZdZd ddZddZddZd ZdS) ArrayRef)r" subscriptr4rJNcCs||_||_||_dSrK)r"rTr4)rr"rTr4r r r rLszArrayRef.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nr"rT)r"rMrTrNrOr r r r%s   zArrayRef.childrenccs(|jdk r|jV|jdk r$|jVdSrK)r"rTr$r r r rQs  zArrayRef.__iter__r )NrRr r r r rSs  rSc@s.eZdZdZd ddZddZddZd ZdS) Assignment)oplvaluervaluer4rJNcCs||_||_||_||_dSrK)rVrWrXr4)rrVrWrXr4r r r rLszAssignment.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)NrWrX)rWrMrXrNrOr r r r%s   zAssignment.childrenccs(|jdk r|jV|jdk r$|jVdSrK)rWrXr$r r r rQs  zAssignment.__iter__rV)NrRr r r r rUs  rUc@s.eZdZdZd ddZddZddZd ZdS) Alignas) alignmentr4rJNcCs||_||_dSrK)r[r4)rr[r4r r r rLszAlignas.__init__cCs&g}|jdk r|d|jft|S)Nr[)r[rMrNrOr r r r%s zAlignas.childrenccs|jdk r|jVdSrK)r[r$r r r rQs zAlignas.__iter__r )NrRr r r r rZs  rZc@s.eZdZdZd ddZddZddZd ZdS) BinaryOp)rVleftrightr4rJNcCs||_||_||_||_dSrK)rVr]r^r4)rrVr]r^r4r r r rLszBinaryOp.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nr]r^)r]rMr^rNrOr r r r%s   zBinaryOp.childrenccs(|jdk r|jV|jdk r$|jVdSrK)r]r^r$r r r rQs  zBinaryOp.__iter__rY)NrRr r r r r\s  r\c@s.eZdZdZd ddZddZddZd ZdS) Breakr4rJNcCs ||_dSrKr4rr4r r r rLszBreak.__init__cCsdSNr r r$r r r r%szBreak.childrenccsdSrKr r$r r r rQszBreak.__iter__r )NrRr r r r r_s  r_c@s.eZdZdZd ddZddZddZd ZdS) Case)exprstmtsr4rJNcCs||_||_||_dSrK)rerfr4)rrerfr4r r r rLsz Case.__init__cCsPg}|jdk r|d|jft|jp(gD]\}}|d||fq,t|S)Nre stmts[%d])rerM enumeraterfrNrrPir8r r r r%$s  z Case.childrenccs,|jdk r|jV|jpgD] }|VqdSrK)rerfrr8r r r rQ+s z Case.__iter__r )NrRr r r r rds  rdc@s.eZdZdZd ddZddZddZd ZdS) Cast)to_typerer4rJNcCs||_||_||_dSrK)rmrer4)rrmrer4r r r rL5sz Cast.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nrmre)rmrMrerNrOr r r r%:s   z Cast.childrenccs(|jdk r|jV|jdk r$|jVdSrK)rmrer$r r r rQ@s  z Cast.__iter__r )NrRr r r r rl3s  rlc@s.eZdZdZd ddZddZddZd ZdS) Compound) block_itemsr4rJNcCs||_||_dSrK)ror4)rror4r r r rLJszCompound.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nzblock_items[%d])rhrorMrNrir r r r%NszCompound.childrenccs|jpgD] }|Vq dSrK)rorkr r r rQTszCompound.__iter__r )NrRr r r r rnHs  rnc@s.eZdZdZd ddZddZddZd ZdS) CompoundLiteral)rGinitr4rJNcCs||_||_||_dSrK)rGrqr4)rrGrqr4r r r rL\szCompoundLiteral.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)NrGrq)rGrMrqrNrOr r r r%as   zCompoundLiteral.childrenccs(|jdk r|jV|jdk r$|jVdSrK)rGrqr$r r r rQgs  zCompoundLiteral.__iter__r )NrRr r r r rpZs  rpc@s.eZdZdZd ddZddZddZd ZdS) Constant)rGvaluer4rJNcCs||_||_||_dSrK)rGrsr4)rrGrsr4r r r rLqszConstant.__init__cCs g}t|SrKrNrOr r r r%vszConstant.childrenccsdSrKr r$r r r rQzszConstant.__iter__)rGrs)NrRr r r r rros  rrc@s.eZdZdZd ddZddZddZd ZdS) Continuer`NcCs ||_dSrKrarbr r r rLszContinue.__init__cCsdSrcr r$r r r r%szContinue.childrenccsdSrKr r$r r r rQszContinue.__iter__r )NrRr r r r rus  ruc@s.eZdZdZd ddZddZddZd ZdS) Decl) r"qualsalignstoragefuncspecrGrqbitsizer4rJNc Cs:||_||_||_||_||_||_||_||_| |_dSrK) r"rwrxryrzrGrqr{r4) rr"rwrxryrzrGrqr{r4r r r rLsz Decl.__init__cCsZg}|jdk r|d|jf|jdk r8|d|jf|jdk rR|d|jft|S)NrGrqr{)rGrMrqr{rNrOr r r r%s   z Decl.childrenccs:|jdk r|jV|jdk r$|jV|jdk r6|jVdSrK)rGrqr{r$r r r rQs    z Decl.__iter__)r"rwrxryrz)NrRr r r r rvs  rvc@s.eZdZdZd ddZddZddZd ZdS) DeclList)declsr4rJNcCs||_||_dSrK)r}r4)rr}r4r r r rLszDeclList.__init__cCs6g}t|jpgD]\}}|d||fqt|SNz decls[%d]rhr}rMrNrir r r r%szDeclList.childrenccs|jpgD] }|Vq dSrKr}rkr r r rQszDeclList.__iter__r )NrRr r r r r|s  r|c@s.eZdZdZd ddZddZddZd ZdS) Default)rfr4rJNcCs||_||_dSrK)rfr4)rrfr4r r r rLszDefault.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nrg)rhrfrMrNrir r r r%szDefault.childrenccs|jpgD] }|Vq dSrK)rfrkr r r rQszDefault.__iter__r )NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) DoWhilecondstmtr4rJNcCs||_||_||_dSrKrrr4rrrr4r r r rLszDoWhile.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|SNrrrrMrrNrOr r r r%s   zDoWhile.childrenccs(|jdk r|jV|jdk r$|jVdSrKrrr$r r r rQs  zDoWhile.__iter__r )NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) EllipsisParamr`NcCs ||_dSrKrarbr r r rLszEllipsisParam.__init__cCsdSrcr r$r r r r%szEllipsisParam.childrenccsdSrKr r$r r r rQszEllipsisParam.__iter__r )NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) EmptyStatementr`NcCs ||_dSrKrarbr r r rLszEmptyStatement.__init__cCsdSrcr r$r r r r%szEmptyStatement.childrenccsdSrKr r$r r r rQszEmptyStatement.__iter__r )NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Enum)r"valuesr4rJNcCs||_||_||_dSrK)r"rr4)rr"rr4r r r rLsz Enum.__init__cCs&g}|jdk r|d|jft|S)Nr)rrMrNrOr r r r%s z Enum.childrenccs|jdk r|jVdSrK)rr$r r r rQ s z Enum.__iter__r")NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Enumerator)r"rsr4rJNcCs||_||_||_dSrK)r"rsr4)rr"rsr4r r r rLszEnumerator.__init__cCs&g}|jdk r|d|jft|S)Nrs)rsrMrNrOr r r r%s zEnumerator.childrenccs|jdk r|jVdSrK)rsr$r r r rQs zEnumerator.__iter__r)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) EnumeratorList) enumeratorsr4rJNcCs||_||_dSrK)rr4)rrr4r r r rL'szEnumeratorList.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nzenumerators[%d])rhrrMrNrir r r r%+szEnumeratorList.childrenccs|jpgD] }|Vq dSrK)rrkr r r rQ1szEnumeratorList.__iter__r )NrRr r r r r%s  rc@s.eZdZdZd ddZddZddZd ZdS) ExprListexprsr4rJNcCs||_||_dSrKrr4rrr4r r r rL9szExprList.__init__cCs6g}t|jpgD]\}}|d||fqt|SNz exprs[%d]rhrrMrNrir r r r%=szExprList.childrenccs|jpgD] }|Vq dSrKrrkr r r rQCszExprList.__iter__r )NrRr r r r r7s  rc@s.eZdZdZd ddZddZddZd ZdS) FileAST)extr4rJNcCs||_||_dSrK)rr4)rrr4r r r rLKszFileAST.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nzext[%d])rhrrMrNrir r r r%OszFileAST.childrenccs|jpgD] }|Vq dSrK)rrkr r r rQUszFileAST.__iter__r )NrRr r r r rIs  rc@s.eZdZdZd ddZddZddZd ZdS) For)rqrnextrr4rJNcCs"||_||_||_||_||_dSrK)rqrrrr4)rrqrrrr4r r r rL]s z For.__init__cCstg}|jdk r|d|jf|jdk r8|d|jf|jdk rR|d|jf|jdk rl|d|jft|S)Nrqrrr)rqrMrrrrNrOr r r r%ds    z For.childrenccsL|jdk r|jV|jdk r$|jV|jdk r6|jV|jdk rH|jVdSrK)rqrrrr$r r r rQls    z For.__iter__r )NrRr r r r r[s   rc@s.eZdZdZd ddZddZddZd ZdS) FuncCall)r"argsr4rJNcCs||_||_||_dSrK)r"rr4)rr"rr4r r r rLzszFuncCall.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nr"r)r"rMrrNrOr r r r%s   zFuncCall.childrenccs(|jdk r|jV|jdk r$|jVdSrK)r"rr$r r r rQs  zFuncCall.__iter__r )NrRr r r r rxs  rc@s.eZdZdZd ddZddZddZd ZdS) FuncDecl)rrGr4rJNcCs||_||_||_dSrK)rrGr4)rrrGr4r r r rLszFuncDecl.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)NrrG)rrMrGrNrOr r r r%s   zFuncDecl.childrenccs(|jdk r|jV|jdk r$|jVdSrK)rrGr$r r r rQs  zFuncDecl.__iter__r )NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) FuncDef)decl param_declsbodyr4rJNcCs||_||_||_||_dSrK)rrrr4)rrrrr4r r r rLszFuncDef.__init__cCsjg}|jdk r|d|jf|jdk r8|d|jft|jpBgD]\}}|d||fqFt|S)Nrrzparam_decls[%d])rrMrrhrrNrir r r r%s  zFuncDef.childrenccs>|jdk r|jV|jdk r$|jV|jp,gD] }|Vq.dSrK)rrrrkr r r rQs   zFuncDef.__iter__r )NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Gotor"r4rJNcCs||_||_dSrKr"r4rr"r4r r r rLsz Goto.__init__cCs g}t|SrKrtrOr r r r%sz Goto.childrenccsdSrKr r$r r r rQsz Goto.__iter__r)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) IDrNcCs||_||_dSrKrrr r r rLsz ID.__init__cCs g}t|SrKrtrOr r r r%sz ID.childrenccsdSrKr r$r r r rQsz ID.__iter__r)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) IdentifierType)namesr4rJNcCs||_||_dSrK)rr4)rrr4r r r rLszIdentifierType.__init__cCs g}t|SrKrtrOr r r r%szIdentifierType.childrenccsdSrKr r$r r r rQszIdentifierType.__iter__)r)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Ifriftrueiffalser4rJNcCs||_||_||_||_dSrKrrrr4rrrrr4r r r rLsz If.__init__cCsZg}|jdk r|d|jf|jdk r8|d|jf|jdk rR|d|jft|SNrrrrrMrrrNrOr r r r%s   z If.childrenccs:|jdk r|jV|jdk r$|jV|jdk r6|jVdSrKrrrr$r r r rQs    z If.__iter__r )NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) InitListrNcCs||_||_dSrKrrr r r rLszInitList.__init__cCs6g}t|jpgD]\}}|d||fqt|Srrrir r r r% szInitList.childrenccs|jpgD] }|Vq dSrKrrkr r r rQszInitList.__iter__r )NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Label)r"rr4rJNcCs||_||_||_dSrK)r"rr4)rr"rr4r r r rLszLabel.__init__cCs&g}|jdk r|d|jft|S)Nr)rrMrNrOr r r r%s zLabel.childrenccs|jdk r|jVdSrK)rr$r r r rQ#s zLabel.__iter__r)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) NamedInitializer)r"rer4rJNcCs||_||_||_dSrK)r"rer4)rr"rer4r r r rL+szNamedInitializer.__init__cCsPg}|jdk r|d|jft|jp(gD]\}}|d||fq,t|S)Nrezname[%d])rerMrhr"rNrir r r r%0s  zNamedInitializer.childrenccs,|jdk r|jV|jpgD] }|VqdSrK)rer"rkr r r rQ7s zNamedInitializer.__iter__r )NrRr r r r r)s  rc@s.eZdZdZd ddZddZddZd ZdS) ParamList)paramsr4rJNcCs||_||_dSrK)rr4)rrr4r r r rLAszParamList.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nz params[%d])rhrrMrNrir r r r%EszParamList.childrenccs|jpgD] }|Vq dSrK)rrkr r r rQKszParamList.__iter__r )NrRr r r r r?s  rc@s.eZdZdZd ddZddZddZd ZdS) PtrDecl)rwrGr4rJNcCs||_||_||_dSrK)rwrGr4)rrwrGr4r r r rLSszPtrDecl.__init__cCs&g}|jdk r|d|jft|SNrGrGrMrNrOr r r r%Xs zPtrDecl.childrenccs|jdk r|jVdSrKrGr$r r r rQ]s zPtrDecl.__iter__)rw)NrRr r r r rQs  rc@s.eZdZdZd ddZddZddZd ZdS) Return)rer4rJNcCs||_||_dSrK)rer4)rrer4r r r rLeszReturn.__init__cCs&g}|jdk r|d|jft|SNrererMrNrOr r r r%is zReturn.childrenccs|jdk r|jVdSrKrer$r r r rQns zReturn.__iter__r )NrRr r r r rcs  rc@s.eZdZdZd ddZddZddZd ZdS) StaticAssert)rmessager4rJNcCs||_||_||_dSrK)rrr4)rrrr4r r r rLvszStaticAssert.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nrr)rrMrrNrOr r r r%{s   zStaticAssert.childrenccs(|jdk r|jV|jdk r$|jVdSrK)rrr$r r r rQs  zStaticAssert.__iter__r )NrRr r r r rts  rc@s.eZdZdZd ddZddZddZd ZdS) Structr"r}r4rJNcCs||_||_||_dSrKr"r}r4rr"r}r4r r r rLszStruct.__init__cCs6g}t|jpgD]\}}|d||fqt|Sr~rrir r r r%szStruct.childrenccs|jpgD] }|Vq dSrKrrkr r r rQszStruct.__iter__r)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) StructRef)r"rGfieldr4rJNcCs||_||_||_||_dSrK)r"rGrr4)rr"rGrr4r r r rLszStructRef.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nr"r)r"rMrrNrOr r r r%s   zStructRef.childrenccs(|jdk r|jV|jdk r$|jVdSrK)r"rr$r r r rQs  zStructRef.__iter__r)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) SwitchrNcCs||_||_||_dSrKrrr r r rLszSwitch.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|SrrrOr r r r%s   zSwitch.childrenccs(|jdk r|jV|jdk r$|jVdSrKrr$r r r rQs  zSwitch.__iter__r )NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) TernaryOprNcCs||_||_||_||_dSrKrrr r r rLszTernaryOp.__init__cCsZg}|jdk r|d|jf|jdk r8|d|jf|jdk rR|d|jft|SrrrOr r r r%s   zTernaryOp.childrenccs:|jdk r|jV|jdk r$|jV|jdk r6|jVdSrKrr$r r r rQs    zTernaryOp.__iter__r )NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) TypeDecl)declnamerwrxrGr4rJNcCs"||_||_||_||_||_dSrK)rrwrxrGr4)rrrwrxrGr4r r r rLs zTypeDecl.__init__cCs&g}|jdk r|d|jft|SrrrOr r r r%s zTypeDecl.childrenccs|jdk r|jVdSrKrr$r r r rQs zTypeDecl.__iter__)rrwrx)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Typedef)r"rwryrGr4rJNcCs"||_||_||_||_||_dSrK)r"rwryrGr4)rr"rwryrGr4r r r rLs zTypedef.__init__cCs&g}|jdk r|d|jft|SrrrOr r r r%s zTypedef.childrenccs|jdk r|jVdSrKrr$r r r rQs zTypedef.__iter__)r"rwry)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Typename)r"rwrxrGr4rJNcCs"||_||_||_||_||_dSrK)r"rwrxrGr4)rr"rwrxrGr4r r r rL s zTypename.__init__cCs&g}|jdk r|d|jft|SrrrOr r r r%s zTypename.childrenccs|jdk r|jVdSrKrr$r r r rQs zTypename.__iter__)r"rwrx)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) UnaryOp)rVrer4rJNcCs||_||_||_dSrK)rVrer4)rrVrer4r r r rLszUnaryOp.__init__cCs&g}|jdk r|d|jft|SrrrOr r r r%#s zUnaryOp.childrenccs|jdk r|jVdSrKrr$r r r rQ(s zUnaryOp.__iter__rY)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) UnionrNcCs||_||_||_dSrKrrr r r rL0szUnion.__init__cCs6g}t|jpgD]\}}|d||fqt|Sr~rrir r r r%5szUnion.childrenccs|jpgD] }|Vq dSrKrrkr r r rQ;szUnion.__iter__r)NrRr r r r r.s  rc@s.eZdZdZd ddZddZddZd ZdS) WhilerNcCs||_||_||_dSrKrrr r r rLCszWhile.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|SrrrOr r r r%Hs   zWhile.childrenccs(|jdk r|jV|jdk r$|jVdSrKrr$r r r rQNs  zWhile.__iter__r )NrRr r r r rAs  rc@s.eZdZdZd ddZddZddZd ZdS) Pragma)stringr4rJNcCs||_||_dSrK)rr4)rrr4r r r rLXszPragma.__init__cCs g}t|SrKrtrOr r r r%\szPragma.childrenccsdSrKr r$r r r rQ`szPragma.__iter__)r)NrRr r r r rVs  r)6r;robjectrr=rFrSrUrZr\r_rdrlrnrprrrurvr|rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r sh O: