B YI~du�@s0ddlmZGdd�de�ZGdd�de�ZdS)�)�tokenc@seZdZdd�ZdS)� ParseErrorcCs4t�|d||||f�||_||_||_||_dS)Nz!%s: type=%r, value=%r, context=%r)� Exception�__init__�msg�type�value�context)�selfrrrr �r �8/opt/alt/python37/lib64/python3.7/lib2to3/pgen2/parse.pyrs zParseError.__init__N)�__name__� __module__� __qualname__rr r r r rsrc@sHeZdZddd�Zddd�Zdd�Zdd �Zd d �Zd d �Zdd�Z dS)�ParserNcCs||_|pdd�|_dS)NcSs|S)Nr )�grammar�noder r r �W�z!Parser.__init__..)r�convert)r rrr r r r9szParser.__init__cCsH|dkr|jj}|ddgf}|jj|d|f}|g|_d|_t�|_dS)N�)r�start�dfas�stack�rootnode�set� used_names)r r�newnodeZ stackentryr r r �setupYs  z Parser.setupcCs8|�|||�}�x"|jd\}}}|\}} ||} x�| D]�\} } |jj| \} }|| kr�|�||| |�| }x@||d|fgkr�|��|js�dS|jd\}}}|\}} qnWdS| dkr8|jj| }|\}}||kr8|�| |jj| | |�Pq8Wd|f| k�r"|��|j�s0td|||��qtd|||��qWdS)N�����rTF�ztoo much inputz bad input) �classifyrr�labels�shift�popr�pushr)r rrr �ilabel�dfa�staterZstates�firstZarcs�i�newstate�t�vZitsdfaZ itsstatesZitsfirstr r r �addtokenqs:   zParser.addtokencCsX|tjkr0|j�|�|jj�|�}|dk r0|S|jj�|�}|dkrTtd|||��|S)Nz bad token) r�NAMEr�addr�keywords�get�tokensr)r rrr r&r r r r!�s  zParser.classifyc CsT|jd\}}}|||df}|�|j|�}|dk r@|d�|�|||f|jd<dS)Nr)rrr�append) r rrr+r r'r(rrr r r r#�s  z Parser.shiftc CsB|jd\}}}|d|gf}|||f|jd<|j�|d|f�dS)Nrr)rr4) r rZnewdfar+r r'r(rrr r r r%�s z Parser.pushcCs`|j��\}}}|�|j|�}|dk r\|jrL|jd\}}}|d�|�n||_|j|j_dS)Nr)rr$rrr4rr)r ZpopdfaZpopstateZpopnoderr'r(rr r r r$�sz Parser.pop)N)N) r rrrrr.r!r#r%r$r r r r rs 0 rN)�rrr�objectrr r r r �s