U cz@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-5kwuir5_/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/r0r1leadZnvlistZattrstrvlistZ 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)rF)rrCcr r r rBszNodeVisitor.generic_visit)rr:r;__doc__r@rFrBr r r r r>ms!r>c@s.eZdZdZd ddZddZddZd ZdS) ArrayDecl)typedim dim_qualsr4 __weakref__NcCs||_||_||_||_dSN)rJrKrLr4)rrJrKrLr4r r r __init__szArrayDecl.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)NrJrK)rJappendrKtuplernodelistr r r r%s   zArrayDecl.childrenccs(|jdk r|jV|jdk r$|jVdSrN)rJrKr$r r r __iter__s  zArrayDecl.__iter__)rL)Nrr:r;rrOr%rTr3r r r r rIs  rIc@s.eZdZdZd ddZddZddZd ZdS) ArrayRef)r" subscriptr4rMNcCs||_||_||_dSrN)r"rWr4)rr"rWr4r r r rOszArrayRef.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nr"rW)r"rPrWrQrRr r r r%s   zArrayRef.childrenccs(|jdk r|jV|jdk r$|jVdSrN)r"rWr$r r r rTs  zArrayRef.__iter__r )NrUr r r r rVs  rVc@s.eZdZdZd ddZddZddZd ZdS) Assignment)oplvaluervaluer4rMNcCs||_||_||_||_dSrN)rYrZr[r4)rrYrZr[r4r r r rOszAssignment.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)NrZr[)rZrPr[rQrRr r r r%s   zAssignment.childrenccs(|jdk r|jV|jdk r$|jVdSrN)rZr[r$r r r rTs  zAssignment.__iter__rY)NrUr r r r rXs  rXc@s.eZdZdZd ddZddZddZd ZdS) Alignas) alignmentr4rMNcCs||_||_dSrN)r^r4)rr^r4r r r rOszAlignas.__init__cCs&g}|jdk r|d|jft|S)Nr^)r^rPrQrRr r r r%s zAlignas.childrenccs|jdk r|jVdSrN)r^r$r r r rTs zAlignas.__iter__r )NrUr r r r r]s  r]c@s.eZdZdZd ddZddZddZd ZdS) BinaryOp)rYleftrightr4rMNcCs||_||_||_||_dSrN)rYr`rar4)rrYr`rar4r r r rOszBinaryOp.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nr`ra)r`rPrarQrRr r r r%s   zBinaryOp.childrenccs(|jdk r|jV|jdk r$|jVdSrN)r`rar$r r r rTs  zBinaryOp.__iter__r\)NrUr r r r r_s  r_c@s.eZdZdZd ddZddZddZd ZdS) Breakr4rMNcCs ||_dSrNr4rr4r r r rOszBreak.__init__cCsdSNr r r$r r r r%szBreak.childrenccsdSrNr r$r r r rTszBreak.__iter__r )NrUr r r r rbs  rbc@s.eZdZdZd ddZddZddZd ZdS) Case)exprstmtsr4rMNcCs||_||_||_dSrN)rhrir4)rrhrir4r r r rOsz Case.__init__cCsPg}|jdk r|d|jft|jp(gD]\}}|d||fq,t|S)Nrh stmts[%d])rhrP enumeraterirQrrSir9r r r r%$s  z Case.childrenccs,|jdk r|jV|jpgD] }|VqdSrN)rhrirr9r r r rT+s z Case.__iter__r )NrUr r r r rgs  rgc@s.eZdZdZd ddZddZddZd ZdS) Cast)to_typerhr4rMNcCs||_||_||_dSrN)rprhr4)rrprhr4r r r rO5sz Cast.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nrprh)rprPrhrQrRr r r r%:s   z Cast.childrenccs(|jdk r|jV|jdk r$|jVdSrN)rprhr$r r r rT@s  z Cast.__iter__r )NrUr r r r ro3s  roc@s.eZdZdZd ddZddZddZd ZdS) Compound) block_itemsr4rMNcCs||_||_dSrN)rrr4)rrrr4r r r rOJszCompound.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nzblock_items[%d])rkrrrPrQrlr r r r%NszCompound.childrenccs|jpgD] }|Vq dSrN)rrrnr r r rTTszCompound.__iter__r )NrUr r r r rqHs  rqc@s.eZdZdZd ddZddZddZd ZdS) CompoundLiteral)rJinitr4rMNcCs||_||_||_dSrN)rJrtr4)rrJrtr4r r r rO\szCompoundLiteral.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)NrJrt)rJrPrtrQrRr r r r%as   zCompoundLiteral.childrenccs(|jdk r|jV|jdk r$|jVdSrN)rJrtr$r r r rTgs  zCompoundLiteral.__iter__r )NrUr r r r rsZs  rsc@s.eZdZdZd ddZddZddZd ZdS) Constant)rJvaluer4rMNcCs||_||_||_dSrN)rJrvr4)rrJrvr4r r r rOqszConstant.__init__cCs g}t|SrNrQrRr r r r%vszConstant.childrenccsdSrNr r$r r r rTzszConstant.__iter__)rJrv)NrUr r r r ruos  ruc@s.eZdZdZd ddZddZddZd ZdS) ContinuercNcCs ||_dSrNrdrer r r rOszContinue.__init__cCsdSrfr r$r r r r%szContinue.childrenccsdSrNr r$r r r rTszContinue.__iter__r )NrUr r r r rxs  rxc@s.eZdZdZd ddZddZddZd ZdS) Decl) r"qualsalignstoragefuncspecrJrtbitsizer4rMNc Cs:||_||_||_||_||_||_||_||_| |_dSrN) r"rzr{r|r}rJrtr~r4) rr"rzr{r|r}rJrtr~r4r r r rOsz Decl.__init__cCsZg}|jdk r|d|jf|jdk r8|d|jf|jdk rR|d|jft|S)NrJrtr~)rJrPrtr~rQrRr r r r%s   z Decl.childrenccs:|jdk r|jV|jdk r$|jV|jdk r6|jVdSrN)rJrtr~r$r r r rTs    z Decl.__iter__)r"rzr{r|r})NrUr r r r rys  ryc@s.eZdZdZd ddZddZddZd ZdS) DeclList)declsr4rMNcCs||_||_dSrN)rr4)rrr4r r r rOszDeclList.__init__cCs6g}t|jpgD]\}}|d||fqt|SNz decls[%d]rkrrPrQrlr r r r%szDeclList.childrenccs|jpgD] }|Vq dSrNrrnr r r rTszDeclList.__iter__r )NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Default)rir4rMNcCs||_||_dSrN)rir4)rrir4r r r rOszDefault.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nrj)rkrirPrQrlr r r r%szDefault.childrenccs|jpgD] }|Vq dSrN)rirnr r r rTszDefault.__iter__r )NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) DoWhilecondstmtr4rMNcCs||_||_||_dSrNrrr4rrrr4r r r rOszDoWhile.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|SNrrrrPrrQrRr r r r%s   zDoWhile.childrenccs(|jdk r|jV|jdk r$|jVdSrNrrr$r r r rTs  zDoWhile.__iter__r )NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) EllipsisParamrcNcCs ||_dSrNrdrer r r rOszEllipsisParam.__init__cCsdSrfr r$r r r r%szEllipsisParam.childrenccsdSrNr r$r r r rTszEllipsisParam.__iter__r )NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) EmptyStatementrcNcCs ||_dSrNrdrer r r rOszEmptyStatement.__init__cCsdSrfr r$r r r r%szEmptyStatement.childrenccsdSrNr r$r r r rTszEmptyStatement.__iter__r )NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Enum)r"valuesr4rMNcCs||_||_||_dSrN)r"rr4)rr"rr4r r r rOsz Enum.__init__cCs&g}|jdk r|d|jft|S)Nr)rrPrQrRr r r r%s z Enum.childrenccs|jdk r|jVdSrN)rr$r r r rT s z Enum.__iter__r")NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Enumerator)r"rvr4rMNcCs||_||_||_dSrN)r"rvr4)rr"rvr4r r r rOszEnumerator.__init__cCs&g}|jdk r|d|jft|S)Nrv)rvrPrQrRr r r r%s zEnumerator.childrenccs|jdk r|jVdSrN)rvr$r r r rTs zEnumerator.__iter__r)NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) EnumeratorList) enumeratorsr4rMNcCs||_||_dSrN)rr4)rrr4r r r rO'szEnumeratorList.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nzenumerators[%d])rkrrPrQrlr r r r%+szEnumeratorList.childrenccs|jpgD] }|Vq dSrN)rrnr r r rT1szEnumeratorList.__iter__r )NrUr r r r r%s  rc@s.eZdZdZd ddZddZddZd ZdS) ExprListexprsr4rMNcCs||_||_dSrNrr4rrr4r r r rO9szExprList.__init__cCs6g}t|jpgD]\}}|d||fqt|SNz exprs[%d]rkrrPrQrlr r r r%=szExprList.childrenccs|jpgD] }|Vq dSrNrrnr r r rTCszExprList.__iter__r )NrUr r r r r7s  rc@s.eZdZdZd ddZddZddZd ZdS) FileAST)extr4rMNcCs||_||_dSrN)rr4)rrr4r r r rOKszFileAST.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nzext[%d])rkrrPrQrlr r r r%OszFileAST.childrenccs|jpgD] }|Vq dSrN)rrnr r r rTUszFileAST.__iter__r )NrUr r r r rIs  rc@s.eZdZdZd ddZddZddZd ZdS) For)rtrnextrr4rMNcCs"||_||_||_||_||_dSrN)rtrrrr4)rrtrrrr4r r r rO]s z For.__init__cCstg}|jdk r|d|jf|jdk r8|d|jf|jdk rR|d|jf|jdk rl|d|jft|S)Nrtrrr)rtrPrrrrQrRr r r r%ds    z For.childrenccsL|jdk r|jV|jdk r$|jV|jdk r6|jV|jdk rH|jVdSrN)rtrrrr$r r r rTls    z For.__iter__r )NrUr r r r r[s   rc@s.eZdZdZd ddZddZddZd ZdS) FuncCall)r"argsr4rMNcCs||_||_||_dSrN)r"rr4)rr"rr4r r r rOzszFuncCall.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nr"r)r"rPrrQrRr r r r%s   zFuncCall.childrenccs(|jdk r|jV|jdk r$|jVdSrN)r"rr$r r r rTs  zFuncCall.__iter__r )NrUr r r r rxs  rc@s.eZdZdZd ddZddZddZd ZdS) FuncDecl)rrJr4rMNcCs||_||_||_dSrN)rrJr4)rrrJr4r r r rOszFuncDecl.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)NrrJ)rrPrJrQrRr r r r%s   zFuncDecl.childrenccs(|jdk r|jV|jdk r$|jVdSrN)rrJr$r r r rTs  zFuncDecl.__iter__r )NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) FuncDef)decl param_declsbodyr4rMNcCs||_||_||_||_dSrN)rrrr4)rrrrr4r r r rOszFuncDef.__init__cCsjg}|jdk r|d|jf|jdk r8|d|jft|jpBgD]\}}|d||fqFt|S)Nrrzparam_decls[%d])rrPrrkrrQrlr r r r%s  zFuncDef.childrenccs>|jdk r|jV|jdk r$|jV|jp,gD] }|Vq.dSrN)rrrrnr r r rTs   zFuncDef.__iter__r )NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Gotor"r4rMNcCs||_||_dSrNr"r4rr"r4r r r rOsz Goto.__init__cCs g}t|SrNrwrRr r r r%sz Goto.childrenccsdSrNr r$r r r rTsz Goto.__iter__r)NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) IDrNcCs||_||_dSrNrrr r r rOsz ID.__init__cCs g}t|SrNrwrRr r r r%sz ID.childrenccsdSrNr r$r r r rTsz ID.__iter__r)NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) IdentifierType)namesr4rMNcCs||_||_dSrN)rr4)rrr4r r r rOszIdentifierType.__init__cCs g}t|SrNrwrRr r r r%szIdentifierType.childrenccsdSrNr r$r r r rTszIdentifierType.__iter__)r)NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Ifriftrueiffalser4rMNcCs||_||_||_||_dSrNrrrr4rrrrr4r r r rOsz If.__init__cCsZg}|jdk r|d|jf|jdk r8|d|jf|jdk rR|d|jft|SNrrrrrPrrrQrRr r r r%s   z If.childrenccs:|jdk r|jV|jdk r$|jV|jdk r6|jVdSrNrrrr$r r r rTs    z If.__iter__r )NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) InitListrNcCs||_||_dSrNrrr r r rOszInitList.__init__cCs6g}t|jpgD]\}}|d||fqt|Srrrlr r r r% szInitList.childrenccs|jpgD] }|Vq dSrNrrnr r r rTszInitList.__iter__r )NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Label)r"rr4rMNcCs||_||_||_dSrN)r"rr4)rr"rr4r r r rOszLabel.__init__cCs&g}|jdk r|d|jft|S)Nr)rrPrQrRr r r r%s zLabel.childrenccs|jdk r|jVdSrN)rr$r r r rT#s zLabel.__iter__r)NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) NamedInitializer)r"rhr4rMNcCs||_||_||_dSrN)r"rhr4)rr"rhr4r r r rO+szNamedInitializer.__init__cCsPg}|jdk r|d|jft|jp(gD]\}}|d||fq,t|S)Nrhzname[%d])rhrPrkr"rQrlr r r r%0s  zNamedInitializer.childrenccs,|jdk r|jV|jpgD] }|VqdSrN)rhr"rnr r r rT7s zNamedInitializer.__iter__r )NrUr r r r r)s  rc@s.eZdZdZd ddZddZddZd ZdS) ParamList)paramsr4rMNcCs||_||_dSrN)rr4)rrr4r r r rOAszParamList.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nz params[%d])rkrrPrQrlr r r r%EszParamList.childrenccs|jpgD] }|Vq dSrN)rrnr r r rTKszParamList.__iter__r )NrUr r r r r?s  rc@s.eZdZdZd ddZddZddZd ZdS) PtrDecl)rzrJr4rMNcCs||_||_||_dSrN)rzrJr4)rrzrJr4r r r rOSszPtrDecl.__init__cCs&g}|jdk r|d|jft|SNrJrJrPrQrRr r r r%Xs zPtrDecl.childrenccs|jdk r|jVdSrNrJr$r r r rT]s zPtrDecl.__iter__)rz)NrUr r r r rQs  rc@s.eZdZdZd ddZddZddZd ZdS) Return)rhr4rMNcCs||_||_dSrN)rhr4)rrhr4r r r rOeszReturn.__init__cCs&g}|jdk r|d|jft|SNrhrhrPrQrRr r r r%is zReturn.childrenccs|jdk r|jVdSrNrhr$r r r rTns zReturn.__iter__r )NrUr r r r rcs  rc@s.eZdZdZd ddZddZddZd ZdS) StaticAssert)rmessager4rMNcCs||_||_||_dSrN)rrr4)rrrr4r r r rOvszStaticAssert.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nrr)rrPrrQrRr r r r%{s   zStaticAssert.childrenccs(|jdk r|jV|jdk r$|jVdSrN)rrr$r r r rTs  zStaticAssert.__iter__r )NrUr r r r rts  rc@s.eZdZdZd ddZddZddZd ZdS) Structr"rr4rMNcCs||_||_||_dSrNr"rr4rr"rr4r r r rOszStruct.__init__cCs6g}t|jpgD]\}}|d||fqt|Srrrlr r r r%szStruct.childrenccs|jpgD] }|Vq dSrNrrnr r r rTszStruct.__iter__r)NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) StructRef)r"rJfieldr4rMNcCs||_||_||_||_dSrN)r"rJrr4)rr"rJrr4r r r rOszStructRef.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nr"r)r"rPrrQrRr r r r%s   zStructRef.childrenccs(|jdk r|jV|jdk r$|jVdSrN)r"rr$r r r rTs  zStructRef.__iter__r)NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) SwitchrNcCs||_||_||_dSrNrrr r r rOszSwitch.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|SrrrRr r r r%s   zSwitch.childrenccs(|jdk r|jV|jdk r$|jVdSrNrr$r r r rTs  zSwitch.__iter__r )NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) TernaryOprNcCs||_||_||_||_dSrNrrr r r rOszTernaryOp.__init__cCsZg}|jdk r|d|jf|jdk r8|d|jf|jdk rR|d|jft|SrrrRr r r r%s   zTernaryOp.childrenccs:|jdk r|jV|jdk r$|jV|jdk r6|jVdSrNrr$r r r rTs    zTernaryOp.__iter__r )NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) TypeDecl)declnamerzr{rJr4rMNcCs"||_||_||_||_||_dSrN)rrzr{rJr4)rrrzr{rJr4r r r rOs zTypeDecl.__init__cCs&g}|jdk r|d|jft|SrrrRr r r r%s zTypeDecl.childrenccs|jdk r|jVdSrNrr$r r r rTs zTypeDecl.__iter__)rrzr{)NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Typedef)r"rzr|rJr4rMNcCs"||_||_||_||_||_dSrN)r"rzr|rJr4)rr"rzr|rJr4r r r rOs zTypedef.__init__cCs&g}|jdk r|d|jft|SrrrRr r r r%s zTypedef.childrenccs|jdk r|jVdSrNrr$r r r rTs zTypedef.__iter__)r"rzr|)NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Typename)r"rzr{rJr4rMNcCs"||_||_||_||_||_dSrN)r"rzr{rJr4)rr"rzr{rJr4r r r rO s zTypename.__init__cCs&g}|jdk r|d|jft|SrrrRr r r r%s zTypename.childrenccs|jdk r|jVdSrNrr$r r r rTs zTypename.__iter__)r"rzr{)NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) UnaryOp)rYrhr4rMNcCs||_||_||_dSrN)rYrhr4)rrYrhr4r r r rOszUnaryOp.__init__cCs&g}|jdk r|d|jft|SrrrRr r r r%#s zUnaryOp.childrenccs|jdk r|jVdSrNrr$r r r rT(s zUnaryOp.__iter__r\)NrUr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) UnionrNcCs||_||_||_dSrNrrr r r rO0szUnion.__init__cCs6g}t|jpgD]\}}|d||fqt|Srrrlr r r r%5szUnion.childrenccs|jpgD] }|Vq dSrNrrnr r r rT;szUnion.__iter__r)NrUr r r r r.s  rc@s.eZdZdZd ddZddZddZd ZdS) WhilerNcCs||_||_||_dSrNrrr r r rOCszWhile.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|SrrrRr r r r%Hs   zWhile.childrenccs(|jdk r|jV|jdk r$|jVdSrNrr$r r r rTNs  zWhile.__iter__r )NrUr r r r rAs  rc@s.eZdZdZd ddZddZddZd ZdS) Pragma)stringr4rMNcCs||_||_dSrN)rr4)rrr4r r r rOXszPragma.__init__cCs g}t|SrNrwrRr r r r%\szPragma.childrenccsdSrNr r$r r r rT`szPragma.__iter__)r)NrUr r r r rVs  r)6r<robjectrr>rIrVrXr]r_rbrgrorqrsrurxryrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r sh O: