|iddlZddlmZmZmZmZdZGddZGddZGdd eZ Gd d eZ Gd d eZ GddeZ GddeZ GddeZGddeZGddeZGddeZGddeZGddeZGddeZGd d!eZGd"d#eZGd$d%eZGd&d'eZGd(d)eZGd*d+eZGd,d-eZGd.d/eZGd0d1eZGd2d3eZGd4d5eZGd6d7eZ Gd8d9eZ!Gd:d;eZ"Gd<d=eZ#Gd>d?eZ$Gd@dAeZ%GdBdCeZ&GdDdEeZ'GdFdGeZ(GdHdIeZ)GdJdKeZ*GdLdMeZ+GdNdOeZ,GdPdQeZ-GdRdSeZ.GdTdUeZ/GdVdWeZ0GdXdYeZ1GdZd[eZ2Gd\d]eZ3Gd^d_eZ4Gd`daeZ5GdbdceZ6GdddeeZ7GdfdgeZ8GdhdieZ9dS)jN)AnyClassVarIOOptionalct|tr%ddd|DzdzSt|S)z[ Get the representation of an object, with dedicated pprint-like format for lists. [z, c3\K|]'}t|ddV(dS)  N)_reprreplace).0es =C:\PYTHON\_runtimes\venv\Lib\site-packages\pycparser/c_ast.py z_repr..s8"N"NQ588#3#3D%#@#@"N"N"N"N"N"Nz ]) isinstancelistjoinrepr)objs rr r sN#tfkk"N"N#"N"N"NOOPSXXXCyyrceZdZUdZ dZeeedfed<e e ed<dZ dZ e jddd ddd fd eed ed edededede efdZd S)Node. attr_namescoordc |jjdz}d}d}|jddD]}||z }||z }||dztt ||dddt |t |jjzzzzz }d }d dt |jjzz}||d zz }|S) z5Generates a python representation of the current node(N=r z  ,r )) __class____name__ __slots__r getattrr len)selfresultindent separatornames r__repr__z Node.__repr__'s(3. N3B3' B BD i F f F '$--..66#TS9P5Q5Q)Q"RS FIcC(?$@$@@AFF&3, rcdS)z)A sequence of all children that are NodesNrr*s rchildrenz Node.childrenBs rrFTNbufoffset attrnamesshowemptyattrs nodenames showcoord _my_node_namec  d|z}|r.|,||jjzdz|zdzn%||jjzdzjrnd fdjD} |r dd | D} ndd | D} || |r|d jd |d D]$\} } | ||dz|||| %dS)aPretty 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. showemptyattrs: False if you want to suppress printing empty attributes. 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. r"Nz : z: c`|dup%t|dot|dkdSdSdS)N__len__r)hasattrr))vs ris_emptyzNode.show..is_emptyps?T Dga33CA! DDDCCCrcjg|]/}st||t|f0Sr)r()rnr?r*r6s r zNode.show..ss\!*2'$2B2B)C)CGD!$$%rz, c3*K|]\}}|d|VdS)r!Nr)rr.values rrzNode.show..ys4#P#P+$t$5$5e$5$5#P#P#P#P#P#Prc3"K|] \}}|V dSNr)r_rDs rrzNode.show..{s(#F#F81euJ#F#F#F#F#F#Frz (at r$r )r4r5r6r7r8r9)writer%r&rrrr2show)r*r3r4r5r6r7r8r9leadnvlistattrstr child_namechildr?s` ` @rrJz Node.showFsDV|  =2 IIdT^44t;mKeS T T T T IIdT^44t; < < < ?  E E EF  G))#P#P#P#P#PPP))#F#Fv#F#F#FFF IIg     - II+dj+++ , , , $!%   J JJz#-##(       r)r& __module__ __qualname__r'rrtuplestr__annotations__rrr/r2sysstdoutrintboolrJrrrrr sI,.JsCx)... C=6   z#'+EE WEE E  E  EE }EEEEEErrc.eZdZdZdZdefdZdefdZdS) NodeVisitoraA 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) Nnodec|ji|_|j|jjd}|9d|jjz}t |||j}||j|jj<||S)z Visit a node.Nvisit_) _method_cachegetr%r&r( generic_visit)r*r[visitormethods rvisitzNodeVisitor.visitsz   %!#D $(()@$GG ? 77FdFD,>??G:AD t~6 7wt}}rcd|D]\}}||dS)ztCalled if no explicit visitor function exists for a node. Implements preorder visiting of the node. N)r2rc)r*r[rGcs rr`zNodeVisitor.generic_visits:MMOO  DAq JJqMMMM  r)r&rPrQ__doc__r^rrcr`rrrrZrZs\BM $    $rrZc*eZdZdZddZdZdZdZdS) ArrayDecl)typedim dim_qualsr __weakref__Nc>||_||_||_||_dSrF)rirjrkr)r*rirjrkrs r__init__zArrayDecl.__init__s" " rcg}|j|d|jf|j|d|jft|S)Nrirj)riappendrjrRr*nodelists rr2zArrayDecl.childrensU 9 OOVTY/ 0 0 0 8  OOUDH- . . .Xrc#NK|j |jV|j |jVdSdSrF)rirjr1s r__iter__zArrayDecl.__iter__s8 9 )OOO 8 (NNNNN r)rkrFr&rPrQr'rnr2rtrrrrrhrhsLDI   JJJrrhc*eZdZdZddZdZdZdZdS)ArrayRef)r. subscriptrrlNc0||_||_||_dSrF)r.rxr)r*r.rxrs rrnzArrayRef.__init__s " rcg}|j|d|jf|j|d|jft|S)Nr.rx)r.rprxrRrqs rr2zArrayRef.childrensU 9 OOVTY/ 0 0 0 > % OO[$.9 : : :Xrc#NK|j |jV|j |jVdSdSrF)r.rxr1s rrtzArrayRef.__iter__s= 9 )OOO > %.  & %rrrFrurrrrwrwsL=I !!! JJJrrwc*eZdZdZddZdZdZdZdS) Assignment)oplvaluervaluerrlNc>||_||_||_||_dSrF)r~rrr)r*r~rrrs rrnzAssignment.__init__s"   rcg}|j|d|jf|j|d|jft|S)Nrr)rrprrRrqs rr2zAssignment.childrensU ; " OOXt{3 4 4 4 ; " OOXt{3 4 4 4Xrc#NK|j |jV|j |jVdSdSrF)rrr1s rrtzAssignment.__iter__ s@ ; "+    ; "+      # "rr~rFrurrrr}r}sLBI  JJJrr}c*eZdZdZddZdZdZdZdS)Alignas) alignmentrrlNc"||_||_dSrF)rr)r*rrs rrnzAlignas.__init__s" rcjg}|j|d|jft|S)Nr)rrprRrqs rr2zAlignas.childrens4 > % OO[$.9 : : :Xrc#.K|j |jVdSdSrF)rr1s rrtzAlignas.__iter__"s* > %.  & %rrrFrurrrrrsL5I !!!JJJrrc*eZdZdZddZdZdZdZdS)BinaryOp)r~leftrightrrlNc>||_||_||_||_dSrF)r~rrr)r*r~rrrs rrnzBinaryOp.__init__,s"   rcg}|j|d|jf|j|d|jft|S)Nrr)rrprrRrqs rr2zBinaryOp.children2U 9 OOVTY/ 0 0 0 : ! OOWdj1 2 2 2Xrc#NK|j |jV|j |jVdSdSrF)rrr1s rrtzBinaryOp.__iter__:= 9 )OOO : !*      " !rrrFrurrrrr)sL?I  JJJrrc*eZdZdZddZdZdZdZdS)BreakrrlNc||_dSrFrr*rs rrnzBreak.__init__F  rcdSNrrr1s rr2zBreak.childrenIrrc# KdSrFrr1s rrtzBreak.__iter__L rrrFrurrrrrCL(IJJJrrc*eZdZdZddZdZdZdZdS)Case)exprstmtsrrlNc0||_||_||_dSrF)rrr)r*rrrs rrnz Case.__init__V   rcg}|j|d|jft|jpgD] \}}|d|d|f!t |S)Nrstmts[])rrp enumeraterrRr*rrirOs rr2z Case.children[sx 9 OOVTY/ 0 0 0!$*"233 4 4HAu OO]a]]]E2 3 3 3 3Xrc#JK|j |jV|jpgD]}|VdSrF)rrr*rOs rrtz Case.__iter__csD 9 )OOOZ%2  EKKKK  rrrFrurrrrrSsL9I  JJJrrc*eZdZdZddZdZdZdZdS)Cast)to_typerrrlNc0||_||_||_dSrF)rrr)r*rrrs rrnz Cast.__init__os   rcg}|j|d|jf|j|d|jft|S)Nrr)rrprrRrqs rr2z Cast.childrentsU < # OOY 5 6 6 6 9 OOVTY/ 0 0 0Xrc#NK|j |jV|j |jVdSdSrF)rrr1s rrtz Cast.__iter__|s; < #,    9 )OOOOO ! rrrFrurrrrrlsL;I  JJJrrc*eZdZdZddZdZdZdZdS)Compound) block_itemsrrlNc"||_||_dSrF)rr)r*rrs rrnzCompound.__init__& rcg}t|jpgD] \}}|d|d|f!t|S)Nz block_items[r)rrrprRrs rr2zCompound.children\!$"2"8b99 : :HAu OO0A000%8 9 9 9 9Xrc#*K|jpgD]}|VdSrF)rrs rrtzCompound.__iter__2%+  EKKKK  rrrFrurrrrrL7I JJJrrc*eZdZdZddZdZdZdZdS)CompoundLiteral)riinitrrlNc0||_||_||_dSrF)rirr)r*rirrs rrnzCompoundLiteral.__init__   rcg}|j|d|jf|j|d|jft|S)Nrir)rirprrRrqs rr2zCompoundLiteral.childrenU 9 OOVTY/ 0 0 0 9 OOVTY/ 0 0 0Xrc#NK|j |jV|j |jVdSdSrF)rirr1s rrtzCompoundLiteral.__iter__8 9 )OOO 9 )OOOOO ! rrrFrurrrrrL8I  JJJrrc*eZdZdZddZdZdZdZdS)Constant)rirDrrlNc0||_||_||_dSrF)rirDr)r*rirDrs rrnzConstant.__init__rrc$g}t|SrFrRrqs rr2zConstant.childrenXrc# KdSrFrr1s rrtzConstant.__iter__rr)rirDrFrurrrrrsL9I JJJrrc*eZdZdZddZdZdZdZdS)ContinuerNc||_dSrFrrs rrnzContinue.__init__rrcdSrrr1s rr2zContinue.childrenrrc# KdSrFrr1s rrtzContinue.__iter__rrrrFrurrrrrrrrc,eZdZdZ ddZdZdZdZdS)Decl) r.qualsalignstoragefuncspecrirbitsizerrlNc ||_||_||_||_||_||_||_||_| |_dSrF) r.rrrrrirrr) r*r.rrrrrirrrs rrnz Decl.__init__sG          rcg}|j|d|jf|j|d|jf|j|d|jft |S)Nrirr)rirprrrRrqs rr2z Decl.childrensv 9 OOVTY/ 0 0 0 9 OOVTY/ 0 0 0 < # OOY 5 6 6 6Xrc#nK|j |jV|j |jV|j |jVdSdSrF)rirrr1s rrtz Decl.__iter__sP 9 )OOO 9 )OOO < #,      $ #r)r.rrrrrFrurrrrrsU IQU    JJJrrc*eZdZdZddZdZdZdZdS)DeclList)declsrrlNc"||_||_dSrF)rr)r*rrs rrnzDeclList.__init__  rcg}t|jpgD] \}}|d|d|f!t|SNzdecls[rrrrprRrs rr2zDeclList.childrenW!$*"233 4 4HAu OO]a]]]E2 3 3 3 3Xrc#*K|jpgD]}|VdSrFrrs rrtzDeclList.__iter__1Z%2  EKKKK  rrrFrurrrrrL1I JJJrrc*eZdZdZddZdZdZdZdS)Default)rrrlNc"||_||_dSrF)rr)r*rrs rrnzDefault.__init__%rrcg}t|jpgD] \}}|d|d|f!t|S)Nrr)rrrprRrs rr2zDefault.children)rrc#*K|jpgD]}|VdSrF)rrs rrtzDefault.__iter__/rrrrFrurrrrr"rrrc*eZdZdZddZdZdZdZdS)DoWhilecondstmtrrlNc0||_||_||_dSrFrrrr*rrrs rrnzDoWhile.__init__9rrcg}|j|d|jf|j|d|jft|SNrrrrprrRrqs rr2zDoWhile.children>rrc#NK|j |jV|j |jVdSdSrFrrr1s rrtzDoWhile.__iter__FrrrrFrurrrrr6rrrc*eZdZdZddZdZdZdZdS) EllipsisParamrNc||_dSrFrrs rrnzEllipsisParam.__init__RrrcdSrrr1s rr2zEllipsisParam.childrenUrrc# KdSrFrr1s rrtzEllipsisParam.__iter__XrrrrFrurrrrrOrrrc*eZdZdZddZdZdZdZdS)EmptyStatementrNc||_dSrFrrs rrnzEmptyStatement.__init__brrcdSrrr1s rr2zEmptyStatement.childrenerrc# KdSrFrr1s rrtzEmptyStatement.__iter__hrrrrFrurrrrr_rrrc*eZdZdZddZdZdZdZdS)Enum)r.valuesrrlNc0||_||_||_dSrF)r.r r)r*r.r rs rrnz Enum.__init__rs   rcjg}|j|d|jft|S)Nr )r rprRrqs rr2z Enum.childrenws4 ; " OOXt{3 4 4 4Xrc#.K|j |jVdSdSrF)r r1s rrtz Enum.__iter__}s* ; "+      # "rr.rFrurrrr r osL:I  JJJrr c*eZdZdZddZdZdZdZdS) Enumerator)r.rDrrlNc0||_||_||_dSrF)r.rDr)r*r.rDrs rrnzEnumerator.__init__rrcjg}|j|d|jft|S)NrD)rDrprRrqs rr2zEnumerator.childrens4 : ! OOWdj1 2 2 2Xrc#.K|j |jVdSdSrF)rDr1s rrtzEnumerator.__iter__s* : !*      " !rrrFrurrrrrsL9I  JJJrrc*eZdZdZddZdZdZdZdS)EnumeratorList) enumeratorsrrlNc"||_||_dSrF)rr)r*rrs rrnzEnumeratorList.__init__rrcg}t|jpgD] \}}|d|d|f!t|S)Nz enumerators[r)rrrprRrs rr2zEnumeratorList.childrenrrc#*K|jpgD]}|VdSrF)rrs rrtzEnumeratorList.__iter__rrrrFrurrrrrrrrc*eZdZdZddZdZdZdZdS)ExprListexprsrrlNc"||_||_dSrFrrr*rrs rrnzExprList.__init__rrcg}t|jpgD] \}}|d|d|f!t|SNzexprs[rrrrprRrs rr2zExprList.childrenrrc#*K|jpgD]}|VdSrFrrs rrtzExprList.__iter__rrrrFrurrrrrrrrc*eZdZdZddZdZdZdZdS)FileAST)extrrlNc"||_||_dSrF)r(r)r*r(rs rrnzFileAST.__init__s rcg}t|jpgD] \}}|d|d|f!t|S)Nzext[r)rr(rprRrs rr2zFileAST.childrensV!$(.b11 2 2HAu OO[A[[[%0 1 1 1 1Xrc#*K|jpgD]}|VdSrF)r(rs rrtzFileAST.__iter__s0X^  EKKKK  rrrFrurrrr'r'sL/I JJJrr'c*eZdZdZddZdZdZdZdS)For)rrnextrrrlNcL||_||_||_||_||_dSrF)rrr.rr)r*rrr.rrs rrnz For.__init__s)     rc<g}|j|d|jf|j|d|jf|j|d|jf|j|d|jft |S)Nrrr.r)rrprr.rrRrqs rr2z For.childrens 9 OOVTY/ 0 0 0 9 OOVTY/ 0 0 0 9 OOVTY/ 0 0 0 9 OOVTY/ 0 0 0Xrc#K|j |jV|j |jV|j |jV|j |jVdSdSrF)rrr.rr1s rrtz For.__iter__s^ 9 )OOO 9 )OOO 9 )OOO 9 )OOOOO ! rrrFrurrrr-r-sLHI   JJJrr-c*eZdZdZddZdZdZdZdS)FuncCall)r.argsrrlNc0||_||_||_dSrF)r.r4r)r*r.r4rs rrnzFuncCall.__init__rrcg}|j|d|jf|j|d|jft|S)Nr.r4)r.rpr4rRrqs rr2zFuncCall.childrenrrc#NK|j |jV|j |jVdSdSrF)r.r4r1s rrtzFuncCall.__iter__rrrrFrurrrr3r3rrr3c*eZdZdZddZdZdZdZdS)FuncDecl)r4rirrlNc0||_||_||_dSrF)r4rir)r*r4rirs rrnzFuncDecl.__init__rrcg}|j|d|jf|j|d|jft|S)Nr4ri)r4rprirRrqs rr2zFuncDecl.childrenrrc#NK|j |jV|j |jVdSdSrF)r4rir1s rrtzFuncDecl.__iter__!rrrrFrurrrr9r9rrr9c*eZdZdZddZdZdZdZdS)FuncDef)decl param_declsbodyrrlNc>||_||_||_||_dSrF)r?r@rAr)r*r?r@rArs rrnzFuncDef.__init__-s# &  rcg}|j|d|jf|j|d|jft|jpgD] \}}|d|d|f!t |S)Nr?rAz param_decls[r)r?rprArr@rRrs rr2zFuncDef.children3s 9 OOVTY/ 0 0 0 9 OOVTY/ 0 0 0!$"2"8b99 : :HAu OO0A000%8 9 9 9 9Xrc#jK|j |jV|j |jV|jpgD]}|VdSrF)r?rAr@rs rrtzFuncDef.__iter__=sX 9 )OOO 9 )OOO%+  EKKKK  rrrFrurrrr>r>*sLGI JJJrr>c*eZdZdZddZdZdZdZdS)Gotor.rrlNc"||_||_dSrFr.rr*r.rs rrnz Goto.__init__K  rc$g}t|SrFrrqs rr2z Goto.childrenOrrc# KdSrFrr1s rrtz Goto.__iter__SrrrrFrurrrrFrFHL0IJJJrrFc*eZdZdZddZdZdZdZdS)IDrGNc"||_||_dSrFrIrJs rrnz ID.__init__]rKrc$g}t|SrFrrqs rr2z ID.childrenarrc# KdSrFrr1s rrtz ID.__iter__errrrFrurrrrPrPZrNrrPc*eZdZdZddZdZdZdZdS)IdentifierType)namesrrlNc"||_||_dSrF)rVr)r*rVrs rrnzIdentifierType.__init__orrc$g}t|SrFrrqs rr2zIdentifierType.childrensrrc# KdSrFrr1s rrtzIdentifierType.__iter__wrr)rVrFrurrrrUrUlsL1IJJJrrUc*eZdZdZddZdZdZdZdS)IfriftrueiffalserrlNc>||_||_||_||_dSrFrr]r^rr*rr]r^rs rrnz If.__init__"    rcg}|j|d|jf|j|d|jf|j|d|jft |SNrr]r^rrpr]r^rRrqs rr2z If.childrenv 9 OOVTY/ 0 0 0 ; " OOXt{3 4 4 4 < # OOY 5 6 6 6Xrc#nK|j |jV|j |jV|j |jVdSdSrFrr]r^r1s rrtz If.__iter__S 9 )OOO ; "+    < #,      $ #rrrFrurrrr[r[~LEI JJJrr[c*eZdZdZddZdZdZdZdS)InitListrNc"||_||_dSrFrr s rrnzInitList.__init__rrcg}t|jpgD] \}}|d|d|f!t|Sr"r#rs rr2zInitList.childrenrrc#*K|jpgD]}|VdSrFr%rs rrtzInitList.__iter__rrrrFrurrrrlrlrrrlc*eZdZdZddZdZdZdZdS)Label)r.rrrlNc0||_||_||_dSrF)r.rr)r*r.rrs rrnzLabel.__init__rrcjg}|j|d|jft|S)Nr)rrprRrqs rr2zLabel.children4 9 OOVTY/ 0 0 0Xrc#.K|j |jVdSdSrF)rr1s rrtzLabel.__iter__% 9 )OOOOO ! rrrFrurrrrqrqsL8I  JJJrrqc*eZdZdZddZdZdZdZdS)NamedInitializer)r.rrrlNc0||_||_||_dSrF)r.rr)r*r.rrs rrnzNamedInitializer.__init__rrcg}|j|d|jft|jpgD] \}}|d|d|f!t |S)Nrzname[r)rrprr.rRrs rr2zNamedInitializer.childrensw 9 OOVTY/ 0 0 0!$)/r22 3 3HAu OO\Q\\\51 2 2 2 2Xrc#JK|j |jV|jpgD]}|VdSrF)rr.rs rrtzNamedInitializer.__iter__sC 9 )OOOY_"  EKKKK  rrrFrurrrrxrxsL8I  JJJrrxc*eZdZdZddZdZdZdZdS) ParamList)paramsrrlNc"||_||_dSrF)r~r)r*r~rs rrnzParamList.__init__  rcg}t|jpgD] \}}|d|d|f!t|S)Nzparams[r)rr~rprRrs rr2zParamList.childrensW!$+"344 5 5HAu OO^q^^^U3 4 4 4 4Xrc#*K|jpgD]}|VdSrF)r~rs rrtzParamList.__iter__s1[&B  EKKKK  rrrFrurrrr}r}sL2I JJJrr}c*eZdZdZddZdZdZdZdS)PtrDecl)rrirrlNc0||_||_||_dSrF)rrir)r*rrirs rrnzPtrDecl.__init__s   rcjg}|j|d|jft|SNririrprRrqs rr2zPtrDecl.childrenrtrc#.K|j |jVdSdSrFrir1s rrtzPtrDecl.__iter__rvr)rrFrurrrrrsL9I  JJJrrc*eZdZdZddZdZdZdZdS)Return)rrrlNc"||_||_dSrF)rr)r*rrs rrnzReturn.__init__ rKrcjg}|j|d|jft|SNrrrprRrqs rr2zReturn.childrenrtrc#.K|j |jVdSdSrFrr1s rrtzReturn.__iter__rvrrrFrurrrrrsL0I JJJrrc*eZdZdZddZdZdZdZdS) StaticAssert)rmessagerrlNc0||_||_||_dSrF)rrr)r*rrrs rrnzStaticAssert.__init__s   rcg}|j|d|jf|j|d|jft|S)Nrr)rrprrRrqs rr2zStaticAssert.children#sU 9 OOVTY/ 0 0 0 < # OOY 5 6 6 6Xrc#NK|j |jV|j |jVdSdSrF)rrr1s rrtzStaticAssert.__iter__+s= 9 )OOO < #,      $ #rrrFrurrrrrsL;I  JJJrrc*eZdZdZddZdZdZdZdS)Structr.rrrlNc0||_||_||_dSrFr.rrr*r.rrs rrnzStruct.__init__7rrcg}t|jpgD] \}}|d|d|f!t|Srrrs rr2zStruct.children<rrc#*K|jpgD]}|VdSrFrrs rrtzStruct.__iter__BrrrrFrurrrrr4L9I  JJJrrc*eZdZdZddZdZdZdZdS) StructRef)r.rifieldrrlNc>||_||_||_||_dSrF)r.rirr)r*r.rirrs rrnzStructRef.__init__Ls"    rcg}|j|d|jf|j|d|jft|S)Nr.r)r.rprrRrqs rr2zStructRef.childrenRrrc#NK|j |jV|j |jVdSdSrF)r.rr1s rrtzStructRef.__iter__ZrrrrFrurrrrrIsLAI  JJJrrc*eZdZdZddZdZdZdZdS)SwitchrNc0||_||_||_dSrFrrs rrnzSwitch.__init__frrcg}|j|d|jf|j|d|jft|Srrrqs rr2zSwitch.childrenkrrc#NK|j |jV|j |jVdSdSrFrr1s rrtzSwitch.__iter__srrrrFrurrrrrcrrrc*eZdZdZddZdZdZdZdS) TernaryOpr\Nc>||_||_||_||_dSrFr`ras rrnzTernaryOp.__init__rbrcg}|j|d|jf|j|d|jf|j|d|jft |Srdrerqs rr2zTernaryOp.childrenrfrc#nK|j |jV|j |jV|j |jVdSdSrFrhr1s rrtzTernaryOp.__iter__rirrrFrurrrrr|rjrrc*eZdZdZddZdZdZdZdS)TypeDecl)declnamerrrirrlNcL||_||_||_||_||_dSrF)rrrrir)r*rrrrirs rrnzTypeDecl.__init__s)      rcjg}|j|d|jft|Srrrqs rr2zTypeDecl.childrenrtrc#.K|j |jVdSdSrFrr1s rrtzTypeDecl.__iter__rvr)rrrrFrurrrrrsLNI JJJrrc*eZdZdZddZdZdZdZdS)Typedef)r.rrrirrlNcL||_||_||_||_||_dSrF)r.rrrir)r*r.rrrirs rrnzTypedef.__init__s)     rcjg}|j|d|jft|Srrrqs rr2zTypedef.childrenrtrc#.K|j |jVdSdSrFrr1s rrtzTypedef.__iter__rvr)r.rrrFrurrrrrsLLI JJJrrc*eZdZdZddZdZdZdZdS)Typename)r.rrrirrlNcL||_||_||_||_||_dSrF)r.rrrir)r*r.rrrirs rrnzTypename.__init__s)     rcjg}|j|d|jft|Srrrqs rr2zTypename.childrenrtrc#.K|j |jVdSdSrFrr1s rrtzTypename.__iter__rvr)r.rrrFrurrrrrsLJI JJJrrc*eZdZdZddZdZdZdZdS)UnaryOp)r~rrrlNc0||_||_||_dSrF)r~rr)r*r~rrs rrnzUnaryOp.__init__s  rcjg}|j|d|jft|Srrrqs rr2zUnaryOp.childrenrtrc#.K|j |jVdSdSrFrr1s rrtzUnaryOp.__iter__rvrrrFrurrrrrsL6I  JJJrrc*eZdZdZddZdZdZdZdS)UnionrNc0||_||_||_dSrFrrs rrnzUnion.__init__rrcg}t|jpgD] \}}|d|d|f!t|Srrrs rr2zUnion.childrenrrc#*K|jpgD]}|VdSrFrrs rrtzUnion.__iter__rrrrFrurrrrrrrrc*eZdZdZddZdZdZdZdS)WhilerNc0||_||_||_dSrFrrs rrnzWhile.__init__rrcg}|j|d|jf|j|d|jft|Srrrqs rr2zWhile.childrenrrc#NK|j |jV|j |jVdSdSrFrr1s rrtzWhile.__iter__%rrrrFrurrrrrrrrc*eZdZdZddZdZdZdZdS)Pragma)stringrrlNc"||_||_dSrF)rr)r*rrs rrnzPragma.__init__1rrc$g}t|SrFrrqs rr2zPragma.children5rrc# KdSrFrr1s rrtzPragma.__iter__9rr)rrFrurrrrr.sL2IJJJrr):rUtypingrrrrr rrZrhrwr}rrrrrrrrrrrrrrrr rrrr'r-r3r9r>rFrPrUr[rlrqrxr}rrrrrrrrrrrrrrrrrrs$ ............kkkkkkkk\77777777t        4t24d(t4     D    4242t(d2t,     t    333334333lt(d(d2     D        T    4**T(t(d(     $   Ft2t2d<4$$T$<t(D*t2(d*T(42T*4T2<t6d6t6d*D*D2Tr