grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026 й¼]ã @sÁddlZddlmZmZmZmZmZmZmZmZm Z m Z m Z m Z m Z ddlZdddddgZdd„ZGd d „d ƒZeƒZGd d„deƒZGd d„deƒZGd d„deƒZGdd„deƒZedkr½ddlZddlZeejdƒ�ZejƒZWdQRXeeej j!ejdƒddƒZ"x?e"j#ƒD]1Z$e"j%e$ƒZ&e'e&e&j(ƒe&j)ƒƒqˆWdS)éN) ÚUSEÚ DEF_GLOBALÚ DEF_LOCALÚ DEF_PARAMÚ DEF_IMPORTÚ DEF_BOUNDÚ SCOPE_OFFÚ SCOPE_MASKÚFREEÚLOCALÚGLOBAL_IMPLICITÚGLOBAL_EXPLICITÚCELLÚsymtableÚ SymbolTableÚClassÚFunctionÚSymbolcCs"tj|||ƒ}t||ƒS)N)Ú _symtablerÚ_newSymbolTable)ÚcodeÚfilenameZ compile_typeÚtop©rú-/opt/alt/python35/lib64/python3.5/symtable.pyr sc@s4eZdZdd„Zdd„Zdd„ZdS)ÚSymbolTableFactorycCstjƒ|_dS)N)ÚweakrefÚWeakValueDictionaryÚ_SymbolTableFactory__memo)ÚselfrrrÚ__init__szSymbolTableFactory.__init__cCsK|jtjkrt||ƒS|jtjkr>t||ƒSt||ƒS)N)ÚtyperÚ TYPE_FUNCTIONrÚ TYPE_CLASSrr)rÚtablerrrrÚnews   zSymbolTableFactory.newcCsN||f}|jj|dƒ}|dkrJ|j||ƒ}|j|<|S)N)rÚgetr%)rr$rÚkeyÚobjrrrÚ__call__s   zSymbolTableFactory.__call__N)Ú__name__Ú __module__Ú __qualname__r r%r)rrrrrs   rc@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)rZ raw_tablerrrrr 's  zSymbolTable.__init__cCsm|jtkrd}nd|jj}|jjdkrMdj||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__cCsO|jjtjkrdS|jjtjkr2dS|jjtjkrKdSdS)NÚmoduleÚfunctionÚclass)r-r!rZ TYPE_MODULEr"r#)rrrrÚget_type9szSymbolTable.get_typecCs |jjS)N)r-Úid)rrrrÚget_idCszSymbolTable.get_idcCs |jjS)N)r-r3)rrrrÚget_nameFszSymbolTable.get_namecCs |jjS)N)r-Úlineno)rrrrÚ get_linenoIszSymbolTable.get_linenocCst|jjtjkƒS)N)Úboolr-r!rr")rrrrÚ is_optimizedLszSymbolTable.is_optimizedcCst|jjƒS)N)r@r-Únested)rrrrÚ is_nestedOszSymbolTable.is_nestedcCst|jjƒS)N)r@r-Úchildren)rrrrÚ has_childrenRszSymbolTable.has_childrencCsdS)NFr)rrrrÚhas_execUszSymbolTable.has_execcCs|jjjƒS)N)r-ÚsymbolsÚkeys)rrrrÚget_identifiersYszSymbolTable.get_identifierscCs^|jj|ƒ}|dkrZ|jj|}|j|ƒ}t|||ƒ}|j|<|S)N)r/r&r-rGÚ_SymbolTable__check_childrenr)rr3ZsymÚflagsÚ namespacesrrrÚlookup\s  zSymbolTable.lookupcs‡fdd†ˆjƒDƒS)Ncsg|]}ˆj|ƒ‘qSr)rM)Ú.0Úident)rrrú es z+SymbolTable.get_symbols..)rI)rr)rrÚ get_symbolsdszSymbolTable.get_symbolscs ‡‡fdd†ˆjjDƒS)Ncs1g|]'}|jˆkrt|ˆjƒ‘qSr)r3rr.)rNÚst)r3rrrrPhs z0SymbolTable.__check_children..)r-rD)rr3r)r3rrZ__check_childrengszSymbolTable.__check_childrencs‡fdd†ˆjjDƒS)Ncs"g|]}t|ˆjƒ‘qSr)rr.)rNrR)rrrrPms z,SymbolTable.get_children..)r-rD)rr)rrÚ get_childrenlszSymbolTable.get_childrenN)r*r+r,r r6r:r<r=r?rArCrErFrIrMrQrJrSrrrrr%s             c@sdeZdZdZdZdZdZdd„Zdd„Zdd„Z dd „Z d d „Z dS) rNcs&t‡‡fdd†ˆjƒDƒƒS)Ncs,g|]"}ˆˆjj|ƒr|‘qSr)r-rG)rNrO)rÚ test_funcrrrPzs z.Function.__idents_matching..)ÚtuplerI)rrTr)rrTrZ__idents_matchingyszFunction.__idents_matchingcCs.|jdkr'|jdd„ƒ|_|jS)NcSs|t@S)N)r)ÚxrrrÚsz)Function.get_parameters..)Ú_Function__paramsÚ_Function__idents_matching)rrrrÚget_parameters}szFunction.get_parameterscsF|jdkr?ttf‰‡fdd†}|j|ƒ|_|jS)Ncs|t?t@ˆkS)N)rr )rV)ÚlocsrrrW…sz%Function.get_locals..)Ú_Function__localsr rrY)rÚtestr)r[rÚ get_locals‚s  zFunction.get_localscsF|jdkr?ttf‰‡fdd†}|j|ƒ|_|jS)Ncs|t?t@ˆkS)N)rr )rV)ÚglobrrrWŒsz&Function.get_globals..)Ú_Function__globalsr r rY)rr]r)r_rÚ get_globals‰s  zFunction.get_globalscCs4|jdkr-dd„}|j|ƒ|_|jS)NcSs|t?t@tkS)N)rr r )rVrrrrW’sz$Function.get_frees..)Ú_Function__freesrY)rÚis_freerrrÚ get_frees�s zFunction.get_frees) r*r+r,rXr\rbr`rYrZr^rardrrrrrqs     c@s"eZdZdZdd„ZdS)rNcCsO|jdkrHi}x!|jjD]}d||j)r4ri)rrrrr6¬szSymbol.__repr__cCs|jS)N)ri)rrrrr=¯szSymbol.get_namecCst|jtj@ƒS)N)r@rjrr)rrrrÚ is_referenced²szSymbol.is_referencedcCst|jt@ƒS)N)r@rjr)rrrrÚ is_parameterµszSymbol.is_parametercCst|jttfkƒS)N)r@rkr r )rrrrÚ is_global¸szSymbol.is_globalcCst|jtkƒS)N)r@rkr )rrrrÚis_declared_global»szSymbol.is_declared_globalcCst|jt@ƒS)N)r@rjr)rrrrÚis_local¾szSymbol.is_localcCst|jtkƒS)N)r@rkr )rrrrrcÁszSymbol.is_freecCst|jt@ƒS)N)r@rjr)rrrrÚ is_importedÄszSymbol.is_importedcCst|jt@ƒS)N)r@rjr)rrrrÚ is_assignedÇszSymbol.is_assignedcCs t|jƒS)N)r@rl)rrrrÚ is_namespaceÊs zSymbol.is_namespacecCs|jS)N)rl)rrrrÚget_namespaces×szSymbol.get_namespacescCs,t|jƒdkr!tdƒ‚|jdS)Nrez$name is bound to multiple namespacesr)ÚlenrlÚ ValueError)rrrrÚ get_namespaceÛs zSymbol.get_namespace)r*r+r,r r6r=rmrnrorprqrcrrrsrtrurxrrrrr¤s            Ú__main__reÚexec)*rrrrrrrrr r r r r rrÚ__all__rrrÚobjectrrrrr*ÚosÚsysÚopenÚargvÚfÚreadÚsrcÚpathÚsplitÚmodrIrOrMÚinfoÚprintrqrtrrrrÚs$ X   L& @ )