a oez@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 0C:\Program Files\Certbot\pkgs\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/r0r1r2ZleadZnvlistZattrstrZvlistZ 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. 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_qualsr5 __weakref__NcCs||_||_||_||_dSN)rGrHrIr5)rrGrHrIr5r r r __init__szArrayDecl.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)NrGrH)rGappendrHtuplernodelistr r r r&szArrayDecl.childrenccs(|jdur|jV|jdur$|jVdSrK)rGrHr%r r r __iter__s  zArrayDecl.__iter__)rI)Nrr9r:rrLr&rQr4r r r r rFs  rFc@s.eZdZdZd ddZddZddZd ZdS) ArrayRef)r# subscriptr5rJNcCs||_||_||_dSrK)r#rTr5)rr#rTr5r r r rLszArrayRef.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)Nr#rT)r#rMrTrNrOr r r r&szArrayRef.childrenccs(|jdur|jV|jdur$|jVdSrK)r#rTr%r r r rQs  zArrayRef.__iter__r )NrRr r r r rSs  rSc@s.eZdZdZd ddZddZddZd ZdS) Assignment)oplvaluervaluer5rJNcCs||_||_||_||_dSrK)rVrWrXr5)rrVrWrXr5r r r rLszAssignment.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)NrWrX)rWrMrXrNrOr r r r&szAssignment.childrenccs(|jdur|jV|jdur$|jVdSrK)rWrXr%r r r rQs  zAssignment.__iter__rV)NrRr r r r rUs  rUc@s.eZdZdZd ddZddZddZd ZdS) Alignas) alignmentr5rJNcCs||_||_dSrK)r[r5)rr[r5r r r rLszAlignas.__init__cCs&g}|jdur|d|jft|S)Nr[)r[rMrNrOr r r r&szAlignas.childrenccs|jdur|jVdSrK)r[r%r r r rQs zAlignas.__iter__r )NrRr r r r rZs  rZc@s.eZdZdZd ddZddZddZd ZdS) BinaryOp)rVleftrightr5rJNcCs||_||_||_||_dSrK)rVr]r^r5)rrVr]r^r5r r r rLszBinaryOp.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)Nr]r^)r]rMr^rNrOr r r r&szBinaryOp.childrenccs(|jdur|jV|jdur$|jVdSrK)r]r^r%r r r rQs  zBinaryOp.__iter__rY)NrRr r r r r\s  r\c@s.eZdZdZd ddZddZddZd ZdS) Breakr5rJNcCs ||_dSrKr5rr5r 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)exprstmtsr5rJNcCs||_||_||_dSrK)rerfr5)rrerfr5r r r rLsz Case.__init__cCsPg}|jdur|d|jft|jp(gD]\}}|d||fq,t|S)Nre stmts[%d])rerM enumeraterfrNrrPir8r r r r&$s z Case.childrenccs,|jdur|jV|jpgD] }|VqdSrK)rerfrr8r r r rQ+s z Case.__iter__r )NrRr r r r rds  rdc@s.eZdZdZd ddZddZddZd ZdS) Cast)to_typerer5rJNcCs||_||_||_dSrK)rmrer5)rrmrer5r r r rL5sz Cast.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)Nrmre)rmrMrerNrOr r r r&:sz Cast.childrenccs(|jdur|jV|jdur$|jVdSrK)rmrer%r r r rQ@s  z Cast.__iter__r )NrRr r r r rl3s  rlc@s.eZdZdZd ddZddZddZd ZdS) Compound) block_itemsr5rJNcCs||_||_dSrK)ror5)rror5r 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)rGinitr5rJNcCs||_||_||_dSrK)rGrqr5)rrGrqr5r r r rL\szCompoundLiteral.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)NrGrq)rGrMrqrNrOr r r r&aszCompoundLiteral.childrenccs(|jdur|jV|jdur$|jVdSrK)rGrqr%r r r rQgs  zCompoundLiteral.__iter__r )NrRr r r r rpZs  rpc@s.eZdZdZd ddZddZddZd ZdS) Constant)rGvaluer5rJNcCs||_||_||_dSrK)rGrsr5)rrGrsr5r 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#qualsalignstoragefuncspecrGrqbitsizer5rJNc Cs:||_||_||_||_||_||_||_||_| |_dSrK) r#rwrxryrzrGrqr{r5) rr#rwrxryrzrGrqr{r5r r r rLsz Decl.__init__cCsZg}|jdur|d|jf|jdur8|d|jf|jdurR|d|jft|S)NrGrqr{)rGrMrqr{rNrOr r r r&s z Decl.childrenccs:|jdur|jV|jdur$|jV|jdur6|jVdSrK)rGrqr{r%r r r rQs    z Decl.__iter__)r#rwrxryrz)NrRr r r r rvs  rvc@s.eZdZdZd ddZddZddZd ZdS) DeclList)declsr5rJNcCs||_||_dSrK)r}r5)rr}r5r 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)rfr5rJNcCs||_||_dSrK)rfr5)rrfr5r 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) DoWhilecondstmtr5rJNcCs||_||_||_dSrKrrr5rrrr5r r r rLszDoWhile.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|SNrrrrMrrNrOr r r r&szDoWhile.childrenccs(|jdur|jV|jdur$|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#valuesr5rJNcCs||_||_||_dSrK)r#rr5)rr#rr5r r r rLsz Enum.__init__cCs&g}|jdur|d|jft|S)Nr)rrMrNrOr r r r&sz Enum.childrenccs|jdur|jVdSrK)rr%r r r rQ s z Enum.__iter__r#)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Enumerator)r#rsr5rJNcCs||_||_||_dSrK)r#rsr5)rr#rsr5r r r rLszEnumerator.__init__cCs&g}|jdur|d|jft|S)Nrs)rsrMrNrOr r r r&szEnumerator.childrenccs|jdur|jVdSrK)rsr%r r r rQs zEnumerator.__iter__r)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) EnumeratorList) enumeratorsr5rJNcCs||_||_dSrK)rr5)rrr5r 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) ExprListexprsr5rJNcCs||_||_dSrKrr5rrr5r 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)extr5rJNcCs||_||_dSrK)rr5)rrr5r 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)rqrnextrr5rJNcCs"||_||_||_||_||_dSrK)rqrrrr5)rrqrrrr5r r r rL]s z For.__init__cCstg}|jdur|d|jf|jdur8|d|jf|jdurR|d|jf|jdurl|d|jft|S)Nrqrrr)rqrMrrrrNrOr r r r&ds z For.childrenccsL|jdur|jV|jdur$|jV|jdur6|jV|jdurH|jVdSrK)rqrrrr%r r r rQls    z For.__iter__r )NrRr r r r r[s   rc@s.eZdZdZd ddZddZddZd ZdS) FuncCall)r#argsr5rJNcCs||_||_||_dSrK)r#rr5)rr#rr5r r r rLzszFuncCall.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)Nr#r)r#rMrrNrOr r r r&szFuncCall.childrenccs(|jdur|jV|jdur$|jVdSrK)r#rr%r r r rQs  zFuncCall.__iter__r )NrRr r r r rxs  rc@s.eZdZdZd ddZddZddZd ZdS) FuncDecl)rrGr5rJNcCs||_||_||_dSrK)rrGr5)rrrGr5r r r rLszFuncDecl.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)NrrG)rrMrGrNrOr r r r&szFuncDecl.childrenccs(|jdur|jV|jdur$|jVdSrK)rrGr%r r r rQs  zFuncDecl.__iter__r )NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) FuncDef)decl param_declsbodyr5rJNcCs||_||_||_||_dSrK)rrrr5)rrrrr5r r r rLszFuncDef.__init__cCsjg}|jdur|d|jf|jdur8|d|jft|jpBgD]\}}|d||fqFt|S)Nrrzparam_decls[%d])rrMrrhrrNrir r r r&s zFuncDef.childrenccs>|jdur|jV|jdur$|jV|jp,gD] }|Vq.dSrK)rrrrkr r r rQs   zFuncDef.__iter__r )NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Gotor#r5rJNcCs||_||_dSrKr#r5rr#r5r 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)namesr5rJNcCs||_||_dSrK)rr5)rrr5r 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) Ifriftrueiffalser5rJNcCs||_||_||_||_dSrKrrrr5rrrrr5r r r rLsz If.__init__cCsZg}|jdur|d|jf|jdur8|d|jf|jdurR|d|jft|SNrrrrrMrrrNrOr r r r&s z If.childrenccs:|jdur|jV|jdur$|jV|jdur6|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#rr5rJNcCs||_||_||_dSrK)r#rr5)rr#rr5r r r rLszLabel.__init__cCs&g}|jdur|d|jft|S)Nr)rrMrNrOr r r r&szLabel.childrenccs|jdur|jVdSrK)rr%r r r rQ#s zLabel.__iter__r)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) NamedInitializer)r#rer5rJNcCs||_||_||_dSrK)r#rer5)rr#rer5r r r rL+szNamedInitializer.__init__cCsPg}|jdur|d|jft|jp(gD]\}}|d||fq,t|S)Nrezname[%d])rerMrhr#rNrir r r r&0s zNamedInitializer.childrenccs,|jdur|jV|jpgD] }|VqdSrK)rer#rkr r r rQ7s zNamedInitializer.__iter__r )NrRr r r r r)s  rc@s.eZdZdZd ddZddZddZd ZdS) ParamList)paramsr5rJNcCs||_||_dSrK)rr5)rrr5r 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)rwrGr5rJNcCs||_||_||_dSrK)rwrGr5)rrwrGr5r r r rLSszPtrDecl.__init__cCs&g}|jdur|d|jft|SNrGrGrMrNrOr r r r&XszPtrDecl.childrenccs|jdur|jVdSrKrGr%r r r rQ]s zPtrDecl.__iter__)rw)NrRr r r r rQs  rc@s.eZdZdZd ddZddZddZd ZdS) Return)rer5rJNcCs||_||_dSrK)rer5)rrer5r r r rLeszReturn.__init__cCs&g}|jdur|d|jft|SNrererMrNrOr r r r&iszReturn.childrenccs|jdur|jVdSrKrer%r r r rQns zReturn.__iter__r )NrRr r r r rcs  rc@s.eZdZdZd ddZddZddZd ZdS) StaticAssert)rmessager5rJNcCs||_||_||_dSrK)rrr5)rrrr5r r r rLvszStaticAssert.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)Nrr)rrMrrNrOr r r r&{szStaticAssert.childrenccs(|jdur|jV|jdur$|jVdSrK)rrr%r r r rQs  zStaticAssert.__iter__r )NrRr r r r rts  rc@s.eZdZdZd ddZddZddZd ZdS) Structr#r}r5rJNcCs||_||_||_dSrKr#r}r5rr#r}r5r 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#rGfieldr5rJNcCs||_||_||_||_dSrK)r#rGrr5)rr#rGrr5r r r rLszStructRef.__init__cCs@g}|jdur|d|jf|jdur8|d|jft|S)Nr#r)r#rMrrNrOr r r r&szStructRef.childrenccs(|jdur|jV|jdur$|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}|jdur|d|jf|jdur8|d|jft|SrrrOr r r r&szSwitch.childrenccs(|jdur|jV|jdur$|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}|jdur|d|jf|jdur8|d|jf|jdurR|d|jft|SrrrOr r r r&s zTernaryOp.childrenccs:|jdur|jV|jdur$|jV|jdur6|jVdSrKrr%r r r rQs    zTernaryOp.__iter__r )NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) TypeDecl)declnamerwrxrGr5rJNcCs"||_||_||_||_||_dSrK)rrwrxrGr5)rrrwrxrGr5r r r rLs zTypeDecl.__init__cCs&g}|jdur|d|jft|SrrrOr r r r&szTypeDecl.childrenccs|jdur|jVdSrKrr%r r r rQs zTypeDecl.__iter__)rrwrx)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Typedef)r#rwryrGr5rJNcCs"||_||_||_||_||_dSrK)r#rwryrGr5)rr#rwryrGr5r r r rLs zTypedef.__init__cCs&g}|jdur|d|jft|SrrrOr r r r&szTypedef.childrenccs|jdur|jVdSrKrr%r r r rQs zTypedef.__iter__)r#rwry)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) Typename)r#rwrxrGr5rJNcCs"||_||_||_||_||_dSrK)r#rwrxrGr5)rr#rwrxrGr5r r r rL s zTypename.__init__cCs&g}|jdur|d|jft|SrrrOr r r r&szTypename.childrenccs|jdur|jVdSrKrr%r r r rQs zTypename.__iter__)r#rwrx)NrRr r r r rs  rc@s.eZdZdZd ddZddZddZd ZdS) UnaryOp)rVrer5rJNcCs||_||_||_dSrK)rVrer5)rrVrer5r r r rLszUnaryOp.__init__cCs&g}|jdur|d|jft|SrrrOr r r r&#szUnaryOp.childrenccs|jdur|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}|jdur|d|jf|jdur8|d|jft|SrrrOr r r r&HszWhile.childrenccs(|jdur|jV|jdur$|jVdSrKrr%r r r rQNs  zWhile.__iter__r )NrRr r r r rAs  rc@s.eZdZdZd ddZddZddZd ZdS) Pragma)stringr5rJNcCs||_||_dSrK)rr5)rrr5r 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: