???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5dª%  ã                   @   s.   d dl Z d dlmZmZ G dd„ dejƒZdS )é    N)ÚgrammarÚtokenc                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú	Converterc                 C   s    |   |¡ |  |¡ |  ¡  d S ©N)Úparse_graminit_hÚparse_graminit_cÚ
finish_off)ÚselfZ
graminit_hZ
graminit_c© r
   ú*/usr/lib64/python3.8/lib2to3/pgen2/conv.pyÚrun/   s    

zConverter.runc           	   
   C   sÄ   zt |ƒ}W n8 tk
rD } ztd||f ƒ W Y ¢dS d }~X Y nX i | _i | _d}|D ]d}|d7 }t d|¡}|s–| ¡ r–td||| ¡ f ƒ qZ| ¡ \}}t	|ƒ}|| j|< || j|< qZdS )NúCan't open %s: %sFr   é   z^#define\s+(\w+)\s+(\d+)$z%s(%s): can't parse %sT)
ÚopenÚOSErrorÚprintZsymbol2numberZnumber2symbolÚreÚmatchÚstripÚgroupsÚint)	r	   ÚfilenameÚfÚerrÚlinenoÚlineÚmoÚsymbolÚnumberr
   r
   r   r   5   s(    ÿ

zConverter.parse_graminit_hc           !   
   C   sÂ  zt |ƒ}W n8 tk
rD } ztd||f ƒ W Y ¢dS d }~X Y nX d}|d t|ƒ }}|d t|ƒ }}|d t|ƒ }}i }g }| d¡rü| d¡rJt d|¡}ttt	| 
¡ ƒƒ\}	}
}g }t|ƒD ]F}|d t|ƒ }}t d|¡}ttt	| 
¡ ƒƒ\}}| ||f¡ qÐ|d t|ƒ }}|||	|
f< |d t|ƒ }}q”t d|¡}ttt	| 
¡ ƒƒ\}}g }t|ƒD ]R}|d t|ƒ }}t d	|¡}ttt	| 
¡ ƒƒ\}}	}
||	|
f }| |¡ qx| |¡ |d t|ƒ }}|d t|ƒ }}qˆ|| _i }t d
|¡}t	| d¡ƒ}t|ƒD ]Þ}|d t|ƒ }}t d|¡}| d¡}ttt	| dddd¡ƒƒ\}}}}|| }|d t|ƒ }}t d|¡}i }t| d¡ƒ}t|ƒD ]@\}}t|ƒ}tdƒD ]$}|d|> @ rÎd||d | < qÎq¶||f||< q(|d t|ƒ }}|| _g }|d t|ƒ }}t d|¡}t	| d¡ƒ}t|ƒD ]^}|d t|ƒ }}t d|¡}| 
¡ \}}t	|ƒ}|dkržd }nt|ƒ}| ||f¡ qX|d t|ƒ }}|| _|d t|ƒ }}|d t|ƒ }}t d|¡}t	| d¡ƒ}|d t|ƒ }}|d t|ƒ }}t d|¡}t	| d¡ƒ}|d t|ƒ }}t d|¡}t	| d¡ƒ} | | _|d t|ƒ }}z|d t|ƒ }}W n tk
r¼   Y nX d S )Nr   Fr   r   zstatic arc z)static arc arcs_(\d+)_(\d+)\[(\d+)\] = {$z\s+{(\d+), (\d+)},$z'static state states_(\d+)\[(\d+)\] = {$z\s+{(\d+), arcs_(\d+)_(\d+)},$zstatic dfa dfas\[(\d+)\] = {$z0\s+{(\d+), "(\w+)", (\d+), (\d+), states_(\d+),$é   é   é   é   z\s+("(?:\\\d\d\d)*")},$é   z!static label labels\[(\d+)\] = {$z\s+{(\d+), (0|"\w+")},$Ú0z
\s+(\d+),$z\s+{(\d+), labels},$z	\s+(\d+)$)r   r   r   ÚnextÚ
startswithr   r   ÚlistÚmapr   r   ÚrangeÚappendÚstatesÚgroupÚevalÚ	enumerateÚordÚdfasÚlabelsÚstartÚStopIteration)!r	   r   r   r   r   r   Zallarcsr+   r   ÚnÚmÚkZarcsÚ_ÚiÚjÚsÚtÚstater0   Zndfasr   r   ÚxÚyÚzÚfirstZ	rawbitsetÚcZbyter1   Znlabelsr2   r
   r
   r   r   T   s¾    ÿ
ÿ
"
zConverter.parse_graminit_cc                 C   sX   i | _ i | _t| jƒD ]<\}\}}|tjkr@|d k	r@|| j |< q|d kr|| j|< qd S r   )ÚkeywordsÚtokensr.   r1   r   ÚNAME)r	   ZilabelÚtypeÚvaluer
   r
   r   r   ù   s    zConverter.finish_offN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r
   r
   r
   r   r   $   s
    &r   )r   Zpgen2r   r   ZGrammarr   r
   r
   r
   r   Ú<module>   s   