
    Ngv                         d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	m
Z
mZmZ dZ G d de          Z G d d	e          Z G d
 de          Z[dS )    N)IntervalSet)Token)ATNState)RecognitionExceptionNoViableAltExceptionInputMismatchExceptionFailedPredicateExceptionParseCancellationExceptionc                   ^    e Zd ZdefdZdefdZdedefdZdefdZdefdZ	dedefdZ
d	S )
ErrorStrategy
recognizerc                     d S N selfr   s     V/var/www/html/ai-engine/env/lib/python3.11/site-packages/antlr4/error/ErrorStrategy.pyresetzErrorStrategy.reset           c                     d S r   r   r   s     r   recoverInlinezErrorStrategy.recoverInline   r   r   ec                     d S r   r   r   r   r   s      r   recoverzErrorStrategy.recover   r   r   c                     d S r   r   r   s     r   synczErrorStrategy.sync   r   r   c                     d S r   r   r   s     r   inErrorRecoveryModez!ErrorStrategy.inErrorRecoveryMode   r   r   c                     d S r   r   r   s      r   reportErrorzErrorStrategy.reportError"   r   r   N)__name__
__module____qualname__Parserr   r   r   r   r   r    r"   r   r   r   r   r      s        v    v     +?    f    V    V /C      r   r   c                   4    e Zd Z fdZdefdZ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defdZdedefdZd ZdefdZdefdZdefdZdefdZdefdZdefdZ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  xZ!S )DefaultErrorStrategyc                     t                                                       d| _        d| _        d | _        d | _        d| _        d S )NFr   )super__init__errorRecoveryModelastErrorIndexlastErrorStatesnextTokensContextnextTokenState)r   	__class__s    r   r,   zDefaultErrorStrategy.__init__+   sK     "' !#!%r   r   c                 0    |                      |           d S r   endErrorConditionr   s     r   r   zDefaultErrorStrategy.resetB       z*****r   c                     d| _         d S )NTr-   r   s     r   beginErrorConditionz(DefaultErrorStrategy.beginErrorConditionK   s    !%r   c                     | j         S r   r8   r   s     r   r    z(DefaultErrorStrategy.inErrorRecoveryModeN   s    %%r   c                 0    d| _         d | _        d| _        d S )NFr*   )r-   r/   r.   r   s     r   r5   z&DefaultErrorStrategy.endErrorConditionW   s     !&# r   c                 0    |                      |           d S r   r4   r   s     r   reportMatchz DefaultErrorStrategy.reportMatcha   r6   r   r   c                    |                      |          rd S |                     |           t          |t                    r|                     ||           d S t          |t
                    r|                     ||           d S t          |t                    r|                     ||           d S t          dt          |          j        z              |                    |j        |j        |           d S )Nz unknown recognition error type: )r    r9   
isinstancer   reportNoViableAlternativer   reportInputMismatchr	   reportFailedPredicateprinttyper#   notifyErrorListenersmessageoffendingTokenr   s      r   r"   z DefaultErrorStrategy.reportErrorw   s    ##J// 	F  ,,,q.00 	L**:q99999244 	L$$Z33333466 	L&&z1555554tAww7GGHHH++AIq7GKKKKKr   c                 n   | j         |                                j        k    r)| j        "|j        | j        v r|                                 |j        j        | _         | j        g | _        | j                            |j                   |                     |          }| 	                    ||           d S r   )
r.   getInputStreamindexr/   stateconsume_inputappendgetErrorRecoverySetconsumeUntil)r   r   r   	followSets       r   r   zDefaultErrorStrategy.recover   s    
 9 9 ; ; AAA$0 D$888
    (/5'#%D ##J$4555,,Z88	*i00000r   c                 N   |                      |          rd S |j        j        j        |j                 }|                                                    d          }|j                            |          }||v rd | _        t          j
        | _        d S t          j        |v r!| j        |j        | _        |j        | _        d S |j        t          j        t          j        t          j        t          j        fv r&|                     |          d S t/          |          |j        t          j        t          j        fv ri|                     |           |                                }|                    |                     |                    }|                     ||           d S d S N   )r    _interpatnstatesrK   getTokenStreamLA
nextTokensr0   r   INVALID_STATE_NUMBERr1   r   EPSILON_ctx_stateNumbernextTokensState	stateTypeBLOCK_STARTSTAR_BLOCK_STARTPLUS_BLOCK_STARTSTAR_LOOP_ENTRYsingleTokenDeletionr   PLUS_LOOP_BACKSTAR_LOOP_BACKreportUnwantedTokengetExpectedTokensaddSetrO   rP   )r   r   slarZ   	expectingwhatFollowsLoopIterationOrRules          r   r   zDefaultErrorStrategy.sync   s   ##J// 	F")**:;&&((++A..^..q11
%)D""*"?DF]j((%- *4&'1'>$F;8/1J ( 98;SU U U ''
33>,Z888[X4h6MNNN$$Z000"4466I-6-=-=d>V>VWa>b>b-c-c*j*HIIIII 4r   c                    |                                 }|>|j        j        t          j        k    rd}n#|                    |j        |j                  }nd}d|                     |          z   }|                    ||j        |           d S )N<EOF>z<unknown input>zno viable alternative at input )	rX   
startTokenrD   r   EOFgetTextrG   escapeWSAndQuoterE   )r   r   r   tokensinputmsgs         r   r@   z.DefaultErrorStrategy.reportNoViableAlternative   s    **,,| %)++q|Q5EFF%E/$2G2G2N2NN''Q-=qAAAAAr   c                     d|                      |j                  z   dz   |                                                    |j        |j                  z   }|                    ||j        |           d S )Nzmismatched input  expecting )getTokenErrorDisplayrG   ri   toStringliteralNamessymbolicNamesrE   )r   r   r   rw   s       r   rA   z(DefaultErrorStrategy.reportInputMismatch  sr    !D$=$=a>N$O$OO ! 3 3 5 5 > >z?VXbXp q qr''Q-=qAAAAAr   c                     |j         |j                                                 }d|z   dz   |j        z   }|                    ||j        |           d S )Nzrule  )	ruleNamesr]   getRuleIndexrF   rE   rG   )r   r   r   ruleNamerw   s        r   rB   z*DefaultErrorStrategy.reportFailedPredicate  sT    '
(D(D(F(FG 3&2''Q-=qAAAAAr   c                 Z   |                      |          rd S |                     |           |                                }|                     |          }|                     |          }d|z   dz   |                    |j        |j                  z   }|                    ||d            d S )Nzextraneous input ry   )	r    r9   getCurrentTokenrz   ri   r{   r|   r}   rE   )r   r   t	tokenNamerm   rw   s         r   rh   z(DefaultErrorStrategy.reportUnwantedToken4  s    ##J// 	F  ,,,&&((--a00	**:66	!I-=  !8*:RSST''Q55555r   c                 V   |                      |          rd S |                     |           |                                }|                     |          }d|                    |j        |j                  z   dz   |                     |          z   }|                    ||d            d S )Nzmissing z at )	r    r9   r   ri   r{   r|   r}   rz   rE   )r   r   r   rm   rw   s        r   reportMissingTokenz'DefaultErrorStrategy.reportMissingTokenP  s    ##J// 	F  ,,,&&((**:66	9--j.EzG_```221556''Q55555r   c                     |                      |          }||                                 |S |                     |          r|                     |          S t	          |          r   )re   rL   singleTokenInsertiongetMissingSymbolr   )r   r   matchedSymbols      r   r   z"DefaultErrorStrategy.recoverInline  sq    00<<$       $$Z00 	5((444 %Z000r   c                     |                                                     d          }|j        j        }|j        |j                 }|j        d         j        }|                    ||j	                  }||v r| 
                    |           dS dS )NrT   r   TF)rX   rY   rU   rV   rW   rK   transitionstargetrZ   r]   r   )r   r   currentSymbolTyperV   currentStatenextexpectingAtLL2s          r   r   z)DefaultErrorStrategy.singleTokenInsertion  s    &5577::1==  $z*"23'*1jo>>..##J///45r   c                 .   |                                                     d          }|                     |          }||v rT|                     |           |                                 |                                }|                     |           |S d S )N   )rX   rY   ri   rh   rL   r   r=   )r   r   nextTokenTyperm   r   s        r   re   z(DefaultErrorStrategy.singleTokenDeletion  s    "113366q99**:66	I%%$$Z000
    &6688MZ(((  4r   c           
      b   |                                 }|                     |          }|d         }|t          j        k    rd}ncd }|t	          |j                  k     r|j        |         }|%|t	          |j                  k     r|j        |         }dt          |          z   dz   }|}|                                	                    d          }|j
        t          j        k    r||}|                                                    |j        ||t          j        dd|j        |j                  S )Nr   z<missing EOF>z	<missing >r*   )r   ri   r   rr   lenr|   r}   strrX   LTrD   getTokenFactorycreatesourceDEFAULT_CHANNELlinecolumn)	r   r   currentSymbolrm   expectedTokenType	tokenTextnamecurrentlookbacks	            r   r   z%DefaultErrorStrategy.getMissingSymbol  s'   "2244**:66	%aLei'''IID 3z'>#?#???!./@A| 1C
8P4Q4Q Q Q!/0AB#c$ii/#5I,,..11"55<""x';G))++227>y%*?GL'.2 2 	2r   c                 *    |                                 S r   )ri   r   s     r   ri   z&DefaultErrorStrategy.getExpectedTokens  s    ++---r   r   c                     |dS |j         }|2|j        t          j        k    rd}ndt	          |j                  z   dz   }|                     |          S )Nz
<no token>rp   <r   )textrD   r   rr   r   rt   )r   r   rk   s      r   rz   z)DefaultErrorStrategy.getTokenErrorDisplay  sY    9<F9vuy  #af++%+$$Q'''r   rk   c                     |                     dd          }|                     dd          }|                     dd          }d|z   dz   S )N
z\nz\r	z\t')replace)r   rk   s     r   rt   z%DefaultErrorStrategy.escapeWSAndQuote  sI    IId5!!IId5!!IId5!!Qw}r   c                 d   |j         j        }|j        }t                      }|m|j        dk    rb|j        |j                 }|j        d         }|                    |j                  }|	                    |           |j
        }||j        dk    b|                    t          j                   |S )Nr   )rU   rV   r]   r   invokingStaterW   r   rZ   followStaterj   	parentCtx	removeOner   r\   )r   r   rV   ctx
recoverSetr   rtfollows           r   rO   z(DefaultErrorStrategy.getErrorRecoverySet|  s     $o ]]
o#"3Q"6"6Js'89M*1-B^^BN33Ff%%%-C o#"3Q"6"6 	U]+++r   set_c                 &   |                                                     d          }|t          j        k    rU||vrU|                                 |                                                     d          }|t          j        k    r||vOd S d S d S d S rS   )rX   rY   r   rr   rL   )r   r   r   ttypes       r   rP   z!DefaultErrorStrategy.consumeUntil  s    ))++..q11uy  $   --//22155E uy  $    r   )"r#   r$   r%   r,   r&   r   r9   r    r5   r=   r   r"   r   r   r   r@   r   rA   rB   rh   r   r   r   re   r   ri   r   rz   r   rt   rO   setrP   __classcell__)r2   s   @r   r(   r(   )   s                .+v + + + +&V & & & &&V & & & &!6 ! ! ! !+V + + + +,LV L/C L L L L.1 1+? 1 1 1 1|%f % % % %^
B6 
B=Q 
B 
B 
B 
B*BV B7M B B B BB B B,
6V 
6 
6 
6 
686F 6 6 6 6r1v 1 1 1 1Bf    BV    H2& 2 2 2 2*.6 . . . .	(U 	( 	( 	( 	(    DV    6f 63 6 6 6 6 6 6 6 6r   r(   c                   6    e Zd ZdedefdZdefdZdefdZdS )BailErrorStrategyr   r   c                 R    |j         }|||_        |j        }|t          |          r   )r]   	exceptionr   r
   )r   r   r   contexts       r   r   zBailErrorStrategy.recover  s7    /! !G'G ! )+++r   c                 L    |                      |t          |                     d S r   )r   r   r   s     r   r   zBailErrorStrategy.recoverInline  s%    Z!7
!C!CDDDDDr   c                     d S r   r   r   s     r   r   zBailErrorStrategy.sync  r   r   N)r#   r$   r%   r&   r   r   r   r   r   r   r   r   r     sr        , ,+? , , , ,Ev E E E Ef      r   r   )sysantlr4.IntervalSetr   antlr4.Tokenr   antlr4.atn.ATNStater   antlr4.error.Errorsr   r   r   r	   r
   r&   objectr   r(   r   r   r   r   <module>r      s$   


 * * * * * *       ( ( ( ( ( (9 9 9 9 9 9 9 9 9 9 9 9 9 9 
    F   0f	6 f	6 f	6 f	6 f	6= f	6 f	6 f	6J    ,   . FFr   