Ë
    #´˜j6  ã                   óŒ   — d dl mZmZmZ  G d„ dej                  «      Z G d„ de«      Z G d„ de«      Z G d„ d	e«      Z	dd
„Z
y)é   )ÚgrammarÚtokenÚtokenizec                   ó   — e Zd Zy)ÚPgenGrammarN)Ú__name__Ú
__module__Ú__qualname__© ó    ú$lib/python3.12/lib2to3/pgen2/pgen.pyr   r      s   „ Ør   r   c                   ó|   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zy)ÚParserGeneratorNc                 ó<  — d }|€t        |d¬«      }|j                  }|| _        || _        t	        j
                  |j                  «      | _        | j                  «        | j                  «       \  | _
        | _        |� |«        i | _        | j                  «        y )Nzutf-8)Úencoding)ÚopenÚcloseÚfilenameÚstreamr   Úgenerate_tokensÚreadlineÚ	generatorÚgettokenÚparseÚdfasÚstartsymbolÚfirstÚaddfirstsets)Úselfr   r   Úclose_streams       r   Ú__init__zParserGenerator.__init__   s�   € ØˆØˆ>Ü˜(¨WÔ5ˆFØ!Ÿ<™<ˆLØ ˆŒØˆŒÜ!×1Ñ1°&·/±/ÓBˆŒØ�‰ŒØ&*§j¡j£lÑ#ˆŒ	�4Ô#ØÐ#ÙŒNØˆŒ
Ø×ÑÕr   c           	      ó´  — t        «       }t        | j                  j                  «       «      }|j	                  «        |j                  | j                  «       |j                  d| j                  «       |D ]8  }dt        |j                  «      z   }||j                  |<   ||j                  |<   Œ: |D �]  }| j                  |   }g }|D ]   }g }t        |j                  j                  «       «      D ]7  \  }	}
|j                  | j                  ||	«      |j!                  |
«      f«       Œ9 |j"                  r"|j                  d|j!                  |«      f«       |j                  |«       Œ¢ |j$                  j                  |«       || j'                  ||«      f|j                  |j                  |   <   �Œ |j                  | j                     |_        |S )Né    é   )r   Úlistr   ÚkeysÚsortÚremover   ÚinsertÚlenÚsymbol2numberÚnumber2symbolÚsortedÚarcsÚitemsÚappendÚ
make_labelÚindexÚisfinalÚstatesÚ
make_firstÚstart)r   ÚcÚnamesÚnameÚiÚdfar4   Ústater.   ÚlabelÚnexts              r   Úmake_grammarzParserGenerator.make_grammar   sz  € Ü‹MˆÜ�T—Y‘Y—^‘^Ó%Ó&ˆØ�
‰
ŒØ�‰�T×%Ñ%Ô&Ø�‰�Q˜×(Ñ(Ô)ÛˆDØ”c˜!Ÿ/™/Ó*Ñ*ˆAØ$%ˆA�O‰O˜DÑ!Ø!%ˆA�O‰O˜AÒð ô ˆDØ—)‘)˜D‘/ˆCØˆFÛ�Ø�Ü#)¨%¯*©*×*:Ñ*:Ó*<Ö#=‘K�E˜4Ø—K‘K §¡°°EÓ!:¸C¿I¹IÀd»OÐ LÕMð $>à—=’=Ø—K‘K  C§I¡I¨eÓ$4Ð 5Ô6Ø—‘˜dÕ#ð ð �H‰H�O‰O˜FÔ#Ø-3°T·_±_ÀQÈÓ5MÐ,NˆA�F‰F�1—?‘? 4Ñ(Ó)ð ð —/‘/ $×"2Ñ"2Ñ3ˆŒØˆr   c                 óv   — | j                   |   }i }t        |«      D ]  }| j                  ||«      }d||<   Œ |S ©Nr   )r   r-   r1   )r   r7   r9   Úrawfirstr   r=   Úilabels          r   r5   zParserGenerator.make_first4   sD   € Ø—:‘:˜dÑ#ˆØˆÜ˜HÖ%ˆEØ—_‘_ Q¨Ó.ˆFàˆE�&ŠMð &ð ˆr   c                 óü  — t        |j                  «      }|d   j                  «       rò||j                  v rX||j                  v r|j                  |   S |j                  j                  |j                  |   d f«       ||j                  |<   |S t        t        |d «      }t        |t        «      sJ |«       ‚|t        j                  v sJ |«       ‚||j                  v r|j                  |   S |j                  j                  |d f«       ||j                  |<   |S |d   dv sJ |«       ‚t        |«      }|d   j                  «       rY||j                  v r|j                  |   S |j                  j                  t        j                  |f«       ||j                  |<   |S t        j                   |   }||j                  v r|j                  |   S |j                  j                  |d f«       ||j                  |<   |S )Nr#   )Ú"Ú')r*   ÚlabelsÚisalphar+   Úsymbol2labelr0   Úgetattrr   Ú
isinstanceÚintÚtok_nameÚtokensÚevalÚkeywordsÚNAMEr   Úopmap)r   r7   r=   rC   ÚitokenÚvalues         r   r1   zParserGenerator.make_label=   sÀ  € ä�Q—X‘X“ˆØ�‰8×ÑÔà˜Ÿ™Ñ'à˜AŸN™NÑ*ØŸ>™>¨%Ñ0Ð0à—H‘H—O‘O Q§_¡_°UÑ%;¸TÐ$BÔCØ,2�A—N‘N 5Ñ)Ø!�Mô !¤¨¨tÓ4�Ü! &¬#Ô.Ð5°Ó5Ð.Ø¤§¡Ñ/Ð6°Ó6Ð/Ø˜QŸX™XÑ%ØŸ8™8 FÑ+Ð+à—H‘H—O‘O V¨T NÔ3Ø'-�A—H‘H˜VÑ$Ø!�Mð ˜‘8˜zÑ)Ð0¨5Ó0Ð)Ü˜“KˆEØ�Q‰x×ÑÔ!à˜AŸJ™JÑ&ØŸ:™: eÑ,Ð,à—H‘H—O‘O¤U§Z¡Z°Ð$7Ô8Ø(.�A—J‘J˜uÑ%Ø!�Mô !Ÿ™ uÑ-�Ø˜QŸX™XÑ%ØŸ8™8 FÑ+Ð+à—H‘H—O‘O V¨T NÔ3Ø'-�A—H‘H˜VÑ$Ø!�Mr   c                 ó¸   — t        | j                  j                  «       «      }|j                  «        |D ]"  }|| j                  vsŒ| j                  |«       Œ$ y ©N)r%   r   r&   r'   r   Ú	calcfirst)r   r8   r9   s      r   r   zParserGenerator.addfirstsetsk   sB   € Ü�T—Y‘Y—^‘^Ó%Ó&ˆØ�
‰
ŒÛˆDØ˜4Ÿ:™:Ò%Ø—‘˜tÕ$ñ r   c                 ó8  — | j                   |   }d | j                  |<   |d   }i }i }|j                  j                  «       D ]ƒ  \  }}|| j                   v rd|| j                  v r| j                  |   }|€.t	        d|z  «      ‚| j                  |«       | j                  |   }|j                  |«       |||<   Œxd||<   |di||<   Œ… i }	|j                  «       D ]/  \  }}
|
D ]%  }||	v rt	        d|›d|›d|›d|	|   ›�«      ‚||	|<   Œ' Œ1 || j                  |<   y )Nr#   zrecursion for rule %rr   zrule z is ambiguous; z is in the first sets of z as well as )r   r   r.   r/   Ú
ValueErrorrW   Úupdate)r   r9   r;   r<   ÚtotalsetÚoverlapcheckr=   r>   ÚfsetÚinverseÚitsfirstÚsymbols               r   rW   zParserGenerator.calcfirsts   s;  € Ø�i‰i˜‰oˆØˆ�
‰
�4ÑØ�A‘ˆØˆØˆØ Ÿ:™:×+Ñ+Ö-‰KˆE�4Ø˜Ÿ	™	Ñ!Ø˜DŸJ™JÑ&ØŸ:™: eÑ,�DØ�|Ü(Ð)@À4Ñ)GÓHÐHà—N‘N 5Ô)ØŸ:™: eÑ,�DØ—‘ Ô%Ø&*�˜UÒ#à"#�˜‘Ø',¨a j�˜UÒ#ð .ð ˆØ+×1Ñ1Ö3‰OˆE�8Û"�Ø˜WÑ$Ý$â&*ªF²E¸7À6º?ð&Ló Mð Mð #(�˜’ñ #ð  4ð $ˆ�
‰
�4Òr   c                 óˆ  — i }d }| j                   t        j                  k7  �r| j                   t        j                  k(  r.| j	                  «        | j                   t        j                  k(  rŒ.| j                  t        j                  «      }| j                  t        j                  d«       | j                  «       \  }}| j                  t        j                  «       | j                  ||«      }t        |«      }| j                  |«       t        |«      }|||<   |€|}| j                   t        j                  k7  r�Œ||fS )NÚ:)Útyper   Ú	ENDMARKERÚNEWLINEr   ÚexpectrQ   ÚOPÚ	parse_rhsÚmake_dfar*   Úsimplify_dfa)	r   r   r   r9   ÚaÚzr;   ÚoldlenÚnewlens	            r   r   zParserGenerator.parse‘   sð   € ØˆØˆà�i‰iœ5Ÿ?™?Ó*Ø—)‘)œuŸ}™}Ò,Ø—‘”ð —)‘)œuŸ}™}Ó,ð —;‘;œuŸz™zÓ*ˆDØ�K‰KœŸ™ #Ô&Ø—>‘>Ó#‰DˆAˆqØ�K‰KœŸ™Ô&à—-‘-  1Ó%ˆCä˜“XˆFØ×Ñ˜cÔ"Ü˜“XˆFØˆD�‰JàÐ"Ø"�ð# �i‰iœ5Ÿ?™?Ô*ð$ �[Ð Ð r   c           
      óî  ‡— t        |t        «      sJ ‚t        |t        «      sJ ‚ˆfd„}ˆfd„Št         ||«      |«      g}|D ]­  }i }|j                  D ]2  }|j                  D ]!  \  }}	|€Œ	 ‰|	|j                  |i «      «       Œ# Œ4 t        |j                  «       «      D ]L  \  }}
|D ]  }|j                  |
k(  sŒ n t        |
|«      }|j                  |«       |j                  ||«       ŒN Œ¯ |S )Nc                 ó   •— i } ‰| |«       |S rV   r   )r<   ÚbaseÚ
addclosures     €r   Úclosurez)ParserGenerator.make_dfa.<locals>.closure°   s   ø€ ØˆDÙ�u˜dÔ#ØˆKr   c                 ó~   •— t        | t        «      sJ ‚| |v ry d|| <   | j                  D ]  \  }}|�Œ	 ‰||«       Œ y rA   )rK   ÚNFAStater.   )r<   rq   r=   r>   rr   s       €r   rr   z,ParserGenerator.make_dfa.<locals>.addclosure´   sG   ø€ Ü˜e¤XÔ.Ð.Ð.Ø˜‰}ØØˆD�‰KØ$Ÿzœz‘��tØ‘=Ù˜t TÕ*ñ  *r   )
rK   ru   ÚDFAStateÚnfasetr.   Ú
setdefaultr-   r/   r0   Úaddarc)r   r6   Úfinishrs   r4   r<   r.   Únfastater=   r>   rw   Ústrr   s               @r   ri   zParserGenerator.make_dfa©   sñ   ø€ ô
 ˜%¤Ô*Ð*Ð*Ü˜&¤(Ô+Ð+Ð+ô	ô	+ô ™7 5›>¨6Ó2Ð3ˆÛˆEØˆDØ!ŸLœL�Ø#+§=¤=‘K�E˜4ØÑ(Ù" 4¨¯©¸ÀÓ)CÕDñ $1ð )ô "(¨¯
©
«Ö!5‘��vÛ �BØ—y‘y FÓ*Ùð !ô " &¨&Ó1�BØ—M‘M "Ô%Ø—‘˜R Õ'ñ "6ð ð ˆr   c                 óD  — t        d|«       |g}t        |«      D ]ƒ  \  }}t        d|||u xr dxs d«       |j                  D ]X  \  }}||v r|j                  |«      }	nt	        |«      }	|j                  |«       |€t        d|	z  «       ŒIt        d||	fz  «       ŒZ Œ… y )NzDump of NFA forú  Stateú(final)Ú z	    -> %dú    %s -> %d)ÚprintÚ	enumerater.   r2   r*   r0   )
r   r9   r6   rz   Útodor:   r<   r=   r>   Újs
             r   Údump_nfazParserGenerator.dump_nfaÍ   sž   € ÜÐ Ô&ØˆwˆÜ! $ž‰HˆAˆuÜ�)˜Q ¨ Ò =°IÒ CÀÔDØ$Ÿzœz‘��tØ˜4‘<ØŸ
™
 4Ó(‘Aä˜D›	�AØ—K‘K Ô%Ø�=Ü˜+¨™/Õ*ä˜.¨E°1¨:Ñ5Õ6ñ  *ñ (r   c           	      ó  — t        d|«       t        |«      D ]n  \  }}t        d||j                  xr dxs d«       t        |j                  j                  «       «      D ]$  \  }}t        d||j                  |«      fz  «       Œ& Œp y )NzDump of DFA forr~   r   r€   r�   )r‚   rƒ   r3   r-   r.   r/   r2   )r   r9   r;   r:   r<   r=   r>   s          r   Údump_dfazParserGenerator.dump_dfaÝ   ss   € ÜÐ Ô&Ü! #ž‰HˆAˆuÜ�)˜Q §¡Ò ;°)Ò A¸rÔBÜ% e§j¡j×&6Ñ&6Ó&8Ö9‘��tÜ�n¨¨s¯y©y¸«Ð'?Ñ?Õ@ñ  :ñ 'r   c                 óÌ   — d}|r`d}t        |«      D ]L  \  }}t        |dz   t        |«      «      D ],  }||   }||k(  sŒ||= |D ]  }|j                  ||«       Œ d} ŒL ŒN |rŒ_y y )NTFr   )rƒ   Úranger*   Ú
unifystate)r   r;   Úchangesr:   Ústate_ir…   Ústate_jr<   s           r   rj   zParserGenerator.simplify_dfaä   s{   € ð ˆÙØˆGÜ'¨žn‘
��7Ü˜q ™s¤C¨£HÖ-�AØ! !™f�GØ 'Ó)à ˜FÛ%(˜EØ!×,Ñ,¨W°gÕ>ð &)à"&˜Ùñ .ð -ô r   c                 óŠ  — | j                  «       \  }}| j                  dk7  r||fS t        «       }t        «       }|j                  |«       |j                  |«       | j                  dk(  rU| j	                  «        | j                  «       \  }}|j                  |«       |j                  |«       | j                  dk(  rŒU||fS )NÚ|)Ú	parse_altrT   ru   ry   r   )r   rk   rl   ÚaaÚzzs        r   rh   zParserGenerator.parse_rhsù   sŸ   € à�~‰~Ó‰ˆˆ1Ø�:‰:˜ÒØ�a�4ˆKä“ˆBÜ“ˆBØ�I‰I�aŒLØ�H‰H�RŒLØ—*‘* Ò#Ø—‘”Ø—~‘~Ó'‘��1Ø—	‘	˜!”Ø—‘˜”ð	 —*‘* Ó#ð
 �r�6ˆMr   c                 óh  — | j                  «       \  }}| j                  dv s,| j                  t        j                  t        j
                  fv rb| j                  «       \  }}|j                  |«       |}| j                  dv rŒ5| j                  t        j                  t        j
                  fv rŒb||fS )N)Ú(Ú[)Ú
parse_itemrT   rc   r   rQ   ÚSTRINGry   )r   rk   Úbr7   Úds        r   r‘   zParserGenerator.parse_alt
  s‰   € à�‰Ó ‰ˆˆ1Ø�z‰z˜ZÑ'Ø�y‰yœUŸZ™Z¬¯©Ð6Ñ6Ø—?‘?Ó$‰DˆAˆqØ�H‰H�QŒKØˆAð	 �z‰z˜ZÒ'Ø�y‰yœUŸZ™Z¬¯©Ð6Ò6ð �!ˆtˆr   c                 óz  — | j                   dk(  rX| j                  «        | j                  «       \  }}| j                  t        j
                  d«       |j                  |«       ||fS | j                  «       \  }}| j                   }|dvr||fS | j                  «        |j                  |«       |dk(  r||fS ||fS )Nr–   Ú])Ú+Ú*r�   )rT   r   rh   rf   r   rg   ry   Ú
parse_atom)r   rk   rl   rT   s       r   r—   zParserGenerator.parse_item  s¤   € à�:‰:˜ÒØ�M‰MŒOØ—>‘>Ó#‰DˆAˆqØ�K‰KœŸ™ #Ô&Ø�H‰H�QŒKØ�a�4ˆKà—?‘?Ó$‰DˆAˆqØ—J‘JˆEØ˜JÑ&Ø˜!�t�Ø�M‰MŒOØ�H‰H�QŒKØ˜Š|Ø˜!�t�à˜!�t�r   c                 óÞ  — | j                   dk(  rG| j                  «        | j                  «       \  }}| j                  t        j
                  d«       ||fS | j                  t        j                  t        j                  fv rDt        «       }t        «       }|j                  || j                   «       | j                  «        ||fS | j                  d| j                  | j                   «       y )Nr•   Ú)z+expected (...) or NAME or STRING, got %s/%s)rT   r   rh   rf   r   rg   rc   rQ   r˜   ru   ry   Úraise_error)r   rk   rl   s      r   rŸ   zParserGenerator.parse_atom(  s«   € à�:‰:˜ÒØ�M‰MŒOØ—>‘>Ó#‰DˆAˆqØ�K‰KœŸ™ #Ô&Ø�a�4ˆKØ�Y‰Yœ5Ÿ:™:¤u§|¡|Ð4Ñ4Ü“
ˆAÜ“
ˆAØ�H‰H�Q˜Ÿ
™
Ô#Ø�M‰MŒOØ�a�4ˆKà×ÑÐJØ!ŸY™Y¨¯
©
õ4r   c                 óÐ   — | j                   |k7  s|�8| j                  |k7  r)| j                  d||| j                   | j                  «       | j                  }| j                  «        |S )Nzexpected %s/%s, got %s/%s)rc   rT   r¢   r   )r   rc   rT   s      r   rf   zParserGenerator.expect9  sX   € Ø�9‰9˜Ò Ð!2°t·z±zÀUÒ7JØ×ÑÐ8Ø! 5¨$¯)©)°T·Z±ZôAà—
‘
ˆØ�‰ŒØˆr   c                 ó0  — t        | j                  «      }|d   t        j                  t        j                  fv r;t        | j                  «      }|d   t        j                  t        j                  fv rŒ;|\  | _        | _        | _        | _        | _	        y )Nr#   )
r>   r   r   ÚCOMMENTÚNLrc   rT   ÚbeginÚendÚline)r   Útups     r   r   zParserGenerator.gettokenA  sp   € Ü�4—>‘>Ó"ˆØ�!‰fœ×)Ñ)¬8¯;©;Ð7Ñ7Ü�t—~‘~Ó&ˆCð �!‰fœ×)Ñ)¬8¯;©;Ð7Ò7àADÑ>ˆŒ	�4”:˜tœz¨4¬8°TµYr   c           
      óô   — |r	 ||z  }t	        || j
                  | j                  d   | j                  d   | j                  f«      ‚#  dj                  |gt        t        t        |«      «      z   «      }Y ŒnxY w)NÚ r#   r   )Újoinr%   ÚmapÚstrÚSyntaxErrorr   r¨   r©   )r   ÚmsgÚargss      r   r¢   zParserGenerator.raise_errorH  sq   € Ùð=Ø˜D‘j�ô ˜# §¡¨t¯x©x¸©{Ø $§¡¨¡¨T¯Y©Yð 8ó 9ð 	9øð=Ø—h‘h ˜u¤t¬C´°T«NÓ';Ñ;Ó<’ús   „A Á.A7rV   )r   r	   r
   r!   r?   r5   r1   r   rW   r   ri   r†   rˆ   rj   rh   r‘   r—   rŸ   rf   r   r¢   r   r   r   r   r   
   s`   „ óòò2ò,"ò\%ò$ò<!ò0"òH7ò Aòò*ò"òò(4ó"òEó9r   r   c                   ó   — e Zd Zd„ Zdd„Zy)ru   c                 ó   — g | _         y rV   )r.   )r   s    r   r!   zNFAState.__init__S  s	   € Øˆ�	r   Nc                 óŠ   — |�t        |t        «      sJ ‚t        |t        «      sJ ‚| j                  j	                  ||f«       y rV   )rK   r¯   ru   r.   r0   ©r   r>   r=   s      r   ry   zNFAState.addarcV  s<   € Øˆ}¤
¨5´#Ô 6Ð6Ð6Ü˜$¤Ô)Ð)Ð)Ø�	‰	×Ñ˜% ˜Õ'r   rV   )r   r	   r
   r!   ry   r   r   r   ru   ru   Q  s   „ òô(r   ru   c                   ó(   — e Zd Zd„ Zd„ Zd„ Zd„ ZdZy)rv   c                 óÂ   — t        |t        «      sJ ‚t        t        t        |«      «      t        «      sJ ‚t        |t        «      sJ ‚|| _        ||v | _        i | _        y rV   )rK   Údictr>   Úiterru   rw   r3   r.   )r   rw   Úfinals      r   r!   zDFAState.__init__]  sT   € Ü˜&¤$Ô'Ð'Ð'Üœ$œt F›|Ó,¬hÔ7Ð7Ð7Ü˜%¤Ô*Ð*Ð*ØˆŒØ �ˆŒØˆ�	r   c                 óŠ   — t        |t        «      sJ ‚|| j                  vsJ ‚t        |t        «      sJ ‚|| j                  |<   y rV   )rK   r¯   r.   rv   r¶   s      r   ry   zDFAState.addarce  sB   € Ü˜%¤Ô%Ð%Ð%Ø˜DŸI™IÑ%Ð%Ð%Ü˜$¤Ô)Ð)Ð)Øˆ�	‰	�%Òr   c                 óp   — | j                   j                  «       D ]  \  }}||u sŒ|| j                   |<   Œ y rV   )r.   r/   )r   ÚoldÚnewr=   r>   s        r   r‹   zDFAState.unifystatek  s0   € ØŸ9™9Ÿ?™?Ö,‰KˆE�4Ø�sŠ{Ø#&�—	‘	˜%Ò ñ -r   c                 ó6  — t        |t        «      sJ ‚| j                  |j                  k7  ryt        | j                  «      t        |j                  «      k7  ry| j                  j                  «       D ]$  \  }}||j                  j                  |«      usŒ$ y y)NFT)rK   rv   r3   r*   r.   r/   Úget)r   Úotherr=   r>   s       r   Ú__eq__zDFAState.__eq__p  sx   € ä˜%¤Ô*Ð*Ð*Ø�<‰<˜5Ÿ=™=Ò(Øô ˆt�y‰y‹>œS §¡›_Ò,ØØŸ9™9Ÿ?™?Ö,‰KˆE�4Ø˜5Ÿ:™:Ÿ>™>¨%Ó0Ò0Ùð -ð r   N)r   r	   r
   r!   ry   r‹   rÃ   Ú__hash__r   r   r   rv   rv   [  s   „ òò ò'ò
ð �Hr   rv   c                 ó8   — t        | «      }|j                  «       S rV   )r   r?   )r   Úps     r   Úgenerate_grammarrÇ   €  s   € Ü˜Ó!€AØ�>‰>ÓÐr   N)zGrammar.txt)r€   r   r   r   ÚGrammarr   Úobjectr   ru   rv   rÇ   r   r   r   Ú<module>rÊ      sJ   ð÷
 'Ñ &ô	�'—/‘/ô 	ôE9�fô E9ôN
(ˆvô (ô#ˆvô #ôJr   