
    khv                         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[y)    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
y	)
ErrorStrategy
recognizerc                      y N selfr   s     V/var/www/teggl/fontify/venv/lib/python3.12/site-packages/antlr4/error/ErrorStrategy.pyresetzErrorStrategy.reset           c                      y r   r   r   s     r   recoverInlinezErrorStrategy.recoverInline   r   r   ec                      y r   r   r   r   r   s      r   recoverzErrorStrategy.recover   r   r   c                      y r   r   r   s     r   synczErrorStrategy.sync   r   r   c                      y r   r   r   s     r   inErrorRecoveryModez!ErrorStrategy.inErrorRecoveryMode   r   r   c                      y 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      sZ    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                 h    t         |           d| _        d| _        d | _        d | _        d| _        y )NFr   )super__init__errorRecoveryModelastErrorIndexlastErrorStatesnextTokensContextnextTokenState)r   	__class__s    r   r,   zDefaultErrorStrategy.__init__+   s:     "' !#!%r   r   c                 &    | j                  |       y r   endErrorConditionr   s     r   r   zDefaultErrorStrategy.resetB       z*r   c                     d| _         y )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                 .    d| _         d | _        d| _        y )NFr*   )r-   r/   r.   r   s     r   r5   z&DefaultErrorStrategy.endErrorConditionW   s    !&# r   c                 &    | j                  |       y r   r4   r   s     r   reportMatchz DefaultErrorStrategy.reportMatcha   r6   r   r   c                    | j                  |      ry | j                  |       t        |t              r| j	                  ||       y t        |t
              r| j                  ||       y t        |t              r| j                  ||       y t        dt        |      j                  z          |j                  |j                  |j                  |       y )Nz unknown recognition error type: )r    r9   
isinstancer   reportNoViableAlternativer   reportInputMismatchr	   reportFailedPredicateprinttyper#   notifyErrorListenersmessageoffendingTokenr   s      r   r"   z DefaultErrorStrategy.reportErrorw   s     ##J/  ,q.0**:q924$$Z346&&z154tAw7G7GGH++AIIq7G7GKr   c                    | j                   |j                         j                  k(  r4| j                  (|j                  | j                  v r|j                          |j                  j                  | _         | j                  g | _        | j                  j                  |j                         | j                  |      }| j                  ||       y 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5'#%D ##J$4$45,,Z8	*i0r   c                    | j                  |      ry |j                  j                  j                  |j                     }|j                         j                  d      }|j                  j                  |      }||v rd | _        t        j                  | _        y t        j                  |v r/| j                  "|j                  | _        |j                  | _        y |j"                  t        j$                  t        j&                  t        j(                  t        j*                  fv r| j-                  |      y t/        |      |j"                  t        j0                  t        j2                  fv rT| j5                  |       |j7                         }|j9                  | j;                  |            }| j=                  ||       y y 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/""))**:*:;&&(++A.^^..q1
%)D""*"?"?D]]j(%%- *4&'1'>'>$;;8//1J1J ( 9 98;S;SU U ''
3>,Z88[[X44h6M6MNN$$Z0"446I-6-=-=d>V>VWa>b-c*j*HI r   c                 0   |j                         }|Q|j                  j                  t        j                  k(  rd}n)|j                  |j                  |j                        }nd}d| j                  |      z   }|j                  ||j                  |       y )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||Q5E5EF%E/$2G2G2NN''Q-=-=qAr   c                     d| j                  |j                        z   dz   |j                         j                  |j                  |j
                        z   }|j                  ||j                  |       y )Nzmismatched input  expecting )getTokenErrorDisplayrG   ri   toStringliteralNamessymbolicNamesrE   )r   r   r   rw   s       r   rA   z(DefaultErrorStrategy.reportInputMismatch  si    !D$=$=a>N>N$OO ! 3 3 5 > >z?V?VXbXpXp qr''Q-=-=qAr   c                     |j                   |j                  j                            }d|z   dz   |j                  z   }|j	                  ||j
                  |       y )Nzrule  )	ruleNamesr]   getRuleIndexrF   rE   rG   )r   r   r   ruleNamerw   s        r   rB   z*DefaultErrorStrategy.reportFailedPredicate  sO    ''
(D(D(FG 3&2''Q-=-=qAr   c                 2   | j                  |      ry | j                  |       |j                         }| j                  |      }| j	                  |      }d|z   dz   |j                  |j                  |j                        z   }|j                  ||d        y )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/  ,&&(--a0	**:6	!I-=  !8!8*:R:RST''Q5r   c                 .   | j                  |      ry | j                  |       |j                         }| j                  |      }d|j	                  |j
                  |j                        z   dz   | j                  |      z   }|j                  ||d        y )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/  ,&&(**:6	9--j.E.EzG_G_``22156''Q5r   c                     | j                  |      }||j                          |S | j                  |      r| j                  |      S t	        |      r   )re   rL   singleTokenInsertiongetMissingSymbolr   )r   r   matchedSymbols      r   r   z"DefaultErrorStrategy.recoverInline  sZ    00<$     $$Z0((44 %Z00r   c                 6   |j                         j                  d      }|j                  j                  }|j                  |j
                     }|j                  d   j                  }|j                  ||j                        }||v r| j                  |       yy)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::1=   $$zz*"2"23''*11joo>.##J/r   c                     |j                         j                  d      }| j                  |      }||v rD| j                  |       |j	                          |j                         }| j                  |       |S y )N   )rX   rY   ri   rh   rL   r   r=   )r   r   nextTokenTyperm   r   s        r   re   z(DefaultErrorStrategy.singleTokenDeletion  st    "11366q9**:6	I%$$Z0
  &668MZ(  r   c           
      h   |j                         }| j                  |      }|d   }|t        j                  k(  rd}ncd }|t	        |j
                        k  r|j
                  |   }|'|t	        |j                        k  r|j                  |   }dt        |      z   dz   }|}|j                         j                  d      }|j                  t        j                  k(  r||}|j                         j                  |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**:6	%aLeii''ID 3z'>'>#??!../@A| 1C
8P8P4Q Q!//0AB#c$i/#5I,,.11"5<<"x';G))+227>>y%*?*?GLL'..2 	2r   c                 "    |j                         S r   )ri   r   s     r   ri   z&DefaultErrorStrategy.getExpectedTokens  s    ++--r   r   c                     |y|j                   }|;|j                  t        j                  k(  rd}ndt	        |j                        z   dz   }| j                  |      S )Nz
<no token>rp   <r   )textrD   r   rr   r   rt   )r   r   rk   s      r   rz   z)DefaultErrorStrategy.getTokenErrorDisplay  sU    9FF9vvuyy #aff+%+$$Q''r   rk   c                 ~    |j                  dd      }|j                  dd      }|j                  dd      }d|z   dz   S )N
z\nz\r	z\t')replace)r   rk   s     r   rt   z%DefaultErrorStrategy.escapeWSAndQuote  s@    IId5!IId5!IId5!Qw}r   c                    |j                   j                  }|j                  }t               }||j                  dk\  rr|j
                  |j                     }|j                  d   }|j                  |j                        }|j                  |       |j                  }||j                  dk\  rr|j                  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      $$oo ]
o#"3"3Q"6JJs'8'89M**1-B^^BNN3Ff%--C o#"3"3Q"6 	U]]+r   set_c                    |j                         j                  d      }|t        j                  k7  rN||vrI|j	                          |j                         j                  d      }|t        j                  k7  r||vrGy y y y rS   )rX   rY   r   rr   rL   )r   r   r   ttypes       r   rP   z!DefaultErrorStrategy.consumeUntil  sn    ))+..q1uyy $ --/2215E uyy $  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(   )   sA    .+v +&V &&V &!6 !+V +,LV L/C L.1 1+? 1|%f %^
B6 
B=Q 
B*BV B7M BB,
6V 
686F 6r1v 1Bf BV H2& 2*.6 .	(U 	( DV 6f 63 6r   r(   c                   4    e Zd ZdedefdZdefdZdefdZy)BailErrorStrategyr   r   c                 `    |j                   }|||_        |j                  }|t        |      r   )r]   	exceptionr   r
   )r   r   r   contexts       r   r   zBailErrorStrategy.recover  s9    //! !G''G ! )++r   c                 :    | j                  |t        |             y r   )r   r   r   s     r   r   zBailErrorStrategy.recoverInline  s    Z!7
!CDr   c                      y 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     s0    , ,+? ,Ev 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      sQ     *  (9 9 
F 0f	6= f	6J, . r   