
    NgW                     n    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Z G d d	e          ZdS )
    )Enum)ATN)	ATNConfig)ATNConfigSet)RuleStopState)SemanticContextNc                      e Zd ZdZdZdZededefd            Z	edefd            Z
edefd            Zed	efd
            Zed	efd            Zed	efd            Zed	efd            Zed	efd            Zed	efd            Zed	efd            Zedefd            Zedefd            Zedefd            Zed	efd            ZdS )PredictionModer         modeconfigsc                 h   |                      |          rdS |t          j        k    rL|j        rEt	                      }|D ]2}t          |t          j                  }|                    |           3|}| 	                    |          }| 
                    |          o|                     |           S )NT)configsemantic)allConfigsInRuleStopStatesr
   SLLhasSemanticContextr   r   r   NONEaddgetConflictingAltSubsetshasConflictingAltSethasStateAssociatedWithOneAlt)clsr   r   dupcaltsetss         U/var/www/html/ai-engine/env/lib/python3.11/site-packages/antlr4/atn/PredictionMode.py#hasSLLConflictTerminatingPredictionz2PredictionMode.hasSLLConflictTerminatingPrediction   s     ))'22 	4 >%%% ) "nn   A!_5IJJJAGGAJJJJ ..w77''00b9Y9YZa9b9b5bb    c                 4    t          d |D                       S )Nc              3   J   K   | ]}t          |j        t                    V  d S N
isinstancestater   .0cfgs     r   	<genexpr>z:PredictionMode.hasConfigInRuleStopState.<locals>.<genexpr>   .      KKC:ci77KKKKKKr    anyr   r   s     r   hasConfigInRuleStopStatez'PredictionMode.hasConfigInRuleStopState       KK7KKKKKKr    c                 4    t          d |D                       S )Nc              3   J   K   | ]}t          |j        t                    V  d S r#   r$   r'   s     r   r*   z<PredictionMode.allConfigsInRuleStopStates.<locals>.<genexpr>   r+   r    )allr.   s     r   r   z)PredictionMode.allConfigsInRuleStopStates   r0   r    r   c                 ,    |                      |          S r#   )getSingleViableAltr   r   s     r   resolvesToJustOneViableAltz)PredictionMode.resolvesToJustOneViableAltp  s    %%g...r    c                 .    |                      |           S r#   )hasNonConflictingAltSetr6   s     r   allSubsetsConflictz!PredictionMode.allSubsetsConflict|  s    ..w7777r    c                 4    t          d |D                       S )Nc              3   <   K   | ]}t          |          d k    V  dS r   Nlenr(   altss     r   r*   z9PredictionMode.hasNonConflictingAltSet.<locals>.<genexpr>  s,      66d3t99>666666r    r,   r6   s     r   r9   z&PredictionMode.hasNonConflictingAltSet  s    66g666666r    c                 4    t          d |D                       S )Nc              3   <   K   | ]}t          |          d k    V  dS r=   r>   r@   s     r   r*   z6PredictionMode.hasConflictingAltSet.<locals>.<genexpr>  s,      55T3t99q=555555r    r,   r6   s     r   r   z#PredictionMode.hasConflictingAltSet  s    55W555555r    c                     |sdS t          t          |                    t          fdt          |          D                       S )NTc              3   $   K   | ]
}|k    V  d S r#    )r(   rA   firsts     r   r*   z1PredictionMode.allSubsetsEqual.<locals>.<genexpr>  s'      ;;T45=;;;;;;r    )nextiterr3   )r   r   rG   s     @r   allSubsetsEqualzPredictionMode.allSubsetsEqual  sL     	4T']]##;;;;T']];;;;;;r    c                     |                      |          }t          |          dk    rt          t          |                    S t          j        S Nr   )getAltsr?   rH   rI   r   INVALID_ALT_NUMBER)r   r   r3   s      r   getUniqueAltzPredictionMode.getUniqueAlt  s=    kk'""s88Q;;S		??"%%r    c                     t          j        | S r#   )setunionr6   s     r   rM   zPredictionMode.getAlts  s    y'""r    c                    t                      }|D ]g}t          |j        j        |j        f          }|                    |d           }|t                      }|||<   |                    |j                   h|	                                S r#   )
dicthashr&   stateNumbercontextgetrQ   r   altvalues)r   r   configToAltsr   hrA   s         r   r   z'PredictionMode.getConflictingAltSubsets  s    vv 	 	Aag)19566A##At,,D|uu"&QHHQUOOOO""$$$r    c                     t                      }|D ]Q}|                    |j        d           }|t                      }|||j        <   |                    |j                   R|S r#   )rT   rX   r&   rQ   r   rY   )r   r   mr   rA   s        r   getStateToAltMapzPredictionMode.getStateToAltMap  s`    FF 	 	A55$''D|uu!!'
HHQUOOOOr    c                 ~    t          d |                     |                                          D                       S )Nc              3   <   K   | ]}t          |          d k    V  dS r=   r>   r@   s     r   r*   z>PredictionMode.hasStateAssociatedWithOneAlt.<locals>.<genexpr>  s,      UUd3t99>UUUUUUr    )r-   r_   rZ   r.   s     r   r   z+PredictionMode.hasStateAssociatedWithOneAlt  s9    UUc.B.B7.K.K.R.R.T.TUUUUUUr    c                     t                      }|D ]G}t          |          }|                    |           t          |          dk    rt          j        c S Ht          |          S rL   )rQ   minr   r?   r   rN   )r   r   
viableAltsrA   minAlts        r   r5   z!PredictionMode.getSingleViableAlt  sh    UU
 	. 	.DYYFNN6""":q  ---- !:r    N)__name__
__module____qualname__r   LLLL_EXACT_AMBIG_DETECTIONclassmethodr
   r   r   r/   r   listr7   r:   r9   r   rJ   rO   rM   r   r_   r   r5   rF   r    r   r
   r
      sk       , C& 
B$  !~ cn cl c c c [cF Ll L L L [L L L L L [L` / / / / [/ 8 8 8 8 [8 7T 7 7 7 [7 6$ 6 6 6 [6 <T < < < [< &$ & & & [& #T # # # [# 	%l 	% 	% 	% [	%& l    [ V, V V V [V     [  r    r
   )enumr   antlr4.atn.ATNr   antlr4.atn.ATNConfigr   antlr4.atn.ATNConfigSetr   antlr4.atn.ATNStater   antlr4.atn.SemanticContextr   r
   rF   r    r   <module>rs      s                * * * * * * 0 0 0 0 0 0 - - - - - - 6 6 6 6 6 6^ ^ ^ ^ ^T ^ ^ ^ ^ ^r    