U q`v@s$ddlZddZGdddeZGdddeZGdd 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`dadaeZ1GdbdcdceZ2GdddedeeZ3dS)fNcCs2t|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-nv4zd3e_/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) 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 rZs  rZc@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)rcrdr4)rrcrdr4r r r rLsz Case.__init__cCsPg}|jdk r|d|jft|jp(gD]\}}|d||fq,t|S)Nrc stmts[%d])rcrM enumeraterdrNrrPir8r r r r%s  z Case.childrenccs,|jdk r|jV|jpgD] }|VqdSrK)rcrdrr8r r r rQs z Case.__iter__r )NrRr r r r rb s  rbc@s.eZdZdZd ddZddZddZd ZdS) Cast)to_typercr4rJNcCs||_||_||_dSrK)rkrcr4)rrkrcr4r r r rL$sz Cast.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nrkrc)rkrMrcrNrOr r r r%)s   z Cast.childrenccs(|jdk r|jV|jdk r$|jVdSrK)rkrcr$r r r rQ/s  z Cast.__iter__r )NrRr r r r rj"s  rjc@s.eZdZdZd ddZddZddZd ZdS) Compound) block_itemsr4rJNcCs||_||_dSrK)rmr4)rrmr4r r r rL9szCompound.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nzblock_items[%d])rfrmrMrNrgr r r r%=szCompound.childrenccs|jpgD] }|Vq dSrK)rmrir r r rQCszCompound.__iter__r )NrRr r r r rl7s  rlc@s.eZdZdZd ddZddZddZd ZdS) CompoundLiteral)rGinitr4rJNcCs||_||_||_dSrK)rGror4)rrGror4r r r rLKszCompoundLiteral.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)NrGro)rGrMrorNrOr r r r%Ps   zCompoundLiteral.childrenccs(|jdk r|jV|jdk r$|jVdSrK)rGror$r r r rQVs  zCompoundLiteral.__iter__r )NrRr r r r rnIs  rnc@s.eZdZdZd ddZddZddZd ZdS) Constant)rGvaluer4rJNcCs||_||_||_dSrK)rGrqr4)rrGrqr4r r r rL`szConstant.__init__cCs g}t|SrKrNrOr r r r%eszConstant.childrenccsdSrKr r$r r r rQiszConstant.__iter__)rGrq)NrRr r r r rp^s  rpc@s.eZdZdZd ddZddZddZd ZdS) Continuer^NcCs ||_dSrKr_r`r r r rLqszContinue.__init__cCsdSrar r$r r r r%tszContinue.childrenccsdSrKr r$r r r rQwszContinue.__iter__r )NrRr r r r rsos  rsc@s.eZdZdZd ddZddZddZd ZdS) Decl) r"qualsstoragefuncspecrGrobitsizer4rJNc Cs4||_||_||_||_||_||_||_||_dSrK)r"rurvrwrGrorxr4) rr"rurvrwrGrorxr4r r r rLsz Decl.__init__cCsZg}|jdk r|d|jf|jdk r8|d|jf|jdk rR|d|jft|S)NrGrorx)rGrMrorxrNrOr r r r%s   z Decl.childrenccs:|jdk r|jV|jdk r$|jV|jdk r6|jVdSrK)rGrorxr$r r r rQs    z Decl.__iter__)r"rurvrw)NrRr r r r rt}s  rtc@s.eZdZdZd ddZddZddZd ZdS) DeclList)declsr4rJNcCs||_||_dSrK)rzr4)rrzr4r r r rLszDeclList.__init__cCs6g}t|jpgD]\}}|d||fqt|SNz decls[%d]rfrzrMrNrgr r r r%szDeclList.childrenccs|jpgD] }|Vq dSrKrzrir r r rQszDeclList.__iter__r )NrRr r r r rys  ryc@s.eZdZdZd ddZddZddZd ZdS) Default)rdr4rJNcCs||_||_dSrK)rdr4)rrdr4r r r rLszDefault.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nre)rfrdrMrNrgr r r r%szDefault.childrenccs|jpgD] }|Vq dSrK)rdrir r r rQszDefault.__iter__r )NrRr r r r r~s  r~c@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 ||_dSrKr_r`r r r rLszEllipsisParam.__init__cCsdSrar 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 ||_dSrKr_r`r r r rLszEmptyStatement.__init__cCsdSrar 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 rQs z Enum.__iter__r")NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Enumerator)r"rqr4rJNcCs||_||_||_dSrK)r"rqr4)rr"rqr4r r r rLszEnumerator.__init__cCs&g}|jdk r|d|jft|S)Nrq)rqrMrNrOr r r r%s zEnumerator.childrenccs|jdk r|jVdSrK)rqr$r r r rQ s zEnumerator.__iter__r)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) EnumeratorList) enumeratorsr4rJNcCs||_||_dSrK)rr4)rrr4r r r rLszEnumeratorList.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nzenumerators[%d])rfrrMrNrgr r r r%szEnumeratorList.childrenccs|jpgD] }|Vq dSrK)rrir r r rQszEnumeratorList.__iter__r )NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) ExprListexprsr4rJNcCs||_||_dSrKrr4rrr4r r r rL'szExprList.__init__cCs6g}t|jpgD]\}}|d||fqt|SNz exprs[%d]rfrrMrNrgr r r r%+szExprList.childrenccs|jpgD] }|Vq dSrKrrir r r rQ1szExprList.__iter__r )NrRr r r r r%s  rc@s.eZdZdZd ddZddZddZd ZdS) FileAST)extr4rJNcCs||_||_dSrK)rr4)rrr4r r r rL9szFileAST.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nzext[%d])rfrrMrNrgr r r r%=szFileAST.childrenccs|jpgD] }|Vq dSrK)rrir r r rQCszFileAST.__iter__r )NrRr r r r r7s  rc@s.eZdZdZd ddZddZddZd ZdS) For)rornextrr4rJNcCs"||_||_||_||_||_dSrK)rorrrr4)rrorrrr4r r r rLKs z For.__init__cCstg}|jdk r|d|jf|jdk r8|d|jf|jdk rR|d|jf|jdk rl|d|jft|S)Nrorrr)rorMrrrrNrOr r r r%Rs    z For.childrenccsL|jdk r|jV|jdk r$|jV|jdk r6|jV|jdk rH|jVdSrK)rorrrr$r r r rQZs    z For.__iter__r )NrRr r r r rIs   rc@s.eZdZdZd ddZddZddZd ZdS) FuncCall)r"argsr4rJNcCs||_||_||_dSrK)r"rr4)rr"rr4r r r rLhszFuncCall.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|S)Nr"r)r"rMrrNrOr r r r%ms   zFuncCall.childrenccs(|jdk r|jV|jdk r$|jVdSrK)r"rr$r r r rQss  zFuncCall.__iter__r )NrRr r r r rfs  rc@s.eZdZdZd ddZddZddZd ZdS) FuncDecl)rrGr4rJNcCs||_||_||_dSrK)rrGr4)rrrGr4r r r rL}szFuncDecl.__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 r{s  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])rrMrrfrrNrgr r r r%s  zFuncDef.childrenccs>|jdk r|jV|jdk r$|jV|jp,gD] }|Vq.dSrK)rrrrir 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|SrKrrrOr 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|SrKrrrOr 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|SrKrrrOr 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|Srrrgr r r r%szInitList.childrenccs|jpgD] }|Vq dSrKrrir 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 rQs zLabel.__iter__r)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) NamedInitializer)r"rcr4rJNcCs||_||_||_dSrK)r"rcr4)rr"rcr4r r r rLszNamedInitializer.__init__cCsPg}|jdk r|d|jft|jp(gD]\}}|d||fq,t|S)Nrczname[%d])rcrMrfr"rNrgr r r r%s  zNamedInitializer.childrenccs,|jdk r|jV|jpgD] }|VqdSrK)rcr"rir r r rQ%s zNamedInitializer.__iter__r )NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) ParamList)paramsr4rJNcCs||_||_dSrK)rr4)rrr4r r r rL/szParamList.__init__cCs6g}t|jpgD]\}}|d||fqt|S)Nz params[%d])rfrrMrNrgr r r r%3szParamList.childrenccs|jpgD] }|Vq dSrK)rrir r r rQ9szParamList.__iter__r )NrRr r r r r-s  rc@s.eZdZdZd ddZddZddZd ZdS) PtrDecl)rurGr4rJNcCs||_||_||_dSrK)rurGr4)rrurGr4r r r rLAszPtrDecl.__init__cCs&g}|jdk r|d|jft|SNrGrGrMrNrOr r r r%Fs zPtrDecl.childrenccs|jdk r|jVdSrKrGr$r r r rQKs zPtrDecl.__iter__)ru)NrRr r r r r?s  rc@s.eZdZdZd ddZddZddZd ZdS) Return)rcr4rJNcCs||_||_dSrK)rcr4)rrcr4r r r rLSszReturn.__init__cCs&g}|jdk r|d|jft|SNrcrcrMrNrOr r r r%Ws zReturn.childrenccs|jdk r|jVdSrKrcr$r r r rQ\s zReturn.__iter__r )NrRr r r r rQs  rc@s.eZdZdZd ddZddZddZd ZdS) Structr"rzr4rJNcCs||_||_||_dSrKr"rzr4rr"rzr4r r r rLdszStruct.__init__cCs6g}t|jpgD]\}}|d||fqt|Sr{r|rgr r r r%iszStruct.childrenccs|jpgD] }|Vq dSrKr}rir r r rQoszStruct.__iter__r)NrRr r r r rbs  rc@s.eZdZdZd ddZddZddZd ZdS) StructRef)r"rGfieldr4rJNcCs||_||_||_||_dSrK)r"rGrr4)rr"rGrr4r r r rLwszStructRef.__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 rus  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)declnamerurGr4rJNcCs||_||_||_||_dSrK)rrurGr4)rrrurGr4r r r rLszTypeDecl.__init__cCs&g}|jdk r|d|jft|SrrrOr r r r%s zTypeDecl.childrenccs|jdk r|jVdSrKrr$r r r rQs zTypeDecl.__iter__)rru)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Typedef)r"rurvrGr4rJNcCs"||_||_||_||_||_dSrK)r"rurvrGr4)rr"rurvrGr4r 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"rurv)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Typename)r"rurGr4rJNcCs||_||_||_||_dSrK)r"rurGr4)rr"rurGr4r r r rLszTypename.__init__cCs&g}|jdk r|d|jft|SrrrOr r r r%s zTypename.childrenccs|jdk r|jVdSrKrr$r r r rQs zTypename.__iter__)r"ru)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) UnaryOp)rVrcr4rJNcCs||_||_||_dSrK)rVrcr4)rrVrcr4r r r rLszUnaryOp.__init__cCs&g}|jdk r|d|jft|SrrrOr r r r%s zUnaryOp.childrenccs|jdk r|jVdSrKrr$r r r rQs zUnaryOp.__iter__rY)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) UnionrNcCs||_||_||_dSrKrrr r r rLszUnion.__init__cCs6g}t|jpgD]\}}|d||fqt|Sr{r|rgr r r r% szUnion.childrenccs|jpgD] }|Vq dSrKr}rir r r rQszUnion.__iter__r)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) WhilerNcCs||_||_||_dSrKrrr r r rLszWhile.__init__cCs@g}|jdk r|d|jf|jdk r8|d|jft|SrrrOr r r r%s   zWhile.childrenccs(|jdk r|jV|jdk r$|jVdSrKrr$r r r rQ%s  zWhile.__iter__r )NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Pragma)stringr4rJNcCs||_||_dSrK)rr4)rrr4r r r rL/szPragma.__init__cCs g}t|SrKrrrOr r r r%3szPragma.childrenccsdSrKr r$r r r rQ7szPragma.__iter__)r)NrRr r r r r-s  r)4r;robjectrr=rFrSrUrZr]rbrjrlrnrprsrtryr~rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r sd O: