ó
    ÖÁ“i…8  ã                   óJ  • S r SSKJr  SSKJrJr  SSKJr  SSKJ	r	  SSK
Jr  SSK
JrJr  SS	KJrJr  SS
KJr   " S S5      r " S S5      rS r " S S5      r " S S\5      r " S S\5      rS rS\\   4S jr " S S5      rS r " S S5      rS rS r  " S  S!5      r!g")#zLProvides functions for the automatic building and shaping of the parse-tree.é    )ÚListé   )ÚGrammarErrorÚConfigurationError)ÚToken)ÚTree)ÚTransformer_InPlace)Ú_vargs_metaÚ_vargs_meta_inline)ÚpartialÚwraps)Úproductc                   ó    • \ rS rSrS rS rSrg)ÚExpandSingleChildé   c                 ó   • Xl         g ©N©Únode_builder)Úselfr   s     ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/lark/parse_tree_builder.pyÚ__init__ÚExpandSingleChild.__init__   s   € Ø(Õó    c                 óL   • [        U5      S:X  a  US   $ U R                  U5      $ )Nr   r   )Úlenr   )r   Úchildrens     r   Ú__call__ÚExpandSingleChild.__call__   s)   € Üˆx‹=˜AÓØ˜A‘;Ðà×$Ñ$ XÓ.Ð.r   r   N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   Ú__static_attributes__© r   r   r   r      s   † ò)õ/r   r   c                   ó*   • \ rS rSrSS jrS rS rSrg)ÚPropagatePositionsé   Nc                 ó   • Xl         X l        g r   ©r   Únode_filter)r   r   r,   s      r   r   ÚPropagatePositions.__init__   s   € Ø(ÔØ&Õr   c                 óÎ  • U R                  U5      n[        U[        5      (       Ga½  UR                  nU R	                  U5      nUbÀ  [        US5      (       d[  [        USUR                  5      Ul        [        USUR                  5      Ul        [        USUR                  5      Ul	        SUl
        [        USUR                  5      Ul        [        USUR                  5      Ul        [        USUR                  5      Ul        U R	                  [        U5      5      nUbÀ  [        US5      (       d[  [        USUR                  5      Ul        [        USUR                   5      Ul        [        US	UR"                  5      Ul        SUl
        [        USUR                  5      Ul        [        USUR                   5      Ul        [        US	UR"                  5      Ul        U$ )
NÚlineÚcontainer_lineÚcontainer_columnÚcontainer_start_posFÚend_lineÚcontainer_end_lineÚcontainer_end_columnÚcontainer_end_pos)r   Ú
isinstancer   ÚmetaÚ_pp_get_metaÚhasattrÚgetattrr/   ÚcolumnÚ	start_posÚemptyr0   r1   r2   Úreversedr3   Ú
end_columnÚend_posr4   r5   r6   )r   r   ÚresÚres_metaÚ
first_metaÚ	last_metas         r   r   ÚPropagatePositions.__call__!   s­  € Ø×Ñ Ó)ˆä�cœ4× Ò ð —x‘xˆHà×*Ñ*¨8Ó4ˆJØÑ%Ü˜x¨×0Ñ0ä$+¨JÐ8HÈ*Ï/É/Ó$Z�H”MÜ&-¨jÐ:LÈj×N_ÑN_Ó&`�H”OÜ)0°Ð=RÐT^×ThÑThÓ)i�HÔ&Ø%*�H”Nä*1°*Ð>NÐPZ×P_ÑP_Ó*`�Ô'Ü,3°JÐ@RÐT^×TeÑTeÓ,f�Ô)Ü/6°zÐCXÐZd×ZnÑZnÓ/o�Ô,à×)Ñ)¬(°8Ó*<Ó=ˆIØÑ$Ü˜x¨×4Ñ4Ü(/°	Ð;OÐQZ×QcÑQcÓ(d�HÔ%Ü*1°)Ð=SÐU^×UiÑUiÓ*j�HÔ'Ü'.¨yÐ:MÈy×O`ÑO`Ó'a�HÔ$Ø%*�H”Nä.5°iÐAUÐW`×WiÑWiÓ.j�Ô+Ü07¸	ÐCYÐ[d×[oÑ[oÓ0p�Ô-Ü-4°YÐ@SÐU^×UfÑUfÓ-g�Ô*àˆ
r   c                 óX  • U H¤  nU R                   b  U R                  U5      (       d  M(  [        U[        5      (       a+  UR                  R                  (       d  UR                  s  $ Mh  [        U[
        5      (       a  Us  $ [        US5      (       d  M”  UR                  5       s  $    g )NÚ__lark_meta__)r,   r7   r   r8   r>   r   r:   rH   )r   r   Úcs      r   r9   ÚPropagatePositions._pp_get_metaG   s}   € ÛˆAØ×ÑÑ+°D×4DÑ4DÀQ×4GÑ4GÙÜ˜!œT×"Ñ"Ø—v‘v—|—|ØŸ6™6’Mñ $ä˜Aœu×%Ñ%Ø’Ü˜˜O×,Ó,Ø—‘Ó(Ò(ò r   r+   r   )r!   r"   r#   r$   r   r   r9   r%   r&   r   r   r(   r(      s   † ô'ò$õL
)r   r(   c                 ó|   • [        U 5      (       a  [        [        U S9$ U SL a  [        $ U SL a  g [        SU -  5      e)N)r,   TFz*Invalid option for propagate_positions: %r)Úcallabler   r(   r   )Úoptions    r   Úmake_propagate_positionsrN   S   sC   € Ü�×ÑÜÔ)°vÑ>Ð>Ø	�4ŠÜ!Ð!Ø	�5ŠØä
ÐIÈFÑRÓ
SÐSr   c                   ó    • \ rS rSrS rS rSrg)ÚChildFilteré^   c                 ó(   • X0l         Xl        X l        g r   )r   Ú
to_includeÚappend_none)r   rS   rT   r   s       r   r   ÚChildFilter.__init___   s   € Ø(ÔØ$ŒØ&Õr   c                 ó  • / nU R                    HC  u  p4nU(       a	  US /U-  -  nU(       a  X!U   R                  -  nM0  UR                  X   5        ME     U R                  (       a  US /U R                  -  -  nU R	                  U5      $ r   ©rS   r   ÚappendrT   r   ©r   r   ÚfilteredÚiÚ	to_expandÚadd_nones         r   r   ÚChildFilter.__call__d   s„   € Øˆà&*§o¤oÑ"ˆA˜(ÞØ˜T˜F XÑ-Ñ-�ÞØ Q™K×0Ñ0Ñ0’à—‘ ¡Ö,ñ '6ð ××Ø˜˜ ×!1Ñ!1Ñ1Ñ1ˆHà× Ñ  Ó*Ð*r   )rT   r   rS   Nr    r&   r   r   rP   rP   ^   s   † ò'õ
+r   rP   c                   ó   • \ rS rSrSrS rSrg)ÚChildFilterLALRéu   ú`Optimized childfilter for LALR (assumes no duplication in parse tree, so it's safe to change it)c                 óD  • / nU R                    HZ  u  p4nU(       a	  US /U-  -  nU(       a*  U(       a  X!U   R                  -  nM7  X   R                  nMG  UR                  X   5        M\     U R                  (       a  US /U R                  -  -  nU R	                  U5      $ r   rW   rY   s         r   r   ÚChildFilterLALR.__call__x   s”   € ØˆØ&*§o¤oÑ"ˆA˜(ÞØ˜T˜F XÑ-Ñ-�ÞÞØ¨¡× 4Ñ 4Ñ4’Hà'™{×3Ñ3’Hà—‘ ¡Ö,ñ '6ð ××Ø˜˜ ×!1Ñ!1Ñ1Ñ1ˆHà× Ñ  Ó*Ð*r   r&   N)r!   r"   r#   r$   Ú__doc__r   r%   r&   r   r   r`   r`   u   s
   † Ùjõ+r   r`   c                   ó$   • \ rS rSrSrS rS rSrg)ÚChildFilterLALR_NoPlaceholdersé‹   rb   c                 ó   • X l         Xl        g r   ©r   rS   )r   rS   r   s      r   r   Ú'ChildFilterLALR_NoPlaceholders.__init__�   ó   € Ø(ÔØ$�r   c                 óÚ   • / nU R                    HI  u  p4U(       a*  U(       a  X!U   R                  -  nM&  X   R                  nM6  UR                  X   5        MK     U R                  U5      $ r   )rS   r   rX   r   )r   r   rZ   r[   r\   s        r   r   Ú'ChildFilterLALR_NoPlaceholders.__call__‘   s]   € ØˆØ ŸOœO‰LˆAÞÞØ¨¡× 4Ñ 4Ñ4’Hà'™{×3Ñ3’Hà—‘ ¡Ö,ñ ,ð × Ñ  Ó*Ð*r   rj   N©r!   r"   r#   r$   re   r   r   r%   r&   r   r   rg   rg   ‹   s   † Ùfò%õ
+r   rg   c                 óh   • U R                   (       + =(       a    U R                  R                  S5      $ )NÚ_)Úis_termÚnameÚ
startswith)Úsyms    r   Ú_should_expandrv   ž   s"   € Ø�{‰{Œ?×7˜sŸx™x×2Ñ2°3Ó7Ð7r   Ú_empty_indicesc                 ó~  • U(       a�  UR                  S5      [        U 5      :X  d   eSR                  S U 5       5      nUR                  S5       Vs/ s H  n[        U5      PM     nn[        U5      [        U 5      S-   :X  d   U[        U 5      45       eOS/[        U 5      S-   -  n/ nSn[	        U 5       HV  u  pšX†U	   -  nU(       d$  U
R
                  (       a  U
R                  (       a  M7  UR                  U	[        U
5      U45        SnMX     X†[        U 5         -  nU(       d/  [        U5      [        U 5      :  d  [        S U 5       5      (       aY  U(       d  U(       a"  [        U(       a  [        Xx5      $ [        Xx5      $ [        [        U V	VVs/ s H	  u  p›oÉU4PM     snnn	5      $ g s  snf s  snnn	f )NFÚ c              3   óJ   #   • U  H  n[        [        U5      5      v •  M     g 7fr   )ÚstrÚint)Ú.0Úbs     r   Ú	<genexpr>Ú,maybe_create_child_filter.<locals>.<genexpr>¦   s   é € Ð8ª A”Cœ˜A›—K�Kªùs   ‚!#Ú0r   r   c              3   ó*   #   • U  H	  u  po2v •  M     g 7fr   r&   )r}   r[   r\   rq   s       r   r   r€   ¶   s   é € Ð@lÒakÉ~ÈqÐ\]ÄÒakùs   ‚)Úcountr   ÚjoinÚsplitÚ	enumeraterr   Ú
filter_outrX   rv   Úanyr   rP   r`   rg   )Ú	expansionÚkeep_all_tokensÚ	ambiguousrw   ÚsÚonesÚempty_indicesrS   Únones_to_addr[   ru   Úxrq   s                r   Úmaybe_create_child_filterr‘   ¢   sz  € æØ×#Ñ# EÓ*¬c°)«nÓ<Ð<Ð<Ø�G‰GÑ8©Ó8Ó8ˆØ/0¯w©w°s¬|Ó<ª| tœ˜Tž©|ˆÐ<Ü�=Ó!¤S¨£^°AÑ%5Ó5ÐV¸ÄsÈ9Ã~Ð7VÓVÑ5à˜œs 9›~¨aÑ/Ñ0ˆà€JØ€LÜ˜IÖ&‰ˆØ aÑ(Ñ(ˆÞ 3§;§;°3·>·>±>Ø×Ñ˜q¤.°Ó"5°|ÐDÔEØŠLñ	 'ð ¤# i£.Ñ1Ñ1€Læœ˜Z›¬3¨y«>Ó9¼SÑ@lÑakÓ@l×=lÑ=lÞžYÜ®)œ;È*ÓcÐc¼È*ÓcÐcô Ô9ÑPZÕ;[ÒPZÁuÀqÈ1À»FÑPZÓ;[Ó\Ð\ð >mùò =ùô( <\s   ÁF3ÆF8c                   ó$   • \ rS rSrSrS rS rSrg)ÚAmbiguousExpanderé¾   ax  Deal with the case where we're expanding children ('_rule') into a parent but the children
are ambiguous. i.e. (parent->_ambig->_expand_this_rule). In this case, make the parent itself
ambiguous with as many copies as there are ambiguous children, and then copy the ambiguous children
into the right parents in the right places, essentially shifting the ambiguity up the tree.c                 ó(   • X0l         X l        Xl        g r   )r   Ú
tree_classr\   )r   r\   r–   r   s       r   r   ÚAmbiguousExpander.__init__Ã   s   € Ø(ÔØ$ŒØ"�r   c                 óÜ  • S n/ n[        U5       HE  u  pEU" U5      (       d  M  X@R                  ;   a  UR                  U5        UR                  S5        MG     U(       d  U R	                  U5      $ [        U5       VVs/ s H  u  pEXC;   a  UR
                  OU4PM     nnnU R                  S[        U6  Vs/ s H  opR	                  [        U5      5      PM     sn5      $ s  snnf s  snf )Nc                 óF   • [        U S5      =(       a    U R                  S:H  $ )NÚdataÚ_ambig©r:   rš   )Úts    r   Ú_is_ambig_treeÚ2AmbiguousExpander.__call__.<locals>._is_ambig_treeÉ   s   € Ü˜1˜fÓ%×<¨!¯&©&°HÑ*<Ð<r   r›   )	r†   r\   rX   Úexpand_kids_by_datar   r   r–   r   Úlist)r   r   rž   r‹   r[   ÚchildÚexpandÚfs           r   r   ÚAmbiguousExpander.__call__È   sÑ   € ò	=ð ˆ	Ü! (Ö+‰HˆAÙ˜e×$Ó$ØŸ™Ó&Ø×$Ñ$ QÔ'à×)Ñ)¨(Ö3ñ ,ö Ø×$Ñ$ XÓ.Ð.äQZÐ[cÔQdÔeÒQdÁXÀQ A£N�%—.’.¸¸Ò@ÑQdˆÑeØ�‰˜xÌgÐW]ÑN^Ó)_ÒN^È×*;Ñ*;¼DÀ»GÖ*DÑN^Ñ)_Ó`Ð`ùó fùÚ)_s   Â  C#Â9#C)
)r   r\   r–   Nro   r&   r   r   r“   r“   ¾   s   † ñfò#õ
ar   r“   c                 óö   • [        U5       VVs/ s HD  u  p4U(       d6  UR                  (       a  UR                  (       a  M0  [        U5      (       d  MB  UPMF     nnnU(       a  [	        [
        XP5      $ g s  snnf r   )r†   rr   r‡   rv   r   r“   )r–   r‰   rŠ   r[   ru   r\   s         r   Úmaybe_create_ambiguous_expanderr§   ß   sa   € Ü!*¨9Ô!5ô iÒ!5‘v�qÞ#¨c¯k¯k¸c¿n½nó ÜSaÐbe×Sf÷ Ñ!5€Iñ iæÜÔ(¨)Ó@Ð@ð ùóis   �/A5ÁA5ÁA5c                   ó$   • \ rS rSrSrS rS rSrg)ÚAmbiguousIntermediateExpanderéæ   aí  
Propagate ambiguous intermediate nodes and their derivations up to the
current rule.

In general, converts

rule
  _iambig
    _inter
      someChildren1
      ...
    _inter
      someChildren2
      ...
  someChildren3
  ...

to

_ambig
  rule
    someChildren1
    ...
    someChildren3
    ...
  rule
    someChildren2
    ...
    someChildren3
    ...
  rule
    childrenFromNestedIambigs
    ...
    someChildren3
    ...
  ...

propagating up any nested '_iambig' nodes along the way.
c                 ó   • X l         Xl        g r   ©r   r–   )r   r–   r   s      r   r   Ú&AmbiguousIntermediateExpander.__init__  rl   r   c                 óâ   ^ ^^• S mUUU 4S jmT" U5      nU(       a=  U Vs/ s H  nT R                  UR                  5      PM      nnT R                  SU5      $ T R                  U5      $ s  snf )Nc                 óF   • [        U S5      =(       a    U R                  S:H  $ )Nrš   Ú_iambigrœ   )r¢   s    r   Ú_is_iambig_treeÚ?AmbiguousIntermediateExpander.__call__.<locals>._is_iambig_tree  s   € Ü˜5 &Ó)×E¨e¯j©j¸IÑ.EÐEr   c                 óT  >• U (       a   T" U S   5      (       a�  U S   n/ nUR                    Hv  nT" UR                   5      nU(       a'  U H  nU=R                   U SS -  sl         M     X$-  nMC  T	R                  SUR                   U SS -   5      nUR                  U5        Mx     U$ gg)zØ
Recursively flatten the derivations of the parent of an '_iambig'
node. Returns a list of '_inter' nodes guaranteed not
to contain any nested '_iambig' nodes, or None if children does
not contain an '_iambig' node.
r   r   NÚ_inter)r   r–   rX   )
r   Úiambig_nodeÚresultÚ
grandchildÚ	collapsedr¢   Únew_treeÚ_collapse_iambigr±   r   s
          €€€r   rº   Ú@AmbiguousIntermediateExpander.__call__.<locals>._collapse_iambig  s¬   ø€ ö ™O¨H°Q©K×8Ñ8Ø& q™k�Ø�Ø"-×"6Ô"6�JÙ 0°×1DÑ1DÓ E�IÞ Û%.˜EØ!ŸNšN¨h°q°r¨lÑ:ŸNñ &/àÑ+šà#'§?¡?°8¸Z×=PÑ=PÐS[Ð\]Ð\^ÐS_Ñ=_Ó#`˜ØŸ™ hÖ/ñ #7ð �ð 9ˆxr   r›   )r   r   r–   )r   r   r¸   rI   Úprocessed_nodesrº   r±   s   `    @@r   r   Ú&AmbiguousIntermediateExpander.__call__  sh   ú€ ò	F÷	ñ0 % XÓ.ˆ	ÞÙFOÓPÂiÀ˜t×0Ñ0°·±Ö<ÁiˆOÐPØ—?‘? 8¨_Ó=Ð=à× Ñ  Ó*Ð*ùò Qs   ¢%A,r¬   Nro   r&   r   r   r©   r©   æ   s   † ñ&òP%õ!+r   r©   c                 ó0   ^ • [        T 5      U 4S j5       nU$ )Nc                 ó@   >• [        TR                  U 5      nT" U5      $ r   )r   r!   )r   ÚtreeÚfuncs     €r   r¤   Úinplace_transformer.<locals>.f9  s   ø€ ô �D—M‘M 8Ó,ˆÙ�D‹zÐr   )r   )rÁ   r¤   s   ` r   Úinplace_transformerrÃ   8  s    ø€ Ü
ˆ4ƒ[ôó ðð €Hr   c                 ór   ^ ^^• T[         L d	  T[        L a  [        S5      e[        T 5      U UU4S j5       nU$ )NziMeta args not supported for internal transformer; use YourTransformer().transform(parser.parse()) insteadc                 ó   >• T" TTU S 5      $ r   r&   )r   rÁ   rs   Úwrappers    €€€r   r¤   Úapply_visit_wrapper.<locals>.fE  s   ø€ á�t˜T 8¨TÓ2Ð2r   )r
   r   ÚNotImplementedErrorr   )rÁ   rs   rÆ   r¤   s   ``` r   Úapply_visit_wrapperrÉ   A  sC   ú€ Ø”+Ò Ô,>Ò!>Ü!ð  #Nó  Oð  	Oä
ˆ4ƒ[ö3ó ð3à€Hr   c                   ó.   • \ rS rSrSS jrS rSS jrSrg)	ÚParseTreeBuilderiK  c                 ór   • X l         X0l        X@l        XPl        [	        U R                  U5      5      U l        g r   )r–   Úpropagate_positionsr‹   Úmaybe_placeholdersr¡   Ú_init_buildersÚrule_builders)r   Úrulesr–   rÍ   r‹   rÎ   s         r   r   ÚParseTreeBuilder.__init__L  s0   € Ø$ŒØ#6Ô Ø"ŒØ"4Ôä! $×"5Ñ"5°eÓ"<Ó=ˆÕr   c              #   óN  #   • [        U R                  5      nU GH  nUR                  nUR                  nUR                  n[        [        S U=(       a    UR                  (       + =(       a    [        [        UR                  XPR                  U R                  (       a  UR                  OS 5      UU R                  =(       a!    [        U R                  UR                  U5      U R                  =(       a    [!        ["        U R                  5      /5      5      nX74v •  GM     g 7fr   )rN   rÍ   ÚoptionsrŠ   Úexpand1r¡   ÚfilterÚaliasr   r‘   r‰   r‹   rÎ   rŽ   r§   r–   r   r©   )r   rÑ   rÍ   ÚrulerÔ   rŠ   Úexpand_single_childÚwrapper_chains           r   rÏ   ÚParseTreeBuilder._init_buildersT  sè   é € Ü6°t×7OÑ7OÓPÐäˆDØ—l‘lˆGØ%×5Ñ5ˆOØ")§/¡/Ðä ¤¨Ø$×7¨T¯Z©Z¬×NÔ=NÜ)¨$¯.©.¸/Ï>É>Ðtx÷  uL÷  uLÐ[b×[pÒ[pð  RVó  WØ#Ø—‘×tÔ#BÀ4Ç?Á?ÐTX×TbÑTbÐdsÓ#tØ—‘×Z¤7Ô+HÈ$Ï/É/Ó#Zð/ó "ó ˆMð Ð%Õ%ò ùs   ‚D#D%Nc                 ó,  ^
• 0 n[        USS 5      m
T
(       a  U
4S jnOU R                  nU R                   H¾  u  pEUR                  =(       d3    UR                  R
                  =(       d    UR                  R                  n [        X5      n[        USS 5      nUb  [        XvU5      nO [        U[        5      (       a  [        U5      nU H  n	U	" U5      nM     XB;   a  [        SU< S35      eXrU'   MÀ     U$ ! [         a    [        X65      n NGf = f)NÚ__default__c                 ó   >• T" XS 5      $ r   r&   )rš   r   Údefault_handlers     €r   Údefault_callbackÚ:ParseTreeBuilder.create_callback.<locals>.default_callbackk  s   ø€ Ù& t°tÓ<Ð<r   Úvisit_wrapperzRule 'z' already exists)r;   r–   rÐ   r×   rÔ   Útemplate_sourceÚoriginrs   rÉ   r7   r	   rÃ   ÚAttributeErrorr   r   )r   ÚtransformerÚ	callbacksrà   rØ   rÚ   Úuser_callback_namer¤   rÆ   Úwrß   s             @r   Úcreate_callbackÚ ParseTreeBuilder.create_callbackf  s  ø€ Øˆ	ä! +¨}¸dÓCˆÞö=ð  $Ÿ™Ðà#'×#5Ô#5ÑˆDà!%§¡×!_¨t¯|©|×/KÑ/K×!_ÈtÏ{É{×O_ÑO_ÐðBÜ˜KÓ<�Ü! ! _°dÓ;�ØÑ&Ü+¨AÀ7ÓK‘AÜ Ô-@×AÑAÜ+¨AÓ.�Aó #�Ù�a“D’ñ #ð Ó Ý"ÃÐ#GÓHÐHà�d‹Oñ' $6ð* Ðøô "ó BÜÐ,ÓA’ðBús   Â'C;Â+ C;Ã;DÄD)r‹   rÎ   rÍ   rÐ   r–   )FFFr   )r!   r"   r#   r$   r   rÏ   rê   r%   r&   r   r   rË   rË   K  s   † ô>ò&÷$r   rË   N)"re   Útypingr   Ú
exceptionsr   r   Úlexerr   rÀ   r   Úvisitorsr	   r
   r   Ú	functoolsr   r   Ú	itertoolsr   r   r(   rN   rP   r`   rg   rv   Úboolr‘   r“   r§   r©   rÃ   rÉ   rË   r&   r   r   Ú<module>ró      s­   ðÙ Rå ç 8Ý Ý Ý )ß 5÷ %Ý ÷/ñ /÷5)ñ 5)ònT÷+ñ +ô.+�kô +ô,+ [ô +ò&8ð]ÐUYÐZ^ÑU_ô ]÷8añ aòBA÷N+ñ N+òdò÷:ò :r   