Your IP : 13.59.67.189


Current Path : /opt/alt/python35/lib64/python3.5/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/__pycache__/symtable.cpython-35.opt-2.pyc



���]�@s�ddlZddlmZmZmZmZmZmZmZmZm	Z	m
Z
mZmZm
Z
ddlZdddddgZdd�ZGd	d
�d
�Ze�ZGdd�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
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�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!rZTYPE_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�
<listcomp>es	z+SymbolTable.get_symbols.<locals>.<listcomp>)rI)rr)rr�get_symbolsdszSymbolTable.get_symbolscs ��fdd��jjD�S)Ncs1g|]'}|j�krt|�j��qSr)r3rr.)rN�st)r3rrrrPhs	z0SymbolTable.__check_children.<locals>.<listcomp>)r-rD)rr3r)r3rrZ__check_childrengszSymbolTable.__check_childrencs�fdd��jjD�S)Ncs"g|]}t|�j��qSr)rr.)rNrR)rrrrPms	z,SymbolTable.get_children.<locals>.<listcomp>)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�ZdS)rNcs&t��fdd��j�D��S)Ncs,g|]"}��jj|�r|�qSr)r-rG)rNrO)r�	test_funcrrrPzs	z.Function.__idents_matching.<locals>.<listcomp>)�tuplerI)rrTr)rrTrZ__idents_matchingyszFunction.__idents_matchingcCs.|jdkr'|jdd��|_|jS)NcSs|t@S)N)r)�xrrr�<lambda>sz)Function.get_parameters.<locals>.<lambda>)�_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.<locals>.<lambda>)�_Function__localsrrrY)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.<locals>.<lambda>)�_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.<locals>.<lambda>)�_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<q"Wt|�|_|jS)N�)�_Class__methodsr-rDr3rU)r�drRrrr�get_methods�szClass.get_methods)r*r+r,rfrhrrrrr�sc@s�eZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)rNcCs6||_||_|t?t@|_|p,f|_dS)N)�
_Symbol__name�_Symbol__flagsrr	�_Symbol__scope�_Symbol__namespaces)rr3rKrLrrrr �s		zSymbol.__init__cCsdj|j�S)Nz<symbol {0!r}>)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�szSymbol.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
rrr
rr�__all__rrr�objectrrrrr*�os�sys�open�argv�f�read�src�path�split�modrIrOrM�info�printrqrtrrrr�<module>s$X	L&
@)

?>