o
    ٷi	                     @   sT   d dl mZ d dlmZ d dlmZ d dlmZ G dd deZ	G dd de	Z
d	S )
    )StringIO)DFA)str_list)DFAStatec                   @   sL   e Zd ZdZddededefddZdd	 Zd
efddZ	de
fddZdS )DFASerializerdfaliteralNamessymbolicNamesNr   r	   r
   c                 C   s   || _ || _|| _d S Nr   )selfr   r	   r
    r   L/home/ubuntu/.local/lib/python3.10/site-packages/antlr4/dfa/DFASerializer.py__init__   s   
zDFASerializer.__init__c                 C   s
  | j jd u rd S t p}| j  D ]M}d}|jd urt|j}td|D ]9}|j| }|d ur]|jdkr]|| 	| | 
|}|d || |d || 	| |d q$q| }t|dkrr	 W d    d S |W  d    S 1 s~w   Y  d S )Nr   i-z->
)r   s0r   sortedStatesedgeslenrangestateNumberwritegetStateStringgetEdgeLabelgetvalue)r   bufsnitlabeloutputr   r   r   __str__   s2   








$zDFASerializer.__str__r   c                 C   sd   |dkrdS | j d ur|t| j kr| j |d  S | jd ur,|t| jkr,| j|d  S t|d S )Nr   EOF   )r	   r   r
   strr   r   r   r   r   r   .   s   zDFASerializer.getEdgeLabelr   c                 C   sf   |j }|jrdndd t| |jrdnd }|jr1|jd ur(|d t|j S |d t|j S |S )N: r   ^z=>)r   isAcceptStater&   requiresFullContext
predicatesr   
prediction)r   r   r   baseStateStrr   r   r   r   8   s   (
zDFASerializer.getStateString)NN)__name__
__module____qualname__	__slots__r   listr   r#   intr   r   r   r   r   r   r   r      s    
r   c                       s0   e Zd Zdef fddZdefddZ  ZS )LexerDFASerializerr   c                    s   t  |d  d S r   )superr   )r   r   	__class__r   r   r   E   s   zLexerDFASerializer.__init__r   c                 C   s   dt | d S )N')chrr'   r   r   r   r   H   s   zLexerDFASerializer.getEdgeLabel)r0   r1   r2   r   r   r5   r   __classcell__r   r   r8   r   r6   C   s    r6   N)ior   antlr4r   antlr4.Utilsr   antlr4.dfa.DFAStater   objectr   r6   r   r   r   r   <module>   s   5