mò &U²Ic@s?dZdklZdklZlZlZlZlZdk l Z dk Z dk Z dZ dfd„ƒYZdefd „ƒYZd efd „ƒYZd efd „ƒYZdefd„ƒYZdefd„ƒYZdfd„ƒYZd„Zd„Zedjo+dk Z dklZlZdkZd„Zxúe idD]çZeGHeeƒZei ƒZ!ei"ƒeie!edƒZ#ee#ƒZ$eeƒZ%eƒZ&ee%e&ƒe&i'e%iƒZ(ee$e(ƒp1HdGeGHee$ƒGHee(ƒGHe i)dƒnhZ*e*i+e&i'ƒe*e%=e*i,ƒZ'[*xôe#i-ƒD]æZ&e&i.ƒoÓgZ/e'D]'Z0e0i1e&i2ƒjo e/e0qgqg[/Z3e4e3ƒdjodGe&i2ƒGHq/eee&i5ƒƒe3diƒƒpHe&i2ƒGHeee&i5ƒƒƒGHee3diƒƒGHe i)dƒq/qIqIWqLWndS(sModule symbol-table generator(sast(sSC_LOCALs SC_GLOBALsSC_FREEsSC_CELLs SC_UNKNOWN(smangleNitScopecBs¤tZdd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zd„ZRS(NcCsÁ||_||_h|_h|_h|_h|_h|_h|_g|_ d|_ d|_ d|_ |dj oDxAtt|ƒƒD])}||djo|||_ PqŒqŒWndS(Nt_(tnametselftmoduletdefstusestglobalstparamstfreestcellstchildrentNonetnestedt generatortklasstrangetlenti(RRRRR((t-/data/zmath/lib/python2.4/compiler/symbols.pyt__init__s$              cCsd|ii|ifS(Ns<%s: %s>(Rt __class__t__name__R(R((Rt__repr__$scCs(|idjo|Snt||iƒS(N(RRR Rtmangle(RR((RR'scCsd|i|i|ƒ­s R;cBstZRS(N(RR=(((RR;³st GenExprScopecBs,tZeiZdZdd„Zd„ZRS(NicCs@|i}|id7_|id|||ƒ|idƒdS(Nisgenerator expression<%d>s[outmost-iterable](Rt_GenExprScope__counterRt_GenExprScope__super_initRRR(RRRR((RR»s cCstiƒ}|S(N(RR"R!(RR!((RR"Ás (RR=RRRCRBR R"(((RRA¶s  t LambdaScopecBs#tZeiZdZdd„ZRS(NicCs3|i}|id7_|id|||ƒdS(Nis lambda.%d(Rt_LambdaScope__counterRt_LambdaScope__super_initRR(RRRR((RRÊs (RR=RRRFRER (((RRDÅs R:cBstZeiZd„ZRS(NcCs|i|||ƒdS(N(Rt_ClassScope__super_initRR(RRR((RRÒs(RR=RRRG(((RR:Ïs t SymbolVisitorcBstZd„Zd„ZeZd„Zd„Zd„Zd„Zd„Z dd „Z d „Z d „Z d „Z dd „Zd„Zd„Zd„Zd„Zd„Zdd„Zdd„Zdd„Zdd„Zd„ZeieieifZd„Zd„ZRS(NcCsh|_d|_dS(N(RtscopesR R(R((RRÖs cCs2tƒ}|_|i|<|i|i|ƒdS(N(R>tscopeRRRItnodetvisit(RRKRJ((Rt visitModuleÜscCsÞ|io|i|i|ƒn|i|iƒx!|iD]}|i||ƒq;Wt |i|i |i ƒ}|i pt|t ƒo d|_ n||i|<|i||iƒ|i|i|ƒ|i||ƒdS(Ni(RKt decoratorsRRLtparentRRtdefaultstnR;RRRJR R9RIt_do_argstargnamestcodethandle_free_vars(RRKRORQRJ((Rt visitFunctionâs    cCs€t|i|iƒ}|ip t|tƒpt|tƒo d|_n||i |<|i |i |ƒ|i ||ƒdS(Ni(RARRRRJROR R9R;RIRKRLRTRU(RRKRORJ((Rt visitGenExprðs *  cCs;x!|iD]}|i||ƒq W|i|i|ƒdS(N(RKtqualstgenforRRLRJtexpr(RRKRJRY((RtvisitGenExprInnerûs cCsQ|i|i|dƒ|i|i|ƒx!|iD]}|i||ƒq3WdS(Ni(RRLRKtassignRJtitertifstif_(RRKRJR_((RtvisitGenExprFors  cCs|i|i|ƒdS(N(RRLRKttestRJ(RRKRJ((RtvisitGenExprIfsicCs§x!|iD]}|i||ƒq Wt|i|iƒ}|i pt |t ƒo d|_ n||i |<|i||iƒ|i|i|ƒ|i||ƒdS(Ni(RKRPRQRRLRORDRRRJR R9R;RIRRRSRTRU(RRKROR\RQRJ((Rt visitLambda s   cCsLxE|D]=}t|ƒtijo|i||ƒq|i|ƒqWdS(N( targsRttypettypest TupleTypeRRRRJR(RRJRdR((RRRs cCs|i|ƒ|iƒdS(N(ROR%RJR5(RRJRO((RRU!s cCsð|i|iƒx!|iD]}|i||ƒqWt|i|i ƒ}|i pt |t ƒo d|_ n|idj o|idƒn|idƒ||i|<|i}|i|_|i|i|ƒ||_|i||ƒdS(Nit__doc__R=(RORRKRtbasesRQRRLR:RRJR R9R;tdocR RIRtprevRTRU(RRKRORkRQRJ((Rt visitClass%s        cCs/|o|i|iƒn|i|iƒdS(N(R\RJRRKRR(RRKRJR\((Rt visitName<scCsa|i|i|dƒ|i|i|ƒ|i|i|ƒ|io|i|i|ƒndS(Ni(RRLRKR\RJtlisttbodytelse_(RRKRJ((RtvisitForDs  cCsFx?|iD]4\}}|djoq n|i|p|ƒq WdS(Nt*(RKR7RtasnameRJR(RRKRJRRs((Rt visitFromKs   cCs\xU|iD]J\}}|idƒ}|djo|| }n|i|p|ƒq WdS(Nt.iÿÿÿÿ(RKR7RRstfindRRJR(RRKRJRRRs((Rt visitImportQs   cCs%x|iD]}|i|ƒq WdS(N(RKR7RRJR(RRKRJR((Rt visitGlobalXs cCs>x$|iD]}|i||dƒq W|i|i|ƒdS(s.Propagate assignment flag down to child nodes. The Assign node doesn't itself contains the variables being assigned to. Instead, the children in node.nodes are visited with the assign flag set to true. When the names occur in those nodes, they are marked as defs. Some names that occur in an assignment target are not bound by the assignment, e.g. a name occurring inside a slice. The visitor handles these nodes specially; they do not propagate the assign flag to their children. iN(RKtnodesRQRRLRJRZ(RRKRJRQ((Rt visitAssign\s  icCs|i|iƒdS(N(RJRRKR(RRKRJR\((Rt visitAssNamemscCs|i|i|dƒdS(Ni(RRLRKRZRJ(RRKRJR\((Rt visitAssAttrpscCsA|i|i|dƒx$|iD]}|i||dƒq WdS(Ni(RRLRKRZRJtsubsRQ(RRKRJR\RQ((RtvisitSubscriptss cCsb|i|i|dƒ|io|i|i|dƒn|io|i|i|dƒndS(Ni(RRLRKRZRJtlowertupper(RRKRJR\((Rt visitSlicexs   cCsZ|i|i|ƒt|itiƒo|i|i|dƒn|i|i|ƒdS(Ni(RRLRKRJR9tasttNameRZ(RRKRJ((RtvisitAugAssignscCs¤x||iD]q\}}t|tiƒo2t|iƒ|i jo|ipq qWq[n|i ||ƒ|i ||ƒq W|i o|i |i |ƒndS(N(RKttestsRaRoR9R‚tConstRetvalueRt _const_typesRLRJRp(RRKRJRoRa((RtvisitIf‹s   cCs d|_|i|i|ƒdS(Ni(RJRRRLRKR‡(RRKRJ((Rt visitYield˜s ( RR=RRMtvisitExpressionRVRWR[R`RbRcRRRURlRmRqRtRwRxRzR{R|R~RR„Rft StringTypetIntTypet FloatTypeRˆR‰RŠ(((RRHÕs4                      cCs|}|iƒ|S(N(tltsort(R((RRœs cCst|ƒt|ƒjS(N(Rtl1tl2(R‘R’((Rtlist_eq¡st__main__(s parseFileswalkcCsjg}g}|iƒD]}||iƒq~D]1}|idƒp |idƒp ||q2q2~S(Ns_[Ru(t_[1]t_[2]tsymst get_symbolststget_namet startswith(R—R•R™R–((RR"©sitexectoopsiÿÿÿÿtskippingi(6RhtcompilerR‚tcompiler.constsR-R+R.R,R/t compiler.miscRRfR(t MANGLE_LENRR>R;RARDR:RHRR“Rt parseFiletwalktsymtableR"targvtfiletopentftreadtbuftcloseR—t mod_namesttreeR™RItnames2texitRR tvaluesR˜t is_namespaceR•R8RRšRRt get_namespace($RDR­R¯R¢R¤R+R§RR¥R-R;R™RfRRIR.R“R‚R"R(R£RHR/R«R:R—RR©R®RR>R•R,R8RRA((Rt?sn %     Ç                   ;