
    YeIi                     &   d Z ddlZddlZddlmZ ddlmZ ddlmZ ddlmZ h dZ ej	        d          Z
 ej        e           dd
Z G d dej                  Z G d dej                  Z G d dej                  Z G d d          ZdS )zyHandles parsing of Python code.

Parsing to AST is done via _ast on Python > 2.5, otherwise the compiler
module is used.
    N)	_ast_util)compat)
exceptions)util>   NoneTrueFalseprintargexecc                     	 t          j        | d|          S # t          $ rV}t          j        dt          j                    j        j        dt          j                    d| dd         dfi ||d}~ww xY w)	zParse an expression into ASTz	<unknown>(z) z (r   2   )N)	r   parse	Exceptionr   SyntaxExceptionr   exception_as	__class____name__)codemodeexception_kwargses       R/var/www/html/MCyber-Diagnostic/venv/lib/python3.11/site-packages/mako/pyparser.pyr   r       s    t[$777 	 	 	(( #%%/888#%%%%QrT


	
 
 
 
 		s    
A8AA33A8c                   p    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
e
xZZd	 Zd
 Zd Zd Zd Zd Zd ZdS )FindIdentifiersc                 d    d| _         d| _        t                      | _        || _        || _        d S NF)in_functionin_assign_targetssetlocal_ident_stacklistenerr   selfr$   r   s      r   __init__zFindIdentifiers.__init__2   s3     !&!$  0    c                     | j         s!| j        j                            |           d S | j                            |           d S N)r    r$   declared_identifiersaddr#   )r&   names     r   _add_declaredzFindIdentifiers._add_declared9   sI     	-M.22488888"&&t,,,,,r(   c                 :    |                      |j                   d S r*   )r.   r-   r&   nodes     r   visit_ClassDefzFindIdentifiers.visit_ClassDef?   s    49%%%%%r(   c                     |                      |j                   | j        }d| _        |j        D ]}|                      |           || _        d S NT)visitvaluer!   targets)r&   r1   in_ans       r   visit_AssignzFindIdentifiers.visit_AssignB   sX    
 	

4:%!% 	 	AJJqMMMM!%r(   c                     |j         |                     |j                    |j        |                     |j                   |j        D ]}|                     |           d S r*   )r-   r.   typer5   bodyr&   r1   	statements      r   visit_ExceptHandlerz#FindIdentifiers.visit_ExceptHandlerN   sl    9 ty)))9 JJty!!! 	" 	"IJJy!!!!	" 	"r(   c                 2    |                      |d           d S r4   )_visit_function)r&   r1   argss      r   visit_LambdazFindIdentifiers.visit_LambdaV   s    T4(((((r(   c                 f    |                      |j                   |                     |d           d S r   )r.   r-   rB   r0   s     r   visit_FunctionDefz!FindIdentifiers.visit_FunctionDefY   s4    49%%%T5)))))r(   c                     | j         r@|j        D ]6}|                     |j                   |                     |j                   7d S |                     |           d S r*   r    
generatorsr5   targetitergeneric_visitr&   r1   comps      r   visit_ListCompzFindIdentifiers.visit_ListComp]   o     	% & &

4;'''

49%%%%& & t$$$$$r(   c                     | j         r@|j        D ]6}|                     |j                   |                     |j                   7d S |                     |           d S r*   rH   rM   s      r   visit_DictCompzFindIdentifiers.visit_DictCompg   rP   r(   c              #   l   K   |D ].}t          |t          j                  r|j        E d {V  *|V  /d S r*   )
isinstance_astTupleelts)r&   rC   r   s      r   _expand_tupleszFindIdentifiers._expand_tupleso   s[       	 	C#tz** 8########						 	r(   c                 F   | j         }d| _         | j        }|                    d |                     |j        j                  D                       | _        |r|                     |j                   n|j        D ]}|                     |           || _         || _        d S )NTc                 ,    g | ]}t          |          S  arg_id.0r   s     r   
<listcomp>z3FindIdentifiers._visit_function.<locals>.<listcomp>   s    HHHSVC[[HHHr(   )r    r#   unionrX   rC   r5   r=   )r&   r1   islambdainfr#   r9   s         r   rB   zFindIdentifiers._visit_functionv   s      2!2!8!8HHD$7$7	$G$GHHH"
 "
  	JJty!!!!Y  

1!2r(   c                     |                      |j                   |                      |j                   |j        D ]}|                      |           |j        D ]}|                      |           d S r*   )r5   rK   rJ   r=   orelser>   s      r   	visit_ForzFindIdentifiers.visit_For   s     	

49

4; 	" 	"IJJy!!!! 	" 	"IJJy!!!!	" 	"r(   c                 .   t          |j        t          j                  r|                     |j                   d S |j        t          vrG|j        | j        j        vr6|j        | j	        vr*| j        j
                            |j                   d S d S d S d S r*   )rT   ctxrU   Storer.   idreservedr$   r+   r#   undeclared_identifiersr,   r0   s     r   
visit_NamezFindIdentifiers.visit_Name   s    dh
++ 		> tw'''''G8##t}AAAt555M044TW=====	 $#AA55r(   c                     |j         D ]W}|j        |                     |j                   $|                     |j                            d          d                    Xd S )N.r   )namesasnamer.   r-   splitr&   r1   r-   s      r   visit_ImportzFindIdentifiers.visit_Import   sh    J 	< 	<D{&""4;////""49??3#7#7#:;;;;		< 	<r(   c                     |j         D ]`}|j        |                     |j                   $|j        dk    rt	          j        	 di | j        |                     |j                   ad S )N*'import *' is not supported, since all identifier names must be explicitly declared.  Please use the form 'from <modulename> import <name1>, <name2>, ...' instead.)rw   )rp   rq   r.   r-   r   CompileExceptionr   rs   s      r   visit_ImportFromz FindIdentifiers.visit_ImportFrom   s    J 	. 	.D{&""4;////c!! 1$ 
 +   ""49----	. 	.r(   N)r   
__module____qualname__r'   r.   r2   r:   r@   rD   rF   rO   visit_SetCompvisit_GeneratorExprR   rX   rB   rf   rm   rt   ry   r[   r(   r   r   r   1   s       1 1 1- - -& & &
& 
& 
&" " ") ) )* * *% % % *87M&% % %  3 3 3," " "
> 
> 
>< < <. . . . .r(   r   c                       e Zd Zd Zd ZdS )	FindTuplec                 0    || _         || _        || _        d S r*   )r$   r   code_factory)r&   r$   r   r   s       r   r'   zFindTuple.__init__   s      0(r(   c                    |j         D ]} | j        |fi | j        }| j        j                            |           | j        j                            t          |                                                     | j        j	        }|
                    |j	                  | j        _	        | j        j        }|
                    |j                  | j        _        d S r*   )rW   r   r   r$   codeargsappendrC   ExpressionGeneratorr6   r+   ra   rl   )r&   r1   r9   pldiluis         r   visit_TuplezFindTuple.visit_Tuple   s     	 	A!!!==t'<==AM"))!,,,M%%&9!&<&<&B&B&D&DEEE-4C14&2 2DM. -6C3699(4 4DM00	 	r(   N)r   rz   r{   r'   r   r[   r(   r   r   r      s2        ) ) )
    r(   r   c                       e Zd Zd Zd ZdS )	ParseFuncc                 "    || _         || _        d S r*   )r$   r   r%   s      r   r'   zParseFunc.__init__   s      0r(   c                     |j         | j        _        d |j        j        D             }|j        j        r$|                    |j        j        j                   d |j        j        D             }|j        j        r$|                    |j        j        j                   || j        _	        |j        j
        | j        _
        || j        _        |j        j        | j        _        |j        j        | j        _        |j        j        | j        _        d S )Nc                 ,    g | ]}t          |          S r[   r\   r^   s     r   r`   z/ParseFunc.visit_FunctionDef.<locals>.<listcomp>   s    :::CF3KK:::r(   c                 ,    g | ]}t          |          S r[   r\   r^   s     r   r`   z/ParseFunc.visit_FunctionDef.<locals>.<listcomp>   s    BBBcfSkkBBBr(   )r-   r$   funcnamerC   varargr   r   
kwonlyargskwargargnamesdefaults
kwargnameskw_defaults
kwdefaultsvarargskwargs)r&   r1   r   r   s       r   rF   zParseFunc.visit_FunctionDef   s    !%::49>:::9 	2OODI,0111BBTY-ABBB
9? 	3dio1222!)!%!3#- #'9#8  $	 0#yr(   N)r   rz   r{   r'   rF   r[   r(   r   r   r      s2        1 1 1/ / / / /r(   r   c                       e Zd Zd Zd ZdS )r   c                 l    t          j        d          | _        | j                            |           d S )Nz    )r   SourceGenerator	generatorr5   )r&   astnodes     r   r'   zExpressionGenerator.__init__   s0    "27;;W%%%%%r(   c                 @    d                     | j        j                  S )N )joinr   result)r&   s    r   r6   zExpressionGenerator.value   s    wwt~,---r(   N)r   rz   r{   r'   r6   r[   r(   r   r   r      s2        & & &. . . . .r(   r   )r   )__doc__operatorrU   makor   r   r   r   rk   
attrgetterr]   restore__astr   NodeVisitorr   r   r   r   r[   r(   r   <module>r      su                              .-- 
	U	#	#  $      "E. E. E. E. E.i+ E. E. E.P    	%   */ / / / /	% / / /.. . . . . . . . . .r(   