add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
f

��_�5c@sdddlmZmZmZGdd�dej�ZGdd�de�ZGdd�de�ZGdd	�d	e�Z	ddd�Z
d
S)�)�grammar�token�tokenizec@seZdZdS)�PgenGrammarN)�__name__�
__module__�__qualname__�rr�+/usr/lib64/python3.10/lib2to3/pgen2/pgen.pyrsrc@s�eZdZd&dd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd'd d!�Zd"d#�Zd$d%�ZdS)(�ParserGeneratorNcCsld}|durt|�}|j}||_||_t�|j�|_|��|�	�\|_
|_|durZ|�i|_|�
�dS�N)ZopenZclose�filename�streamrZgenerate_tokensZreadline�	generator�gettoken�parse�dfas�startsymbol�first�addfirstsets)�selfrr
Zclose_streamrrr	�__init__szParserGenerator.__init__c	Cst�}t|j���}|��|�|j�|�d|j�|D]&}dt|j	�}||j	|<||j
|<q:|D]�}|j|}g}|D]`}g}t|j�
��D]$\}	}
|�|�||	�|�|
�f�q�|jr�|�d|�|�f�|�|�q||j�|�||�||�f|j|j	|<qf|j	|j|_|S)N�i)r�listr�keys�sortZremoverZinsert�len�
symbol2numberZ
number2symbol�sorted�arcs�items�append�
make_label�index�isfinal�states�
make_first�start)r�c�names�name�i�dfar$�stater�label�nextrrr	�make_grammars.

zParserGenerator.make_grammarcCs4|j|}i}t|�D]}|�||�}d||<q|S�Nr)rrr!)rr'r)Zrawfirstrr-�ilabelrrr	r%4s

zParserGenerator.make_firstcCst|j�}|d��r�||jvrX||jvr4|j|S|j�|j|df�||j|<|Stt|d�}||jvrx|j|S|j�|df�||j|<|St	|�}|d��r�||j
vr�|j
|S|j�tj|f�||j
|<|Stj
|}||jvr�|j|S|j�|df�||j|<|S�Nr)rZlabelsZisalpharZsymbol2labelr ZgetattrrZtokensZevalZkeywords�NAMErZopmap)rr'r-r1Zitoken�valuerrr	r!=s6














zParserGenerator.make_labelcCs8t|j���}|��|D]}||jvr|�|�qdSr)rrrrr�	calcfirst)rr(r)rrr	rks

zParserGenerator.addfirstsetsc	Cs�|j|}d|j|<|d}i}i}|j��D]x\}}||jvr�||jvrj|j|}|dur~td|��n|�|�|j|}|�|�|||<q.d||<|di||<q.i}	|��D]:\}}
|
D],}||	vr�td||||	|f��||	|<q�q�||j|<dS)Nrzrecursion for rule %rrzArule %s is ambiguous; %s is in the first sets of %s as well as %s)rrrrZ
ValueErrorr5Zupdate)rr)r+r,ZtotalsetZoverlapcheckr-r.ZfsetZinverseZitsfirstZsymbolrrr	r5ss4








�zParserGenerator.calcfirstc	Cs�i}d}|jtjkr�|jtjkr*|��q|�tj�}|�tjd�|��\}}|�tj�|�	||�}t
|�}|�|�t
|�}|||<|dur|}q||fS)Nz:)�typerZ	ENDMARKERZNEWLINEr�expectr3�OP�	parse_rhs�make_dfar�simplify_dfa)	rrrr)�a�zr+ZoldlenZnewlenrrr	r�s"

zParserGenerator.parsec	s��fdd�}�fdd��t||�|�g}|D]�}i}|jD].}|jD]"\}}	|durD�|	|�|i��qDq:t|���D]@\}}
|D]}|j|
kr�q�q�t|
|�}|�|�|�||�qvq,|S)Ncsi}�||�|Srr)r,�base��
addclosurerr	�closure�s
z)ParserGenerator.make_dfa.<locals>.closurecs:||vrdSd||<|jD]\}}|dur�||�qdSr0�r)r,r>r-r.r?rr	r@�sz,ParserGenerator.make_dfa.<locals>.addclosure)�DFAState�nfasetrZ
setdefaultrrr �addarc)rr&�finishrAr$r,rZnfastater-r.rDZstrr?r	r:�s"



zParserGenerator.make_dfac
Cs�td|�|g}t|�D]|\}}td|||ur2dp4d�|jD]T\}}||vrZ|�|�}	nt|�}	|�|�|dur�td|	�q>td||	f�q>qdS)NzDump of NFA for�  State�(final)�z	    -> %d�    %s -> %d)�print�	enumeraterr"rr )
rr)r&rFZtodor*r,r-r.�jrrr	�dump_nfa�s

zParserGenerator.dump_nfacCsdtd|�t|�D]L\}}td||jr*dp,d�t|j���D]\}}td||�|�f�q>qdS)NzDump of DFA forrGrHrIrJ)rKrLr#rrrr")rr)r+r*r,r-r.rrr	�dump_dfa�s

zParserGenerator.dump_dfacCspd}|rld}t|�D]T\}}t|dt|��D]8}||}||kr.||=|D]}|�||�qLd}qq.qqdS)NTFr)rLZranger�
unifystate)rr+Zchangesr*Zstate_irMZstate_jr,rrr	r;�szParserGenerator.simplify_dfacCsz|��\}}|jdkr||fSt�}t�}|�|�|�|�|jdkrr|��|��\}}|�|�|�|�q>||fS)Nz|)�	parse_altr4�NFAStaterEr)rr<r=ZaaZzzrrr	r9�s




zParserGenerator.parse_rhscCsL|��\}}|jdvs(|jtjtjfvrD|��\}}|�|�|}q||fS)N)�(�[)�
parse_itemr4r6rr3�STRINGrE)rr<Zbr'Zdrrr	rQ
s
�
zParserGenerator.parse_altcCs�|jdkr>|��|��\}}|�tjd�|�|�||fS|��\}}|j}|dvr`||fS|��|�|�|dkr�||fS||fS)NrTz])�+Z*rW)r4rr9r7rr8rE�
parse_atom)rr<r=r4rrr	rUs


zParserGenerator.parse_itemcCs�|jdkr4|��|��\}}|�tjd�||fS|jtjtjfvrpt	�}t	�}|�
||j�|��||fS|�d|j|j�dS)NrSz)z+expected (...) or NAME or STRING, got %s/%s)r4rr9r7rr8r6r3rVrRrE�raise_error)rr<r=rrr	rX(s
�zParserGenerator.parse_atomcCsD|j|ks|dur2|j|kr2|�d|||j|j�|j}|��|S)Nzexpected %s/%s, got %s/%s)r6r4rYr)rr6r4rrr	r79s�zParserGenerator.expectcCsFt|j�}|dtjtjfvr*t|j�}q
|\|_|_|_|_|_	dSr2)
r.rrZCOMMENTZNLr6r4Zbegin�end�line)rZtuprrr	rAs
zParserGenerator.gettokenc
Gs^|r8z||}Wn&d�|gttt|���}Yn0t||j|jd|jd|jf��dS)Nz rr)ZjoinrZmapZstrZSyntaxErrorrrZr[)rZmsgZargsrrr	rYHs �zParserGenerator.raise_errorrr)rrrrr/r%r!rr5rr:rNrOr;r9rQrUrXr7rrYrrrr	r

s$
	.$

r
c@seZdZdd�Zddd�ZdS)rRcCs
g|_dSrrB)rrrr	rSszNFAState.__init__NcCs|j�||f�dSr)rr �rr.r-rrr	rEVszNFAState.addarcr)rrrrrErrrr	rRQsrRc@s0eZdZdd�Zdd�Zdd�Zdd�Zd	Zd	S)
rCcCs||_||v|_i|_dSr)rDr#r)rrDZfinalrrr	r]s
zDFAState.__init__cCs||j|<dSrrBr\rrr	rEeszDFAState.addarccCs*|j��D]\}}||ur
||j|<q
dSr)rr)rZoldZnewr-r.rrr	rPkszDFAState.unifystatecCsT|j|jkrdSt|j�t|j�kr(dS|j��D]\}}||j�|�ur2dSdS)NFT)r#rrrZget)rZotherr-r.rrr	�__eq__pszDFAState.__eq__N)rrrrrErPr]Z__hash__rrrr	rC[s
rC�Grammar.txtcCst|�}|��Sr)r
r/)rZprrr	�generate_grammar�sr_N)r^)rIrrrZGrammarrZobjectr
rRrCr_rrrr	Z<module>sI
%