Edit File: symtable.cpython-36.pyc
3 � \m������������������@���sN��d�Z�ddlZddlmZmZmZmZmZmZmZm Z m Z mZmZm Z mZmZ�ddlZdddddgZd d��ZG�d d��d�Ze��ZG�dd��de�ZG�d d��de�ZG�dd��de�ZG�dd��de�Zedk�rJddlZddlZeejd���Zej ��Z!W�dQ�R�X�ee!ej"j#ejd��d�d�Z$x0e$j%��D�]$Z&e$j'e&�Z(e)e(e(j*��e(j+�����q"W�dS�)z2Interface to the compiler's internal symbol tables�����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�Symbolc�������������C���s���t�j|�||�}t||�S�)N)� _symtabler����_newSymbolTable)�code�filenameZcompile_type�top��r���� /usr/lib64/python3.6/symtable.pyr������s����c���������������@���s$���e�Zd�Zdd��Zdd��Zdd��ZdS�)�SymbolTableFactoryc�������������C���s���t�j��|�_d�S�)N)�weakref�WeakValueDictionary�_SymbolTableFactory__memo)�selfr���r���r����__init__���s����zSymbolTableFactory.__init__c�������������C���s6���|j�tjkrt||�S�|j�tjkr,t||�S�t||�S�)N)�typer���� TYPE_FUNCTIONr���� TYPE_CLASSr���r���)r ����tabler���r���r���r����new���s ���� zSymbolTableFactory.newc�������������C���s8���||f}|�j�j|d��}|d�kr4|�j||��}|�j�|<�|S�)N)r����getr&���)r ���r%���r����key�objr���r���r����__call__���s ����zSymbolTableFactory.__call__N)�__name__� __module__�__qualname__r!���r&���r*���r���r���r���r���r������s���r���c���������������@���s����e�Zd�Zdd��Zdd��Zdd��Zdd��Zd d ��Zdd��Zd d��Z dd��Z dd��Zdd��Zdd��Z dd��Zdd��Zdd��Zdd��ZdS�) r���c�������������C���s���||�_�||�_i�|�_d�S�)N)�_table� _filename�_symbols)r ���Z raw_tabler���r���r���r���r!���'���s����zSymbolTable.__init__c�������������C���sN���|�j�tkrd}nd|�j�j�}|�jjdkr6dj||�j�S�dj||�jj|�j�S�d�S�)N��z%s �globalz<{0}SymbolTable for module {1}>z<{0}SymbolTable for {1} in {2}>)� __class__r���r+���r.����name�formatr/���)r ���Zkindr���r���r����__repr__,���s���� zSymbolTable.__repr__c�������������C���sX���|�j�jtjkrdS�|�j�jtjkr$dS�|�j�jtjkr6dS�|�j�jdksTtdj|�j�j���d�S�) N�moduleZfunction�class������������zunexpected type: {0})r9���r:���r;���)r.���r"���r���ZTYPE_MODULEr#���r$����AssertionErrorr5���)r ���r���r���r����get_type9���s����zSymbolTable.get_typec�������������C���s���|�j�jS�)N)r.����id)r ���r���r���r����get_idC���s����zSymbolTable.get_idc�������������C���s���|�j�jS�)N)r.���r4���)r ���r���r���r����get_nameF���s����zSymbolTable.get_namec�������������C���s���|�j�jS�)N)r.����lineno)r ���r���r���r���� get_linenoI���s����zSymbolTable.get_linenoc�������������C���s���t�|�jjtjk�S�)N)�boolr.���r"���r���r#���)r ���r���r���r����is_optimizedL���s����zSymbolTable.is_optimizedc�������������C���s���t�|�jj�S�)N)rC���r.����nested)r ���r���r���r���� is_nestedO���s����zSymbolTable.is_nestedc�������������C���s���t�|�jj�S�)N)rC���r.����children)r ���r���r���r����has_childrenR���s����zSymbolTable.has_childrenc�������������C���s���dS�)z7Return true if the scope uses exec. Deprecated method.Fr���)r ���r���r���r����has_execU���s����zSymbolTable.has_execc�������������C���s���|�j�jj��S�)N)r.����symbols�keys)r ���r���r���r����get_identifiersY���s����zSymbolTable.get_identifiersc�������������C���sD���|�j�j|�}|d�kr@|�jj|�}|�j|�}t|||��}|�j�|<�|S�)N)r0���r'���r.���rJ����_SymbolTable__check_childrenr���)r ���r4���Zsym�flags� namespacesr���r���r����lookup\���s���� zSymbolTable.lookupc����������������s�����fdd���j���D��S�)Nc����������������s���g�|�]}��j�|��qS�r���)rP���)�.0�ident)r ���r���r���� <listcomp>e���s����z+SymbolTable.get_symbols.<locals>.<listcomp>)rL���)r ���r���)r ���r����get_symbolsd���s����zSymbolTable.get_symbolsc����������������s������fdd��j�jD��S�)Nc����������������s"���g�|�]}|j���krt|�j��qS�r���)r4���r���r/���)rQ����st)r4���r ���r���r���rS���h���s���z0SymbolTable.__check_children.<locals>.<listcomp>)r.���rG���)r ���r4���r���)r4���r ���r���Z__check_childreng���s����zSymbolTable.__check_childrenc����������������s�����fdd���j�jD��S�)Nc����������������s���g�|�]}t�|��j��qS�r���)r���r/���)rQ���rU���)r ���r���r���rS���m���s���z,SymbolTable.get_children.<locals>.<listcomp>)r.���rG���)r ���r���)r ���r����get_childrenl���s���� zSymbolTable.get_childrenN)r+���r,���r-���r!���r6���r=���r?���r@���rB���rD���rF���rH���rI���rL���rP���rT���rM���rV���r���r���r���r���r���%���s��� c���������������@���sD���e�Zd�ZdZdZdZdZdd��Zdd��Zdd��Z dd ��Z d d��ZdS�)r���Nc����������������s���t����fdd���j��D���S�)Nc����������������s ���g�|�]}���j�j|��r|�qS�r���)r.���rJ���)rQ���rR���)r ���� test_funcr���r���rS���z���s����z.Function.__idents_matching.<locals>.<listcomp>)�tuplerL���)r ���rW���r���)r ���rW���r���Z__idents_matchingy���s����zFunction.__idents_matchingc�������������C���s ���|�j�d�kr|�jdd���|�_�|�j�S�)Nc�������������S���s���|�t�@�S�)N)r���)�xr���r���r����<lambda>���s����z)Function.get_parameters.<locals>.<lambda>)�_Function__params�_Function__idents_matching)r ���r���r���r����get_parameters}���s���� zFunction.get_parametersc����������������s0���|�j�d�kr*ttf����fdd�}|�j|�|�_�|�j�S�)Nc����������������s���|�t�?�t@���kS�)N)r ���r ���)rY���)�locsr���r���rZ�������s����z%Function.get_locals.<locals>.<lambda>)�_Function__localsr���r���r\���)r ����testr���)r^���r���� get_locals����s ���� zFunction.get_localsc����������������s0���|�j�d�kr*ttf����fdd�}|�j|�|�_�|�j�S�)Nc����������������s���|�t�?�t@���kS�)N)r ���r ���)rY���)�globr���r���rZ�������s����z&Function.get_globals.<locals>.<lambda>)�_Function__globalsr ���r���r\���)r ���r`���r���)rb���r����get_globals����s ���� zFunction.get_globalsc�������������C���s$���|�j�d�krdd��}|�j|�|�_�|�j�S�)Nc�������������S���s���|�t�?�t@�tkS�)N)r ���r ���r���)rY���r���r���r���rZ�������s����z$Function.get_frees.<locals>.<lambda>)�_Function__freesr\���)r ����is_freer���r���r���� get_frees����s���� zFunction.get_frees)r+���r,���r-���r[���r_���re���rc���r\���r]���ra���rd���rg���r���r���r���r���r���q���s���c���������������@���s���e�Zd�ZdZdd��ZdS�)r���Nc�������������C���s:���|�j�d�kr4i�}x|�jjD�]}d||j<�qW�t|�|�_�|�j�S�)Nr9���)�_Class__methodsr.���rG���r4���rX���)r ����drU���r���r���r����get_methods����s���� zClass.get_methods)r+���r,���r-���rh���rj���r���r���r���r���r�������s���c���������������@���s����e�Zd�Zd dd�Zdd��Zdd��Zdd ��Zd d��Zdd ��Zdd��Z dd��Z dd��Zdd��Zdd��Z dd��Zdd��Zdd��Zdd��ZdS�)!r���Nc�������������C���s(���||�_�||�_|t?�t@�|�_|p f�|�_d�S�)N)� _Symbol__name�_Symbol__flagsr ���r ����_Symbol__scope�_Symbol__namespaces)r ���r4���rN���rO���r���r���r���r!�������s����zSymbol.__init__c�������������C���s���dj�|�j�S�)Nz<symbol {0!r}>)r5���rk���)r ���r���r���r���r6�������s����zSymbol.__repr__c�������������C���s���|�j�S�)N)rk���)r ���r���r���r���r@�������s����zSymbol.get_namec�������������C���s���t�|�jtj@��S�)N)rC���rl���r���r���)r ���r���r���r���� is_referenced����s����zSymbol.is_referencedc�������������C���s���t�|�jt@��S�)N)rC���rl���r���)r ���r���r���r����is_parameter����s����zSymbol.is_parameterc�������������C���s���t�|�jttfk�S�)N)rC���rm���r ���r���)r ���r���r���r���� is_global����s����zSymbol.is_globalc�������������C���s���t�|�jtk�S�)N)rC���rm���r���)r ���r���r���r����is_declared_global����s����zSymbol.is_declared_globalc�������������C���s���t�|�jt@��S�)N)rC���rl���r���)r ���r���r���r����is_local����s����zSymbol.is_localc�������������C���s���t�|�jt@��S�)N)rC���rl���r���)r ���r���r���r����is_annotated����s����zSymbol.is_annotatedc�������������C���s���t�|�jtk�S�)N)rC���rm���r���)r ���r���r���r���rf�������s����zSymbol.is_freec�������������C���s���t�|�jt@��S�)N)rC���rl���r���)r ���r���r���r����is_imported����s����zSymbol.is_importedc�������������C���s���t�|�jt@��S�)N)rC���rl���r���)r ���r���r���r����is_assigned����s����zSymbol.is_assignedc�������������C���s ���t�|�j�S�)a���Returns true if name binding introduces new namespace. If the name is used as the target of a function or class statement, this will be true. Note that a single name can be bound to multiple objects. If is_namespace() is true, the name may also be bound to other objects, like an int or list, that does not introduce a new namespace. )rC���rn���)r ���r���r���r����is_namespace����s����zSymbol.is_namespacec�������������C���s���|�j�S�)z.Return a list of namespaces bound to this name)rn���)r ���r���r���r����get_namespaces����s����zSymbol.get_namespacesc�������������C���s ���t�|�j�dkrtd��|�jd�S�)z�Returns the single namespace bound to this name. Raises ValueError if the name is bound to multiple namespaces. r9���z$name is bound to multiple namespacesr���)�lenrn���� ValueError)r ���r���r���r���� get_namespace����s����zSymbol.get_namespace)N)r+���r,���r-���r!���r6���r@���ro���rp���rq���rr���rs���rt���rf���ru���rv���rw���rx���r{���r���r���r���r���r�������s��� �__main__r9����exec),�__doc__r���r���r���r���r���r���r���r���r ���r ���r���r���r ���r���r���r����__all__r���r���r����objectr���r���r���r���r+����os�sys�open�argv�f�read�src�path�split�modrL���rR���rP����info�printrs���rw���r���r���r���r����<module>���s&���@L& C