o
    deg0  ã                   @   sT   d dl mZmZ d dlZd dlZG dd„ deƒZG dd„ deƒZdd„ Zd	d
„ ZdS )é    )Ú	AstToGAstÚ	GAstToAstNc                   @   sœ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%S )&Ú
Ast2ToGAstc                 C   s   t  |  |j¡g ¡}|S ©N)ÚgastÚModuleÚ_visitÚbody©ÚselfÚnodeÚnew_node© r   ú9D:\Projects\ConvertPro\env\Lib\site-packages\gast/ast2.pyÚvisit_Module	   s
   
þzAst2ToGAst.visit_Modulec                 C   sP   t  |  |j¡|  |j¡|  |j¡|  |j¡d d ¡}t  ||¡ d  |_|_	|S r   )
r   ÚFunctionDefr   ÚnameÚargsr	   Údecorator_listÚcopy_locationÚ
end_linenoÚend_col_offsetr
   r   r   r   Úvisit_FunctionDef   s   



úzAst2ToGAst.visit_FunctionDefc              	   C   sN   t  |  |j¡|  |j¡g |  |j¡|  |j¡¡}t  ||¡ d  |_|_	|S r   )
r   ÚClassDefr   r   Úbasesr	   r   r   r   r   r
   r   r   r   Úvisit_ClassDef   s   



ûzAst2ToGAst.visit_ClassDefc                 C   sN   t  |  |j¡|  |j¡|  |j¡|  |j¡g ¡}t  ||¡ d  |_|_	|S r   )
r   ÚForr   ÚtargetÚiterr	   Úorelser   r   r   r
   r   r   r   Ú	visit_For+   s   



ûzAst2ToGAst.visit_Forc                 C   sL   t  t  |  |j¡|  |j¡¡g|  |j¡d ¡}t  ||¡ d  |_|_	|S r   )
r   ÚWithÚwithitemr   Úcontext_exprÚoptional_varsr	   r   r   r   r
   r   r   r   Ú
visit_With7   s   

þ
úzAst2ToGAst.visit_Withc                 C   sÚ   |   |j¡}|   |j¡}|   |j¡}|}|d ur,t ||gg ¡}t ||¡ d  |_|_|d urYt 	|dt 
¡ ¡}t ||¡ d  |_|_t ||gg ¡}t ||¡ d  |_|_t |d ¡}t ||¡ d  |_|_|S )NÚwith_traceback)r   ÚtypeÚinstZtbackr   ÚCallr   r   r   Ú	AttributeÚLoadÚRaise)r   r   ZntypeZninstZntbackÚwhatÚattrr   r   r   r   Úvisit_RaiseD   s.   ýzAst2ToGAst.visit_Raisec                 C   sD   t  |  |j¡|  |j¡|  |j¡g ¡}t  ||¡ d  |_|_|S r   )	r   ÚTryr   r	   Úhandlersr   r   r   r   r
   r   r   r   Úvisit_TryExceptc   s   


üzAst2ToGAst.visit_TryExceptc                 C   s<   t  |  |j¡g g |  |j¡¡}t  ||¡ d  |_|_|S r   )r   r0   r   r	   Ú	finalbodyr   r   r   r
   r   r   r   Úvisit_TryFinallyn   s   

üzAst2ToGAst.visit_TryFinallyc                 C   s<   t  |  |j¡|  |j¡d d ¡}t  ||¡ d  |_|_|S r   )r   ÚNamer   ÚidÚctxr   r   r   r
   r   r   r   Ú
visit_Name{   s   

üzAst2ToGAst.visit_Namec                 C   ó*   t  |jd ¡}t  ||¡ d  |_|_|S r   )r   ÚConstantÚnr   r   r   r
   r   r   r   Ú	visit_Num†   ó   þzAst2ToGAst.visit_Numc                 C   sF   |   |j¡}t |   |j¡||   |j¡¡}t ||¡ d  |_|_|S r   )	r   Úslicer   Ú	SubscriptÚvaluer7   r   r   r   ©r   r   Z	new_slicer   r   r   r   Úvisit_Subscript   s   

ýzAst2ToGAst.visit_Subscriptc                 C   s(   t  td ¡}t  ||¡ d  |_|_|S r   )r   r:   ÚEllipsisr   r   r   r
   r   r   r   Úvisit_Ellipsisš   s   þzAst2ToGAst.visit_Ellipsisc                 C   s   |   |j¡S r   )r   r@   )r   r   r   r   r   Úvisit_Index£   ó   zAst2ToGAst.visit_Indexc                 C   s8   |   |j¡}t |t ¡ ¡}t ||¡ d  |_|_|S r   )r   Údimsr   ÚTupler+   r   r   r   )r   r   Znew_dimsr   r   r   r   Úvisit_ExtSlice¦   s
   zAst2ToGAst.visit_ExtSlicec                 C   r9   r   )r   r:   Úsr   r   r   r
   r   r   r   Ú	visit_Str­   r=   zAst2ToGAst.visit_Strc                 C   s®   |j rt |  |j ¡t ¡ ¡}t ||¡ d  |_|_|g}ng }|jr0t 	d |  |j¡¡g}ng }t 
|  |j¡|  |j¡| |  |j¡| ¡}t ||¡ d  |_|_|S r   )Ústarargsr   ÚStarredr   r+   r   r   r   ÚkwargsÚkeywordr)   Úfuncr   Úkeywords)r   r   ÚstarZstarredrN   r   r   r   r   Ú
visit_Call¶   s"   
ýzAst2ToGAst.visit_Callc                 C   sF   t j|  |j¡|  |j¡|  |j¡dd}t  ||¡ d  |_|_|S )Nr   )r   r   ÚifsÚis_async)	r   Úcomprehensionr   r   r   rT   r   r   r   r
   r   r   r   Úvisit_comprehensionÍ   s   


üzAst2ToGAst.visit_comprehensionc                 C   s   |j rt |j t ¡ ¡}nd }|jrt |jt ¡ ¡}nd }|j r+t |j t ¡ ¡}nd }t |  |j¡g |  |¡g g |  |¡|  |j	¡¡}|S r   )
ÚvarargÚastr5   ÚParamÚkwargr   Ú	argumentsr   r   Údefaults©r   r   rX   r[   r   r   r   r   Úvisit_argumentsÙ   s&   

ù	zAst2ToGAst.visit_argumentsN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r    r%   r/   r2   r4   r8   r<   rB   rD   rE   rI   rK   rS   rW   r_   r   r   r   r   r      s&    			r   c                   @   st   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )Ú
GAstToAst2c                 C   s   t  |  |j¡¡}|S r   )rY   r   r   r	   r
   r   r   r   r   ù   s   zGAstToAst2.visit_Modulec                 C   sp   t  |  |j¡|  |j¡|  |j¡|  |j¡¡}|jjr$t  |jj|¡ |jj	r0t  |jj	|¡ t  ||¡ |S r   )
rY   r   r   r   r   r	   r   rX   r   r[   r
   r   r   r   r   þ   s   



üzGAstToAst2.visit_FunctionDefc                 C   ó@   t  |  |j¡|  |j¡|  |j¡|  |j¡¡}t  ||¡ |S r   )rY   r   r   r   r   r	   r   r   r
   r   r   r   r     ó   



üzGAstToAst2.visit_ClassDefc                 C   rd   r   )rY   r   r   r   r   r	   r   r   r
   r   r   r   r      re   zGAstToAst2.visit_Forc                 C   sB   t  |  |jd j¡|  |jd j¡|  |j¡¡}t  ||¡ |S )Nr   )rY   r!   r   Úitemsr#   r$   r	   r   r
   r   r   r   r%   $  s   
ýzGAstToAst2.visit_Withc                 C   s~   t |jtjƒr(t |jjtjƒr(|jjjdkr(|  |jjj¡}|  |jj	d ¡}n|  |j¡}d }t
 |d |¡}t
 ||¡ |S )Nr&   r   )Ú
isinstanceÚexcr   r)   rP   r*   r.   r   r@   r   rY   r,   r   )r   r   ÚraisedÚ	tracebackr   r   r   r   r/   -  s   ÿzGAstToAst2.visit_Raisec                 C   sZ   |j rt |  |j¡|  |j ¡¡}nt |  |j¡|  |j¡|  |j¡¡}t ||¡ |S r   )	r3   rY   Z
TryFinallyr   r	   Z	TryExceptr1   r   r   r
   r   r   r   Ú	visit_Try:  s   

þ


ýzGAstToAst2.visit_Tryc                 C   s,   t  |  |j¡|  |j¡¡}t  ||¡ |S r   )rY   r5   r   r6   r7   r   r
   r   r   r   r8   K  s   

þzGAstToAst2.visit_Namec                 C   sT   t |jtttttfƒrt |j¡}n|jt	u rt 	¡ }nt 
|j¡}t ||¡ |S r   )rg   r@   ÚboolÚintÚlongÚfloatÚcomplexrY   ÚNumrC   ÚStrr   r
   r   r   r   Úvisit_ConstantS  s   

zGAstToAst2.visit_Constantc                    sŽ   dd„ ‰ t |jtjƒrt ‡ ‡fdd„|jjD ƒ¡}nˆ ˆ |j¡ƒ}t ||j¡ t 	ˆ |j
¡|ˆ |j¡¡}t ||¡ d  |_|_|S )Nc                 S   s    t | tjtjfƒr| S t | ¡S r   )rg   rY   ÚSlicerC   ÚIndex)rJ   r   r   r   Úadjust_slice^  s   
z0GAstToAst2.visit_Subscript.<locals>.adjust_slicec                    s   g | ]	}ˆ ˆ  |¡ƒ‘qS r   )r   )Ú.0Úelt©rv   r   r   r   Ú
<listcomp>d  s    ÿz.GAstToAst2.visit_Subscript.<locals>.<listcomp>)rg   r>   r   rH   rY   ÚExtSliceÚeltsr   r   r?   r@   r7   r   r   rA   r   ry   r   rB   ]  s   
ÿ

ýzGAstToAst2.visit_Subscriptc              	   C   s¼   |j rt|j d tjƒr|j d d… }|j d j}n|j }d }|jr8|jd jd u r8|jd d… }|jd j}n|j}d }t |  	|j
¡|  	|¡|  	|¡|  	|¡|  	|¡¡}t ||¡ |S )Néÿÿÿÿ)r   rg   r   rM   r@   rQ   ÚargrY   r)   r   rP   r   )r   r   r   rL   rQ   rN   r   r   r   r   rS   s  s&   
ûzGAstToAst2.visit_Callc                 C   s"   t  |jt  ¡ ¡}t  ||¡ |S r   )rY   r5   r~   rZ   r   r
   r   r   r   Ú	visit_argŒ  s   zGAstToAst2.visit_argc                 C   sL   |j o|j j}|jo|jj}t |  |j¡|  |¡|  |¡|  |j¡¡}|S r   )rX   r6   r[   rY   r\   r   r   r]   r^   r   r   r   r_   ’  s   

üzGAstToAst2.visit_argumentsN)r`   ra   rb   r   r   r   r    r%   r/   rk   r8   rs   rB   rS   r   r_   r   r   r   r   rc   ö   s    	
rc   c                 C   ó   t ƒ  | ¡S r   )r   Úvisit©r   r   r   r   Úast_to_gastŸ  rF   rƒ   c                 C   r€   r   )rc   r   r‚   r   r   r   Úgast_to_ast£  rF   r„   )	Zastnr   r   rY   r   r   rc   rƒ   r„   r   r   r   r   Ú<module>   s     q *