ó
    G±‰jD  ã                   ób   • S r SSKrSSKJr  Sr\* r " S S5      r " S S	5      r " S
 S5      rg)z=
Python Lexical Analyser

Classes for building NFAs and DFAs
é    Né   )ÚTransitionMapiÿÿÿc                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ÚMachineé   z1A collection of Nodes representing an NFA or DFA.c                 ó.   • / U l         0 U l        SU l        g )Nr   )ÚstatesÚinitial_statesÚnext_state_number©Úselfs    Ú¢C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\Cython/Plex/Machines.pyÚ__init__ÚMachine.__init__   s   € ØˆŒØ ˆÔØ!"ˆÕó    c                 óJ   • U R                    H  nUR                  5         M     g ©N)r	   Údestroy©r   Ústates     r   Ú__del__ÚMachine.__del__   s   € Ø—[”[ˆEØ�M‰MŽOò !r   c                 óˆ   • [        5       nU R                  nUS-   U l        X!l        U R                  R	                  U5        U$ )z-Add a new state to the machine and return it.r   )ÚNoder   Únumberr	   Úappend)r   ÚsÚns      r   Ú	new_stateÚMachine.new_state   s<   € ä‹FˆØ#×5Ñ5ˆØ!" Q¡ˆÔØŒØ�‰×Ñ˜1ÔØˆr   c                 óH   • U R                  5       nU R                  X5        U$ r   )r   Úmake_initial_state©r   Únamer   s      r   Únew_initial_stateÚMachine.new_initial_state#   s!   € Ø—‘Ó ˆØ×Ñ Ô,Øˆr   c                 ó    • X R                   U'   g r   ©r
   r#   s      r   r"   ÚMachine.make_initial_state(   ó   € Ø$)×Ñ˜DÒ!r   c                 ó    • U R                   U   $ r   r(   ©r   r$   s     r   Úget_initial_stateÚMachine.get_initial_state+   ó   € Ø×"Ñ" 4Ñ(Ð(r   c                 ó@  • UR                  S5        U R                  b\  UR                  S5        [        U R                  R                  5       5       H$  u  p#UR                  SX#R                  4-  5        M&     U R
                   H  nUR                  U5        M     g )NzPlex.Machine:
ú   Initial states:
z      '%s': %d
)Úwriter
   ÚsortedÚitemsr   r	   Údump)r   Úfiler$   r   r   s        r   r5   ÚMachine.dump.   s{   € Ø�
‰
Ð$Ô%Ø×ÑÑ*Ø�J‰JÐ-Ô.Ü!'¨×(;Ñ(;×(AÑ(AÓ(CÖ!D‘�Ø—
‘
Ð-°·|±|Ð0DÑDÖEñ "Eà—”ˆAØ�F‰F�4ŽLò r   )r
   r   r	   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r%   r"   r-   r5   Ú__static_attributes__© r   r   r   r      s(   † Ù;ò#ò
òòò
*ò)õr   r   c                   ó`   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrg)r   é8   zA state of an NFA or DFA.c                 ób   • [        5       U l        [        U l        S U l        SU l        S U l        g )Nr   )r   ÚtransitionsÚLOWEST_PRIORITYÚaction_priorityÚactionr   Úepsilon_closurer   s    r   r   ÚNode.__init__;   s,   € ô )›?ˆÔÜ.ˆÔØˆŒØˆŒØ#ˆÕr   c                 ó.   • S U l         S U l        S U l        g r   )rB   rE   rF   r   s    r   r   ÚNode.destroyD   s   € ØˆÔØˆŒØ#ˆÕr   c                 ó:   • U R                   R                  X5        g r   )rB   Úadd)r   Úeventr   s      r   Úadd_transitionÚNode.add_transitionI   s   € Ø×Ñ×Ñ˜UÕ.r   c                 ó(   • U R                  SU5        g)z5Add an epsilon-move from this state to another state.Ú N)rM   r   s     r   Úlink_toÚNode.link_toL   s   € à×Ñ˜B Õ&r   c                 ó<   • X R                   :”  a  Xl        X l         gg)z{Make this an accepting state with the given action. If
there is already an action, choose the action with highest
priority.N)rD   rE   )r   rE   Úprioritys      r   Ú
set_actionÚNode.set_actionP   s    € ð ×*Ñ*Ó*Ø ŒKØ#+Õ ð +r   c                 ó   • U R                   $ r   ©rE   r   s    r   Ú
get_actionÚNode.get_actionX   s   € Ø�{‰{Ðr   c                 ó   • U R                   $ r   )rD   r   s    r   Úget_action_priorityÚNode.get_action_priority[   s   € Ø×#Ñ#Ð#r   c                 ó   • U R                   S L$ r   rX   r   s    r   Úis_acceptingÚNode.is_accepting^   s   € Ø�{‰{ $Ð&Ð&r   c                 ó    • SU R                   -  $ )NzState %d©r   r   s    r   Ú__str__ÚNode.__str__a   s   € Ø˜DŸK™KÑ'Ð'r   c                 óØ   • UR                  SU R                  -  5        U R                  R                  U5        U R                  nU R
                  nUb  UR                  SX#4-  5        g g )Nú   State %d:
z      %s [priority %d]
)r2   r   rB   r5   rE   rD   )r   r6   rE   rT   s       r   r5   Ú	Node.dumpd   sb   € à�
‰
Ð# d§k¡kÑ1Ô2ð 	×Ñ×Ñ˜dÔ#à—‘ˆØ×'Ñ'ˆØÑØ�J‰JÐ1°VÐ4FÑFÕGð r   c                 ó4   • U R                   UR                   :  $ r   rb   )r   Úothers     r   Ú__lt__ÚNode.__lt__p   s   € Ø�{‰{˜UŸ\™\Ñ)Ð)r   c                 ó&   • [        U 5      [        -  $ r   )ÚidÚmaxintr   s    r   Ú__hash__ÚNode.__hash__s   s   € ä�$‹xœ&Ñ Ð r   )rE   rD   rF   r   rB   N)r8   r9   r:   r;   r<   r   r   rM   rQ   rU   rY   r\   r_   rc   r5   rj   ro   r=   r>   r   r   r   r   8   sB   † Ù#ò$ò$ò
/ò'ò,òò$ò'ò(ò
Hò*õ!r   r   c                   ó¦   • \ rS rSrSrS rS rSS jrS r\	4S\
S	\R                  4S
 jjrS rS rS rS rS\S\4S jrS\4S jrS\4S jrSrg)ÚFastMachineéx   zX
FastMachine is a deterministic machine represented in a way that
allows fast scanning.
c                 óH   • 0 U l         / U l        SU l        S S S S S S.U l        g )Nr   )rP   ÚbolÚeolÚeofÚelse)r
   r	   Únext_numberÚnew_state_templater   s    r   r   ÚFastMachine.__init__}   s.   € Ø ˆÔØˆŒØˆÔà˜T¨$°tÀTñ#
ˆÕr   c                 óJ   • U R                    H  nUR                  5         M     g r   )r	   Úclearr   s     r   r   ÚFastMachine.__del__…   s   € Ø—[”[ˆEØ�K‰KŽMò !r   Nc                 ó¬   • U R                   nUS-   U l         U R                  R                  5       nX#S'   XS'   U R                  R	                  U5        U$ )Nr   r   rE   )ry   rz   Úcopyr	   r   )r   rE   r   Úresults       r   r   ÚFastMachine.new_state‰   sT   € Ø$(×$4Ñ$4ˆØ! A™:ˆÔØ×(Ñ(×-Ñ-Ó/ˆØ!ˆxÑØ!ˆxÑØ�‰×Ñ˜6Ô"Øˆr   c                 ó    • X R                   U'   g r   r(   r#   s      r   r"   ÚFastMachine.make_initial_state’   r*   r   r   rn   c                 óš   • [        U5      [        L a5  Uu  pVXT* :X  a  X1S'   g Xd:w  a   [        XV5       H  nX1[        U5      '   M     g g X1U'   g )Nrx   )ÚtypeÚtupleÚrangeÚchr)r   r   rL   r   rn   Úcode0Úcode1Úcodes           r   Úadd_transitionsÚFastMachine.add_transitions•   sT   € ô
 �‹;œ%ÒØ ‰LˆEØ˜ÓØ )�f’Ø“Ü! %Ö/�DØ'0œ#˜d›)Ó$ò 0ð !ð %�%ŠLr   c                 ó    • U R                   U   $ r   r(   r,   s     r   r-   ÚFastMachine.get_initial_state¤   r/   r   c                 ó4  • UR                  S5        UR                  S5        [        U R                  R                  5       5       H+  u  p#UR                  S[	        U5      < SUS   < S35        M-     U R
                   H  nU R                  X15        M     g )NzPlex.FastMachine:
r1   z      z: r   Ú
)r2   r3   r
   r4   Úreprr	   Ú
dump_state)r   r6   r$   r   s       r   r5   ÚFastMachine.dump§   so   € Ø�
‰
Ð(Ô)Ø�
‰
Ð)Ô*Ü! $×"5Ñ"5×";Ñ";Ó"=Ö>‰KˆDØ�JŠJ¬4°®:°u¸X´ÐGÖHñ ?à—[”[ˆEØ�O‰O˜EÖ(ò !r   c                 óŽ   • UR                  SUS   -  5        U R                  X5        US   nUb  UR                  SU-  5        g g )Nrf   r   rE   z	      %s
)r2   Údump_transitions)r   r   r6   rE   s       r   r”   ÚFastMachine.dump_state¯   sK   € à�
‰
Ð# e¨H¡oÑ5Ô6à×Ñ˜eÔ*à�x‘ˆØÑØ�J‰J�| fÑ,Õ-ð r   c                 ó’  • 0 n0 nUR                  5        Hh  u  pV[        U5      S:X  a?  UR                  [        U5      5      nUc  / nXs[        U5      '   UR	                  U5        MS  [        U5      S::  d  Md  XdU'   Mj     0 nU R
                   H;  nUR                  [        U5      5      n	U	(       d  M&  U R                  U	5      n
XU
'   M=     [        U5       H0  n
U R                  U
5      nXŠ   nUR                  SX±S   4-  5        M2     S H5  nUR                  U5      nU(       d  M  UR                  SX±S   4-  5        M7     g )Nr   é   z      %s --> State %d
r   )ru   rv   rw   rx   )
r4   ÚlenÚgetrm   r   r	   Úchars_to_rangesr3   Úranges_to_stringr2   )r   r   r6   Úchars_leading_to_stateÚspecial_to_stateÚcr   ÚcharsÚranges_to_stateÚ	char_listÚrangesÚkeys               r   r—   ÚFastMachine.dump_transitions¹   s5  € Ø!#ÐØÐØ—k‘k–m‰FˆQÜ�1‹v˜‹{Ø.×2Ñ2´2°a³5Ó9�Ø‘=Ø�EØ49¬2¨a«5Ñ1Ø—‘˜Q–Ü�Q“˜1•Ø&' Ó#ñ $ð ˆØ—[”[ˆEØ.×2Ñ2´2°e³9Ó=ˆIßˆyØ×-Ñ-¨iÓ8�Ø*/ Ó'ñ	 !ô
 ˜_Ö-ˆFØ×'Ñ'¨Ó/ˆCØ#Ñ+ˆEØ�J‰JÐ0°C¸x¹Ð3IÑIÖJñ .ó 1ˆCØ$×(Ñ(¨Ó-ˆEßˆuØ—
‘
Ð4¸À8¹_Ð7MÑMÖNò 1r   r¤   Úreturnc                 ó\  • UR                  5         Sn[        U5      n/ nX#:  a~  [        X   5      nUnUS-  nX#:  a9  [        X   5      US-   :X  a%  US-  nUS-  nX#:  a  [        X   5      US-   :X  a  M%  UR                  [	        U5      [	        U5      45        X#:  a  M~  [        U5      $ )Nr   r   )Úsortr›   Úordr   r‰   r‡   )r   r¤   Úir   r�   Úc1Úc2s          r   r�   ÚFastMachine.chars_to_rangesÔ   s°   € Ø�‰Ôð  !ˆÜ" 9›~ˆØˆØ‹eÜ�Y‘\Ó"ˆBØˆBØ�‰FˆAØ“%œC 	¡Ó-°°a±Ó7Ø�Q‘�Ø�a‘�ð “%œC 	¡Ó-°°a±Õ7ð �M‰Mœ3˜r›7¤C¨£GÐ,Ô-ð �eô �V‹}Ðr   c                 óL   • SR                  [        U R                  U5      5      $ )NÚ,)ÚjoinÚmapÚrange_to_string)r   Ú
range_lists     r   rž   ÚFastMachine.ranges_to_stringæ   s   € Ø�x‰xœ˜D×0Ñ0°*Ó=Ó>Ð>r   Úrange_tuplec                 ó<   • Uu  p#X#:X  a  [        U5      $ U< SU< 3$ )Nz..)r“   )r   r·   r­   r®   s       r   r´   ÚFastMachine.range_to_stringé   s(   € Ø‰ˆØ‹8Ü˜“8ˆOà‘V˜2˜b™VÐ$Ð$r   )r
   rz   ry   r	   r   )r8   r9   r:   r;   r<   r   r   r   r"   rn   ÚdictÚcythonÚintr�   r-   r5   r”   r—   Úlistr‡   r�   Ústrrž   r´   r=   r>   r   r   rr   rr   x   sy   † ñò
òôò*ð SYñ % Tð %ÀVÇZÁZõ %ò)ò)ò.òOð6¨ð °%ô ð$?¨cô ?ð%¨5÷ %r   rr   )	r<   r»   ÚTransitionsr   rn   rC   r   r   rr   r>   r   r   Ú<module>rÀ      s@   ðñó Ý &à	€à�'€÷&ñ &÷R=!ñ =!÷@v%ò v%r   