ó
    ÖÁ“iÙ  ã                   ó¬   • S r SSKJrJrJrJrJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SSKJr  S	S
KJr  S	SKJr  \(       a  SSKJrJr   " S S\5      rg)a¼  This module implements an Earley parser with a dynamic lexer

The core Earley algorithm used here is based on Elizabeth Scott's implementation, here:
    https://www.sciencedirect.com/science/article/pii/S1571066108001497

That is probably the best reference for understanding the algorithm here.

The Earley parser outputs an SPPF-tree as per that document. The SPPF tree format
is better documented here:
    http://www.bramvandersanden.com/post/2014/06/shared-packed-parse-forest/

Instead of running a lexer beforehand, or using a costy char-by-char method, this parser
uses regular expressions by necessity, achieving high-performance while maintaining all of
Earley's power in parsing any CFG.
é    )ÚTYPE_CHECKINGÚCallableÚOptionalÚListÚAny)Údefaultdicté   )ÚTree)ÚUnexpectedCharacters)ÚToken)ÚTerminalé   )ÚParser)Ú	TokenNode)Ú	LexerConfÚ
ParserConfc                   ój   • \ rS rSrSSS\S4SSSSS\S	\S
\S\S\\\\	/\
4      S\4S jjrSS jrSrg)r   é   TFÚ
lexer_confr   Úparser_confr   Úterm_matcherÚresolve_ambiguityÚcomplete_lexÚdebugÚ
tree_classÚordered_setsc	           
      ó¤   • [         R                  " XX#UXgU5        UR                   V	s/ s H  n	[        U	5      PM     sn	U l        XPl        g s  sn	f ©N)Ú
BaseParserÚ__init__Úignorer   r   )
Úselfr   r   r   r   r   r   r   r   Úts
             ÚQ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/lark/parsers/xearley.pyr    ÚParser.__init__   sK   € ô 	×Ò˜D¨kÐIZØ!¨|ô	=à,6×,=Ò,=Ó>Ò,= q”x –{Ñ,=Ñ>ˆŒØ(Õùò ?s   ©ANc           
      ó~  ^ ^^^^	^
^^^^• UU	U
U UUUUUU4
S jn[        [        5      m	T R                  m
T R                  R                  m0 /mSmSmSn0 nT H9  nT R                  XcTTU5        U" Xc5      u  p7US:X  a  TS-  mSmOTS-  mUS-  nM;     T R                  XcTTU5        U[        T5      S-
  :X  d   eU$ )Nc                 óú  >
• 0 nTR                  U5       GH/  nT" UR                  TU 5      nU(       d  M!  [        UR                  R                  UR	                  S5      U TT5      nTUR                  5          R                  X0U45        TR                  (       d  MŠ  UR	                  S5      n[        S[        U5      5       H{  nT" UR                  USU*  5      nU(       d  M#  [        UR                  R                  UR	                  S5      U TT5      nTXR                  5       -      R                  X0U45        M}     GM2     TR                   H§  nT" UTU 5      nU(       d  M  TUR                  5          R                  U Vs/ s H  o3U S4PM	     sn5        TUR                  5          R                  TU     Vs/ s H+  o3R                  (       d  M  UR                  T:X  d  M'  X0S4PM-     sn5        M©     TR                  5       n	TR                  5       n
TR                  U
5        TR                  0 5        TU S-       GH   u  p;nUbÕ  TUl        TS-   Ul        U S-   Ul        UR#                  5       nUR                  UR$                  U S-   4n['        UTUR(                     5      nXâ;   a  X.   OUR+                  UTR,                  " U6 5      Ul        UR.                  R1                  UR                  UR2                  UR$                  UR.                  U5        OUnUR                  TR4                  ;   a  U	R7                  U5        GM  U
R7                  U5        GM#     TU S-   	 U
(       do  T(       dh  U	(       da  [9        [;        US S95      n[=        TU TTU Vs1 s H  o3R                  R                  iM     sn[?        U5      [A        S U 5       5      US9eX’4$ s  snf s  snf s  snf )a@  The core Earley Scanner.

This is a custom implementation of the scanner that uses the
Lark lexer to match tokens. The scan list is built by the
Earley predictor, based on the previously completed tokens.
This ensures that at each phase of the parse we have a custom
lexer context, allowing for more complex ambiguities.r   r   Nc                 óB   • U R                   R                  R                  $ r   )ÚruleÚoriginÚname©Úkeys    r$   Ú<lambda>Ú-Parser._parse.<locals>.scan.<locals>.<lambda>|   s   € ÈÏÉÏÉ×H\ÒH\ó    r,   c              3   ó8   #   • U  H  oR                   v •  M     g 7fr   )Ús)Ú.0Úis     r$   Ú	<genexpr>Ú.Parser._parse.<locals>.scan.<locals>.<genexpr>~   s   é € ÐH^ÒV]ÐQRÏÎÒV]ùs   ‚)ÚstateÚconsidered_rules)!ÚSetÚexpectr   r+   ÚgroupÚendÚappendr   ÚrangeÚlenr!   ÚextendÚis_completer2   Úend_lineÚ
end_columnÚend_posÚadvanceÚstartr   ÚtypeÚ
setdefaultÚ
SymbolNodeÚnodeÚ
add_familyr)   Ú	TERMINALSÚaddÚlistÚsortedr   ÚsetÚ	frozenset)r4   Úto_scanÚ
node_cacheÚitemÚmr#   r2   ÚjÚxÚnext_to_scanÚnext_setrF   ÚtokenÚnew_itemÚlabelÚ
token_noder8   ÚcolumnsÚdelayed_matchesÚmatchr"   Ústart_symbolÚstreamÚ	terminalsÚtext_columnÚ	text_lineÚtransitivess                    €€€€€€€€€€r$   ÚscanÚParser._parse.<locals>.scan)   s‹  ø€ ð ˆJð Ÿ™ ×)�Ù˜$Ÿ+™+ v¨qÓ1�ß�1Ü˜dŸk™k×.Ñ.°·±¸³
¸A¸yÈ+ÓV�AØ# A§E¡E£GÑ,×3Ñ3°d¸q°\ÔCà×(×(Ñ(ØŸG™G A›J˜Ü!& q¬#¨a«&Ö!1˜AÙ % d§k¡k°1°S°q°b°6Ó :˜Aß ˜qÜ$)¨$¯+©+×*:Ñ*:¸A¿G¹GÀA»JÈÈ9ÐVaÓ$b Ø /°·%±%³'±	Ñ :× AÑ AÀDÈQÀ<Ö Qô	 "2ñ *ð. —[”[�Ù˜!˜V QÓ'�ß�1à# A§E¡E£GÑ,×3Ñ3ÑQXÓ4ZÒQXÈ¸A¸t³_ÑQXÑ4ZÔ[ð $ A§E¡E£GÑ,×3Ñ3ÐQXÐYZÒQ[ó  5LÒQ[È×_oÕ_o³_Ðtx×tzÑtzð  Kñ  uK³_°d¸t³_ÑQ[ñ  5Lö  Mñ !ð  Ÿ8™8›:ˆLØ—x‘x“zˆHØ�N‰N˜8Ô$Ø×Ñ˜rÔ"ð '6°a¸±cÕ&:Ñ"�˜UØÑ$Ø%.�E”NØ'2°Q¡�EÔ$Ø$%¨¡E�E”Mà#Ÿ|™|›~�HØ%ŸZ™Z¨¯©¸¸Q¹Ð?�EÜ!*¨5°)¸E¿J¹JÑ2GÓ!H�JØ9>Ó9L JÒ$5ÐR\×RgÑRgÐhmÐos×o~Òo~ð  AFð  pGó  SH�H”MØ—M‘M×,Ñ,¨X¯Z©Z¸¿¹ÀHÇNÁNÐTX×T]ÑT]Ð_iÕjà#�Hà—?‘? d§n¡nÓ4à ×$Ñ$ X×.ð —L‘L ×*ñ' ';ð*    !¡Ð$æ¦O¾LÜ#'¬¨wÑ<\Ñ(]Ó#^Ð Ü*¨6°1°iÀÑlsÓNtÒlsÐdhÏ{É{×O_ÔO_ÑlsÑNtÜ+.¨w«<¼yÑH^ÑV]ÓH^Ó?^Ø<Lñ-ð -ð
  Ð+Ð+ùò[ 5[ùò 5LùòJ Ous   ÆO.
ÇO3
ÇO3
Ç-O3
Î+O8r   r   Ú
)r   rN   r   r   Úterminals_by_nameÚpredict_and_completer?   )r"   rb   r^   rR   ra   rg   r4   rS   rZ   r_   r`   rc   rd   re   rf   s   ``` `    @@@@@@r$   Ú_parseÚParser._parse'   sÜ   ÿù€ ÷Y	,ö Y	,ôx &¤dÓ+ˆØ×!Ñ!ˆØ—O‘O×5Ñ5ˆ	ð �dˆàˆ	Øˆð ˆØˆ
ÛˆEØ×%Ñ% a°'¸;È
ÔSá"& qÓ"2ÑˆGà˜‹}Ø˜Q‘�	Ø‘à˜qÑ �Ø�‰FŠAñ ð 	×!Ñ! !¨g°{ÀJÔOð ”C˜“L ‘NÓ"Ð"Ð"Øˆr0   )r   r!   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r
   r   Úboolr   Ústrr   r   r    rl   Ú__static_attributes__© r0   r$   r   r      sl   † à)-À%ÐUZØBFÐ[_ñ) ;ð )¸\ð )ÐYað )Ø$(ð)Ø=Að)ØPTð)à% h°°T¨{¸CÐ/?Ñ&@ÑAð)àVZõ)÷r0   r   N)Ú__doc__Útypingr   r   r   r   r   Úcollectionsr   Útreer
   Ú
exceptionsr   Úlexerr   Úgrammarr   Úearleyr   r   Úearley_forestr   Úcommonr   r   ru   r0   r$   Ú<module>r€      s<   ðñ÷  @Õ ?Ý #å Ý -Ý Ý Ý (Ý $æß.ôHˆZõ Hr0   