o
    ld9                     @  sh   d dl mZ ddlmZ ddlmZ d dlZd dlZddd	d
ddZ	G dd deZ
G dd deZdS )    )annotations   )mparser   )
AstVisitorN+-%*/)addsubmodmulZdivc                   @  sN  e Zd Zdkdld	d
ZdmddZdnddZdnddZdmddZdoddZdpddZ	dqd d!Z
drd#d$Zdsd&d'Zdtd)d*Zdud,d-Zdvd/d0Zdwd2d3Zdxd5d6Zdyd8d9Zdzd;d<Zd{d>d?Zd|dAdBZd}dDdEZd~dGdHZddJdKZddMdNZddPdQZddSdTZddVdWZddYdZZdd\d]Zdd_d`ZddbdcZ ddedfZ!ddhdiZ"djS )
AstPrinterr      Findentintarg_newline_cutoffupdate_ast_line_nosboolc                 C  s<   d| _ || _|| _d| _d| _d| _|rd| _d S d | _d S )N Tr   r   )resultr   r   ci
is_newline
last_level	curr_line)selfr   r   r    r   uhome/ych/rk3568/buildroot/output/rockchip_rk3568_recovery/host/lib/python3.10/site-packages/mesonbuild/ast/printer.py__init__!   s   zAstPrinter.__init__returnNonec                 C  s   t dd| j| _d S )Nz\s+\n
)rer   r   r   r   r   r   post_process*   s   zAstPrinter.post_processdatastrnodemparser.BaseNodec                 C  s@   |j | _| jr|  jd|j | j  7  _|  j|7  _d| _d S )N F)levelr   r   r   r   r   r'   r)   r   r   r   append-   s
   
zAstPrinter.appendc                 C  s0   | j r| j d dvrd| }| |d | d S )N)r+   r#   r+   )r   r.   r-   r   r   r   append_padded4   s   zAstPrinter.append_paddedc                 C  s4   |  j d7  _ d| _| jd ur|  jd7  _d S d S )Nr#   Tr   )r   r   r   r%   r   r   r   newline9   s
   
zAstPrinter.newlinemparser.BooleanNodec                 C  s(   |  |jrdnd| | jp|j|_d S )Ntruefalse)r.   valuer   linenor   r)   r   r   r   visit_BooleanNode?   s   zAstPrinter.visit_BooleanNodemparser.IdNodec                 C  s0   t |jtsJ | |j| | jp|j|_d S N
isinstancer5   r(   r.   r   r6   r7   r   r   r   visit_IdNodeC   s   zAstPrinter.visit_IdNodemparser.NumberNodec                 C  s$   |  t|j| | jp|j|_d S r:   )r.   r(   r5   r   r6   r7   r   r   r   visit_NumberNodeH   s   zAstPrinter.visit_NumberNodevalc                 C  s   | tdddS )Nz\'z\\)'\)	translater(   	maketrans)r   r@   r   r   r   escapeL   s   

zAstPrinter.escapemparser.StringNodec                 C  s>   t |jtsJ | d| |j d | | jp|j|_d S )NrA   )r<   r5   r(   r.   rE   r   r6   r7   r   r   r   visit_StringNodeP   s   zAstPrinter.visit_StringNodemparser.FormatStringNodec                 C  s8   t |jtsJ | d|j d | | jp|j|_d S )Nzf'rA   r;   r7   r   r   r   visit_FormatStringNodeU   s   z!AstPrinter.visit_FormatStringNodemparser.ContinueNodec                 C     |  d| | jp|j|_d S )Ncontinuer.   r   r6   r7   r   r   r   visit_ContinueNodeZ      zAstPrinter.visit_ContinueNodemparser.BreakNodec                 C  rK   )NbreakrM   r7   r   r   r   visit_BreakNode^   rO   zAstPrinter.visit_BreakNodemparser.ArrayNodec                 C  6   | j p|j|_| d| |j|  | d| d S N[]r   r6   r.   argsacceptr7   r   r   r   visit_ArrayNodeb      zAstPrinter.visit_ArrayNodemparser.DictNodec                 C  rT   )N{}rX   r7   r   r   r   visit_DictNodeh   r\   zAstPrinter.visit_DictNodemparser.OrNodec                 C  6   |j |  | d| | jp|j|_|j|  d S )NorleftrZ   r0   r   r6   rightr7   r   r   r   visit_OrNoden      zAstPrinter.visit_OrNodemparser.AndNodec                 C  rb   )Nandrd   r7   r   r   r   visit_AndNodet   rh   zAstPrinter.visit_AndNodemparser.ComparisonNodec                 C  s8   |j |  | |j| | jp|j|_|j|  d S r:   )re   rZ   r0   ctyper   r6   rf   r7   r   r   r   visit_ComparisonNodez   s   zAstPrinter.visit_ComparisonNodemparser.ArithmeticNodec                 C  s<   |j |  | t|j | | jp|j|_|j|  d S r:   )re   rZ   r0   arithmic_map	operationr   r6   rf   r7   r   r   r   visit_ArithmeticNode   s   zAstPrinter.visit_ArithmeticNodemparser.NotNodec                 C  *   | j p|j|_| d| |j|  d S )Nnotr   r6   r0   r5   rZ   r7   r   r   r   visit_NotNode      zAstPrinter.visit_NotNodemparser.CodeBlockNodec                 C  s0   | j p|j|_|jD ]}||  |   q
d S r:   )r   r6   linesrZ   r1   )r   r)   ir   r   r   visit_CodeBlockNode   s
   


zAstPrinter.visit_CodeBlockNodemparser.IndexNodec                 C  sB   |j |  | jp|j|_| d| |j|  | d| d S rU   )iobjectrZ   r   r6   r.   indexr7   r   r   r   visit_IndexNode   s
   zAstPrinter.visit_IndexNodemparser.MethodNodec                 C  sL   | j p|j|_|j|  | d|j d | |j|  | d| d S )N.())r   r6   source_objectrZ   r.   namerY   r7   r   r   r   visit_MethodNode   s
   zAstPrinter.visit_MethodNodemparser.FunctionNodec                 C  s<   | j p|j|_| |jd | |j|  | d| d S )Nr   r   )r   r6   r.   	func_namerY   rZ   r7   r   r   r   visit_FunctionNode   s   zAstPrinter.visit_FunctionNodemparser.AssignmentNodec                 C  0   | j p|j|_| |jd | |j|  d S )Nz = r   r6   r.   var_namer5   rZ   r7   r   r   r   visit_AssignmentNode      zAstPrinter.visit_AssignmentNodemparser.PlusAssignmentNodec                 C  r   )Nz += r   r7   r   r   r   visit_PlusAssignmentNode   r   z#AstPrinter.visit_PlusAssignmentNodemparser.ForeachClauseNodec                 C  sj   | j p|j|_| d| | d|j| | d| |j|  |   |j|  | 	d| d S )NZforeach, :Z
endforeach)
r   r6   r0   joinvarnamesitemsrZ   r1   blockr.   r7   r   r   r   visit_ForeachClauseNode   s   z"AstPrinter.visit_ForeachClauseNodemparser.IfClauseNodec                 C  sr   | j p|j|_d}|jD ]}| |d | d}||  qt|jtjs1| 	d| |j|  | 	d| d S )Nr   ifelelseZendif)
r   r6   ifsr0   rZ   r<   	elseblockr   Z	EmptyNoder.   )r   r)   prefixr{   r   r   r   visit_IfClauseNode   s   
zAstPrinter.visit_IfClauseNodemparser.UMinusNodec                 C  rt   )Nr   rv   r7   r   r   r   visit_UMinusNode   rx   zAstPrinter.visit_UMinusNodemparser.IfNodec                 C  s2   | j p|j|_|j|  |   |j|  d S r:   )r   r6   	conditionrZ   r1   r   r7   r   r   r   visit_IfNode   s   zAstPrinter.visit_IfNodemparser.TernaryNodec                 C  sN   | j p|j|_|j|  | d| |j|  | d| |j|  d S )N?r   )r   r6   r   rZ   r0   	trueblock
falseblockr7   r   r   r   visit_TernaryNode   s   zAstPrinter.visit_TernaryNodemparser.ArgumentNodec                 C  s  | j p|j|_t|jt|j | jk}|jt|j  D ]}t|t	j
t	jfs+d}q|r2|   |jD ]}||  | d| |rH|   q5|j D ] \}}||  | d| ||  | d| |rn|   qN|r|tdd| j| _d S tdd| j| _d S )NTr   r   z, \n$r#   z, $r   )r   r6   len	argumentskwargsr   listvaluesr<   r   ZElementaryNodeZ	IndexNoder1   rZ   r.   r   r0   r$   r   r   )r   r)   Z
break_argsr{   keyr@   r   r   r   visit_ArgumentNode   s2   



zAstPrinter.visit_ArgumentNodeN)r   r   F)r   r   r   r   r   r   r!   r"   )r'   r(   r)   r*   r!   r"   r)   r2   r!   r"   r)   r9   r!   r"   r)   r>   r!   r"   )r@   r(   r!   r(   r)   rF   r!   r"   r)   rH   r!   r"   )r)   rJ   r!   r"   )r)   rP   r!   r"   r)   rS   r!   r"   r)   r]   r!   r"   r)   ra   r!   r"   r)   ri   r!   r"   r)   rl   r!   r"   r)   ro   r!   r"   r)   rs   r!   r"   r)   ry   r!   r"   r)   r}   r!   r"   r)   r   r!   r"   r)   r   r!   r"   r)   r   r!   r"   r)   r   r!   r"   r)   r   r!   r"   r)   r   r!   r"   r)   r   r!   r"   r)   r   r!   r"   r)   r   r!   r"   r)   r   r!   r"   )#__name__
__module____qualname__r    r&   r.   r0   r1   r8   r=   r?   rE   rG   rI   rN   rR   r[   r`   rg   rk   rn   rr   rw   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r       sB    
	





























r   c                   @  sB  e Zd ZdcddZddd	d
ZdeddZdfddZdgddZdgddZdhddZ	diddZ
djddZdkd!d"Zdld$d%Zdmd'd(Zdnd*d+Zdod-d.Zdpd0d1Zdqd3d4Zdrd6d7Zdsd9d:Zdtd<d=Zdud?d@ZdvdBdCZdwdEdFZdxdHdIZdydKdLZdzdNdOZd{dQdRZd|dTdUZd}dWdXZd~dZd[Zdd]d^Z dd`daZ!dbS )AstJSONPrinterr!   r"   c                 C  s   i | _ | j | _d S r:   )r   currentr%   r   r   r   r       s   zAstJSONPrinter.__init__r   r(   r)   r*   c                 C  s.   | j }i }|| _ ||  || _ || j |< d S r:   r   rZ   )r   r   r)   oldr'   r   r   r   _accept   s   
zAstJSONPrinter._acceptnodesT.Sequence[mparser.BaseNode]c                 C  sD   | j }g }|D ]}i | _ ||  || j g7 }q|| _ || j |< d S r:   r   )r   r   r   r   Zdatalistr{   r   r   r   _accept_list   s   
zAstJSONPrinter._accept_listr'   T.Dict[str, T.Any]c                 C  s    | j }|| _ ||  || _ d S r:   r   )r   r)   r'   r   r   r   r   _raw_accept  s   

zAstJSONPrinter._raw_acceptc                 C  sD   t |j| jd< |j| jd< |j| jd< |j| jd< |j| jd< d S )Nr)   r6   colno
end_lineno	end_colno)typer   r   r6   r   r   r   r7   r   r   r   setbase  s
   zAstJSONPrinter.setbasec                 C     |  | d S r:   )r   r7   r   r   r   visit_default_func     z!AstJSONPrinter.visit_default_funcmparser.ElementaryNodec                 C  s   |j | jd< | | d S )Nr5   )r5   r   r   r7   r   r   r   gen_ElementaryNode  s   z!AstJSONPrinter.gen_ElementaryNoder2   c                 C  r   r:   r   r7   r   r   r   r8     r   z AstJSONPrinter.visit_BooleanNoder9   c                 C  r   r:   r   r7   r   r   r   r=     r   zAstJSONPrinter.visit_IdNoder>   c                 C  r   r:   r   r7   r   r   r   r?   "  r   zAstJSONPrinter.visit_NumberNoderF   c                 C  r   r:   r   r7   r   r   r   rG   %  r   zAstJSONPrinter.visit_StringNoderH   c                 C  r   r:   r   r7   r   r   r   rI   (  r   z%AstJSONPrinter.visit_FormatStringNoderS   c                 C     |  d|j | | d S NrY   r   rY   r   r7   r   r   r   r[   +     zAstJSONPrinter.visit_ArrayNoder]   c                 C  r   r   r   r7   r   r   r   r`   /  r   zAstJSONPrinter.visit_DictNodera   c                 C  *   |  d|j |  d|j | | d S Nre   rf   r   re   rf   r   r7   r   r   r   rg   3     zAstJSONPrinter.visit_OrNoderi   c                 C  r   r   r   r7   r   r   r   rk   8  r   zAstJSONPrinter.visit_AndNoderl   c                 C  6   |  d|j |  d|j |j| jd< | | d S )Nre   rf   rm   )r   re   rf   rm   r   r   r7   r   r   r   rn   =     z#AstJSONPrinter.visit_ComparisonNodero   c                 C  s:   |  d|j |  d|j t|j | jd< | | d S )Nre   rf   op)r   re   rf   rp   rq   r   r   r7   r   r   r   rr   C  s   z#AstJSONPrinter.visit_ArithmeticNoders   c                 C  r   Nrf   r   r5   r   r7   r   r   r   rw   I  r   zAstJSONPrinter.visit_NotNodery   c                 C  r   )Nrz   )r   rz   r   r7   r   r   r   r|   M  r   z"AstJSONPrinter.visit_CodeBlockNoder}   c                 C  r   )Nobjectr   )r   r~   r   r   r7   r   r   r   r   Q  r   zAstJSONPrinter.visit_IndexNoder   c                 C  r   )Nr   rY   r   )r   r   rY   r   r   r   r7   r   r   r   r   V  r   zAstJSONPrinter.visit_MethodNoder   c                 C  (   |  d|j |j| jd< | | d S )NrY   r   )r   rY   r   r   r   r7   r   r   r   r   \     z!AstJSONPrinter.visit_FunctionNoder   c                 C  r   Nr5   r   r   r5   r   r   r   r7   r   r   r   r   a  r   z#AstJSONPrinter.visit_AssignmentNoder   c                 C  r   r   r   r7   r   r   r   r   f  r   z'AstJSONPrinter.visit_PlusAssignmentNoder   c                 C  r   )Nr   r   r   )r   r   r   r   r   r   r7   r   r   r   r   k  r   z&AstJSONPrinter.visit_ForeachClauseNoder   c                 C  s*   |  d|j | d|j | | d S )Nr   r   )r   r   r   r   r   r7   r   r   r   r   q  r   z!AstJSONPrinter.visit_IfClauseNoder   c                 C  r   r   r   r7   r   r   r   r   v  r   zAstJSONPrinter.visit_UMinusNoder   c                 C  r   )Nr   r   )r   r   r   r   r7   r   r   r   r   z  r   zAstJSONPrinter.visit_IfNoder   c                 C  s8   |  d|j |  d|j |  d|j | | d S )Nr   r3   r4   )r   r   r   r   r   r7   r   r   r   r     s   z AstJSONPrinter.visit_TernaryNoder   c                 C  sn   |  d|j g }|j D ]\}}i }i }| || | || |||dg7 }q|| jd< | | d S )N
positional)r   r@   r   )r   r   r   r   r   r   r   )r   r)   Zkwargs_listr   r@   Zkey_resZval_resr   r   r   r     s   
z!AstJSONPrinter.visit_ArgumentNodeNr   )r   r(   r)   r*   r!   r"   )r   r(   r   r   r!   r"   )r)   r*   r'   r   r!   r"   )r)   r*   r!   r"   )r)   r   r!   r"   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )"r   r   r   r    r   r   r   r   r   r   r8   r=   r?   rG   rI   r[   r`   rg   rk   rn   rr   rw   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s@    






























r   )
__future__r   r   r   visitorr   r$   typingTrp   r   r   r   r   r   r   <module>   s    R