o
    ?iV                     @   s   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlT d dlT d dlT d dlmZ ed	Zed
ZeegZdZeZG dd deZdS )    )UUID)StringIO)Callable)Token)ATN)ATNType)*)ATNDeserializationOptionsz$AADB8D7E-AEEF-4415-AD2B-8204D6CF042Ez$59627784-3BE5-417A-B9EB-8131A7286089   c                   @   s  e Zd ZdZdudefddZdedefdd	Zd
efddZ	d
efddZ
dd Zdd Zdd ZdefddZdefddZdefddZdededeg ef fddZdedefd d!Zdefd"d#Zdefd$d%Zdefd&d'Zded(efd)d*Zd+ed(efd,d-Zdefd.d/Zdefd0d1Zdud2efd3d4Z d5d6 Z!d7d8 Z"d9d: Z#d;d< Z$d=d> d?d> d@d> dAd> dBd> dCd> dDd> dEd> dFd> dGd> dHd> gZ%dedIedJedKedLedMedNedefdOdPZ&dQd> dRd> dSd> dTd> dUd> dVd> dWd> dXd> dYd> dZd> d[d> d\d> d]d> gZ'dIed^efd_d`Z(daZ)dbZ*dcZ+ddZ,deZ-dfZ.dgZ/dhZ0did> djd> dkd> dld> dmd> dnd> dod> dpd> gZ1dIedqedrefdsdtZ2dS )vATNDeserializer)deserializationOptionsdataposuuidNoptionsc                 C   s   |d u rt j}|| _d S N)r	   defaultOptionsr   )selfr    r   W/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/antlr4/atn/ATNDeserializer.py__init__$   s   
zATNDeserializer.__init__feature
actualUuidc                 C   s(   t |}|dk rdS t |}||kS )Nr   F)SUPPORTED_UUIDSindex)r   r   r   idx1idx2r   r   r   isFeatureSupported5   s
   

z"ATNDeserializer.isFeatureSupportedr   c                 C   s   |  | |   |   |  }| | | | | | g }| ||| j | 	t
| jr9| ||| j | || | | | | | | | | | jjrg|jtjkrg| | | | |S r   )resetcheckVersion	checkUUIDreadATN
readStates	readRules	readModesreadSetsreadIntr   ADDED_UNICODE_SMPr   	readInt32	readEdgesreadDecisionsreadLexerActionsmarkPrecedenceDecisions	verifyATNr   generateRuleBypassTransitionsgrammarTyper   PARSER)r   r   atnsetsr   r   r   deserialize<   s*   









zATNDeserializer.deserializec                    s:   dd   fdd|D }t |d |d< || _d| _d S )Nc                 S   s    t | }|dkr|d S |d S )N      i  )ord)cvr   r   r   adjustX   s   z%ATNDeserializer.reset.<locals>.adjustc                    s   g | ]} |qS r   r   ).0r7   r9   r   r   
<listcomp>[   s    z)ATNDeserializer.reset.<locals>.<listcomp>r   )r6   r   r   )r   r   tempr   r;   r   r   W   s
   
zATNDeserializer.resetc                 C   s4   |   }|tkrtdt| d tt d d S )Nz'Could not deserialize ATN with version  (expected z).)r&   SERIALIZED_VERSION	Exceptionstr)r   versionr   r   r   r   a   s    zATNDeserializer.checkVersionc                 C   s>   |   }|tvrtdt| d tt d |t|| _d S )Nz%Could not deserialize ATN with UUID: r>   z or a legacy UUID).)readUUIDr   r@   rA   SERIALIZED_UUIDr   )r   r   r   r   r   r    f   s   
zATNDeserializer.checkUUIDc                 C   s$   |   }t|}|   }t||S r   )r&   r   fromOrdinalr   )r   idxr/   maxTokenTyper   r   r   r!   m   s   

zATNDeserializer.readATNr1   c                 C   sB  g }g }|   }td|D ]G}|   }|tjkr|d  q|   }|dkr(d}| ||}|tjkr?|   }	|||	f nt|t	rO|   }
|||
f || q|D ]}|j
|d  |d _qW|D ]}|j
|d  |d _qf|   }td|D ]}|   }d|j
| _q||   }td|D ]}|   }d|j
| _qd S )Nr     r4   T)r&   rangeATNStateINVALID_TYPEaddStatestateFactoryLOOP_ENDappend
isinstanceBlockStartStatestatesloopBackStateendState	nonGreedyisPrecedenceRule)r   r1   loopBackStateNumbersendStateNumbersnstatesistype	ruleIndexsloopBackStateNumberendStateNumberpairnumNonGreedyStatesstateNumbernumPrecedenceStatesr   r   r   r"   s   s@   



zATNDeserializer.readStatesc                 C   s   |   }|jtjkrdg| |_dg| |_td|D ]&}|   }|j| }||j|< |jtjkrA|   }|dkr<tj	}||j|< qdg| |_
|jD ]}t|tsSqK||j
|j< ||j|j _qKd S )Nr   rH   )r&   r/   r   LEXERruleToTokenTyperuleToStartStaterJ   rS   r   EOFruleToStopStaterQ   RuleStopStater]   	stopState)r   r1   nrulesr[   r^   
startState	tokenTypestater   r   r   r#      s*   




zATNDeserializer.readRulesc                 C   s6   |   }td|D ]}|   }|j|j|  q	d S Nr   )r&   rJ   modeToStartStaterP   rS   )r   r1   nmodesr[   r^   r   r   r   r$      s
   zATNDeserializer.readModesr2   readUnicodec                 C   s~   |   }td|D ]3}t }|| |   }|   }|dkr$|d td|D ]}	| }
| }|t|
|d  q)q	d S )Nr   rI   r4   )r&   rJ   IntervalSetrP   addOneaddRange)r   r1   r2   rs   mr[   isetncontainsEofji1i2r   r   r   r%      s   

zATNDeserializer.readSetsc                 C   s  |   }td|D ]0}|   }|   }|   }|   }|   }	|   }
| ||||||	|
|}|j| }|| q	|jD ];}tdt|jD ]0}|j| }t|tsTqGd}|j	|j
j jrg|jdkrg|j
j}t|j|}|j|j
j | qGq=|jD ][}t|tr|jd u rtd|jjd urtd||j_t|trtdt|jD ]}|j| j
}t|tr||_qq|t|trtdt|jD ]}|j| j
}t|tr||_qq|d S )Nr   rI   IllegalState)r&   rJ   edgeFactoryrS   addTransitionlentransitionsrQ   RuleTransitionrg   targetr]   rW   
precedenceEpsilonTransitionfollowStateri   rR   rU   r@   rm   PlusLoopbackStatePlusBlockStartStaterT   StarLoopbackStateStarLoopEntryState)r   r1   r2   nedgesr[   srctrgttypearg1arg2arg3transsrcStatero   toutermostPrecedenceReturnr   r   r   r   r)      sX   











zATNDeserializer.readEdgesc                 C   s@   |   }td|D ]}|   }|j| }|j| ||_q	d S rp   )r&   rJ   rS   decisionToStaterP   decision)r   r1   
ndecisionsr[   r^   decStater   r   r   r*      s   
zATNDeserializer.readDecisionsc                 C   s   |j tjkr<|  }d g| |_td|D ](}|  }|  }|dkr%d}|  }|dkr/d}| |||}||j|< qd S d S )Nr   rH   rI   )r/   r   re   r&   lexerActionsrJ   lexerActionFactory)r   r1   countr[   
actionTypedata1data2lexerActionr   r   r   r+      s   z ATNDeserializer.readLexerActionsc                 C   sZ   t |j}dg| |_td|D ]}|j| d |j|< qtd|D ]}| || q"d S )Nr   r4   )r   rg   rf   rJ   rG   generateRuleBypassTransition)r   r1   r   r[   r   r   r   r.     s   
z-ATNDeserializer.generateRuleBypassTransitionsrF   c                 C   sj  t  }||_|| t }||_|| ||_|| ||_d }|j| jrJd }|j	D ]}| 
||r@|}|jjd } nq.|d u rItdn|j| }|j	D ]}|jD ]}||kr^qW|j|krf||_qWqR|j| }	t|	j}
|
dkr||	j|
d   |	jd= |
dksv|j| t| |t| t }|| |t||j|  |t| d S )Nr   zDCouldn't identify final state of the precedence rule prefix section.r4   rI   )BasicBlockStartStater]   rM   BlockEndStaterU   defineDecisionStaterm   rg   rW   rS   stateIsEndStateForrT   r   r@   ri   r   r   r   r   
BasicStateAtomTransitionrf   )r   r1   rF   bypassStart
bypassStopexcludeTransitionrU   ro   
transitionrg   r   
matchStater   r   r   r     sT   










z,ATNDeserializer.generateRuleBypassTransitionro   c                 C   s`   |j |krd S t|tsd S |jt|jd  j}t|ts d S |jr.t|jd jtr.|S d S )Nr4   r   )	r]   rQ   r   r   r   r   LoopEndStateepsilonOnlyTransitionsrj   )r   ro   rF   maybeLoopEndStater   r   r   r   R  s   


z"ATNDeserializer.stateIsEndStateForc                 C   sh   |j D ].}t|tsq|j|j jr1|jt|jd  j}t|t	r1|j
r1t|jd jtr1d|_qd S )Nr4   r   T)rS   rQ   r   rg   r]   rW   r   r   r   r   r   rj   isPrecedenceDecision)r   r1   ro   r   r   r   r   r,   j  s   


z'ATNDeserializer.markPrecedenceDecisionsc                 C   s  | j jsd S |jD ]}|d u rq	| |jpt|jdk t|tr*| |j	d u t|t
r~| |j	d u | t|jdk t|jd jtr^| t|jd jt | |j  n t|jd jtrz| t|jd jt | |j ntdt|tr| t|jdk | t|jd jt
 t|tr| |j	d u t|tr| |jd u t|tr| |jd u t|tr| |jd u t|tr| t|jdkp|jdk q	| t|jdkpt|t q	d S )Nr4   r5   r   r~   )r   r-   rS   checkConditionr   r   r   rQ   r   rT   r   r   StarBlockStartStater   rV   r@   r   RuleStartStaterk   rR   rU   r   rm   DecisionStater   rj   )r   r1   ro   r   r   r   r-   z  sB   








  zATNDeserializer.verifyATN	conditionc                 C   s   |s|d u rd}t |d S )Nr~   )r@   )r   r   messager   r   r   r     s
   zATNDeserializer.checkConditionc                 C   s   | j | j }|  jd7  _|S )Nr4   )r   r   )r   r[   r   r   r   r&     s   zATNDeserializer.readIntc                 C   s   |   }|   }||d> B S )N   )r&   r   lowhighr   r   r   r(     s   zATNDeserializer.readInt32c                 C   s    |   }|   }|d@ |d> B S )Nl        )r(   r   r   r   r   readLong  s   zATNDeserializer.readLongc                 C   s*   |   }|   }|d@ |d> B }t|dS )Nl    @   )int)r   r   )r   r   r   allBitsr   r   r   rC     s   
zATNDeserializer.readUUIDc                 C      d S r   r   )argsr   r   r   <lambda>      zATNDeserializer.<lambda>c                 C      t |S r   )r   r1   r   r   r   r   r   r2   r   r   r   r   r         c                 C   s"   |dkrt |tj|S t |||S rp   )RangeTransitionr   rh   r   r   r   r   r     s   "c                 C   s   t | j| |||S r   )r   rS   r   r   r   r   r     s   c                 C      t ||||dkS rp   )PredicateTransitionr   r   r   r   r        c                 C   s   |dkr
t |tjS t ||S rp   )r   r   rh   r   r   r   r   r     s   c                 C   r   rp   )ActionTransitionr   r   r   r   r     r   c                 C      t ||| S r   )SetTransitionr   r   r   r   r        c                 C   r   r   )NotSetTransitionr   r   r   r   r     r   c                 C   r   r   )WildcardTransitionr   r   r   r   r     s   c                 C   s
   t ||S r   )PrecedencePredicateTransitionr   r   r   r   r     s   
typer   r   r   r   r   c	           
   	   C   sV   |j | }	|t| jks| j| d u rtdt| d | j| ||||||||	S )NzThe specified transition type:  is not valid.)rS   r   edgeFactoriesr@   rA   )
r   r1   r   r   r   r   r   r   r2   r   r   r   r   r     s   
zATNDeserializer.edgeFactoryc                   C   r   r   r   r   r   r   r   r     r   c                   C      t  S r   )r   r   r   r   r   r         c                   C   r   r   )r   r   r   r   r   r     r   c                   C   r   r   )r   r   r   r   r   r     r   c                   C   r   r   )r   r   r   r   r   r     r   c                   C   r   r   )r   r   r   r   r   r     r   c                   C   r   r   )TokensStartStater   r   r   r   r     r   c                   C   r   r   )rj   r   r   r   r   r     r   c                   C   r   r   )r   r   r   r   r   r     r   c                   C   r   r   )r   r   r   r   r   r     r   c                   C   r   r   )r   r   r   r   r   r     r   c                   C   r   r   )r   r   r   r   r   r     r   c                   C   r   r   )r   r   r   r   r   r     r   r]   c                 C   sN   |t | jks| j| d u rtdt| d | j|  }|d ur%||_|S )NzThe specified state type r   )r   stateFactoriesr@   rA   r]   )r   r   r]   r^   r   r   r   rN     s   zATNDeserializer.stateFactoryr   r4   r5   r
               c                 C      t | S r   )LexerChannelActionr   r   r   r   r   r     r   c                 C   s
   t | |S r   )LexerCustomActionr   r   r   r   r     s   
 c                 C   r   r   )LexerModeActionr   r   r   r   r     r   c                 C      t jS r   )LexerMoreActionINSTANCEr   r   r   r   r     r   c                 C   r   r   )LexerPopModeActionr   r   r   r   r   r     r   c                 C   r   r   )LexerPushModeActionr   r   r   r   r     r   c                 C   r   r   )LexerSkipActionr   r   r   r   r   r     r   c                 C   r   r   )LexerTypeActionr   r   r   r   r   	  r   r   r   c                 C   s@   |t | jks| j| d u rtdt| d | j| ||S )Nz The specified lexer action type r   )r   actionFactoriesr@   rA   )r   r   r   r   r   r   r   r     s   z"ATNDeserializer.lexerActionFactoryr   )3__name__
__module____qualname__	__slots__r	   r   r   r   rA   r3   r   r   r    r!   r   r"   r#   r$   listr   r   r%   r)   r*   r+   r.   r   rK   r   r,   r-   boolr   r&   r(   r   rC   r   r   r   rN   CHANNELCUSTOMMODEMOREPOP_MODE	PUSH_MODESKIPTYPEr   r   r   r   r   r   r   !   s    
)/
:/*	
r   N)r   r   ior   typingr   antlr4.Tokenr   antlr4.atn.ATNr   antlr4.atn.ATNTyper   antlr4.atn.ATNStateantlr4.atn.Transitionantlr4.atn.LexerAction$antlr4.atn.ATNDeserializationOptionsr	   BASE_SERIALIZED_UUIDr'   r   r?   rD   objectr   r   r   r   r   <module>   s    