o
    JAfÛ  ã                   @   s2   	 d dl mZ G dd„ deƒZG dd„ deƒZdS )é   )Útokenc                   @   s   e Zd Z	 dd„ Zdd„ ZdS )Ú
ParseErrorc                 C   s4   t  | d||||f ¡ || _|| _|| _|| _d S )Nz!%s: type=%r, value=%r, context=%r)Ú	ExceptionÚ__init__ÚmsgÚtypeÚvalueÚcontext)Úselfr   r   r   r	   © r   ú*/usr/lib/python3.10/lib2to3/pgen2/parse.pyr      s   
ÿ
zParseError.__init__c                 C   s   t | ƒ| j| j | j| jffS ©N)r   r   r   r	   )r
   r   r   r   Ú
__reduce__   s   zParseError.__reduce__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r      s    r   c                   @   sJ   e Zd Z	 ddd„Zddd„Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dS )ÚParserNc                 C   s   	 || _ |p	dd„ | _d S )Nc                 S   s   |S r   r   )ÚgrammarÚnoder   r   r   Ú<lambda>Z   s    z!Parser.__init__.<locals>.<lambda>)r   Úconvert)r
   r   r   r   r   r   r   <   s   zParser.__init__c                 C   sJ   	 |d u r	| j j}|d d g f}| j j| d|f}|g| _d | _tƒ | _d S )Né    )r   ÚstartÚdfasÚstackÚrootnodeÚsetÚ
used_names)r
   r   ÚnewnodeZ
stackentryr   r   r   Úsetup\   s   zParser.setupc                 C   s<  	 |   |||¡}	 | jd \}}}|\}}	|| }
|
D ]e\}}| jj| \}}||kr`|  ||||¡ |}|| d|fgkr]|  ¡  | jsH dS | jd \}}}|\}}	|| d|fgks> dS |dkr€| jj| }|\}}||v r€|  || jj| ||¡  nqd|f|
v r–|  ¡  | js•td|||ƒ‚ntd|||ƒ‚q	)NTéÿÿÿÿr   Fé   ztoo much inputz	bad input)	Úclassifyr   r   ÚlabelsÚshiftÚpopr   Úpushr   )r
   r   r   r	   ÚilabelÚdfaÚstater   ZstatesÚfirstZarcsÚiÚnewstateÚtÚvZitsdfaZ	itsstatesZitsfirstr   r   r   Úaddtokent   sF   ú€ÿþ×zParser.addtokenc                 C   sZ   	 |t jkr| j |¡ | jj |¡}|d ur|S | jj |¡}|d u r+td|||ƒ‚|S )Nz	bad token)	r   ÚNAMEr   Úaddr   ÚkeywordsÚgetÚtokensr   )r
   r   r   r	   r'   r   r   r   r"   ¤   s   
zParser.classifyc           	      C   sV   	 | j d \}}}|||d f}|  | j|¡}|d ur!|d  |¡ |||f| j d< d S ©Nr    )r   r   r   Úappend)	r
   r   r   r,   r	   r(   r)   r   r   r   r   r   r$   ²   s   zParser.shiftc           	      C   sD   	 | j d \}}}|d |g f}|||f| j d< | j  |d|f¡ d S )Nr    r   )r   r6   )	r
   r   Znewdfar,   r	   r(   r)   r   r   r   r   r   r&   »   s
   zParser.pushc                 C   sh   	 | j  ¡ \}}}|  | j|¡}|d ur2| j r(| j d \}}}|d  |¡ d S || _| j| j_d S d S r5   )r   r%   r   r   r6   r   r   )r
   ZpopdfaZpopstateZpopnoder   r(   r)   r   r   r   r   r%   Â   s   úz
Parser.popr   )
r   r   r   r   r   r/   r"   r$   r&   r%   r   r   r   r   r      s    

 0	r   N)Ú r   r   r   Úobjectr   r   r   r   r   Ú<module>   s   
