관리-도구
편집 파일: symtable.cpython-39.pyc
a �����DOg�����������������������@���sX��d�Z�ddlZddlmZmZmZmZmZmZmZm Z m Z mZmZm Z mZmZmZ�ddlZg�d�Zdd��ZG�dd��d�Ze��ZG�d d ��d �ZG�dd��de�ZG�d d��de�ZG�dd��d�Zedk�rTddlZddlZeejd���Ze� ��Z!W�d����n1�s�0����Y��ee!ej"�#ejd��d�d�Z$e$�%��D�]$Z&e$�'e&�Z(e)e(e(�*��e(�+�����q.dS�)z2Interface to the compiler's internal symbol tables�����N)�USE� DEF_GLOBAL�DEF_NONLOCAL� 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��|�||�}t||�S��N)� _symtabler����_newSymbolTable)�code�filenameZcompile_type�top��r���� /usr/lib64/python3.9/symtable.pyr������s����r���c�������������������@���s$���e�Zd�Zdd��Zdd��Zdd��ZdS�)�SymbolTableFactoryc�����������������C���s���t����|�_d�S�r���)�weakref�WeakValueDictionary�_SymbolTableFactory__memo��selfr���r���r����__init__���s����zSymbolTableFactory.__init__c�����������������C���s6���|j�tjkrt||�S�|j�tjkr,t||�S�t||�S�r���)�typer���� TYPE_FUNCTIONr���� TYPE_CLASSr���r���)r#����tabler���r���r���r����new���s ���� zSymbolTableFactory.newc�����������������C���s8���||f}|�j��|d��}|d�u�r4|��||��}|�j�|<�|S�r���)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��ZdS�)r���c�����������������C���s���||�_�||�_i�|�_d�S�r���)�_table� _filename�_symbols)r#���Z raw_tabler���r���r���r���r$���'���s����zSymbolTable.__init__c�����������������C���sN���|�j�tkrd}nd|�j�j�}|�jjdkr6d�||�j�S�d�||�jj|�j�S�d�S�)N��z%s r���z<{0}SymbolTable for module {1}>z<{0}SymbolTable for {1} in {2}>)� __class__r���r.���r1����name�formatr2���)r#����kindr���r���r����__repr__,���s���� �zSymbolTable.__repr__c�����������������C���sX���|�j�jtjkrdS�|�j�jtjkr$dS�|�j�jtjkr6dS�|�j�jdv�sTJ�d�|�j�j���d�S�)N�module�function�class)������������zunexpected type: {0})r1���r%���r���ZTYPE_MODULEr&���r'���r7���r"���r���r���r����get_type9���s�����zSymbolTable.get_typec�����������������C���s���|�j�jS�r���)r1����idr"���r���r���r����get_idC���s����zSymbolTable.get_idc�����������������C���s���|�j�jS�r���)r1���r6���r"���r���r���r����get_nameF���s����zSymbolTable.get_namec�����������������C���s���|�j�jS�r���)r1����linenor"���r���r���r���� get_linenoI���s����zSymbolTable.get_linenoc�����������������C���s���t�|�jjtjk�S�r���)�boolr1���r%���r���r&���r"���r���r���r����is_optimizedL���s����zSymbolTable.is_optimizedc�����������������C���s���t�|�jj�S�r���)rF���r1����nestedr"���r���r���r���� is_nestedO���s����zSymbolTable.is_nestedc�����������������C���s���t�|�jj�S�r���)rF���r1����childrenr"���r���r���r����has_childrenR���s����zSymbolTable.has_childrenc�����������������C���s���|�j�j���S�r���)r1����symbols�keysr"���r���r���r����get_identifiersU���s����zSymbolTable.get_identifiersc�����������������C���sT���|�j��|�}|d�u�rP|�jj|�}|��|�}|�jjdk}t||||d��}|�j�|<�|S�)Nr�����module_scope)r3���r*���r1���rL����_SymbolTable__check_childrenr6���r���)r#���r6���Zsym�flags� namespacesrP���r���r���r����lookupX���s���� �zSymbolTable.lookupc��������������������s�����fdd�������D��S�)Nc��������������������s���g�|�]}����|��qS�r���)rT�����.0�identr"���r���r���� <listcomp>c��������z+SymbolTable.get_symbols.<locals>.<listcomp>)rN���r"���r���r"���r����get_symbolsb���s����zSymbolTable.get_symbolsc��������������������s������fdd��j�jD��S�)Nc��������������������s"���g�|�]}|j���krt|�j��qS�r���)r6���r���r2����rV����st�r6���r#���r���r���rX���f���s��� �z0SymbolTable.__check_children.<locals>.<listcomp>�r1���rJ���)r#���r6���r���r]���r���Z__check_childrene���s�����zSymbolTable.__check_childrenc��������������������s�����fdd���j�jD��S�)Nc��������������������s���g�|�]}t�|��j��qS�r���)r���r2���r[���r"���r���r���rX���k���s����z,SymbolTable.get_children.<locals>.<listcomp>r^���r"���r���r"���r����get_childrenj���s���� �zSymbolTable.get_childrenN)r.���r/���r0���r$���r9���r@���rB���rC���rE���rG���rI���rK���rN���rT���rZ���rQ���r_���r���r���r���r���r���%���s��� r���c�������������������@���sP���e�Zd�ZdZdZdZdZdZdd��Zdd��Z dd��Z dd ��Zd d��Zdd ��Z dS�)r���Nc��������������������s���t����fdd������D���S�)Nc�����������������3���s"���|�]}���j�j|��r|V��qd�S�r���)r1���rL���rU����r#���Z test_funcr���r���� <genexpr>y���s����z-Function.__idents_matching.<locals>.<genexpr>)�tuplerN���r`���r���r`���r���Z__idents_matchingx���s����zFunction.__idents_matchingc�����������������C���s ���|�j�d�u�r|��dd���|�_�|�j�S�)Nc�����������������S���s���|�t�@�S�r���)r�����xr���r���r����<lambda>~���rY���z)Function.get_parameters.<locals>.<lambda>)�_Function__params�_Function__idents_matchingr"���r���r���r����get_parameters|���s���� zFunction.get_parametersc��������������������s0���|�j�d�u�r*ttf����fdd�}|��|�|�_�|�j�S�)Nc��������������������s���|�t�?�t@���v�S�r����r ���r���rc����Zlocsr���r���re�������rY���z%Function.get_locals.<locals>.<lambda>)�_Function__localsr ���r���rg����r#����testr���rj���r���� get_locals����s ���� zFunction.get_localsc��������������������s0���|�j�d�u�r*ttf����fdd�}|��|�|�_�|�j�S�)Nc��������������������s���|�t�?�t@���v�S�r���ri���rc�����globr���r���re�������rY���z&Function.get_globals.<locals>.<lambda>)�_Function__globalsr���r���rg���rl���r���ro���r����get_globals����s ���� zFunction.get_globalsc�����������������C���s ���|�j�d�u�r|��dd���|�_�|�j�S�)Nc�����������������S���s���|�t�@�S�r���)r���rc���r���r���r���re�������rY���z(Function.get_nonlocals.<locals>.<lambda>)�_Function__nonlocalsrg���r"���r���r���r���� get_nonlocals����s���� zFunction.get_nonlocalsc�����������������C���s$���|�j�d�u�rdd��}|��|�|�_�|�j�S�)Nc�����������������S���s���|�t�?�t@�tkS�r���)r ���r���r���rc���r���r���r���re�������rY���z$Function.get_frees.<locals>.<lambda>)�_Function__freesrg���)r#����is_freer���r���r���� get_frees����s���� zFunction.get_frees)r.���r/���r0���rf���rk���ru���rq���rs���rg���rh���rn���rr���rt���rw���r���r���r���r���r���o���s���r���c�������������������@���s���e�Zd�ZdZdd��ZdS�)r���Nc�����������������C���s6���|�j�d�u�r0i�}|�jjD�]}d||j<�qt|�|�_�|�j�S�)Nr=���)�_Class__methodsr1���rJ���r6���rb���)r#����dr\���r���r���r����get_methods����s���� zClass.get_methods)r.���r/���r0���rx���rz���r���r���r���r���r�������s���r���c�������������������@���s����e�Zd�Zd$dd�dd�Zdd��Zdd ��Zd d��Zdd ��Zdd��Zdd��Z dd��Z dd��Zdd��Zdd��Z dd��Zdd��Zdd��Zd d!��Zd"d#��ZdS�)%r���NFrO���c����������������C���s.���||�_�||�_|t?�t@�|�_|p d|�_||�_d�S�)Nr���)� _Symbol__name�_Symbol__flagsr ���r����_Symbol__scope�_Symbol__namespaces�_Symbol__module_scope)r#���r6���rR���rS���rP���r���r���r���r$�������s ���� zSymbol.__init__c�����������������C���s���d��|�j�S�)Nz<symbol {0!r}>)r7���r{���r"���r���r���r���r9�������s����zSymbol.__repr__c�����������������C���s���|�j�S�r���)r{���r"���r���r���r���rC�������s����zSymbol.get_namec�����������������C���s���t�|�jtj@��S�r���)rF���r|���r���r���r"���r���r���r���� is_referenced����s����zSymbol.is_referencedc�����������������C���s���t�|�jt@��S�r���)rF���r|���r���r"���r���r���r����is_parameter����s����zSymbol.is_parameterc�����������������C���s"���t�|�jttfv�p|�jo|�jt@��S�)z0Return *True* if the sysmbol is global. )rF���r}���r���r���r���r|���r���r"���r���r���r���� is_global����s�����zSymbol.is_globalc�����������������C���s���t�|�jt@��S�r���)rF���r|���r���r"���r���r���r����is_nonlocal����s����zSymbol.is_nonlocalc�����������������C���s���t�|�jtk�S�r���)rF���r}���r���r"���r���r���r����is_declared_global����s����zSymbol.is_declared_globalc�����������������C���s"���t�|�jttfv�p|�jo|�jt@��S�)z.Return *True* if the symbol is local. )rF���r}���r ���r���r���r|���r���r"���r���r���r����is_local����s�����zSymbol.is_localc�����������������C���s���t�|�jt@��S�r���)rF���r|���r ���r"���r���r���r����is_annotated����s����zSymbol.is_annotatedc�����������������C���s���t�|�jtk�S�r���)rF���r}���r���r"���r���r���r���rv�������s����zSymbol.is_freec�����������������C���s���t�|�jt@��S�r���)rF���r|���r���r"���r���r���r����is_imported����s����zSymbol.is_importedc�����������������C���s���t�|�jt@��S�r���)rF���r|���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. )rF���r~���r"���r���r���r����is_namespace����s����zSymbol.is_namespacec�����������������C���s���|�j�S�)z.Return a list of namespaces bound to this name)r~���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. r=���z$name is bound to multiple namespacesr���)�lenr~���� ValueErrorr"���r���r���r���� get_namespace����s����zSymbol.get_namespace)N)r.���r/���r0���r$���r9���rC���r����r����r����r����r����r����r����rv���r����r����r����r����r����r���r���r���r���r�������s ��� r����__main__r=����exec),�__doc__r���r���r���r���r���r���r���r���r ���r ���r���r���r ���r���r���r���r����__all__r���r���r���r���r���r���r���r.����os�sys�open�argv�f�read�src�path�split�modrN���rW���rT����info�printr����r����r���r���r���r����<module>���s&���DJ, M &