B YI~d�M�@sddlZed�\ZZZZZe�dejej B�j Z e�dej�j Z e�dejejB�j Ze�dej�j Ze�dej�j Ze�dej�j ZGd d �d e�Ze�ed �d �Ze�d d�dD��e�dd�dD��e�dd�dD��Gdd�d�Zedk�rddlmZeddd�dS)�N�z� ^ [ \t]* (?: while | else | def | return | assert | break | class | continue | elif | try | except | raise | import | yield ) \b z' [ \t]* (?: \# \S .* )? \n aK \""" [^"\\]* (?: (?: \\. | "(?!"") ) [^"\\]* )* (?: \""" )? | " [^"\\\n]* (?: \\. [^"\\\n]* )* "? | ''' [^'\\]* (?: (?: \\. | '(?!'') ) [^'\\]* )* (?: ''' )? | ' [^'\\\n]* (?: \\. [^'\\\n]* )* '? zM [ \t]* [^\s#\\] # if we match, m.end()-1 is the interesting char z_ \s* (?: return | break | continue | raise | pass ) \b z [^[\](){}#'"\\]+ c@seZdZdd�ZdS)�ParseMapcCsdS)N�x�)�self�keyrr�4/opt/alt/python37/lib64/python3.7/idlelib/pyparse.py� __missing__rszParseMap.__missing__N)�__name__� __module__� __qualname__r rrrrrfs r�rccs|]}t|�td�fVqdS)�(N)�ord)�.0�crrr� xsrz({[ccs|]}t|�td�fVqdS)�)N)r)rrrrrrysz)}]ccs|]}t|�t|�fVqdS)N)r)rrrrrrzsz"'\ #c@s|eZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Zd d�Z dd�Z dd�Z dd�Z dd�Z dd�Zdd�Zdd�ZdS)�ParsercCs||_||_dS)N)� indentwidth�tabwidth)rrrrrr�__init__szParser.__init__cCs||_d|_dS)Nr)�code� study_level)r�srrr�set_code�szParser.set_codec Cs�|jd}}t|�}xdtd�D]X}|�dd|�}|dkr:P|�dd|�d}t|||�}|rr||���sr|��}P|}qW|dkr�t|�}|r�||���s�|��}|S|d}x.t||�}|r�|��\}}||�s�|}q�Pq�W|S)Nrz: r� �)r�len�range�rfind�_synchre�start�span) rZis_char_in_stringr�pos�limitZtries�i�mrrrr�find_good_parse_start�s4     zParser.find_good_parse_startcCs|dkr|j|d�|_dS)Nr)r)r�lorrr�set_lo�sz Parser.set_loc Cs�|jdkrdSd|_|j}|�t�}|�dd�}|�dd�}|�dd�}|�dd�}|�dd�}t}d}}dg|_}|j}dt|�}}�x�||k�rn||} |d}| dkr�q�| dkr�|d}|dkr�||�q�| d kr�|d}q�| d k�r|r�|d}q�| d k�s| d k�r$| } ||d|d �| dk�r>| d} |} t| �d} || }x�||k�r||} |d}| dk�r��qX||d|| �| k�r�|| }P| dk�r�|d}| dk�rX|dk�r�||�P�qX| dk�rX||dk�r�|d}|d}�qX�qXW|d| k�rt }q�t }q�| dk�r<|� d|�}q�||dk�rd|d}|d|k�rdt }|d}q�W|t k�r�|t k�r�|dk�r�t }||_|d|k�r�||�dS)NrZxxxxxxxx�xZxxxxZxxz xrrrr�"�'���\�#�����)rr� translate�trans�replace�C_NONE� goodlines�appendr�C_STRING_FIRST_LINE�C_STRING_NEXT_LINES�find� C_BACKSLASH� C_BRACKET� continuation) rrr>�levelZlnor7Z push_goodr&�n�chZquoteZfirstlno�wrrr�_study1�s�                     zParser._study1cCs|��|jS)N)rCr>)rrrr�get_continuation_typeOszParser.get_continuation_typecCs�|jdkrdS|��d|_|j|j}}t|�d}t|�}xX|r�|}x4t||d||�D]}|�dd|d�d}q`Wt||�r�|d}q@Pq@W|dkr�|}|||_|_ d}g}|j } |dfg} �x�||k�rxt |||�} | �rD| � �} | d}x&||k�r ||dk�r |d}�q�W||k�r4||}| }||k�rDP||} | dk�r~| |�| � |t|�f�| }|d}q�| dk�r�|�r�|d =| }|d}| � |t|�f�q�| d k�s�| d k�r| � |t|�df�| }t |||�� �}| � |t|�f�q�| d k�rL| � |t|�df�|�d||�d}| � |t|�f�q�|d}||dk�rn| ||}|d}q�W||_|�r�|d nd|_t| �|_dS) Nr.rrr�z z([{z)]}r2r,r-r1)rrCrr7rrr �_junkre� stmt_start�stmt_endr8�_chew_ordinaryre�end�_match_stringrer;�lastch�lastopenbracketpos�tuple�stmt_bracketing)rrr7r&�p�qZnothingrL�stackZ push_stackZ bracketingr'ZnewprArrr�_study2Ss�             zParser._study2cCs�|��|j}|j}t|�}|�dd|�d}}|d}xj||kr|t||�}|rf|��d}d}Pq<|�d|�d}}q|d}t�d |||��dk}|�sf|}x||d k�rd|d}�qJWt||j|�� |j ��dS)Nz rrrz([{z)]}r,r-r1�=z=<>!z\s*\\z ) rSrrGr;rKrJ�re�matchrrUr)rrr&�startpos�endpos�foundr?rArrr�compute_backslash_indent�sH     zParser.compute_backslash_indentcCsN|��|j|j}}|}|j}x ||kr@||dkr@|d}q"W|||�S)Nz r)rSrGrHr)rr&r@rVrrrr�get_base_indent_string0s zParser.get_base_indent_stringcCs|��|jdkS)N�:)rSrL)rrrr�is_block_opener<szParser.is_block_openercCs|��t|j|j�dk S)N)rS�_closererrG)rrrr�is_block_closerAszParser.is_block_closercCs|��|jS)N)rSrO)rrrr�get_last_stmt_bracketingFszParser.get_last_stmt_bracketingN)r r r rrr(r*rCrDrSrWrYr`rarcrerfrrrrr}s8 { 9 r�__main__)�mainzidlelib.idle_test.test_pyparser.)� verbosity)r[rr6r<r9r:r=�compile�VERBOSE� MULTILINE�searchr!r\rF�DOTALLrKrTrdrI�dictr�fromkeysr4�updaterr Zunittestrhrrrr� s2    U