ó
    ÖÁ“iå  ã                   óÎ   • S r SSKJrJr  SSKJrJrJrJrJ	r	  SSK
JrJrJrJr  SSKJr  SSKJrJrJrJr  SSKJr   " S	 S
5      r\\   r " S S5      rS rS r " S S5      rg)z*Provides for superficial grammar analysis.é    )ÚCounterÚdefaultdict)ÚListÚDictÚIteratorÚ	FrozenSetÚSeté   )ÚbfsÚfzsetÚclassifyÚ
OrderedSet)ÚGrammarError)ÚRuleÚTerminalÚNonTerminalÚSymbol)Ú
ParserConfc                   ó¤   • \ rS rSr% Sr\\S'   \\S'   S\S\4S jrS r	\
S\4S j5       rS	\SS 4S
 jr\
S\4S j5       rS\4S jrS\4S jrSrg)ÚRulePtré   )ÚruleÚindexr   r   c                 ó€   • [        U[        5      (       d   eU[        UR                  5      ::  d   eXl        X l        g ©N)Ú
isinstancer   ÚlenÚ	expansionr   r   )Úselfr   r   s      ÚZ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/lark/parsers/grammar_analysis.pyÚ__init__ÚRulePtr.__init__   s6   € Ü˜$¤×%Ñ%Ð%Ð%Øœ˜DŸN™NÓ+Ó+Ð+Ð+ØŒ	Ø�
ó    c                 óœ  • U R                   R                  S U R                    Vs/ s H  oR                  PM     nnU R                   R                  U R                  S   Vs/ s H  oR                  PM     nnSU R                   R                  R                  < SSR                  U5      < SSR                  U5      < S3$ s  snf s  snf )NÚ<z : Ú z * Ú>)r   r   r   ÚnameÚoriginÚjoin)r   ÚxÚbeforeÚafters       r    Ú__repr__ÚRulePtr.__repr__   s–   € Ø"&§)¡)×"5Ñ"5°k°t·z±zÑ"BÓCÒ"B˜Q—&”&Ñ"BˆÐCØ!%§¡×!4Ñ!4°T·Z±Z°[Ñ!AÓBÒ!A˜A—”Ñ!AˆÐBˆØ#'§9¡9×#3Ñ#3×#8Ô#8¸#¿(¹(À6Ö:JÈCÏHÉHÐUZÎOÐ\Ð\ùò DùÚBs   ¦CÁ"C	Úreturnc                 óH   • U R                   R                  U R                     $ r   )r   r   r   ©r   s    r    ÚnextÚRulePtr.next   s   € à�y‰y×"Ñ" 4§:¡:Ñ.Ð.r#   Úsymc                 ól   • U R                   U:X  d   e[        U R                  U R                  S-   5      $ )Né   )r3   r   r   r   )r   r5   s     r    ÚadvanceÚRulePtr.advance    s-   € Ø�y‰y˜CÓÐÐÜ�t—y‘y $§*¡*¨Q¡,Ó/Ð/r#   c                 óZ   • U R                   [        U R                  R                  5      :H  $ r   )r   r   r   r   r2   s    r    Úis_satisfiedÚRulePtr.is_satisfied$   s    € à�z‰zœS §¡×!4Ñ!4Ó5Ñ5Ð5r#   c                 óª   • [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r   )r   r   ÚNotImplementedr   r   )r   Úothers     r    Ú__eq__ÚRulePtr.__eq__(   s:   € Ü˜%¤×)Ñ)Ü!Ð!Ø�y‰y˜EŸJ™JÑ&×D¨4¯:©:¸¿¹Ñ+DÐDr#   c                 óD   • [        U R                  U R                  45      $ r   )Úhashr   r   r2   s    r    Ú__hash__ÚRulePtr.__hash__-   s   € Ü�T—Y‘Y §
¡
Ð+Ó,Ð,r#   )r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú	__slots__r   Ú__annotations__Úintr!   r.   Úpropertyr   r3   r8   Úboolr;   r@   rD   Ú__static_attributes__© r#   r    r   r      s�   ‡ Ø!€IØ
ƒJØƒJð˜Tð ¨#ô ò]ð
 ð/�fó /ó ð/ð0˜6ð 0 iô 0ð ð6˜dó 6ó ð6ðE˜tô Eð
-˜#÷ -r#   r   c                   óh   • \ rS rSr% Sr\\S'   \\S'   \\S 4   \S'   \\\	\
   4   \S'   S rS rS	rg
)Ú
LR0ItemSeté4   )ÚkernelÚclosureÚtransitionsÚ
lookaheadsrT   rU   rV   rW   c                 óz   • [        U5      U l        [        U5      U l        0 U l        [	        [
        5      U l        g r   )r   rT   rU   rV   r   ÚsetrW   )r   rT   rU   s      r    r!   ÚLR0ItemSet.__init__<   s,   € Ü˜F“mˆŒÜ˜W“~ˆŒØˆÔÜ%¤cÓ*ˆ�r#   c                 óø   • SSR                  U R                   Vs/ s H  n[        U5      PM     sn5      < SSR                  U R                   Vs/ s H  n[        U5      PM     sn5      < S3$ s  snf s  snf )NÚ{ú, z | Ú})r*   rT   ÚreprrU   )r   Úrs     r    r.   ÚLR0ItemSet.__repr__B   s\   � Ø"Ÿi™i¸$¿+º+Ó(Fº+°Q¬¨a®¹+Ñ(FÖGÈÏÉÐei×eqÒeqÓSrÒeqÐ`aÔTXÐYZÖT[ÑeqÑSrÖIsÐtÐtùÒ(FùÒSrs   ›A2
ÁA7)rU   rT   rW   rV   N)rF   rG   rH   rI   rJ   ÚStaterK   r   r   r	   r   r!   r.   rO   rP   r#   r    rR   rR   4   s@   ‡ ØB€IàƒMØƒNØ�f˜lÐ*Ñ+Ó+Ø�V˜S ™YÐ&Ñ'Ó'ò+õur#   rR   c                 óB   • U(       a  X:”  a  g[        U 5      nX-  n X:g  $ )NF)rY   )Úset1Úset2Úcopys      r    Ú
update_setrg   F   s$   € Þ�4“;Øäˆt‹9€DØ�L€DØ‰<Ðr#   c           	      ó¢  • U  VVs1 s H  oR                     H  o"iM     M     snnU  Vs1 s H  oR                  iM     sn-  n[        5       n0 n0 nU H/  nUR                  (       a  U1O	[        5       XR'   [        5       Xb'   M1     SnU(       aª  SnU  H™  n[        UR                   5      U::  a  [	        XAR                  15      (       a  Sn[        UR                   5       HG  u  p‚[        UR                   SU 5      U::  a%  [	        XQR                     XR   5      (       a  SnMD  MF    M—     M›     U(       a  Mª  SnU(       aþ  SnU  Hí  n[        UR                   5       HÑ  u  p‚U[        UR                   5      S-
  :X  d  [        UR                   US-   S 5      U::  a!  [	        Xb   XaR                     5      (       a  Sn[        US-   [        UR                   5      5       HJ  n	[        UR                   US-   U	 5      U::  d  M$  [	        Xb   XQR                   U	      5      (       d  MH  SnML     MÓ     Mï     U(       a  Mþ  XVU4$ s  snnf s  snf )zdCalculate FOLLOW sets.

Adapted from: http://lara.epfl.ch/w/cc09:algorithm_for_first_and_follow_setsTFNr7   )r   r)   rY   Úis_termrg   Ú	enumerater   Úrange)
Úrulesr   r5   ÚsymbolsÚNULLABLEÚFIRSTÚFOLLOWÚchangedÚiÚjs
             r    Úcalculate_setsrt   N   s  € ñ  %Ô?šu�t·µ¨Šs±‰s™uÒ?Ñ[`ÓBaÒ[`ÐSWÇ;Ä;Ñ[`ÑBaÑa€Gô ‹u€HØ€EØ€FÛˆØŸKŸK�C‘5¬S«Uˆ‰
Ü“Eˆ‹ñ ð
 €GÞ
ØˆãˆDÜ�4—>‘>Ó" hÓ.Ü˜h¯©¨×6Ñ6Ø"�Gä# D§N¡NÖ3‘�Ü�t—~‘~ b qÐ)Ó*¨hÓ6Ü! %¯©Ñ"4°e±j×AÑAØ"&šñ Bò ó 4ñ ÷ ˆ'ð  €GÞ
ØˆãˆDÜ# D§N¡NÖ3‘�Ø”c˜$Ÿ.™.Ó)¨!Ñ+Ó+¬s°4·>±>À!ÀAÁ#À$Ð3GÓ/HÈHÓ/TÜ! &¡+¨v·k±kÑ/B×CÑCØ"&˜ä˜q ™s¤C¨¯©Ó$7Ö8�AÜ˜4Ÿ>™>¨!¨A©#¨aÐ0Ó1°XÕ=Ü% f¡k°5¿¹ÈÑ9JÑ3K×LÓLØ&*šGó 9ó 4ñ ÷ ˆ'ð ˜(Ð"Ð"ùóo @ùÒBas
   †I«Ic                   óJ   • \ rS rSrSS\S\S\4S jjrSS\S\\	   4S	 jjr
S
rg)ÚGrammarAnalyzeréŒ   Úparser_confÚdebugÚstrictc                 óH  • X l         X0l        UR                   Vs0 s H0  nU[        [	        SU-   5      [	        U5      [        S5      /5      _M2     nnUR                  [        UR                  5       5      -   n[        US 5      U l
        [        U5      [        [        U5      5      :w  aY  [        U5      R                  5        VVs/ s H  u  pxUS:”  d  M  UPM     n	nn[        SSR!                  S U	 5       5      -  5      eU HF  n
U
R"                   H3  nUR$                  (       a  M  X°R                  ;   a  M'  [        SU-  5      e   MH     UR                  5        VVs0 s H   u  pLX@R'                  UR(                  5      _M"     snnU l        UR                  5        VVs0 s H/  u  pLU[-        [/        U[        UR"                  5      5      15      _M1     snnU l        UR                   Vs0 s H&  nU[        [	        SU-   5      [	        U5      /5      _M(     nnUR                  [        UR                  5       5      -   n[        U5      [        [        U5      5      :X  d   e[        US	 5      U l        UR                  5        VVs0 s HA  u  pLU[5        [/        US
5      /U R'                  UR(                  U R2                  5      5      _MC     snnU l        [9        U5      u  U l        U l        U l        g s  snf s  snnf s  snnf s  snnf s  snf s  snnf )Nz$root_z$ENDc                 ó   • U R                   $ r   ©r)   ©r`   s    r    Ú<lambda>Ú*GrammarAnalyzer.__init__.<locals>.<lambda>•   s   € ÐXY×X`ÒX`r#   r7   zRules defined twice: %sr]   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr   )Ústr)Ú.0rr   s     r    Ú	<genexpr>Ú+GrammarAnalyzer.__init__.<locals>.<genexpr>™   s   é € ÐD`ÒU_ÐPQÄSÈÇVÀVÒU_ùs   ‚zUsing an undefined rule: %sc                 ó   • U R                   $ r   r}   r~   s    r    r   r€   ¬   s   € ÀÇÂr#   r   ) ry   rz   Ústartr   r   r   rl   ÚlistÚvaluesr   Úrules_by_originr   rY   r   Úitemsr   r*   r   ri   Úexpand_ruler)   Ústart_statesr   r   Ú
end_statesÚlr0_rules_by_originrR   Úlr0_start_statesrt   ro   rp   rn   )r   rx   ry   rz   r‡   Ú
root_rulesrl   ÚitemÚcountÚ
duplicatesr`   r5   Ú	root_ruleÚlr0_root_rulesÚ	lr0_ruless                  r    r!   ÚGrammarAnalyzer.__init__�   sþ  € ØŒ
ØŒð $/×#4Ò#4ó6Ú#4˜%ð œT¤+¨h¸Ñ.>Ó"?Ä+ÈeÓBTÔV^Ð_eÓVfÐAgÓhÒhÙ#4ð 	ð 6ð ×!Ñ!¤D¨×):Ñ):Ó)<Ó$=Ñ=ˆÜ>FÀuÑN`Ó>aˆÔäˆu‹:œœS ›Z›Ó(Ü29¸%³.×2FÑ2FÔ2HÔVÒ2H¡; 4ÈEÐTUÉIŸ$Ñ2HˆJÑVÜÐ8¸4¿9¹9ÑD`ÑU_ÓD`Ó;`Ñ`ÓaÐaãˆAØ—{”{�ØŸŸ™ s×.BÑ.BÕ'BÜ&Ð'DÀsÑ'JÓKÐKó #ñ ð 6@×5EÑ5EÔ5GôIÚ5GÑ!1 ð #×$4Ñ$4°Y×5EÑ5EÓ$FÒFÙ5GòIˆÔð 4>×3CÑ3CÔ3EôGÚ3EÑ/˜uð !¤%¬°¼CÀ	×@SÑ@SÓ<TÓ)UÐ(VÓ"WÒWÙ3EòGˆŒð )×.Ò.ó0Ú.�Eð  ¤¤k°(¸UÑ2BÓ&CÄkÐRWÓFXÐEYÓ!ZÒZÙ.ð 	ð 0ð  ×%Ñ%¬¨^×-BÑ-BÓ-DÓ(EÑEˆ	Ü�9‹~¤¤S¨£^Ó!4Ó4Ð5Ð4ä#+¨IÑ7IÓ#JˆÔ ð )7×(<Ñ(<Ô(>ô!@Ú(>Ñ$�Eð "'¬
´G¸IÀqÓ4IÐ3JÈD×L\ÑL\Ð]f×]mÑ]mÐos÷  pHñ  pHó  MIó  )Jò  "JÙ(>ò!@ˆÔô 2@ÀÓ1FÑ.ˆŒ
�D”K ¥ùòC6ùó WùóIùóGùò0ùó!@s*   ›7LÃ	LÃLÅ%'LÆ(6LÇ5-LÊALNÚsource_ruler0   c                 ó¬   ^^• Tc  U R                   m[        [           " 5       mS[        S[        [           4UU4S jjn[        U/U5       H  nM     T$ )z4Returns all init_ptrs accessible by rule (recursive)r   r0   c              3   ó*  >#   • U R                   (       a   U 5       eTU     Hm  n[        US5      nTR                  U5        UR                  (       d  M3  UR                  nUR                   (       a  MR  [        U[        5      (       d   eUv •  Mo     g 7f)Nr   )ri   r   Úaddr   r3   r   r   )r   r`   Úinit_ptrÚnew_rÚ	init_ptrsrŠ   s       €€r    Ú_expand_ruleÚ1GrammarAnalyzer.expand_rule.<locals>._expand_rule»   sq   øé € Ø—|—|Ð) TÓ)Ð#à$ TÔ*�Ü" 1 a›=�Ø—‘˜hÔ'à—;—;‘;Ø$ŸM™M�EØ Ÿ=Ÿ=™=Ü)¨%´×=Ñ=Ð=Ð=Ø#œò +ùs   ƒABÁBÁ3 B)rŠ   r   r   r   r   r   )r   r™   rŠ   r    Ú_rŸ   s     `  @r    rŒ   ÚGrammarAnalyzer.expand_rule´   s`   ù€ ð Ñ"Ø"×2Ñ2ˆOäœwÒ'Ó)ˆ	ð	$œ{ð 	$¬x¼Ñ/D÷ 	$ð 	$ô �k�] LÖ1ˆAÙñ 2ð Ðr#   )
ro   rp   rn   ry   rŽ   r�   r�   rŠ   r�   rz   )FFr   )rF   rG   rH   rI   r   rN   r!   r   r   r   rŒ   rO   rP   r#   r    rv   rv   Œ   s?   † ñ%G Jð %G°tð %GÈ4õ %GñN {ð ÈZÐX_ÑM`÷ ð r#   rv   N)Ú__doc__Úcollectionsr   r   Útypingr   r   r   r   r	   Úutilsr   r   r   r   Ú
exceptionsr   Úgrammarr   r   r   r   Úcommonr   r   rb   rR   rg   rt   rv   rP   r#   r    Ú<module>r«      s[   ðÙ ,ç ,ß 7Õ 7ç 4Ó 4Ý %ß 9Ó 9Ý ÷"-ñ "-ðJ 	�'Ñ€÷uñ uò$ò;#÷|?ò ?r#   