grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/20263 Õì2amã @sJddlZddlmZmZmZmZmZmZmZmZm Z m Z m Z m Z m Z mZddlZdddddgZdd„ZGd d „d ƒZeƒZGd d„deƒZGd d„deƒZGd d„deƒZGdd„deƒZedk�rFddlZddlZeejdƒ�ZejƒZ WdQRXee ej!j"ejdƒddƒZ#x0e#j$ƒD]$Z%e#j&e%ƒZ'e(e'e'j)ƒe'j*ƒƒ�qWdS)éN)ÚUSEÚ DEF_GLOBALÚ DEF_LOCALÚ DEF_PARAMÚ DEF_IMPORTÚ DEF_BOUNDÚ DEF_ANNOTÚ SCOPE_OFFÚ SCOPE_MASKÚFREEÚLOCALÚGLOBAL_IMPLICITÚGLOBAL_EXPLICITÚCELLÚsymtableÚ SymbolTableÚClassÚFunctionÚSymbolcCstj|||ƒ}t||ƒS)N)Ú _symtablerÚ_newSymbolTable)ÚcodeÚfilenameZ compile_typeÚtop©rú-/opt/alt/python36/lib64/python3.6/symtable.pyr sc@s$eZdZdd„Zdd„Zdd„ZdS)ÚSymbolTableFactorycCstjƒ|_dS)N)ÚweakrefÚWeakValueDictionaryÚ_SymbolTableFactory__memo)ÚselfrrrÚ__init__szSymbolTableFactory.__init__cCs6|jtjkrt||ƒS|jtjkr,t||ƒSt||ƒS)N)ÚtyperÚ TYPE_FUNCTIONrÚ TYPE_CLASSrr)r ÚtablerrrrÚnews     zSymbolTableFactory.newcCs8||f}|jj|dƒ}|dkr4|j||ƒ}|j|<|S)N)rÚgetr&)r r%rÚkeyÚobjrrrÚ__call__s zSymbolTableFactory.__call__N)Ú__name__Ú __module__Ú __qualname__r!r&r*rrrrrsrc@s„eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„ZdS) rcCs||_||_i|_dS)N)Ú_tableÚ _filenameÚ_symbols)r Z raw_tablerrrrr!'szSymbolTable.__init__cCsN|jtkrd}n d|jj}|jjdkr6dj||jƒSdj||jj|jƒSdS)NÚz%s Úglobalz<{0}SymbolTable for module {1}>z<{0}SymbolTable for {1} in {2}>)Ú __class__rr+r.ÚnameÚformatr/)r ÚkindrrrÚ__repr__,s   zSymbolTable.__repr__cCs:|jjtjkrdS|jjtjkr$dS|jjtjkr6dSdS)NÚmoduleZfunctionÚclass)r.r"rZ TYPE_MODULEr#r$)r rrrÚget_type9szSymbolTable.get_typecCs|jjS)N)r.Úid)r rrrÚget_idCszSymbolTable.get_idcCs|jjS)N)r.r4)r rrrÚget_nameFszSymbolTable.get_namecCs|jjS)N)r.Úlineno)r rrrÚ get_linenoIszSymbolTable.get_linenocCst|jjtjkƒS)N)Úboolr.r"rr#)r rrrÚ is_optimizedLszSymbolTable.is_optimizedcCs t|jjƒS)N)r@r.Únested)r rrrÚ is_nestedOszSymbolTable.is_nestedcCs t|jjƒS)N)r@r.Úchildren)r rrrÚ has_childrenRszSymbolTable.has_childrencCsdS)NFr)r rrrÚhas_execUszSymbolTable.has_execcCs |jjjƒS)N)r.ÚsymbolsÚkeys)r rrrÚget_identifiersYszSymbolTable.get_identifierscCsD|jj|ƒ}|dkr@|jj|}|j|ƒ}t|||ƒ}|j|<|S)N)r0r'r.rGÚ_SymbolTable__check_childrenr)r r4ZsymÚflagsÚ namespacesrrrÚlookup\s    zSymbolTable.lookupcs‡fdd„ˆjƒDƒS)Ncsg|]}ˆj|ƒ‘qSr)rM)Ú.0Úident)r rrú esz+SymbolTable.get_symbols..)rI)r r)r rÚ get_symbolsdszSymbolTable.get_symbolscs‡‡fdd„ˆjjDƒS)Ncs"g|]}|jˆkrt|ˆjƒ‘qSr)r4rr/)rNÚst)r4r rrrPhsz0SymbolTable.__check_children..)r.rD)r r4r)r4r rZ__check_childrengs zSymbolTable.__check_childrencs‡fdd„ˆjjDƒS)Ncsg|]}t|ˆjƒ‘qSr)rr/)rNrR)r rrrPmsz,SymbolTable.get_children..)r.rD)r r)r rÚ get_childrenls zSymbolTable.get_childrenN)r+r,r-r!r7r:r<r=r?rArCrErFrIrMrQrJrSrrrrr%s  c@sDeZdZdZdZdZdZdd„Zdd„Zdd„Z dd „Z d d „Z dS) rNcst‡‡fdd„ˆjƒDƒƒS)Ncs g|]}ˆˆjj|ƒr|‘qSr)r.rG)rNrO)r Ú test_funcrrrPzsz.Function.__idents_matching..)ÚtuplerI)r rTr)r rTrZ__idents_matchingyszFunction.__idents_matchingcCs |jdkr|jdd„ƒ|_|jS)NcSs|t@S)N)r)ÚxrrrÚsz)Function.get_parameters..)Ú_Function__paramsÚ_Function__idents_matching)r rrrÚget_parameters}s zFunction.get_parameterscs0|jdkr*ttf‰‡fdd„}|j|ƒ|_|jS)Ncs|t?t@ˆkS)N)r r )rV)ÚlocsrrrW…sz%Function.get_locals..)Ú_Function__localsr rrY)r Útestr)r[rÚ get_locals‚s    zFunction.get_localscs0|jdkr*ttf‰‡fdd„}|j|ƒ|_|jS)Ncs|t?t@ˆkS)N)r r )rV)ÚglobrrrWŒsz&Function.get_globals..)Ú_Function__globalsr rrY)r r]r)r_rÚ get_globals‰s    zFunction.get_globalscCs$|jdkrdd„}|j|ƒ|_|jS)NcSs|t?t@tkS)N)r r r )rVrrrrW’sz$Function.get_frees..)Ú_Function__freesrY)r Úis_freerrrÚ get_frees�s  zFunction.get_frees) r+r,r-rXr\rbr`rYrZr^rardrrrrrqsc@seZdZdZdd„ZdS)rNcCs:|jdkr4i}x|jjD]}d||j<qWt|ƒ|_|jS)Né)Ú_Class__methodsr.rDr4rU)r ÚdrRrrrÚ get_methods›s   zClass.get_methods)r+r,r-rfrhrrrrr—sc@s†eZdZd dd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„ZdS)!rNcCs(||_||_|t?t@|_|p f|_dS)N)Ú _Symbol__nameÚ_Symbol__flagsr r Ú_Symbol__scopeÚ_Symbol__namespaces)r r4rKrLrrrr!¦szSymbol.__init__cCs dj|jƒS)Nz)r5ri)r rrrr7¬szSymbol.__repr__cCs|jS)N)ri)r rrrr=¯szSymbol.get_namecCst|jtj@ƒS)N)r@rjrr)r rrrÚ is_referenced²szSymbol.is_referencedcCst|jt@ƒS)N)r@rjr)r rrrÚ is_parameterµszSymbol.is_parametercCst|jttfkƒS)N)r@rkr r)r rrrÚ is_global¸szSymbol.is_globalcCst|jtkƒS)N)r@rkr)r rrrÚis_declared_global»szSymbol.is_declared_globalcCst|jt@ƒS)N)r@rjr)r rrrÚis_local¾szSymbol.is_localcCst|jt@ƒS)N)r@rjr)r rrrÚ is_annotatedÁszSymbol.is_annotatedcCst|jtkƒS)N)r@rkr )r rrrrcÄszSymbol.is_freecCst|jt@ƒS)N)r@rjr)r rrrÚ is_importedÇszSymbol.is_importedcCst|jt@ƒS)N)r@rjr)r rrrÚ is_assignedÊszSymbol.is_assignedcCs t|jƒS)N)r@rl)r rrrÚ is_namespaceÍs zSymbol.is_namespacecCs|jS)N)rl)r rrrÚget_namespacesÚszSymbol.get_namespacescCs t|jƒdkrtdƒ‚|jdS)Nrez$name is bound to multiple namespacesr)ÚlenrlÚ ValueError)r rrrÚ get_namespaceÞszSymbol.get_namespace)N)r+r,r-r!r7r=rmrnrorprqrrrcrsrtrurvryrrrrr¤s  Ú__main__reÚexec)+rrrrrrrrr r r r r rrrÚ__all__rrrÚobjectrrrrr+ÚosÚsysÚopenÚargvÚfÚreadÚsrcÚpathÚsplitÚmodrIrOrMÚinfoÚprintrqrurrrrÚs$@L& C