
    E#i/                     V   S r SSKJrJrJrJrJrJr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  SSKJrJrJrJrJr  SS	KJrJr  SS
KJr   " S S5      r\" S5      r \" S5      r!\" S5      r" " S S\\"   5      r# " S S\#S   5      r$ " S S\#\%   5      r&S r'S r( " S S\5      r)g)zThis module builds a LALR(1) transition-table for lalr_parser.py

For now, shift/reduce conflicts are automatically resolved as shifts.
    )DictSetIteratorTupleListTypeVarGeneric)defaultdict   )classifyclassify_boolbfsfzset
Enumeratorlogger)GrammarError   )GrammarAnalyzerTerminal
LR0ItemSetRulePtrState)RuleSymbol)
ParserConfc                   &    \ rS rSrS rS rS rSrg)Action   c                     Xl         g Nname)selfr"   s     m/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/static_dependencies/lark/parsers/lalr_analysis.py__init__Action.__init__   s    	    c                     U R                   $ r    r!   r#   s    r$   __str__Action.__str__   s    yyr'   c                     [        U 5      $ r    )strr)   s    r$   __repr__Action.__repr__   s    4yr'   r!   N)__name__
__module____qualname____firstlineno__r%   r*   r.   __static_attributes__ r'   r$   r   r      s    r'   r   ShiftReduceStateTc                   x    \ rS rSr% \\\\\4   4   \S'   \\\4   \S'   \\\4   \S'   S r	S r
\S 5       rSrg	)
ParseTableBase"   statesstart_states
end_statesc                 (    Xl         X l        X0l        g r    )r<   r=   r>   )r#   r<   r=   r>   s       r$   r%   ParseTableBase.__init__'   s    ($r'   c                    [        5       nU R                  R                  5        VVVVVs0 s H^  u  p4UUR                  5        VVVs0 s H8  u  nu  pgUR                  U5      U[        L a  SUR                  U5      4OSU4_M:     snnn_M`     nnnnnnUR                  5       UU R                  U R                  S.$ s  snnnf s  snnnnnf )Nr   r   )tokensr<   r=   r>   )	r   r<   itemsgetr7   	serializereversedr=   r>   )	r#   memorB   stateactionstokenactionargr<   s	            r$   rE   ParseTableBase.serialize,   s    
 #'++"3"3"5
 #6 07A0?,} JJu%FfDTCMM$,?(@[\^aZbb0?A A"5 	 
 oo' --//	
 	
A
s   C?B?	C?Cc                 L   US   nUS   R                  5        VVVVVs0 s H[  u  pEUUR                  5        VVVs0 s H5  u  nu  pxX6   US:X  a  [        [        R                  " X5      4O[        U4_M7     snnn_M]     n	nnnnnU " XS   US   5      $ s  snnnf s  snnnnnf )NrB   r<   r   r=   r>   )rC   r7   r   deserializer6   )
clsdatarG   rB   rH   rI   rJ   rK   rL   r<   s
             r$   rO   ParseTableBase.deserialize<   s    h #'x."6"6"8
 #9 07A0?,} MVUVYVT-=-=c-H$I]bdg\hh0?A A"8 	 

 6/l1CDD	A
s   B<B8	BB)r>   r=   r<   N)r0   r1   r2   r3   r   r8   r-   r   __annotations__r%   rE   classmethodrO   r4   r5   r'   r$   r:   r:   "   sY    c5j))**sF{##S&[!!%

  E Er'   r:   c                       \ rS rSrSrSrg)
ParseTableF   zgParse-table whose key is State, i.e. set[RulePtr]

Slower than IntParseTable, but useful for debugging
r5   N)r0   r1   r2   r3   __doc__r4   r5   r'   r$   rV   rV   F   s     	r'   rV   r   c                   0    \ rS rSrSr\S\4S j5       rSrg)IntParseTableN   z3Parse-table whose key is int. Best for performance.parse_tablec           
      >   [        UR                  5      n[        U5       VVs0 s H  u  p4XC_M	     nnn0 nUR                  R                  5        HG  u  pGUR                  5        VV	s0 s H  u  pXS   [        L a  U	S   XYS      4OU	_M!     nnn	XvXT   '   MI     UR
                  R                  5        V
Vs0 s H
  u  pXU   _M     nn
nUR                  R                  5        V
Vs0 s H
  u  pXU   _M     nn
nU " XkU5      $ s  snnf s  sn	nf s  snn
f s  snn
f )Nr   r   )listr<   	enumeraterC   r6   r=   r>   )rP   r\   enumisstate_to_idx
int_stateslakvstartr=   r>   s                r$   from_ParseTableIntParseTable.from_ParseTableQ   s   K&&';DT?+K?CAAC?+K
 ''--/EAXXZ)'ca A$%-QqT<!-.QF'  ),.) 0 ?J>V>V>\>\>^_>^(%1o->^_<G<R<R<X<X<Z[<ZeO+<Z
[:Z88 ,L)
 `[s   D)&D9D*Dr5   N)	r0   r1   r2   r3   rX   rT   rV   ri   r4   r5   r'   r$   rZ   rZ   N   s    =9* 9 9r'   rZ   c           
      |    0 n/ n[         R                  U S5      nU  H  nXV   S:X  d  M  [        XdXPXU5        M     U$ Nr   )dictfromkeystraverse)XRGFSNxs          r$   digraphrw   j   sD    
A
AaA419Q1q)  Hr'   c           
      d   UR                  U 5        [        U5      nXrU '   XP   X`'   X@    HU  nX(   S:X  a  [        XX#XEU5        X    n	U	S:  d   eX(   n
U
S:w  d   eU
S:  a	  X:  a  XU '   X`   R                  Xh   5        MW     X    U:X  a%  X`   n UR	                  5       nSX,'   XU'   X:X  a  g M   g )Nr   )appendlenro   updatepop)rv   rt   ru   rp   rq   rr   rs   dyn_xn_yf_xzs                r$   ro   ro   {   s    HHQKAAaD4ADT419Q1q)dQwwdaxx!G#)aD	AD  	tqydAADaDv  r'   c                   4   \ rS rSr% \\   \S'   \\\\	4      \S'   \
\\\	4   \\\\4      4   \S'   \
\\\	4   \\\\	4      4   \S'   \
\\\	4   \\\\	4      4   \S'   \
\\\	4   \\	   4   \S'   SS\S	\S
\4S jjrSS jrS rS rS rSS jrS rSrg)LALR_Analyzer   lr0_itemsetsnonterminal_transitionslookbackincludesreadsdirectly_readsparser_confdebugstrictc                     [         R                  " XX#5        / U l        [        [        5      U l        [        [        5      U l        [        [        5      U l        [        [        5      U l        g r    )	r   r%   r   r
   setr   r   r   r   )r#   r   r   r   s       r$   r%   LALR_Analyzer.__init__   sK      EB')$)#. %
#C(#C(r'   Nc                    ^ ^ [        5       T l        0 mS[        S[        [           4UU 4S jjn[	        T R
                  R                  5       U5       H  nM     g )NrH   returnc           	   3   h  >#    [        U R                  S 5      u  p[        US 5      nUR                  5        H  u  pE[	        U Vs1 s H  ofR                  U5      iM     sn5      nT
R                  US 5      nUc}  [        U5      n	U H\  nUR                  (       a  M  UR                  R                  (       a  M3  U	TR                  UR                  TR                  5      -  n	M^     [        Xy5      nUT
U'   XR                  U'   Uv   M     TR                  R!                  U 5        g s  snf 7f)Nc                     U R                   $ r    )is_satisfiedrps    r$   <lambda>@LALR_Analyzer.compute_lr0_states.<locals>.step.<locals>.<lambda>   s    rr'   c                     U R                   $ r    )nextr   s    r$   r   r      s    277r'   )r   closurer   rC   r   advancerD   r   r   r   is_termexpand_rulelr0_rules_by_originr   transitionsr   add)rH   _unsatr~   symrpsr   kernel	new_stater   cacher#   s             r$   step.LALR_Analyzer.compute_lr0_states.<locals>.step   s     $U]]4NOHA 23AGGI#>#B

3#>?!IIfd3	$!&kG$!rww#t'7'7AYAY'ZZG % !+6 ;I$-E&M)2!!#& & !!%(  ?s   AD2D-
";D2!D2>A4D2)r   r   r   r   r   lr0_start_statesvalues)r#   r   r   r   s   `  @r$   compute_lr0_states LALR_Analyzer.compute_lr0_states   sT    E+-	)
 	)x
'; 	) 	)( T**113T:A ;r'   c                    U R                   R                  5        Hp  n[        UR                  5      S:X  d   eUR                   HB  nUR                  S:X  d   e[        [        S5      /5      U R                  XR                  4'   MD     Mr     U R                   GH+  n[        5       nUR                   GH  nUR                  (       a  M  UR                  nXPR                  ;  a  M4  XT;   a  M;  UR                  U5        X54nU R                  R                  U5        U R                  U   nU R                   U   nUR"                  U   n	U	R                   He  n
U
R                  (       a  M  U
R                  nXR                  ;  a  UR                  U5        XR$                  ;   d  MS  UR                  X45        Mg     GM     GM.     g )Nr   r   z$END)r   r   r{   r   indexr   r   r   r   r   r   r   r   r   r   rz   r   r   NULLABLE)r#   rootr   rH   seenrb   ntdrr
next_staterp2s2s               r$   compute_reads_relations%LALR_Analyzer.compute_reads_relations   sl   ))002Dt{{#q()(kkxx1}%}7:Xf=M;O7P##T77O4 " 3 &&E5Dmm??GG4449Z,,33B7((,JJrN"..q1
%--C'' B!9!99r
]]*z./ . $ 'r'   c           	         U R                    GH  nUu  p#/ nU R                  U   nUR                   GHw  nUR                  R                  U:w  a  M   Un[        UR                  [        UR                  R                  5      5       H  nUR                  R                  U   n	Xy4n
UR                  U	   nXR                  ;  a  M?  [        US-   [        UR                  R                  5      5       H-  nUR                  R                  U   U R                  ;  d  M,    M     UR                  U
5        M     UR                  S:X  d  GM  UR                   HN  nUR                  UR                  :X  d  M  UR                  (       d  M2  UR                  X|R                  45        MP     GMz     U H!  n
U R                  U
   R                  U5        M#     GM     g )Nr   r   )r   r   r   ruleoriginranger   r{   	expansionr   r   r   rz   r   r   r   )r#   r   rH   nonterminalr   r   r   state2ra   rb   nt2jr   s                r$   compute_includes_lookback'LALR_Analyzer.compute_includes_lookback   sm   ..B!#EH}}R(Hmm77>>[0rxxRWW->->)?@A))!,A!+C#//2F**, "1q5#bgg.?.?*@A77,,Q/t}}D! B !, A 88q=%~~HH/S5E5E5E$LL&(();<  .% $*  c"&&r*  3 /r'   c                 J   [        U R                  U R                  U R                  5      n[        U R                  U R                  U5      nU R
                  R                  5        H9  u  p4U H.  u  pVX#    H!  nUR                  U   R                  U5        M#     M0     M;     g r    )	rw   r   r   r   r   r   rC   
lookaheadsr   )r#   	read_setsfollow_setsr   	lookbacksrH   r   rb   s           r$   compute_lookaheads LALR_Analyzer.compute_lookaheads  s    D88$**dFYFYZ	d::DMM9U!]]002MB($A$$Q'++D1 )  ) 3r'   c                    0 n/ nU R                    GH  nUR                  R                  5        VVs0 s H  u  pEU[        UR                  4_M     nnnUR
                  R                  5        GHI  u  pG[        U5      S:  ap  U Vs/ s H#  oR                  R                  =(       d    SU4PM%     n	nU	R                  S SS9  U	S S u  pU
S   US   :  a  U
S   1nOUR                  X4U45        M  Uu  nXF;   a  U R                  (       a  [        SUR                   S35      eU R                  (       a;  [        R                   " S	UR                  5        [        R                   " S
U5        GM  [        R                  " S	UR                  5        [        R                  " S
U5        GM?  ["        U4Xd'   GML     UR                  5        VVs0 s H  u  pUR                  U_M     snnX'   GM     U(       a  / nU H  u  p4nSU< SSR%                  U Vs/ s H  nS['        U5      -   PM     sn5      < 3nU R                  (       a>  USSR%                  UR                   Vs/ s H  nS['        U5      -   PM     sn5      -  -  nUR                  U5        M     [        SR%                  U5      5      eUR                  5        VVs0 s H  u  pUR                  U_M     nnn0 nU Hh  nU H_  nU R(                   HL  nUR*                  R,                  R                  SU-   :X  d  M,  UR.                  (       d  M?  UU;  d   eUUU'   MN     Ma     Mj     U R(                  R                  5        VVs0 s H  u  nnUUR                  _M     nnn[1        UUU5      nU R                  (       a  UU l        g [4        R7                  U5      U l        g s  snnf s  snf s  snnf s  snf s  snf s  snnf s  snnf )Nr   r   c                     U S   $ rl   r5   )r   s    r$   r   4LALR_Analyzer.compute_lalr1_states.<locals>.<lambda>  s    1r'   T)keyreverser   z#Shift/Reduce conflict for terminal z. [strict-mode]
 z;Shift/Reduce conflict for terminal %s: (resolving as shift)z * %szReduce/Reduce collision in z between the following rules:  z
	- z+
    collision occurred in state: {%s
    }z
	z

z$root_)r   r   rC   r6   r   r   r{   optionsprioritysortrz   r   r   r"   r   r   warningr7   joinr-   r   r   r   r   rV   r\   rZ   ri   )r#   mreduce_reduceitemsetre   r   rI   rulesr   pbestsecond_bestr   rf   rg   msgsmsgrv   r<   r>   rH   r   rh   r=   _parse_tables                            r$   compute_lalr1_states"LALR_Analyzer.compute_lalr1_states  s   02((GLSL_L_LeLeLg,iLg." -/
8J8J0K,KLg  ,i$//557	u:>?DEu!)),,115uAEFF~tF<()"1%DAwQ/!%a	%,,g5-AB ={{*-PQSQXQXPYYk+lmm'dfhfmfmnw5%bdfdkdklWd3#)4.GK/ 80 29B16619BAJ7 ): D&3"UY[]_]d]d  CH  fJ  CH}~goruvwrxgx  CH  fJ  ^K  L::JRWWovo~o~Uo~jkV\_bcd_eVeo~U  NA  A  ACC 	 '4
 v{{4011,-GGI7IDA199a<I7 *,
E!22Eww~~**x%/?@R___$J666,1
5) 3   CGBWBWB]B]B_aB_,%-B_a!&,
C::+D,<<\JDm,i
 F* C
 fJU 8 bs)   O*OOO#&O(O-4O3c                     U R                  5         U R                  5         U R                  5         U R                  5         U R	                  5         g r    )r   r   r   r   r   r)   s    r$   compute_lalrLALR_Analyzer.compute_lalrG  s>    !$$&&&(!!!#r'   )r   r   r   r   r   r\   r   )FF)r   N)r0   r1   r2   r3   r   r   rS   r   r   r   r   r   r   boolr%   r   r   r   r   r   r   r4   r5   r'   r$   r   r      s    j/!!%
F(:";<<5V+,c%
D8H2I.JJKK5V+,c%
F8J2K.LLMMj&()3uZ5G/H+IIJJz612CK?@@)J )t )4 )8!0F+:2:Kx$r'   r   N)*rX   typingr   r   r   r   r   r   r	   collectionsr
   utilsr   r   r   r   r   r   
exceptionsr   grammar_analysisr   r   r   r   r   grammarr   r   commonr   r   r6   r7   r8   r:   rV   intrZ   rw   ro   r   r5   r'   r$   <module>r      s    F E E # K K % S S "   	w				"EWV_ "EH	( 	9N3' 98"2x$O x$r'   