3 \u�@s0ddlmZGdd�de�ZGdd�de�ZdS)�)�tokenc@seZdZdd�ZdS)� ParseErrorcCs4tj|d||||f�||_||_||_||_dS)Nz!%s: type=%r, value=%r, context=%r)� Exception�__init__�msg�type�value�context)�selfrrrr �r �+/usr/lib64/python3.6/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 �Wsz!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.setupcCs:|j|||�}�x$|jd\}}}|\}} ||} �x�| D]�\} } |jj| \} }|| kr�|j||| |�| }x@||d|fgkr�|j�|js�dS|jd \}}}|\}} qpWdS| dkr:|jj| }|\}}||kr:|j| |jj| | |�Pq:Wd|f| k�r$|j�|j�s2td|||��qtd|||��qWdS) NrrTF�ztoo much inputz bad input�����r) �classifyrrZlabels�shift�popr�pushr)r rrr �ilabel�dfa�staterZstates�firstZarcs�i�newstate�t�vZitsdfaZ itsstatesZitsfirstr r r �addtokenqs:   zParser.addtokencCsX|tjkr0|jj|�|jjj|�}|dk r0|S|jjj|�}|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|j|�}|dk r@|dj|�|||f|jd<dS)Nrrrr)rrr�append) r rrr)r r%r&rrr r r r!�s  z Parser.shiftc CsB|jd\}}}|d|gf}|||f|jd<|jj|d|f�dS)Nrrrr)rr2) r rZnewdfar)r r%r&rrr r r r#�s z Parser.pushcCs`|jj�\}}}|j|j|�}|dk r\|jrL|jd\}}}|dj|�n||_|j|j_dS)Nrrr)rr"rrr2rr)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