
    z%i                     >    	 d dl mZ  G d de      Z G d de      Zy)   )tokenc                       e Zd Z	 d Zd Zy)
ParseErrorc           
      ~    t         j                  | |d|d|d|       || _        || _        || _        || _        y )Nz: type=z, value=z
, context=)	Exception__init__msgtypevaluecontext)selfr	   r
   r   r   s        G/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/lib2to3/pgen2/parse.pyr   zParseError.__init__   s<    4ug"7 	8	
    c                 t    t        |       | j                  | j                   | j                  | j                  ffS N)r
   r	   r   r   )r   s    r   
__reduce__zParseError.__reduce__   s*    DzDHHdiiT\\JJJr   N)__name__
__module____qualname__r   r    r   r   r   r      s    2Kr   r   c                   <    e Zd Z	 d	dZd	dZd Zd Zd Zd Zd Z	y)
ParserNc                 ,    	 || _         |xs d | _        y )Nc                     |S r   r   )grammarnodes     r   <lambda>z!Parser.__init__.<locals>.<lambda>Z   s     r   )r   convert)r   r   r   s      r   r   zParser.__init__<   s    	8 >#=r   c                     	 || j                   j                  }|d d g f}| j                   j                  |   d|f}|g| _        d | _        t               | _        y )N    )r   startdfasstackrootnodeset
used_names)r   r!   newnode
stackentrys       r   setupzParser.setup\   sa    	 =LL&&E $b)ll''.7;
 \
%r   c                    	 | j                  |||      }	 | j                  d   \  }}}|\  }}	||   }
|
D ]  \  }}| j                  j                  |   \  }}||k(  re| j	                  ||||       |}||   d|fgk(  rB| j                          | j                  s y| j                  d   \  }}}|\  }}	||   d|fgk(  rB y|dk\  s| j                  j                  |   }|\  }}||v s| j                  || j                  j                  |   ||        n? d|f|
v r*| j                          | j                  st        d|||      t        d|||      B)NTr    F   ztoo much inputz	bad input)	classifyr#   r   labelsshiftpopr"   pushr   )r   r
   r   r   ilabeldfastater   statesfirstarcsinewstatetvitsdfa	itsstatesitsfirsts                     r   addtokenzParser.addtokent   s   JtUG4#zz"~CMFE%=D# $H8||**1-1Q; JJtUHg>$E -QJ<7
#zz#'+/::b>(UD(+ !-QJ<7 !#X!\\..q1F*0'Ix)		!T\\%6%6q%98WM3$H6 u:%HHJ::()9)-ug? ? %[$wGGS r   c                     	 |t         j                  k(  rD| j                  j                  |       | j                  j
                  j                  |      }||S | j                  j                  j                  |      }|t        d|||      |S )Nz	bad token)	r   NAMEr&   addr   keywordsgettokensr   )r   r
   r   r   r2   s        r   r-   zParser.classify   s}    45::OO&\\**..u5F!$$((.>[$w??r   c                     	 | j                   d   \  }}}|||d f}| j                  | j                  |      }||d   j                  |       |||f| j                   d<   y Nr+   )r#   r   r   append)	r   r
   r   r9   r   r3   r4   r   r'   s	            r   r/   zParser.shift   se    (::b>UD.,,t||W5HOOG$x.

2r   c                     	 | j                   d   \  }}}|d |g f}|||f| j                   d<   | j                   j                  |d|f       y )Nr+   r    )r#   rH   )	r   r
   newdfar9   r   r3   r4   r   r'   s	            r   r1   zParser.push   sT    -::b>UDw+x.

2

61g./r   c                 ,   	 | j                   j                         \  }}}| j                  | j                  |      }|W| j                   r(| j                   d   \  }}}|d   j	                  |       y || _        | j                  | j
                  _        y y rG   )r#   r0   r   r   rH   r$   r&   )r   popdfapopstatepopnoder'   r3   r4   r   s           r   r0   z
Parser.pop   s}    ,$(JJNN$4!',,t||W5zz#'::b> UDR( '+/??( r   r   )
r   r   r   r   r)   r?   r-   r/   r1   r0   r   r   r   r   r      s-    :?@ 0.H`/0
;r   r   N) r   r   r   objectr   r   r   r   <module>rQ      s+    K Kn;V n;r   