
    E#i                         S r SSKJrJrJr  SSKJrJr  SSKJ	r	  SSK
JrJr  SSKJrJrJr  SS	KJr  SS
KJrJrJr  SSKJrJr   " S S\	5      r " S S5      rg)z(This module implements a LALR(1) Parser
    )DictAnyOptional   )TokenLexerThread)	Serialize)
ParserConfParserCallbacks   )LALR_AnalyzerIntParseTableParseTableBase)InteractiveParser)UnexpectedCharactersUnexpectedInputUnexpectedToken)ParserState	ParseConfc                   ~    \ rS rSrSS\S\S\4S jjr\SS j5       rSS\	S	\
\\	4   4S
 jjrS\S\4S jrSS jrSrg)LALR_Parser   parser_confdebugstrictc                     [        XUS9nUR                  5         UR                  nUR                  U l        Xl        [        UR                  XR5      U l        g )N)r   r   )r   compute_lalr	callbacksparse_table_parse_tabler   _Parserparser)selfr   r   r   analysisr   s         k/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/static_dependencies/lark/parsers/lalr_parser.py__init__LALR_Parser.__init__   sM     &I))	$00&h22IE    c                     U R                  U 5      n[        R                  " X5      Ul        [	        UR                  X45      Ul        U$ N)__new__r   deserializer    r!   r"   )clsdatamemor   r   insts         r%   r,   LALR_Parser.deserialize   s<    {{3)55dAd//Br(   Nr/   returnc                 8    U R                   R                  U5      $ r*   )r    	serialize)r#   r/   s     r%   r4   LALR_Parser.serialize"   s      **400r(   lexerstartc                 6    U R                   R                  XSS9$ )NT)start_interactive)r"   parse)r#   r6   r7   s      r%   parse_interactiveLALR_Parser.parse_interactive%   s    {{   FFr(   c                 B    U R                   R                  X5      $ ! [         Gav  nUc  e  [        U[        5      (       a6  UR
                  R                  R                  nUR                  R                  nU" U5      (       d  Ue[        U[        5      (       aD  WWR                  R                  :X  a*  UR                  R                  UR                  XfS-    5         UR
                  R                  5       s S nA$ ! [         au  n[        U[        5      (       aT  UR                  R                  UR                  R                  s=:X  a  S:X  a  O  OUR
                  UR
                  :X  a  UeUn S nAOS nAf[         a  nUn S nAOS nAff = fGMl  S nAff = f)Nr   $END)r"   r:   r   
isinstancer   interactive_parserlexer_threadstateline_ctrchar_posfeedtextresume_parser   tokentype)r#   r6   r7   on_errorespe2s           r%   r:   LALR_Parser.parse(   s;   	;;$$U22 	a!566,,99??A

++A{{Ga!566AJJ///

q16
//<<>>& "1o66GGLLBHHMMCVC00B4I4II A+ A- 		sR    FB8F!D :F 
F
A+E:5F:FF	FFFF)r    r"   r   )FFFr*   )__name__
__module____qualname____firstlineno__r
   boolr&   classmethodr,   r   r   strr4   r   r;   r:   __static_attributes__ r(   r%   r   r      sj    FJ Ft F4 F  1c 1T#s(^ 1G{ G3 Gr(   r   c                       \ rS rSr% \\S'   \\S'   \\S'   SS\S\S\4S jjrSS\	S\
4S	 jjrSS
\S\\   4S jjrSrg)r!   I   r   r   r   c                 (    Xl         X l        X0l        g r*   )r   r   r   )r#   r   r   r   s       r%   r&   _Parser.__init__N   s    &"
r(   Nr6   r7   c                     [        U R                  U R                  U5      n[        XaXC5      nU(       a  [	        XUR
                  5      $ U R                  U5      $ r*   )r   r   r   r   r   r6   parse_from_state)r#   r6   r7   value_stackstate_stackr9   
parse_confparser_states           r%   r:   _Parser.parseS   sM    t//G
":kO$T9K9KLL$$\22r(   rB   
last_tokenc                 j    UnUR                   R                  U5       H  nUc   eUR                  U5        M     U(       a  [        R                  " SSU5      O[        SSSSS5      nUR                  US5      $ ! [
         a4  n [        XUR                   5      Ul        Ue! [         a     Uef = fSnAf[         ap  nU R                  (       aY  [        S5        [        S5        [        S5        [        UR                  5       H  u  pg[        S	U-  U5        M     [        S5        e SnAff = f)
zRun the main LALR parser loop

Parameters:
    state - the initial state. Changed in-place.
    last_token - Used only for line information in case of an empty lexer.
Nr>    r   r   TzSTATE STACK DUMPz----------------z%d))r6   lex
feed_tokenr   new_borrow_posr   r   r@   	NameError	Exceptionr   print	enumeratera   )r#   rB   re   rH   	end_tokenrK   irL   s           r%   r_   _Parser.parse_from_state[   s   	E/(((  ' 0 DI,,VR?eTZ\^`acdfgNhI##It44 	'8ekk'R$ G  G  		zzb	()()%e&7&78DA%!)a( 9b			sC   A9A< <
D2B$"B5$
B2.B51B22B55D2A+D--D2)r   r   r   rP   )NNFr*   )rQ   rR   rS   rT   r   __annotations__r   rU   r&   r   rW   r:   r   r   r   r_   rX   rY   r(   r%   r!   r!   I   s]    KN  W[ 
3; 3s 3k x  r(   r!   N)__doc__typingr   r   r   r6   r   r   utilsr	   commonr
   r   lalr_analysisr   r   r   lalr_interactive_parserr   
exceptionsr   r   r   lalr_parser_stater   r   r   r!   rY   r(   r%   <module>r{      sD    ' & &  0 G G 6 O O 55) 5p0 0r(   