
    ^h`                        S SK JrJr  S SKrS SKJrJrJrJrJ	r	J
r
JrJrJrJrJrJr  S SKJr  S SKr S SKr\(       a  SSKJr  SSKJr  SSKJrJrJrJrJrJ r   SS	K!J"r"J#r#J$r$  SS
K%J&r&  S SK'J(r(  S SK)J)r)   \*" \5      r+ " S S\\5      r- " S S\-5      r. " S S\-5      r/ " S S\5      r0\" SSS9r1 " S S\25      r3 " S S5      r4 " S S5      r5 " S S5      r6S  r7S! r8 " S" S#5      r9S$\24S% jr: " S& S'5      r; " S( S)5      r<\
\3/\34   r= " S* S+\5      r>S4S,\\0\24   4S- jjr? " S. S/\>5      r@ " S0 S1\@5      rA " S2 S3\>5      rBg! \ a     GNf = f! \, a    Sr+ Nf = f)5    )abstractmethodABCN)TypeVarTypeDictIterator
CollectionCallableOptional	FrozenSetAnyClassVarTYPE_CHECKINGoverload)
ModuleType   )	LexerConf)ParserState)classifyget_regexp_width	Serializelogger	TextSliceTextOrSlice)UnexpectedCharactersLexErrorUnexpectedToken)TOKEN_DEFAULT_PRIORITY)suppress)copyFc            	           \ rS rSr% Sr\\S'   \\   \S'   \\   \S'   \	\   \S'   SS\S\\   S\\   SS4S	 jjr
S
 rS rS r\S\4S j5       r\\S\4S j5       5       r\\S\4S j5       5       rS rSrg)Pattern!   z(An abstraction over regular expressions.valueflagsrawtypeNreturnc                 <    Xl         [        U5      U l        X0l        g N)r$   	frozensetr%   r&   )selfr$   r%   r&   s       D/home/james-whalen/.local/lib/python3.13/site-packages/lark/lexer.py__init__Pattern.__init__)   s    
u%
    c                 4    [        U R                  5       5      $ r*   )repr	to_regexpr,   s    r-   __repr__Pattern.__repr__.   s    DNN$%%r0   c                 X    [        [        U 5      U R                  U R                  45      $ r*   )hashr'   r$   r%   r4   s    r-   __hash__Pattern.__hash__2   s     T$ZTZZ899r0   c                     [        U 5      [        U5      :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r*   )r'   r$   r%   r,   others     r-   __eq__Pattern.__eq__5   s<    DzT%[(dTZZ5;;-Fd4::Y^YdYdKddr0   c                     [        5       er*   NotImplementedErrorr4   s    r-   r3   Pattern.to_regexp8   s    !##r0   c                     [        5       er*   rA   r4   s    r-   	min_widthPattern.min_width<        "##r0   c                     [        5       er*   rA   r4   s    r-   	max_widthPattern.max_widthA   rG   r0   c                 B    U R                    H  nSU< SU< S3nM     U$ )Nz(?:))r%   )r,   r$   fs      r-   
_get_flagsPattern._get_flagsF   s    A#$e,E r0   )r%   r&   r$   ) N)__name__
__module____qualname____firstlineno____doc__str__annotations__r	   r   r   r.   r5   r9   r>   r   r3   propertyintrE   rI   rO   __static_attributes__rQ   r0   r-   r"   r"   !   s    .Jc?	#
3-c *S/ Xc] ^b 
&:e $3 $ $ $3 $  $ $3 $  $r0   r"   c                   l    \ rS rSr% SrSr\\   \S'   S\4S jr	\
S\4S j5       r\
S\4S j5       rS	rg
)
PatternStrL   )r$   r%   r&   rW   r'   r(   c                 `    U R                  [        R                  " U R                  5      5      $ r*   )rO   reescaper$   r4   s    r-   r3   PatternStr.to_regexpQ   s    ryy455r0   c                 ,    [        U R                  5      $ r*   lenr$   r4   s    r-   rE   PatternStr.min_widthT       4::r0   c                 ,    [        U R                  5      $ r*   rd   r4   s    r-   rI   PatternStr.max_widthX   rg   r0   rQ   N)rR   rS   rT   rU   __serialize_fields__r'   r   rW   rX   r3   rY   rZ   rE   rI   r[   rQ   r0   r-   r]   r]   L   sX    2D(3-63 6 3   3  r0   r]   c                   v    \ rS rSr% SrSr\\   \S'   S\4S jr	Sr
S r\S\4S	 j5       r\S\4S
 j5       rSrg)	PatternRE]   )r$   r%   r&   _widthr`   r'   r(   c                 8    U R                  U R                  5      $ r*   )rO   r$   r4   s    r-   r3   PatternRE.to_regexpb   s    tzz**r0   Nc                 p    U R                   c  [        U R                  5       5      U l         U R                   $ r*   )rn   r   r3   r4   s    r-   
_get_widthPatternRE._get_widthf   s)    ;;*4>>+;<DK{{r0   c                 (    U R                  5       S   $ Nr   rr   r4   s    r-   rE   PatternRE.min_widthk        ##r0   c                 (    U R                  5       S   $ )Nr   rv   r4   s    r-   rI   PatternRE.max_widtho   rx   r0   )rn   )rR   rS   rT   rU   rj   r'   r   rW   rX   r3   rn   rr   rY   rZ   rE   rI   r[   rQ   r0   r-   rl   rl   ]   sd    <D(3-+3 + F
 $3 $ $ $3 $ $r0   rl   c            	       x    \ rS rSr% SrSr\\4r\	\
S'   \\
S'   \\
S'   \4S\	S\S\SS4S	 jjrS
 rS\	4S jrSrg)TerminalDeft   zA definition of a terminal)namepatternpriorityr~   r   r   r(   Nc                 `    [        U[        5      (       d   U5       eXl        X l        X0l        g r*   )
isinstancer"   r~   r   r   )r,   r~   r   r   s       r-   r.   TerminalDef.__init__}   s)    '7++4W4+	 r0   c                 l    [        U 5      R                  < SU R                  < SU R                  < S3$ )N(, rM   )r'   rR   r~   r   r4   s    r-   r5   TerminalDef.__repr__   s!    #Dz22DIIt||LLr0   c                     U R                   R                  S5      (       a)  U R                  R                  =(       d    U R                   $ U R                   $ )N__)r~   
startswithr   r&   r4   s    r-   	user_reprTerminalDef.user_repr   s:    99%%<<##0tyy099r0   )rR   rS   rT   rU   rV   rj   r]   rl   __serialize_namespace__rW   rX   r"   rZ   r   r.   r5   r   r[   rQ   r0   r-   r|   r|   t   s]     8()3
IMDZ !S !7 !c !_c !M3 r0   r|   _TToken)boundc                     ^  \ rS rSr% SrSrSr\\S'   \	\
   \S'   \\S'   \	\
   \S'   \	\
   \S	'   \	\
   \S
'   \	\
   \S'   \	\
   \S'   \      SS\S\S\	\
   S\	\
   S	\	\
   S
\	\
   S\	\
   S\	\
   SS 4S jj5       r\      SS\S\S\	\
   S\	\
   S	\	\
   S
\	\
   S\	\
   S\	\
   SS 4S jj5       rS r\SU 4S jj5       r\S S\	\   S\	\   SS 4S jj5       r\S S\	\   S\	\   SS 4S jj5       rS rS S\	\   S\	\   SS 4S jjr\S\\   S\S\SS S\4
S j5       rS rS rS rS r\R2                  rSrU =r$ )!r      a  A string with meta-information, that is produced by the lexer.

When parsing text, the resulting chunks of the input that haven't been discarded,
will end up in the tree as Token instances. The Token class inherits from Python's ``str``,
so normal string comparisons and operations will work as expected.

Attributes:
    type: Name of the token (as specified in grammar)
    value: Value of the token (redundant, as ``token.value == token`` will always be true)
    start_pos: The index of the token in the text
    line: The line of the token in the text (starting with 1)
    column: The column of the token in the text (starting with 1)
    end_line: The line where the token ends
    end_column: The next column after the end of the token. For example,
        if the token is a single character with a column value of 4,
        end_column will be 5.
    end_pos: the index where the token ends (basically ``start_pos + len(token)``)
)r'   	start_posr$   linecolumnend_line
end_columnend_posr'   r$   r'   r   r$   r   r   r   r   r   r(   c	                     g r*   rQ   )	clsr'   r$   r   r   r   r   r   r   s	            r-   __new__Token.__new__   s     	r0   type_c	                     g r*   rQ   )	r   r   r$   r   r   r   r   r   r   s	            r-   r   r      s     r0   c                     SU;   a@  [         R                  " S[        5        SU;   a  [        S5      eUR	                  S5      US'   U R
                  " U0 UD6$ Nr   z(`type_` is deprecated use `type` insteadr'   zAError: using both 'type' and the deprecated 'type_' as arguments.)warningswarnDeprecationWarning	TypeErrorpop_future_new)r   argskwargss      r-   r   r      sT    fMMDFXY cdd#ZZ0F6N///r0   c	                    > [         [        U ]  X5      n	Xl        X9l        X)l        XIl        XYl        Xil        Xyl	        Xl
        U	$ r*   )superr   r   r'   r   r$   r   r   r   r   r   )r   r'   r$   r   r   r   r   r   r   inst	__class__s             r-   r   Token._future_new   sA    UC(4	"
	 $r0   c                     g r*   rQ   r,   r'   r$   s      r-   updateToken.update       r0   c                     g r*   rQ   )r,   r   r$   s      r-   r   r      r   r0   c                     SU;   a@  [         R                  " S[        5        SU;   a  [        S5      eUR	                  S5      US'   U R
                  " U0 UD6$ r   )r   r   r   r   r   _future_update)r,   r   r   s      r-   r   r      sV    fMMDFXY cdd#ZZ0F6N""D3F33r0   c                 v    [         R                  Ub  UOU R                  Ub  UU 5      $ U R                  U 5      $ r*   )r   new_borrow_posr'   r$   r   s      r-   r   Token._future_update   sB    ##$D$))&E
 	
,0JJ
 	
r0   r   borrow_tc           
          U " XUR                   UR                  UR                  UR                  UR                  UR
                  5      $ r*   )r   r   r   r   r   r   )r   r   r$   r   s       r-   r   Token.new_borrow_pos   sN    5!3!3X]]HOOU]UfUfhph{h{  ~F  ~N  ~N  O  	Or0   c                     U R                   U R                  U R                  U R                  U R                  U R
                  44$ r*   )r   r'   r$   r   r   r   r4   s    r-   
__reduce__Token.__reduce__   s3    DJJ		SWS^S^ _``r0   c                 @    SU R                   < SU R                  < S3$ )NzToken(r   rM   r   r4   s    r-   r5   Token.__repr__  s    "&))TZZ88r0   c                     [        U R                  U R                  U R                  U R                  U R
                  5      $ r*   )r   r'   r$   r   r   r   )r,   memos     r-   __deepcopy__Token.__deepcopy__  s)    TYY

DNNDIIt{{SSr0   c                     [        U[        5      (       a  U R                  UR                  :w  a  g[        R	                  X5      $ )NF)r   r   r'   rW   r>   r<   s     r-   r>   Token.__eq__	  s0    eU##		UZZ(?zz$&&r0   rQ   )NNNNNNNN)rR   rS   rT   rU   rV   	__slots____match_args__rW   rX   r   rZ   r   r   r   classmethodr   r   r   r   r   r   r   r5   r   r>   r9   r[   __classcell__)r   s   @r-   r   r      s   $ fI&N
I}J
3-SMsmc] 
 (,"&$(&*(,%)   }	
 3- SM sm ! c] 
  
 (,"&$(&*(,%)

 
  }	

 3-
 SM
 sm
 !
 c]
 

 
0   8C=  QX   HSM # RY  4
8C= 
 
Y` 
 ODH OS O O OTV O Oa9T' ||Hr0   c                   :    \ rS rSrSrSrS rS rS
S\4S jjr	Sr
g	)LineCounteri  z>A utility class for keeping track of line & column information)char_posr   r   line_start_posnewline_charc                 H    Xl         SU l        SU l        SU l        SU l        g )Nr   r   )r   r   r   r   r   )r,   r   s     r-   r.   LineCounter.__init__  s%    (	r0   c                     [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r*   )r   r   NotImplementedr   r   r<   s     r-   r>   LineCounter.__eq__  s>    %--!!}}.Z43D3DHZHZ3ZZr0   tokenc                 ^   U(       ag  UR                  U R                  5      nU(       aE  U =R                  U-  sl        U R                  UR	                  U R                  5      -   S-   U l        U =R                  [        U5      -  sl        U R                  U R
                  -
  S-   U l        g)zConsume a token and calculate the new line & column.

As an optional optimization, set test_newline=False if token doesn't contain a newline.
r   N)countr   r   r   rindexr   re   r   )r,   r   test_newlinenewliness       r-   feedLineCounter.feed$  s    
 {{4#4#45H		X%	&*mmell4CTCT6U&UXY&Y#U#mmd&9&99A=r0   )r   r   r   r   r   N)T)rR   rS   rT   rU   rV   r   r.   r>   r   r   r[   rQ   r0   r-   r   r     s&    DNI [>+ > >r0   r   c                   ,    \ rS rSrSS jrS\4S jrSrg)UnlessCallbacki3  c                     Xl         g r*   scanner)r,   r   s     r-   r.   UnlessCallback.__init__4  s    r0   tc                 b    U R                   R                  UR                  5      nUb  X!l        U$ r*   )r   	fullmatchr$   r'   )r,   r   ress      r-   __call__UnlessCallback.__call__7  s)    ll$$QWW-?Fr0   r   N)r   Scanner)rR   rS   rT   rU   r.   r   r   r[   rQ   r0   r-   r   r   3  s    % r0   r   c                        \ rS rSrS rS rSrg)	CallChaini>  c                 (    Xl         X l        X0l        g r*   	callback1	callback2cond)r,   r   r   r   s       r-   r.   CallChain.__init__?  s    ""	r0   c                 v    U R                  U5      nU R                  U5      (       a  U R                  U5      $ U$ r*   )r   r   r   )r,   r   t2s      r-   r   CallChain.__call__D  s0    ^^A$(IIbMMt~~a 9r9r0   r   N)rR   rS   rT   rU   r.   r   r[   rQ   r0   r-   r   r   >  s    
:r0   r   c                 X    U R                  XU5      nU(       a  UR                  S5      $ g ru   )matchgroup)re_regexpsr%   ms        r-   
_get_matchr   I  s(    		&U#Awwqz 	r0   c           
         [        U S 5      n[        U5      S::  d   UR                  5       5       e[        5       n0 nUR	                  [
        / 5       H  n/ nUR	                  [        / 5       H  n	U	R                  UR                  :w  a  M  U	R                  R                  n
U
[        X'R                  R                  5       X5      :X  d  M_  UR                  U	5        U	R                  R                  UR                  R                  ::  d  M  UR                  U	5        M     U(       d  M  [        [!        XX#S95      XgR"                  '   M     U  Vs/ s H  oU;  d  M
  UPM     nnX4$ s  snf )Nc                 ,    [        U R                  5      $ r*   )r'   r   r   s    r-   <lambda> _create_unless.<locals>.<lambda>O  s    4		?r0      )	use_bytes)r   re   keyssetgetrl   r]   r   r   r$   r   r3   appendr%   addr   r   r~   )	terminalsg_regex_flagsr   r  tokens_by_typeembedded_strscallbackretokunlessstrtokr   r   new_terminalss                r-   _create_unlessr  N  s-   i)BCN~!#:^%8%8%::#EMH##Ir2$((R8F%..0$$AJsMM$;$;$=qPPf%>>''5==+>+>>!%%f- 9 6#1'&QT2j#kHZZ  3 !*D	1m-CQ	MD"" Es   	E,!E,c                   F    \ rS rSrS rS rS\4S jrS\S\	\   4S jr
Srg	)
r   id  c                     Xl         X l        X0l        X@l        U R                    Vs1 s H  oUR                  iM     snU l        U R                  U[        U5      5      U l        g s  snf r*   )	r  r  r   r  r~   allowed_types_build_mresre   _mres)r,   r  r  r   r  r   s         r-   r.   Scanner.__init__e  sQ    "*".2nn=nffn=%%iY@
 >s   A%c                 b   / nU(       a  SR                  S US U  5       5      nU R                  (       a  UR                  S5      n U R                  R	                  X@R
                  5      nUR                  U5        XS  nU(       a  M  U$ ! [         a    U R                  XS-  5      s $ f = f)N|c              3   |   #    U  H2  nS UR                   < SUR                  R                  5       < S3v   M4     g7f)z(?P<>rM   N)r~   r   r3   .0r   s     r-   	<genexpr>&Scanner._build_mres.<locals>.<genexpr>u  s)     nYmTU9L9L9N OYms   :<zlatin-1r  )	joinr  encoder   compiler  AssertionErrorr  r	  )r,   r  max_sizemresr   mres         r-   r  Scanner._build_mreso  s     iinYbcldlYmnnG~~!..3Bhh&&w0B0BC KK!),I i  " B''	q=AABs   %B B.-B.textc                     U R                    HO  nUR                  UR                  X!R                  5      nU(       d  M2  UR	                  S5      UR
                  4s  $    g ru   )r  r   r+  endr   	lastgroup)r,   r+  posr)  r   s        r-   r   Scanner.match  sD    ::C		$))S((3Aqwwqz1;;.. r0   r(   c                 v    U R                    H)  nUR                  U5      nU(       d  M  UR                  s  $    g r*   )r  r   r.  )r,   r+  r)  r   s       r-   r   Scanner.fullmatch  s2    ::Cd#Aq{{"  r0   )r  r  r  r   r  r  N)rR   rS   rT   rU   r.   r  r   r   rW   r   r   r[   rQ   r0   r-   r   r   d  s0    A$/) /c hsm r0   r   rc                     SU ;   =(       d5    SU ;   =(       d)    SU ;   =(       d    SU ;   =(       d    SU ;   =(       a    SU ;   $ )zExpressions that may indicate newlines in a regexp:
- newlines (\n)
- escaped newline (\\n)
- anything but ([^...])
- any-char (.) when the flag (?s) exists
- spaces (\s)

z\nz\sz[^z(?s.rQ   )r3  s    r-   _regexp_has_newliner7    s>     19Z
ZeqjZDAIZ%1*BYQTXYQYZr0   c                   t    \ rS rSr% SrSr\\S'   \\S'   \	\
   \S'   SS\S\	\   S\	\
   4S jjrS	 rS
 rSrg)
LexerStatei  zRepresents the current state of the lexer as it scans the text
(Lexer objects are only instantiated per grammar, not per text)
)r+  line_ctr
last_tokenr+  r:  r;  Nc                 v   Ucl  [        [        UR                  [        5      (       a  SOS5      nUR                  S:  a0  UR                  [        UR                  SUR                  5      5        UR                  UR                  s=::  a  UR                  ::  d  O  [        S5      eXl        X l
        X0l        g )N   
r5  r   z%LineCounter.char_pos is out of bounds)r   r   r+  bytesstartr   r   r   r-  
ValueErrorr:  r;  )r,   r+  r:  r;  s       r-   r.   LexerState.__init__  s    "Jtyy%,H,H5dSHzzA~i		1djjAB

h//;488;DEE	 $r0   c                     [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  $ r*   )r   r9  r   r+  r:  r;  r<   s     r-   r>   LexerState.__eq__  sO    %,,!!yyEJJ&r4==ENN+JrtbgbrbrOrrr0   c                 v    [        U 5      " U R                  [        U R                  5      U R                  5      $ r*   )r'   r+  r    r:  r;  r4   s    r-   __copy__LexerState.__copy__  s&    Dz$))T$--%8$//JJr0   )r;  r:  r+  r   )rR   rS   rT   rU   rV   r   r   rX   r   r   r   r.   r>   rE  r[   rQ   r0   r-   r9  r9    sU     1I
O%Y %(;2G %\dej\k % sKr0   r9  c                   `    \ rS rSrSrSSS\\   4S jr\SSS\	SS 4S	 j5       r
S
 rS r\rSrg)LexerThreadi  zTA thread that ties a lexer instance and a lexer state, to be used by the parser
    lexerLexerlexer_statec                     Xl         X l        g r*   rI  state)r,   rI  rK  s      r-   r.   LexerThread.__init__  s    
 
r0   text_or_slicer(   c                 R    [         R                  " U5      nU " U[        U5      5      $ r*   )r   	cast_fromr9  )r   rI  rP  r+  s       r-   	from_textLexerThread.from_text  s$    ""=15*T*++r0   c                 ~    U R                   c  [        S5      eU R                  R                  U R                   U5      $ )Nz+Cannot lex: No text assigned to lexer state)rN  r   rI  lex)r,   parser_states     r-   rV  LexerThread.lex  s1    ::IJJzz~~djj,77r0   c                 `    [        U 5      " U R                  [        U R                  5      5      $ r*   )r'   rI  r    rN  r4   s    r-   rE  LexerThread.__copy__  s     Dz$**d4::&677r0   rM  N)rR   rS   rT   rU   rV   r   r9  r.   r   r   rS  rV  rE  r   _Tokenr[   rQ   r0   r-   rH  rH    sY    !g !HZ4H ! ,g ,k ,m , ,8
8 Fr0   rH  c                   L    \ rS rSrSr\S\S\S\\	   4S j5       r
S\4S jrS	rg
)rJ  i  z`Lexer interface

Method Signatures:
    lex(self, lexer_state, parser_state) -> Iterator[Token]
rK  rW  r(   c                     [         $ r*   )r   )r,   rK  rW  s      r-   rV  	Lexer.lex  s    r0   r+  c                 @    [        [        R                  " U5      5      $ )
Deprecated)r9  r   rR  )r,   r+  s     r-   make_lexer_stateLexer.make_lexer_state  s    )--d344r0   rQ   N)rR   rS   rT   rU   rV   r   r9  r   r   r   rV  rW   ra  r[   rQ   r0   r-   rJ  rJ    s@    
 z  %  5S 5r0   rJ  terminal_to_regexpc                    U(       d  [         R                  R                  U 5      nU(       a  SOSnUR                  5       U:  a  g [	        U S 5      R                  5        H  nUR                  USS9 H  u  pgUR                  UR                  :X  d   eUR                  Xg5        SUR                   SUR                   S3n UR                  XgU5      R                  5       n	U(       a  [        U S
U	 35      e[        R                  " SX5        UR                  5       U:  d  M  [        R                  " S5            g    M     g ! [         a    S	n	 Nrf = f)Nr  g?c                     U R                   $ r*   )r   r  s    r-   r  )_check_regex_collisions.<locals>.<lambda>  s    

r0   T)skip_markedzCollision between Terminals z and z. zONo example could be found fast enough. However, the collision does still existsr5  z5%s The lexer will choose between them arbitrarily.
%sz2Found 8 regex collisions, will not check for more.)interegular
Comparatorfrom_regexescount_marked_pairsr   valuescheckr   markr~   get_example_overlapformat_multiliner@  r   r   warning)
rc  
comparatorstrict_modemax_collisions_to_showmax_timer   abmessageexamples
             r-   _check_regex_collisionsrz    s=    ++889KL
  qSH $$&*@@,.BCJJL$$U$=DA::+++OOA! 5QVVHE!&&LGl$88xHYY[ '"WI677NNSU\f,,.2HHST# > M  lkls    E		EEc                       \ rS rSr% \\\4   \S'   \SSS jj5       r	\SS\
S\S\4S jj5       rS	\
S\S\\   4S
 jrSrg)AbstractBasicLexeri  terminals_by_nameNr(   c                     g r*   rQ   )r,   confrr  s      r-   r.   AbstractBasicLexer.__init__  r   r0   	lex_staterW  c                     g r*   rQ   )r,   r  rW  s      r-   
next_tokenAbstractBasicLexer.next_token  r   r0   rN  c              #   x   #    [        [        5          U R                  X5      v   M  ! , (       d  f       g = f7fr*   )r   EOFErrorr  )r,   rN  rW  s      r-   rV  AbstractBasicLexer.lex  s,     hooe::   s   :)
7:rQ   r*   r  r   r(   N)rR   rS   rT   rU   r   rW   r|   rX   r   r.   r9  r   r   r  r   rV  r[   rQ   r0   r-   r|  r|    sk    C,--  J c U  ; ;3 ;8E? ;r0   r|  c                       \ rS rSr% \\   \S'   \\   \S'   \\   \S'   \	\\
4   \S'   \	\\
4   \S'   \\S'   SSS
 jjrS	\4S jr\S	\4S j5       rS rSS\S\S	\4S jjrSrg)
BasicLexeri  r  ignore_typesnewline_typesuser_callbacksr  r`   Nr(   c                 *   [        UR                  5      n[        S U 5       5      (       d   U5       eUR                  U l        UR
                  (       Gd\  0 nU H  nUR                  R                  5       n U R                  R                  XaR                  5        UR                  R                  S:X  a(  [        SUR                  < SUR                  < S35      eUR                  R                  S:X  d  M  XdU'   M     [        UR                   5      U Vs1 s H  oUR                  iM     sn::  d>  [        S[        UR                   5      U Vs1 s H  oUR                  iM     sn-
  -  5      e["        (       a  [%        XBUR&                  5        OUR&                  (       a  [        S	5      e[)        S
 U 5       5      U l        [)        UR                   5      U l        UR/                  S S9  X0l        UR0                  U l        UR                  U l	        UR4                  U l        UR6                  U l        S U l        g ! U R                  R                   a(    [        SUR                  < SUR                  < 35      ef = fs  snf s  snf )Nc              3   B   #    U  H  n[        U[        5      v   M     g 7fr*   )r   r|   r  s     r-   r!  &BasicLexer.__init__.<locals>.<genexpr>#  s     Ay!:a--ys   zCannot compile token z: r   z,Lexer does not allow zero-width terminals. (rM   r`   z$Ignore terminals are not defined: %szUinteregular must be installed for strict mode. Use `pip install 'lark[interegular]'`.c              3      #    U  H;  n[        UR                  R                  5       5      (       d  M-  UR                  v   M=     g 7fr*   )r7  r   r3   r~   r  s     r-   r!  r  ?  s.     &oy!DWXYXaXaXkXkXmDnvqvvys
   ,AAc                     U R                   * U R                  R                  * [        U R                  R                  5      * U R
                  4$ r*   )r   r   rI   re   r$   r~   )xs    r-   r  %BasicLexer.__init__.<locals>.<lambda>B  s7    qzzkAII4G4G3G#aiiooJ^I^`a`f`f%gr0   )key)listr  all	re_moduler`   skip_validationr   r3   r%  r  errorr   r~   rE   r'   r  ignorehas_interegularrz  strictr+   r  r  sort	callbacksr  r  r}  _scanner)r,   r  rr  r  rc  r   r   s          r-   r.   BasicLexer.__init__!  s   (	AyAAAL9LA..###!#,,.XGGOOF,>,>? 99&&!+"\]\b\bdedmdm#noo99>>T),2q)  $(CA(CCET[[IYmv\wmvhi]c]cmv\wIwxyy'(:Tvww '&oy&oo%dkk2gh""nn!//!%!7!7+/7 ww}} X"AFFAII#VWWX )D\ws   9%IJJAJc                   ^ [        U R                  U R                  U R                  U R                  5      u  ol        [        U R
                  R                  5       5      (       d   eU R                  R                  5        HQ  u  mnTU R
                  ;   a-  [        U R
                  T   UU4S j5      U R
                  T'   MC  X R
                  T'   MS     [        XR                  U R                  U R                  5      $ )Nc                 "   > U R                   T:H  $ r*   )r'   )r   r   s    r-   r  +BasicLexer._build_scanner.<locals>.<lambda>R  s    TUTZTZ^cTcr0   )r  r  r  r`   r  r  r  rl  r  itemsr   r   )r,   r  rN   r   s      @r-   _build_scannerBasicLexer._build_scannerK  s    #1$..$BTBTVZV]V]_c_m_m#n 	=4=='')****++113HE1%'0u1EqJc'de$'(e$ 4 y"4"4dggt~~NNr0   c                 ^    U R                   c  U R                  5       U l         U R                   $ r*   )r  r  r4   s    r-   r   BasicLexer.scannerX  s&    ==  //1DM}}r0   c                 8    U R                   R                  X5      $ r*   )r   r   )r,   r+  r/  s      r-   r   BasicLexer.match^  s    ||!!$,,r0   r  rW  c                 v   UR                   nUR                  UR                  R                  :  Ga  U R	                  UR                  UR                  5      nU(       d  U R
                  R                  U R                  -
  nU(       d  S1n[        UR                  R                  UR                  UR                  UR                  XQR                  =(       a    UR                  /X R                  S9eUu  pgXpR                  ;   nS n	U(       a  XpR                  ;   a,  [        XvUR                  UR                  UR                  5      n	UR                  XgU R                   ;   5        U	b  UR                  U	l        UR                  U	l        UR                  U	l        U	R(                  U R                  ;   a  U R                  U	R(                     " U	5      n	U(       d+  [+        U	[        5      (       d  [-        SU	-  5      eXl        U	$ UR                  UR                  R                  :  a  GM  [/        U 5      e)Nz<END-OF-FILE>)allowedtoken_historyrN  r}  z+Callbacks must return a token (returned %r))r:  r   r+  r-  r   r   r  r  r   r   r   r;  r}  r  r   r   r  r   r   r   r'   r   r   r  )
r,   r  rW  r:  r   r  r$   r   ignoredr   s
             r-   r  BasicLexer.next_tokena  s   %%).."4"44**Y^^X->->?C,,44t7H7HH./G*9>>+>+>@Q@QS[S`S`bjbqbq3:J^J^Jydmdxdxcy1=QgQgi i LE000GAe}}4%(9(98==(//ZMM%$*<*<!<=}%]]
'$--	66T]]*aff-a0A%a//&'TWX'XYY+,(H7 ).."4"44< tnr0   )
r  r  r  r  r  r`   r  r}  r  r  r*   r  )rR   rS   rT   rU   r	   r|   rX   r   rW   r   	_Callbackr   r.   r   r  rY   r   r   r9  r   r   r  r[   rQ   r0   r-   r  r    s    +&&C. S>!i((3	>""N(0TO O   
- J  c  U    r0   r  c            	           \ rS rSr% \\\4   \S'   \\S'   \r\	\   \S'   SSSS\\\
\   4   S\
\   S	S
4S jjrS\SSS	\\   4S jrSrg
)ContextualLexeri  lexers
root_lexerr  r  r   statesalways_acceptr(   Nc                 $   [        UR                  5      nUR                  n[        U5      nXFl        [        (       aZ  UR
                  (       dI  [        R                  R                  U Vs0 s H  owUR                  R                  5       _M     sn5      nOS n0 n	0 U l        UR                  5        H#  u  p[        U5      n X   nXR                  U
'   M%     UR                  UL d   eSUl        U R#                  Xh5      U l        g s  snf ! [         aw    [        U5      [        UR                   5      -  [        U5      -  n[        U5      nU Vs/ s H  oU;   d  M
  X_   PM     Os  snf snUl        U R#                  X5      nXU'    Nf = f)NT)r  r  r}  r    r  r  rh  ri  rj  r   r3   r  r  r+   KeyErrorr  r  r  r  )r,   r  r  r  r  r}  	trad_confr   rr  lexer_by_tokensrN  acceptsr  rI  
lexer_confns                   r-   r.   ContextualLexer.__init__  sb   (	 22J	'?4#7#7$//<<`i=j`i[\ATATAV>V`i=jkJJDF$llnNEG$C-', "'KK - ""i///$(	!//)@) >k  -g,T[[)99C<NN!)_
FM'hgVgQg(<(9(<g'h
$
?',$-s+   ,$D	DAF	E*!E*)#FFrK  rW  r   c           	   #   h  #      U R                   UR                     nUR                  X5      v   M.  ! [         a     g [         ag  n UR
                  nU R                  R                  X5      n[        XdR                  X%/U R                  R                  S9e! [         a    Uef = fS nAff = f7f)N)rN  r  r}  )
r  positionr  r  r   r;  r  r   r  r}  )r,   rK  rW  rI  er;  r   s          r-   rV  ContextualLexer.lex  s     	L$9$9:&&{AA   	# 	(33
22;M%eYYlZfz~  {J  {J  {\  {\  ]  ]' 	s7   B2/3 
B/B2	B/	ABB''B**B//B2)r  r  )rQ   )rR   rS   rT   rU   r   rZ   r|  rX   r  r   r	   rW   r.   r9  r   r   rV  r[   rQ   r0   r-   r  r    s    (())""+5J'(5A[ A$sJsO7K2L A]ghk]l Atx A<z  8TY? r0   r  )   )Cabcr   r   r`   typingr   r   r   r   r	   r
   r   r   r   r   r   r   typesr   r   rh  ImportErrorcommonr   parsers.lalr_parser_stater   utilsr   r   r   r   r   r   
exceptionsr   r   r   grammarr   
contextlibr   r    boolr  	NameErrorr"   r]   rl   r|   r   rW   r   r   r   r   r   r  r   r7  r9  rH  r  rJ  rz  r|  r  r  rQ   r0   r-   <module>r     s   $ 	     	 !6 X X G G +   ;'O(i (V "$ $.) 0 T!AC AH> >B : :
#,) )V[3 ["K "KJ 0 eWe^$	5C 5[#5E0F @; ;"h# hV3e 3o  		"  Os#   E 8E EEE#"E#