Your IP : 216.73.216.213


Current Path : /opt/alt/python37/lib64/python3.7/site-packages/Cython/Plex/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib64/python3.7/site-packages/Cython/Plex/__pycache__/Machines.cpython-37.pyc

B

Z��ZP�@s�ddlmZddlZddlmZyddlmZWn ek
rPddlmZYnXyeWne	k
rre
ZYnXeZGdd�de�Z
Gd	d
�d
e�ZGdd�de�ZdS)
�)�absolute_importN�)�
TransitionMap)�maxsize)�maxintc@sTeZdZdZdZdZdZdd�Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dS)�Machinez1A collection of Nodes representing an NFA or DFA.NrcCsg|_i|_dS)N)�states�initial_states)�self�r�G/opt/alt/python37/lib64/python3.7/site-packages/Cython/Plex/Machines.py�__init__"szMachine.__init__cCsx|jD]}|��qWdS)N)r�destroy)r
�staterrr�__del__&szMachine.__del__cCs,t�}|j}|d|_||_|j�|�|S)z-Add a new state to the machine and return it.r)�Node�next_state_number�numberr�append)r
�s�nrrr�	new_state+s
zMachine.new_statecCs|��}|�||�|S)N)r�make_initial_state)r
�namerrrr�new_initial_state4szMachine.new_initial_statecCs||j|<dS)N)r	)r
rrrrrr9szMachine.make_initial_statecCs
|j|S)N)r	)r
rrrr�get_initial_state<szMachine.get_initial_statecCsl|�d�|jdk	rN|�d�x.t|j���D]\}}|�d||jf�q.Wx|jD]}|�|�qVWdS)NzPlex.Machine:
z   Initial states:
z      '%s': %d
)�writer	�sorted�itemsrr�dump)r
�filerrrrrrr?s


zMachine.dump)�__name__�
__module__�__qualname__�__doc__rrr	r
rrrrrrrrrrrs	rc@s|eZdZdZdZdZdZdZdZdd�Z	dd�Z
dd	�Zd
d�Zdd
�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)rzA state of an NFA or DFA.NrcCst�|_t|_dS)N)r�transitions�LOWEST_PRIORITY�action_priority)r
rrrr
Qsz
Node.__init__cCsd|_d|_d|_dS)N)r%�action�epsilon_closure)r
rrrrXszNode.destroycCs|j�||�dS)N)r%�add)r
�eventrrrr�add_transition^szNode.add_transitioncCs|�d|�dS)z5Add an epsilon-move from this state to another state.�N)r,)r
rrrr�link_toaszNode.link_tocCs||jkr||_||_dS)z�Make this an accepting state with the given action. If
        there is already an action, choose the action with highest
        priority.N)r'r()r
r(�priorityrrr�
set_actiones
zNode.set_actioncCs|jS)N)r()r
rrr�
get_actionmszNode.get_actioncCs|jS)N)r')r
rrr�get_action_prioritypszNode.get_action_prioritycCs
|jdk	S)N)r()r
rrr�is_acceptingsszNode.is_acceptingcCs
d|jS)NzState %d)r)r
rrr�__str__vszNode.__str__cCsF|�d|j�|j�|�|j}|j}|dk	rB|�d||f�dS)Nz
   State %d:
z      %s [priority %d]
)rrr%rr(r')r
r r(r/rrrrysz	Node.dumpcCs|j|jkS)N)r)r
�otherrrr�__lt__�szNode.__lt__)r!r"r#r$r%r(r'rr)r
rr,r.r0r1r2r3r4rr6rrrrrIs"rc@s�eZdZdZdZdZdZdddddd�Zdd�Zdd�Z	dd	d
�Z
dd�Zefd
d�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)�FastMachinezd
    FastMachine is a deterministic machine represented in a way that
    allows fast scanning.
    Nr)r-�bol�eol�eof�elsecCsi|_g|_dS)N)r	r)r
rrrr
�szFastMachine.__init__cCsx|jD]}|��qWdS)N)r�clear)r
rrrrr�szFastMachine.__del__cCs:|j}|d|_|j��}||d<||d<|j�|�|S)Nrrr()�next_number�new_state_template�copyrr)r
r(r�resultrrrr�s

zFastMachine.new_statecCs||j|<dS)N)r	)r
rrrrrr�szFastMachine.make_initial_statecCs`t|�tkrT|\}}||kr(||d<q\||kr\x*||krP||t|�<|d7}q2Wn|||<dS)Nr;r)�type�tuple�unichr)r
rr+rrZcode0�code1rrr�add_transitions�s


zFastMachine.add_transitionscCs
|j|S)N)r	)r
rrrrr�szFastMachine.get_initial_statecCsj|�d�|�d�x4t|j���D]"\}}|�dt|�|df�q$Wx|jD]}|�||�qRWdS)NzPlex.FastMachine:
z   Initial states:
z
      %s: %s
r)rrr	r�reprr�
dump_state)r
r rrrrrr�s

zFastMachine.dumpcCs@|�d|d�|�||�|d}|dk	r<|�d|�dS)Nz
   State %d:
rr(z	      %s
)r�dump_transitions)r
rr r(rrrrG�s
zFastMachine.dump_statec
Cs*i}i}xh|��D]\\}}t|�dkrZ|�t|�d�}|dkrNg}||t|�<|�|�qt|�dkr|||<qWi}x4|jD]*}|�t|�d�}	|	r~|�|	�}
|||
<q~W|��}|��x4|D],}
|�	|
�}||
}|�
d||df�q�Wx2dD]*}|�|d�}|r�|�
d||df�q�WdS)Nr�z      %s --> State %d
r)r8r9r:r;)r�len�get�idrr�chars_to_ranges�keys�sort�ranges_to_stringr)
r
rr Zchars_leading_to_stateZspecial_to_state�cr�charsZranges_to_state�	char_listZrangesZranges_list�keyrrrrH�s6



zFastMachine.dump_transitionscCs�|��d}t|�}g}xl||kr�t||�}|}|d7}x0||krjt||�|dkrj|d7}|d7}q<W|�t|�t|�f�qWt|�S)Nrr)rOrJ�ordr�chrrB)r
rS�irr@�c1�c2rrrrM�s
zFastMachine.chars_to_rangescCsd�t|j|��S)N�,)�join�map�range_to_string)r
Z
range_listrrrrP�szFastMachine.ranges_to_stringcCs0|\}}||krt|�Sdt|�t|�fSdS)Nz%s..%s)rF)r
Zrange_tuplerXrYrrrr]�szFastMachine.range_to_string)N)r!r"r#r$r	rr=r>r
rrrrrErrrGrHrMrPr]rrrrr7�s"
	
r7)�
__future__r�sysZTransitionsrrr�ImportErrorrC�	NameErrorrVr&�objectrrr7rrrr�<module>	s
-@