
    8f
J                         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
 d dl d dl d dlmZ dZ G d	 d
e      Zy)    )StringIO)Callable)Token)ATN)ATNType)*)ATNDeserializationOptions   c                      e Zd ZdZdPdefdZdegfdZd Zd Z	d	e
fd
Zd	e
fdZd	e
fdZd	e
defdZd	e
defdZd	e
fdZd	e
fdZd	e
fdZd	e
defdZdedefdZd	e
fdZd	e
fdZdPdefdZd Zd d d d d  d! d" d# d$ d% d& gZd	e
d'ed(ed)ed*ed+ed,edefd-Zd. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: gZd'ed;efd<Zd=Z d>Z!d?Z"d@Z#dAZ$dBZ%dCZ&dDZ'dE dF dG dH dI dJ dK dL gZ(d'edMedNefdOZ)y)QATNDeserializer)deserializationOptionsdataposNoptionsc                 6    |t         j                  }|| _        y N)r	   defaultOptionsr   )selfr   s     C:\Program Files (x86)\Steam\steamapps\common\Skyrim Special Edition\MO2\plugins\installer_wizard\lib\antlr4\atn\ATNDeserializer.py__init__zATNDeserializer.__init__   s    ?/>>G&-#    r   c                 F   || _         d| _        | j                          | j                         }| j	                  |       | j                  |       | j                  |       g }| j                  ||       | j                  ||       | j                  |       | j                  |       | j                  |       | j                  |       | j                  j                  r?|j                  t         j"                  k(  r"| j                  |       | j                  |       |S Nr   )r   r   checkVersionreadATN
readStates	readRules	readModesreadSets	readEdgesreadDecisionsreadLexerActionsmarkPrecedenceDecisions	verifyATNr   generateRuleBypassTransitionsgrammarTyper   PARSER)r   r   atnsetss       r   deserializezATNDeserializer.deserialize   s    	llnssc4 sD!3c"$$S)s&&DDOOw~~5..s3NN3
r   c                     | j                         }|t        k7  r(t        dj                  t	        |      t                    y )Nz8Could not deserialize ATN with version {} (expected {}).)readIntSERIALIZED_VERSION	Exceptionformatord)r   versions     r   r   zATNDeserializer.checkVersion/   sB    ,,.((V]]^abi^jl~  A  A )r   c                     | j                         }t        j                  |      }| j                         }t        ||      S r   )r,   r   fromOrdinalr   )r   idxr&   maxTokenTypes       r   r   zATNDeserializer.readATN4   s5    lln))#.||~;--r   r(   c                    g }g }| j                         }t        d|      D ]  }| j                         }|t        j                  k(  r|j	                  d        8| j                         }| j                  ||      }|t        j                  k(  r$| j                         }	|j                  ||	f       n3t        |t              r#| j                         }
|j                  ||
f       |j	                  |        |D ]  }|j                  |d      |d   _         |D ]  }|j                  |d      |d   _         | j                         }t        d|      D ]&  }| j                         }d|j                  |   _        ( | j                         }t        d|      D ]&  }| j                         }d|j                  |   _        ( y )Nr      T)r,   rangeATNStateINVALID_TYPEaddStatestateFactoryLOOP_ENDappend
isinstanceBlockStartStatestatesloopBackStateendState	nonGreedyisPrecedenceRule)r   r(   loopBackStateNumbersendStateNumbersnstatesistype	ruleIndexsloopBackStateNumberendStateNumberpairnumNonGreedyStatesstateNumbernumPrecedenceStatess                  r   r   zATNDeserializer.readStates:   s   !,,.q'" 	ALLNEh+++T"I!!%3A)))&*lln#$++Q0C,DEA/!%&&>':;LLO	$ ) 	8D$'JJtAw$7DG!	8 $ 	3D"zz$q'2DG	3 "\\^q,- 	5A,,.K04CJJ{#-	5 #llnq-. 	<A,,.K7;CJJ{#4	<r   c                 J   | j                         }|j                  t        j                  k(  rdg|z  |_        dg|z  |_        t        d|      D ]m  }| j                         }|j                  |   }||j
                  |<   |j                  t        j                  k(  sO| j                         }||j                  |<   o dg|z  |_        |j                  D ]J  }t        |t              s||j                  |j                  <   ||j
                  |j                     _        L y r   )r,   r&   r   LEXERruleToTokenTyperuleToStartStater8   rA   ruleToStopStater?   RuleStopStaterK   	stopState)r   r(   nrulesrI   rL   
startState	tokenTypestates           r   r   zATNDeserializer.readRules`   s    ??gmm+#$#,C !sV|q&! 	3AAAJ&0C  #'--/ LLN	)2##A&	3  !cFlZZ 	DEe]338C0>CC  1;		Dr   c                     | j                         }t        d|      D ]:  }| j                         }|j                  j                  |j                  |          < y r   )r,   r8   modeToStartStater>   rA   )r   r(   nmodesrI   rL   s        r   r   zATNDeserializer.readModesu   sJ    q&! 	7AA  ''

16	7r   r)   c           	         | j                         }t        d|      D ]  }t               }|j                  |       | j                         }| j                         }|dk7  r|j	                  d       t        d|      D ]@  }| j                         }	| j                         }
|j                  t        |	|
dz                B  y )Nr   r7   )r,   r8   IntervalSetr>   addOneaddRange)r   r(   r)   mrI   isetncontainsEofji1i2s              r   r   zATNDeserializer.readSets{   s    LLNq! 
	1A=DKKA,,.KA~B1a[ 1\\^\\^eBQ/01
	1r   c                    | j                         }t        d|      D ]  }| j                         }| j                         }| j                         }| j                         }| j                         }	| j                         }
| j                  ||||||	|
|      }|j                  |   }|j	                  |        |j                  D ]  }t        dt        |j                              D ]  }|j                  |   }t        |t              s#d}|j                  |j                  j                     j                  r%|j                  dk(  r|j                  j                  }t        |j                  |      }|j                   |j                  j                     j	                  |         |j                  D ](  }t        |t"              rI|j$                  t'        d      |j$                  j(                  t'        d      ||j$                  _        t        |t*              rVt        dt        |j                              D ]3  }|j                  |   j                  }t        |t,              s-||_        5 t        |t0              st        dt        |j                              D ]3  }|j                  |   j                  }t        |t2              s-||_        5 + y )Nr   rb   IllegalState)r,   r8   edgeFactoryrA   addTransitionlentransitionsr?   RuleTransitionrV   targetrK   rE   
precedenceEpsilonTransitionfollowStaterW   r@   rC   r.   r[   PlusLoopbackStatePlusBlockStartStaterB   StarLoopbackStateStarLoopEntryState)r   r(   r)   nedgesrI   srctrgttypearg1arg2arg3transsrcStater]   toutermostPrecedenceReturnrt   s                    r   r    zATNDeserializer.readEdges   sp   q&! 		*A,,.C,,.CLLNE<<>D<<>D<<>D$$S%c4tTREzz#H""5)		* ZZ 
	ME1c%"3"345 	M%%a(!!^4,.)''(:(:;LL||q(45HH4F4F1)!--9RS##AHH$6$67EEeL	M
	M ZZ 	5E%1>>)#N33>>,,8#N33,1)%!23q#e&7&7"89 5A"..q188F!&*=>/4,5 E#45q#e&7&7"89 5A"..q188F!&*<=/4,5!	5r   c                     | j                         }t        d|      D ]C  }| j                         }|j                  |   }|j                  j	                  |       ||_        E y r   )r,   r8   rA   decisionToStater>   decision)r   r(   
ndecisionsrI   rL   decStates         r   r!   zATNDeserializer.readDecisions   sW    \\^
q*% 	"AAzz!}H&&x0 !H		"r   c                 <   |j                   t        j                  k(  r| j                         }d g|z  |_        t        d|      D ]T  }| j                         }| j                         }| j                         }| j                  |||      }||j                  |<   V y y r   )r&   r   rT   r,   lexerActionsr8   lexerActionFactory)r   r(   countrI   
actionTypedata1data2lexerActions           r   r"   z ATNDeserializer.readLexerActions   s    ??gmm+LLNE!%x%/C1e_ 2!\\^
"55j%O&1  #2 ,r   c                     t        |j                        }dg|z  |_        t        d|      D ]!  }|j                  |z   dz   |j                  |<   # t        d|      D ]  }| j                  ||        y )Nr   r7   )rq   rV   rU   r8   r5   generateRuleBypassTransition)r   r(   r   rI   s       r   r%   z-ATNDeserializer.generateRuleBypassTransitions   s|    C(() !eemq% 	>A%(%5%5%9A%=C"	> q% 	6A--c15	6r   r4   c                 0   t               }||_        |j                  |       t               }||_        |j                  |       ||_        |j                  |       ||_        d }|j                  |   j                  rOd }|j                  D ]1  }| j                  ||      s|}|j                  j                  d   } n |t        d      |j                  |   }|j                  D ]0  }|j                  D ]  }||k(  r	|j                  |k(  s||_        ! 2 |j                  |   }	t!        |	j                        }
|
dkD  r4|j#                  |	j                  |
dz
            |	j                  d= |
dkD  r4|j                  |   j#                  t%        |             |j#                  t%        |             t'               }|j                  |       |j#                  t)        ||j*                  |                |j#                  t%        |             y )Nr   zDCouldn't identify final state of the precedence rule prefix section.r7   rb   )BasicBlockStartStaterK   r;   BlockEndStaterC   defineDecisionStater[   rV   rE   rA   stateIsEndStateForrB   rr   r.   rW   rt   rq   rp   rv   
BasicStateAtomTransitionrU   )r   r(   r4   bypassStart
bypassStopexcludeTransitionrC   r]   
transitionrV   r   
matchStates               r   r   z,ATNDeserializer.generateRuleBypassTransition   s   *, #[!"_
"
Z ), +
 $55H **5#6$H(-(;(;(G(G(J%	 !( fgg **3/H ZZ 	3E#// 3
!22$$0(2J%	3	3 //4$001ai%%&6&B&B57&KL ,,R0 ai
 	S!//0A+0NO  !28!<=\
Z   
C<O<OPS<T!UV!!"3J"?@r   r]   c                 0   |j                   |k7  ry t        |t              sy |j                  t	        |j                        dz
     j
                  }t        |t              sy |j                  r)t        |j                  d   j
                  t              r|S y )Nr7   r   )	rK   r?   r{   rr   rq   rt   LoopEndStateepsilonOnlyTransitionsrX   )r   r]   r4   maybeLoopEndStates       r   r   z"ATNDeserializer.stateIsEndStateFor  s    ??c!%!34!--c%2C2C.Dq.HIPP+\:33,88;BBMRLr   c                    |j                   D ]  }t        |t              s|j                  |j                     j
                  s8|j                  t        |j                        dz
     j                  }t        |t              sx|j                  st        |j                  d   j                  t              sd|_         y )Nr7   r   T)rA   r?   r{   rV   rK   rE   rr   rq   rt   r   r   rX   isPrecedenceDecision)r   r(   r]   r   s       r   r#   z'ATNDeserializer.markPrecedenceDecisions'  s    ZZ 	:Ee%78 ##EOO4EE$)$5$5c%:K:K6Lq6P$Q$X$X!/>(??&'8'D'DQ'G'N'NP]^592	:r   c                    | j                   j                  sy |j                  D ]_  }|| j                  |j                  xs t        |j                        dk         t        |t              r| j                  |j                  d u       t        |t              rB| j                  |j                  d u       | j                  t        |j                        dk(         t        |j                  d   j                  t              rS| j                  t        |j                  d   j                  t                     | j                  |j                          nt        |j                  d   j                  t              rR| j                  t        |j                  d   j                  t                     | j                  |j                         nt        d      t        |t               r]| j                  t        |j                        dk(         | j                  t        |j                  d   j                  t                     t        |t              r| j                  |j                  d u       t        |t"              r| j                  |j$                  d u       t        |t&              r| j                  |j(                  d u       t        |t*              r| j                  |j,                  d u       t        |t.              r:| j                  t        |j                        dk  xs |j0                  dk\         '| j                  t        |j                        dk  xs t        |t2                     b y )Nr7      r   rn   )r   r$   rA   checkConditionr   rq   rr   r?   ry   rB   r{   rt   StarBlockStartStater   rD   r.   rz   RuleStartStaterY   r@   rC   r   r[   DecisionStater   rX   )r   r(   r]   s      r   r$   zATNDeserializer.verifyATN7  s   **44ZZ )	eE} < < [EDUDU@VZ[@[\%!45##E$7$7t$CD%!34##E$7$7t$CD##C(9(9$:a$?@e//299;NO''
53D3DQ3G3N3NP\(]^''EOO(;< 1 1! 4 ; ;\J''
53D3DQ3G3N3NPc(de''8#N33%!23##C(9(9$:a$?@##Ju/@/@/C/J/JL^$_`%.##E$7$7t$CD%0##EOO4$?@%1##ENN$$>?%/##E$4$4D$@A%/##C(9(9$:a$?$V5>>UVCVW##C(9(9$:a$?$c:eUbCcdS)	er   	conditionc                 &    |s|d}t        |      y )Nrn   )r.   )r   r   messages      r   r   zATNDeserializer.checkConditionf  s    (G$$ r   c                 b    | j                   | j                     }| xj                  dz  c_        |S )Nr7   )r   r   )r   rI   s     r   r,   zATNDeserializer.readIntl  s&    IIdhhAr   c                      y r    )argss    r   <lambda>zATNDeserializer.<lambda>q      r   c                     t        |      S r   )rv   r(   r}   r~   r   r   r   r)   rt   s           r   r   zATNDeserializer.<lambda>r  s    M^_eMf r   c                 \    |dk7  rt        |t        j                  |      S t        |||      S r   )RangeTransitionr   EOFr   s           r   r   zATNDeserializer.<lambda>s  s1    DHAI		4@ SbcikoquSv r   c                 8    t        | j                  |   |||      S r   )rs   rA   r   s           r   r   zATNDeserializer.<lambda>u  s    &szz$'7tVL r   c                 $    t        ||||dk7        S r   )PredicateTransitionr   s           r   r   zATNDeserializer.<lambda>w  s    +FD$	J r   c                 X    |dk7  rt        |t        j                        S t        ||      S r   )r   r   r   r   s           r   r   zATNDeserializer.<lambda>y  s,    =AQYvuyy9 LZ[acgLh r   c                 $    t        ||||dk7        S r   )ActionTransitionr   s           r   r   zATNDeserializer.<lambda>{  s    (tTQYG r   c                      t        |||         S r   )SetTransitionr   s           r   r   zATNDeserializer.<lambda>}  s    %fd4j9 r   c                      t        |||         S r   )NotSetTransitionr   s           r   r   zATNDeserializer.<lambda>  s    (d< r   c                     t        |      S r   )WildcardTransitionr   s           r   r   zATNDeserializer.<lambda>  s    *62 r   c                     t        ||      S r   )PrecedencePredicateTransitionr   s           r   r   zATNDeserializer.<lambda>  s    5fdC r   typer}   r~   r   r   r   c	           
          |j                   |   }	|t        | j                        kD  s| j                  |   t        dt	        |      z   dz          | j                  |   ||||||||	      S )NzThe specified transition type:  is not valid.)rA   rq   edgeFactoriesr.   str)
r   r(   r   r}   r~   r   r   r   r)   rt   s
             r   ro   zATNDeserializer.edgeFactory  st    C#d(())T-?-?-E-M=D	IL\\]]+4%%d+Cc4tTSYZZr   c                       y r   r   r   r   r   r   zATNDeserializer.<lambda>  r   r   c                      t               S r   )r   r   r   r   r   zATNDeserializer.<lambda>  s     r   c                      t               S r   )r   r   r   r   r   zATNDeserializer.<lambda>  s	    !1 r   c                      t               S r   )r   r   r   r   r   zATNDeserializer.<lambda>  s
    !5!7 r   c                      t               S r   )ry   r   r   r   r   zATNDeserializer.<lambda>  
    !4!6 r   c                      t               S r   )r   r   r   r   r   zATNDeserializer.<lambda>  r   r   c                      t               S r   )TokensStartStater   r   r   r   zATNDeserializer.<lambda>  s
    !1!3 r   c                      t               S r   )rX   r   r   r   r   zATNDeserializer.<lambda>       r   c                      t               S r   )r   r   r   r   r   zATNDeserializer.<lambda>  r   r   c                      t               S r   )rz   r   r   r   r   zATNDeserializer.<lambda>  
    !2!4 r   c                      t               S r   )r{   r   r   r   r   zATNDeserializer.<lambda>  s
    !3!5 r   c                      t               S r   )rx   r   r   r   r   zATNDeserializer.<lambda>  r   r   c                      t               S r   )r   r   r   r   r   zATNDeserializer.<lambda>  s     r   rK   c                     |t        | j                        kD  s| j                  |   t        dt        |      z   dz          | j                  |          }|||_        |S )NzThe specified state type r   )rq   stateFactoriesr.   r   rK   )r   r   rK   rL   s       r   r<   zATNDeserializer.stateFactory  sf    T(())T-@-@-F-N7#d)CFVVWW)##D)+A}'r   r   r7   r      r
            c                     t        |       S r   )LexerChannelActionr   r   s     r   r   zATNDeserializer.<lambda>  s    -?-F r   c                     t        | |      S r   )LexerCustomActionr   s     r   r   zATNDeserializer.<lambda>  s    ->ue-L r   c                     t        |       S r   )LexerModeActionr   s     r   r   zATNDeserializer.<lambda>      _U-C r   c                 "    t         j                  S r   )LexerMoreActionINSTANCEr   s     r   r   zATNDeserializer.<lambda>      _-E-E r   c                 "    t         j                  S r   )LexerPopModeActionr   r   s     r   r   zATNDeserializer.<lambda>  s    -?-H-H r   c                     t        |       S r   )LexerPushModeActionr   s     r   r   zATNDeserializer.<lambda>  s    -@-G r   c                 "    t         j                  S r   )LexerSkipActionr   r   s     r   r   zATNDeserializer.<lambda>  r   r   c                     t        |       S r   )LexerTypeActionr   s     r   r   zATNDeserializer.<lambda>  r   r   r   r   c                     |t        | j                        kD  s| j                  |   t        dt        |      z   dz          | j                  |   ||      S )Nz The specified lexer action type r   )rq   actionFactoriesr.   r   )r   r   r   r   s       r   r   z"ATNDeserializer.lexerActionFactory  sZ    #d**++t/C/CD/I/Q>TJM]]^^-4''-eU;;r   r   )*__name__
__module____qualname__	__slots__r	   r   intr*   r   r   r   r   r   r   listr   r    r!   r"   r%   r   r9   r   r#   r$   boolr   r,   r   ro   r   r<   CHANNELCUSTOMMODEMOREPOP_MODE	PUSH_MODESKIPTYPEr   r   r   r   r   r   r      s%   9I.!: .
# ,A
.$<S $<LDC D*7C 713 1T 1-5C -5d -5^" "	23 	26 67As 7A 7Atx S 0:# : -eC -e^%t %
 )fwMKiH:=3D%M,[c [ [ [# [C [c [X[ [bf [ &-1766300454/N s  GFDDHIDDFLCEHGECO<c < <C <r   r   N)ior   typingr   antlr4.Tokenr   antlr4.atn.ATNr   antlr4.atn.ATNTyper   antlr4.atn.ATNStateantlr4.atn.Transitionantlr4.atn.LexerAction$antlr4.atn.ATNDeserializationOptionsr	   r-   objectr   r   r   r   <module>r     s6   
     & ! # $ J m<v m<r   