B
YI~dS2 � @ s� d dl mZ d dlZd dlmZ eejej d �Zeejd �Z dd� e
d�D �Zdd� e
d�D �ZG d d
� d
�Z
edkr�d dlmZ ed
dd� dS )� )� iskeywordN)�pyparse�_c C s g | ]}t |�tk�qS � )�chr�_ASCII_ID_CHARS)�.0�xr r �8/opt/alt/python37/lib64/python3.7/idlelib/hyperparser.py�
s r � c C s g | ]}t |�tk�qS r )r �_ASCII_ID_FIRST_CHARS)r r r r r
r s c @ s\ e Zd Zdd� Zdd� Zdd� Zdd� Zddd�Zed
ddh�Z e
dd� �ZdZdd� Z
dS )�HyperParserc
sJ |� _ |j � _}t�|j|j�}dd� }||�|��}|js�xh|jD ]^}t || d�}t
|�d } d| }
|�|�| |
�d � |�
|�| ��}|d k s�|dkrFP qFW |�|p�d� nF|�d|�}|r�|d } nd } d| }
|�|�| |
�d � |�d� |jd d
� � _|
� _|�� � _� fdd�tt� j��D �� _� �|� d S )
Nc S s t t| ��S )N)�int�float)�indexr r r
�
index2line" s z(HyperParser.__init__..index2line� z.0z%d.endz
r Zconsolez1.0�����c s4 g | ],}|d ko.� j | d � j |d d k�qS )r r )�
bracketing)r �i)�selfr r
r K s z(HyperParser.__init__..)�editwin�textr ZParserZindentwidthZtabwidthr Zprompt_last_lineZnum_context_lines�max�reprZset_code�getZfind_good_parse_startZ_build_char_in_string_funcZset_loZ
tag_prevrange�code�rawtext�stopatindexZget_last_stmt_bracketingr �range�len�isopener� set_index)
r r r r �parserr Zlno�contextZstartatZstartatindexr Zbod�rr )r r
�__init__ s:
zHyperParser.__init__c C s� t | j�t | j�|| j�� }|dk r2td| ��|| _d| _x@| jt | j�d k r~| j| jd d | jk r~| jd7 _q@W | jt | j�d k r�| j| jd d | jkr�| j | jd s�| jd7 _d S )Nr z(Index %s precedes the analyzed statementr )
r! r r r r �
ValueError�indexinrawtext�indexbracketr r" )r r r) r r r
r# Q s zHyperParser.set_indexc C s&