3 2am @sJddlZddlmZmZmZmZmZmZmZmZm Z m Z m Z m Z m Z mZddlZdddddgZddZGd d d ZeZGd ddeZGd ddeZGd ddeZGdddeZedkrFddlZddlZeejdZejZ WdQRXee ej!j"ejdddZ#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_MASKFREELOCALGLOBAL_IMPLICITGLOBAL_EXPLICITCELLsymtable SymbolTableClassFunctionSymbolcCstj|||}t||S)N) _symtabler_newSymbolTable)codefilenameZ compile_typetopr-/opt/alt/python36/lib64/python3.6/symtable.pyr sc@s$eZdZddZddZddZdS)SymbolTableFactorycCstj|_dS)N)weakrefWeakValueDictionary_SymbolTableFactory__memo)selfrrr__init__szSymbolTableFactory.__init__cCs6|jtjkrt||S|jtjkr,t||St||S)N)typer TYPE_FUNCTIONr TYPE_CLASSrr)r tablerrrrnews     zSymbolTableFactory.newcCs8||f}|jj|d}|dkr4|j||}|j|<|S)N)rgetr&)r r%rkeyobjrrr__call__s zSymbolTableFactory.__call__N)__name__ __module__ __qualname__r!r&r*rrrrrsrc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdS) rcCs||_||_i|_dS)N)_table _filename_symbols)r Z raw_tablerrrrr!'szSymbolTable.__init__cCsN|jtkrd}n d|jj}|jjdkr6dj||jSdj||jj|jSdS)Nz%s globalz<{0}SymbolTable for module {1}>z<{0}SymbolTable for {1} in {2}>) __class__rr+r.nameformatr/)r kindrrr__repr__,s   zSymbolTable.__repr__cCs:|jjtjkrdS|jjtjkr$dS|jjtjkr6dSdS)NmoduleZfunctionclass)r.r"rZ TYPE_MODULEr#r$)r rrrget_type9szSymbolTable.get_typecCs|jjS)N)r.id)r rrrget_idCszSymbolTable.get_idcCs|jjS)N)r.r4)r rrrget_nameFszSymbolTable.get_namecCs|jjS)N)r.lineno)r rrr get_linenoIszSymbolTable.get_linenocCst|jjtjkS)N)boolr.r"rr#)r rrr is_optimizedLszSymbolTable.is_optimizedcCs t|jjS)N)r@r.nested)r rrr is_nestedOszSymbolTable.is_nestedcCs t|jjS)N)r@r.children)r rrr has_childrenRszSymbolTable.has_childrencCsdS)NFr)r rrrhas_execUszSymbolTable.has_execcCs |jjjS)N)r.symbolskeys)r rrrget_identifiersYszSymbolTable.get_identifierscCsD|jj|}|dkr@|jj|}|j|}t|||}|j|<|S)N)r0r'r.rG_SymbolTable__check_childrenr)r r4Zsymflags namespacesrrrlookup\s    zSymbolTable.lookupcsfddjDS)Ncsg|]}j|qSr)rM).0ident)r rr esz+SymbolTable.get_symbols..)rI)r r)r r get_symbolsdszSymbolTable.get_symbolscsfddjjDS)Ncs"g|]}|jkrt|jqSr)r4rr/)rNst)r4r rrrPhsz0SymbolTable.__check_children..)r.rD)r r4r)r4r rZ__check_childrengs zSymbolTable.__check_childrencsfddjjDS)Ncsg|]}t|jqSr)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@sDeZdZdZdZdZdZddZddZddZ dd Z d d Z dS) rNcstfddjDS)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)xrrrsz)Function.get_parameters..)_Function__params_Function__idents_matching)r rrrget_parameters}s zFunction.get_parameterscs0|jdkr*ttffdd}|j||_|jS)Ncs|t?t@kS)N)r r )rV)locsrrrWsz%Function.get_locals..)_Function__localsr rrY)r testr)r[r get_localss    zFunction.get_localscs0|jdkr*ttffdd}|j||_|jS)Ncs|t?t@kS)N)r r )rV)globrrrWsz&Function.get_globals..)_Function__globalsr rrY)r r]r)r_r get_globalss    zFunction.get_globalscCs$|jdkrdd}|j||_|jS)NcSs|t?t@tkS)N)r r r )rVrrrrWsz$Function.get_frees..)_Function__freesrY)r is_freerrr get_freess  zFunction.get_frees) r+r,r-rXr\rbr`rYrZr^rardrrrrrqsc@seZdZdZddZdS)rNcCs:|jdkr4i}x|jjD]}d||j<qWt||_|jS)N)_Class__methodsr.rDr4rU)r drRrrr get_methodss   zClass.get_methods)r+r,r-rfrhrrrrrsc@seZdZd ddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZdS)!rNcCs(||_||_|t?t@|_|p f|_dS)N) _Symbol__name_Symbol__flagsr r _Symbol__scope_Symbol__namespaces)r r4rKrLrrrr!szSymbol.__init__cCs dj|jS)Nz)r5ri)r rrrr7szSymbol.__repr__cCs|jS)N)ri)r rrrr=szSymbol.get_namecCst|jtj@S)N)r@rjrr)r rrr is_referencedszSymbol.is_referencedcCst|jt@S)N)r@rjr)r rrr is_parameterszSymbol.is_parametercCst|jttfkS)N)r@rkr r)r rrr is_globalszSymbol.is_globalcCst|jtkS)N)r@rkr)r rrris_declared_globalszSymbol.is_declared_globalcCst|jt@S)N)r@rjr)r rrris_localszSymbol.is_localcCst|jt@S)N)r@rjr)r rrr is_annotatedszSymbol.is_annotatedcCst|jtkS)N)r@rkr )r rrrrcszSymbol.is_freecCst|jt@S)N)r@rjr)r rrr is_importedszSymbol.is_importedcCst|jt@S)N)r@rjr)r rrr is_assignedszSymbol.is_assignedcCs t|jS)N)r@rl)r rrr is_namespaces zSymbol.is_namespacecCs|jS)N)rl)r rrrget_namespacesszSymbol.get_namespacescCs t|jdkrtd|jdS)Nrez$name is bound to multiple namespacesr)lenrl ValueError)r rrr get_namespaceszSymbol.get_namespace)N)r+r,r-r!r7r=rmrnrorprqrrrcrsrtrurvryrrrrrs  __main__reexec)+rrrrrrrrr r r r r rrr__all__rrrobjectrrrrr+ossysopenargvfreadsrcpathsplitmodrIrOrMinfoprintrqrurrrrs$@L& C