B YI~d �@shddlmZddlmZddlmZddlmZddlmZmZm Z m Z e� d�Z Gdd�dej �Zd S) �)�patcomp)�pytree)�token)� fixer_base)�Name�Call�Comma�Stringz"atom< '(' [atom|STRING|NAME] ')' >c@s$eZdZdZdZdd�Zdd�ZdS)�FixPrintTzP simple_stmt< any* bare='print' any* > | print_stmt c Cs`|�d�}|r,|�ttd�g|jd��dS|jdd�}t|�dkrXt�|d�rXdSd}}}|r�|dt �kr�|dd�}d}|r�|dt � t j d�kr�|d��}|d d�}d d �|D�}|r�d |d_|dk s�|dk s�|dk �rF|dk �r|�|d tt|���|dk �r.|�|dtt|���|dk �rF|�|d|�ttd�|�} |j| _| S)NZbare�print)�prefix�������� z>>�cSsg|] }|���qS�)�clone)�.0�argrr�?sz&FixPrint.transform..��sep�end�file)�get�replacerrr Zchildren�len� parend_expr�matchrr�Leafr� RIGHTSHIFTr� add_kwargr �repr) �selfZnode�resultsZ bare_print�argsrrrZl_argsZn_stmtrrr� transform%s8          zFixPrint.transformcCsNd|_t�|jjt|�t�tjd�|f�}|r@|� t ��d|_|� |�dS)Nr�=r) r rZNodeZsyms�argumentrr!r�EQUAL�appendr)r%Zl_nodesZs_kwdZn_exprZ n_argumentrrrr#Ms   zFixPrint.add_kwargN)�__name__� __module__� __qualname__Z BM_compatibleZPATTERNr(r#rrrrr s(r N)rrrZpgen2rrZ fixer_utilrrrr Zcompile_patternrZBaseFixr rrrr�s