
    [                        S SK JrJr  S SKrS SKJ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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%   \&" \5      r' " S S\\5      r) " S S\)5      r* " S S\)5      r+ " S S\5      r,\" SSS9r- " S S\.5      r/ " S S5      r0 " S S5      r1 " S S5      r2S r3S  r4 " S! S"5      r5S#\.4S$ jr6 " S% S&5      r7 " S' S(5      r8\\//\/4   r9 " S) S*\5      r:S1S+\	\,\.4   4S, jjr; " S- S.\:5      r< " S/ S0\:5      r=g! \ a     GNf = f! \( a    Sr' Nf = f)2    )abstractmethodABCN)suppress)TypeVarTypeDictIterator
CollectionCallableOptional	FrozenSetAnyClassVarTYPE_CHECKINGoverload)
ModuleType   )	LexerConf)classifyget_regexp_width	Serializelogger)UnexpectedCharactersLexErrorUnexpectedToken)TOKEN_DEFAULT_PRIORITY)copyFc            	           \ 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    valueflagsrawtypeNreturnc                 <    Xl         [        U5      U l        X0l        g N)r!   	frozensetr"   r#   )selfr!   r"   r#   s       lib/third_party/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$%%r-   c                 X    [        [        U 5      U R                  U R                  45      $ r'   )hashr$   r!   r"   r1   s    r*   __hash__Pattern.__hash__0   s     T$ZTZZ899r-   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__3   s<    DzT%[(dTZZ5;;-Fd4::Y^YdYdKddr-   c                     [        5       er'   NotImplementedErrorr1   s    r*   r0   Pattern.to_regexp6   s    !##r-   c                     [        5       er'   r>   r1   s    r*   	min_widthPattern.min_width:        "##r-   c                     [        5       er'   r>   r1   s    r*   	max_widthPattern.max_width?   rD   r-   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_flagsD   s    A#$e,E r-   )r"   r#   r!   ) N)__name__
__module____qualname____firstlineno__str__annotations__r
   r   r   r+   r2   r6   r;   r   r0   propertyintrB   rF   rL   __static_attributes__rN   r-   r*   r   r       s    Jc?	#
3-c *S/ Xc] ^b 
&:e $3 $ $ $3 $  $ $3 $  $r-   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
)
PatternStrJ   )r!   r"   r#   rS   r$   r%   c                 `    U R                  [        R                  " U R                  5      5      $ r'   )rL   reescaper!   r1   s    r*   r0   PatternStr.to_regexpO   s    ryy455r-   c                 ,    [        U R                  5      $ r'   lenr!   r1   s    r*   rB   PatternStr.min_widthR       4::r-   c                 ,    [        U R                  5      $ r'   r`   r1   s    r*   rF   PatternStr.max_widthV   rc   r-   rN   N)rO   rP   rQ   rR   __serialize_fields__r$   r   rS   rT   r0   rU   rV   rB   rF   rW   rN   r-   r*   rY   rY   J   sX    2D(3-63 6 3   3  r-   rY   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'   )rL   r!   r1   s    r*   r0   PatternRE.to_regexp`   s    tzz**r-   Nc                 p    U R                   c  [        U R                  5       5      U l         U R                   $ r'   )rj   r   r0   r1   s    r*   
_get_widthPatternRE._get_widthd   s)    ;;*4>>+;<DK{{r-   c                 (    U R                  5       S   $ Nr   rn   r1   s    r*   rB   PatternRE.min_widthi        ##r-   c                 (    U R                  5       S   $ )Nr   rr   r1   s    r*   rF   PatternRE.max_widthm   rt   r-   )rj   )rO   rP   rQ   rR   rf   r$   r   rS   rT   r0   rj   rn   rU   rV   rB   rF   rW   rN   r-   r*   rh   rh   [   sd    <D(3-+3 + F
 $3 $ $ $3 $ $r-   rh   c            	       t    \ 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)TerminalDefr   )namepatternpriorityrz   r{   r|   r%   Nc                 `    [        U[        5      (       d   U5       eXl        X l        X0l        g r'   )
isinstancer   rz   r{   r|   )r)   rz   r{   r|   s       r*   r+   TerminalDef.__init__z   s)    '7++4W4+	 r-   c                 l    [        U 5      R                  < SU R                  < SU R                  < S3$ )N(, rJ   )r$   rO   rz   r{   r1   s    r*   r2   TerminalDef.__repr__   s!    #Dz22DIIt||LLr-   c                     U R                   R                  S5      (       a)  U R                  R                  =(       d    U R                   $ U R                   $ )N__)rz   
startswithr{   r#   r1   s    r*   	user_reprTerminalDef.user_repr   s:    99%%<<##0tyy099r-   )rO   rP   rQ   rR   rf   rY   rh   __serialize_namespace__rS   rT   r   rV   r   r+   r2   r   rW   rN   r-   r*   rx   rx   r   sZ    8()3
IMDZ !S !7 !c !_c !M3 r-   rx   _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'   rN   )	clsr$   r!   r   r   r   r   r   r   s	            r*   __new__Token.__new__   s     	r-   type_c	                     g r'   rN   )	r   r   r!   r   r   r   r   r   r   s	            r*   r   r      s     r-   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///r-   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	"
	 $r-   c                     g r'   rN   r)   r$   r!   s      r*   updateToken.update       r-   c                     g r'   rN   )r)   r   r!   s      r*   r   r      r   r-   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3r-   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
 	
r-   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r-   c                     U R                   U R                  U R                  U R                  U R                  U R
                  44$ r'   )r   r$   r!   r   r   r   r1   s    r*   
__reduce__Token.__reduce__   s3    DJJ		SWS^S^ _``r-   c                 @    SU R                   < SU R                  < S3$ )NzToken(r   rJ   r   r1   s    r*   r2   Token.__repr__   s    "&))TZZ88r-   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Sr-   c                     [        U[        5      (       a  U R                  UR                  :w  a  g[        R	                  X5      $ )NF)r~   r   r$   rS   r;   r9   s     r*   r;   Token.__eq__  s0    eU##		UZZ(?zz$&&r-   rN   )NNNNNNNN)rO   rP   rQ   rR   __doc__	__slots____match_args__rS   rT   r   rV   r   r   r   classmethodr   r   r   r   r   r   r   r2   r   r;   r6   rW   __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' ||Hr-   c                   6    \ rS rSrSrS rS rS	S\4S jjrSr	g)
LineCounteri  )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%    (	r-   c                     [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r'   )r~   r   NotImplementedr   r   r9   s     r*   r;   LineCounter.__eq__  s>    %--!!}}.Z43D3DHZHZ3ZZr-   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   ra   r   )r)   r   test_newlinenewliness       r*   feedLineCounter.feed  s    
 {{4#4#45H		X%	&*mmell4CTCT6U&UXY&Y#U#mmd&9&99A=r-   )r   r   r   r   r   N)T)
rO   rP   rQ   rR   r   r+   r;   r   r   rW   rN   r-   r*   r   r     s#    NI [>% > >r-   r   c                        \ rS rSrS rS rSrg)UnlessCallbacki.  c                     Xl         g r'   scanner)r)   r   s     r*   r+   UnlessCallback.__init__/  s    r-   c                 r    U R                   R                  UR                  S5      nU(       a	  Uu  o1l        U$ rq   )r   matchr!   r$   )r)   tres_values       r*   __call__UnlessCallback.__call__2  s-    ll  !, NFFr-   r   NrO   rP   rQ   rR   r+   r   rW   rN   r-   r*   r   r   .  s    r-   r   c                        \ rS rSrS rS rSrg)	CallChaini9  c                 (    Xl         X l        X0l        g r'   	callback1	callback2cond)r)   r   r   r   s       r*   r+   CallChain.__init__:  s    ""	r-   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__?  s0    ^^A$(IIbMMt~~a 9r9r-   r   Nr   rN   r-   r*   r   r   9  s    
:r-   r   c                 X    U R                  XU5      nU(       a  UR                  S5      $ g rq   )r   group)re_regexpsr"   ms        r*   
_get_matchr   D  s(    		&U#Awwqz 	r-   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  [        [!        XUSU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>J  s    4		?r-      T)match_whole	use_bytes)r   ra   keyssetgetrh   rY   r|   r{   r!   r   r0   appendr"   addr   Scannerrz   )	terminalsg_regex_flagsr   r  tokens_by_typeembedded_strscallbackretokunlessstrtokr   r   new_terminalss                r*   _create_unlessr  I  s3   i)BCN~!#:^%8%8%::#EMH##Ir2$((R8F%..0$$AJsMM$;$;$=qPPf%>>''5==+>+>>!%%f- 9 6#1'&QTbfr{2|#}HZZ  3 !*D	1m-CQ	MD"" Es   	E.#E.c                   *    \ rS rSrSS jrS rS rSrg)r	  i_  c                     Xl         X l        X0l        X@l        XPl        U R                    Vs1 s H  ofR
                  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  rz   allowed_types_build_mresra   _mres)r)   r
  r  r   r  r  r   s          r*   r+   Scanner.__init__`  sW    "*"&.2nn=nffn=%%iY@
 >s   A+c                   ^ U R                   (       a  SOSm/ nU(       a  SR                  U4S j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  H5  nS UR                   < SUR                  R                  5       T-   < S3v   M7     g7f)z(?P<>rJ   N)rz   r{   r0   ).0r   postfixs     r*   	<genexpr>&Scanner._build_mres.<locals>.<genexpr>r  s0     xcw^_9L9L9NQX9X Ycws   =A zlatin-1r  )
r  joinr  encoder   compiler  AssertionErrorr  r  )r)   r
  max_sizemresr{   mrer!  s         @r*   r  Scanner._build_mresk  s     ))#riixclmvnvcwxxG~~!..3Bhh&&w0B0BC KK!),I i  " B''	q=AABs   !%B& &CCc                     U R                    H:  nUR                  X5      nU(       d  M  UR                  S5      UR                  4s  $    g rq   )r  r   r   	lastgroup)r)   textposr*  r   s        r*   r   Scanner.match~  s:    ::C		$$Aqwwqz1;;.. r-   )r  r  r  r  r   r
  r  N)F)rO   rP   rQ   rR   r+   r  r   rW   rN   r-   r*   r	  r	  _  s    	A&/r-   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.rN   )r1  s    r*   _regexp_has_newliner5    s>     19Z
ZeqjZDAIZ%1*BYQTXYQYZr-   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.  r8  r9  Nc                 |    Xl         U=(       d"    [        [        U[        5      (       a  SOS5      U l        X0l        g )N   
r3  )r.  r   r~   bytesr8  r9  )r)   r.  r8  r9  s       r*   r+   LexerState.__init__  s,    	 [KD%9P9PVZ$[$r-   c                     [        U[        5      (       d  [        $ U R                  UR                  L =(       a9    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  $ r'   )r~   r7  r   r.  r8  r9  r9   s     r*   r;   LexerState.__eq__  sO    %,,!!yyEJJ&r4==ENN+JrtbgbrbrOrrr-   c                 v    [        U 5      " U R                  [        U R                  5      U R                  5      $ r'   )r$   r.  r   r8  r9  r1   s    r*   __copy__LexerState.__copy__  s&    Dz$))T$--%8$//JJr-   )r9  r8  r.  r   )rO   rP   rQ   rR   r   r   rS   rT   r   r   r   r+   r;   rA  rW   rN   r-   r*   r7  r7    sU     1I
I%S %H[,A %T\]bTc %
sKr-   r7  c                   V    \ rS rSrSrSSS\4S jr\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'   rE  state)r)   rE  rG  s      r*   r+   LexerThread.__init__  s    
 
r-   r.  c                 &    U " U[        U5      5      $ r'   r7  )r   rE  r.  s      r*   	from_textLexerThread.from_text  s    5*T*++r-   c                 N    U R                   R                  U R                  U5      $ r'   )rE  lexrJ  )r)   parser_states     r*   rQ  LexerThread.lex  s    zz~~djj,77r-   c                 `    [        U 5      " U R                  [        U R                  5      5      $ r'   )r$   rE  r   rJ  r1   s    r*   rA  LexerThread.__copy__  s     Dz$**d4::&677r-   rI  N)rO   rP   rQ   rR   r   r7  r+   r   rS   rN  rQ  rA  r   _TokenrW   rN   r-   r*   rD  rD    sM    !g !J ! ,g ,S , ,88 Fr-   rD  c                   D    \ rS rSrSr\S\S\S\\	   4S j5       r
S rSrg	)
rF  i  z`Lexer interface

Method Signatures:
    lex(self, lexer_state, parser_state) -> Iterator[Token]
rG  rR  r%   c                     [         $ r'   )r   )r)   rG  rR  s      r*   rQ  	Lexer.lex  s    r-   c                     [        U5      $ )
DeprecatedrM  )r)   r.  s     r*   make_lexer_stateLexer.make_lexer_state  s    $r-   rN   N)rO   rP   rQ   rR   r   r   r7  r   r	   r   rQ  r\  rW   rN   r-   r*   rF  rF    s9    
 z  %   r-   rF  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    

r-   T)skip_markedzCollision between Terminals z and z. zONo example could be found fast enough. However, the collision does still existsr3  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|   markrz   get_example_overlapformat_multiline
ValueErrorr   r   warning)
r^  
comparatorstrict_modemax_collisions_to_showmax_timer   abmessageexamples
             r*   _check_regex_collisionsrv    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% \\   \S'   \\   \S'   \\   \S'   \	\\
4   \S'   \	\\
4   \S'   \\S'   SSS
 jjrS r\S 5       rS rS\S\S	\\   4S j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~   rx   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. (rJ   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'   )r5  r{   r0   rz   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{   rF   ra   r!   rz   )xs    r*   r   %BasicLexer.__init__.<locals>.<lambda>  s7    qzzkAII4G4G3G#aiiooJ^I^`a`f`f%gr-   )key)listr
  all	re_moduler\   skip_validationr{   r0   r&  r  errorr   rz   rB   r$   r  ignorehas_interegularrv  strictr(   rz  ry  sort	callbacksr{  r  terminals_by_name_scanner)r)   confrn  r
  r^  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      U l        g )Nc                 "   > U R                   T:H  $ r'   )r$   )r   r   s    r*   r   +BasicLexer._build_scanner.<locals>.<lambda>)  s    TUTZTZ^cTcr-   )r  r
  r  r\   r  r  r  rg  r{  itemsr   r	  r  )r)   r
  rK   r   s      @r*   _build_scannerBasicLexer._build_scanner"  s    #1$..$BTBTVZV]V]_c_m_m#n 	=4=='')****++113HE1%'0u1EqJc'de$'(e$ 4  	+=+=twwWr-   c                 T    U R                   c  U R                  5         U R                   $ r'   )r  r  r1   s    r*   r   BasicLexer.scanner/  s"    == !}}r-   c                 8    U R                   R                  X5      $ r'   )r   r   )r)   r.  r/  s      r*   r   BasicLexer.match5  s    ||!!$,,r-   rJ  rR  c              #   x   #    [        [        5          U R                  X5      v   M  ! , (       d  f       g = f7fr'   )r   EOFError
next_token)r)   rJ  rR  s      r*   rQ  BasicLexer.lex8  s,     hooe::   s   :)
7:	lex_statec                    UR                   nUR                  [        UR                  5      :  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                  UR                  UR                  UR                  XQR                  =(       a    UR                  /X R                  S9eUu  pgXpR                  ;  a  [        XvUR                  UR                  UR                  5      nUR                  XgU R                  ;   5        UR                  Ul        UR                  Ul        UR                  Ul        UR&                  U R(                  ;   aB  U R(                  UR&                     " U5      n[+        U[        5      (       d  [-        SU-  5      eXl        U$ XpR(                  ;   aA  [        XvUR                  UR                  UR                  5      n	U R(                  U   " U	5        UR                  XgU R                  ;   5        UR                  [        UR                  5      :  a  GM@  [/        U 5      e)Nz<END-OF-FILE>)allowedtoken_historyrJ  r  z+Callbacks must return a token (returned %r))r8  r   ra   r.  r   r   r  ry  r   r   r   r9  r  r   r   rz  r   r   r   r$   r  r~   r   r  )
r)   r  rR  r8  r   r  r!   r   r   r   s
             r*   r  BasicLexer.next_token=  s   %%#inn"55**Y^^X->->?C,,44t7H7HH./G*9>>8;L;Lhmm]e]l]l3:J^J^Jydmdxdxcy1=QgQgi i LE---%(9(98==(//Zed.@.@%@A%]]
'$--	66T]]*aff-a0A%a//&'TWX'XYY'($MM)uX->->x_BMM%(,ed.@.@%@A9 #inn"55> tnr-   )
r  r  r  ry  rz  r\   r
  r  r  r{  r'   )r  r   r%   N)rO   rP   rQ   rR   r
   rx   rT   r   rS   r   	_Callbackr   r+   r  rU   r   r   r7  r   r	   r   rQ  r  rW   rN   r-   r*   rx  rx    s    +&&C. S>!i((3	>""N(TX  
-; ;3 ;8E? ;
!J !c !U ! !r-   rx  c            	           \ rS rSr% \\\4   \S'   \\S'   SSSS\\\\   4   S\\   SS	4S
 jjr	S\
S\S\\   4S jrSrg	)ContextualLexeria  lexers
root_lexerr  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        [#        Xh5      U l        g s  snf ! [         aq    [        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        [#        X5      nXU'    Nf = f)NT)r  r
  r  r   r  r  rc  rd  re  r{   r0   r  r  r(   KeyErrorr  r  rx  r  )r)   r  r  r  r
  r  	trad_confr   rn  lexer_by_tokensrJ  acceptsr  rE  
lexer_confns                   r*   r+   ContextualLexer.__init__f  sZ   (	 22J	'?4#7#7$//<<`i=j`i[\ATATAV>V`i=jkJJ<>$llnNEG$C-', "'KK - ""i///$(	!$Y;) >k  -g,T[[)99C<NN!)_
FM'hgVgQg(<(9(<g'h
$"::',$-s+   ,$DDAF	E$E$#FFrG  rR  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)rJ  r  r  )
r  positionr  r  r   r9  r  r   r  r  )r)   rG  rR  rE  er9  r   s          r*   rQ  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  )rN   )rO   rP   rQ   rR   r   rS   rx  rT   r
   r+   r7  r   r	   r   rQ  rW   rN   r-   r*   r  r  a  sl    j!!<[ <$sJsO7K2L <]ghk]l <tx <<z  % r-   r  )   )>abcr   r   r\   
contextlibr   typingr   r   r   r	   r
   r   r   r   r   r   r   r   typesr   r   rc  ImportErrorcommonr   utilsr   r   r   r   
exceptionsr   r   r   grammarr   r   boolr  	NameErrorr   rY   rh   rx   r   rS   r   r   r   r   r   r  r	  r5  r7  rD  r  rF  rv  rx  r  rN   r-   r*   <module>r     s   $ 	      	 ! @ @ G G + ;'O'i 'T "$ $.) . T!AC AH> >> : :
#,#/ #/L[3 [K K4 * eWe^$	 C  [#5E0F @n nb2e 2g  		  Os#   D6 .E 6E ?E EE