Ë
    çÍ:jÌ‚  ã                   óÆ   — d Z ddlmZmZmZmZmZmZmZm	Z	 ddl
mZ ddlmZmZmZ ddlmZmZmZmZ ddlmZ ddlmZ ddlmZ 	  G d	„ d
«      Zd„ Zedk(  r e«        dgZy)ad  
A graphical tool for exploring the shift-reduce parser.

The shift-reduce parser maintains a stack, which records the structure
of the portion of the text that has been parsed.  The stack is
initially empty.  Its contents are shown on the left side of the main
canvas.

On the right side of the main canvas is the remaining text.  This is
the portion of the text which has not yet been considered by the
parser.

The parser builds up a tree structure for the text using two
operations:

  - "shift" moves the first token from the remaining text to the top
    of the stack.  In the demo, the top of the stack is its right-hand
    side.
  - "reduce" uses a grammar production to combine the rightmost stack
    elements into a single tree token.

You can control the parser's operation by using the "shift" and
"reduce" buttons; or you can use the "step" button to let the parser
automatically decide which operation to apply.  The parser uses the
following rules to decide which operation to apply:

  - Only shift if no reductions are available.
  - If multiple reductions are available, then apply the reduction
    whose CFG production is listed earliest in the grammar.

The "reduce" button applies the reduction whose CFG production is
listed earliest in the grammar.  There are two ways to manually choose
which reduction to apply:

  - Click on a CFG production from the list of available reductions,
    on the left side of the main window.  The reduction based on that
    production will be applied to the top of the stack.
  - Click on one of the stack elements.  A popup window will appear,
    containing all available reductions.  Select one, and it will be
    applied to the top of the stack.

Note that reductions can only be applied to the top of the stack.

Keyboard Shortcuts::
      [Space]	 Perform the next shift or reduce operation
      [s]	 Perform a shift operation
      [r]	 Perform a reduction operation
      [Ctrl-z]	 Undo most recent operation
      [Delete]	 Reset the parser
      [g]	 Show/hide available production list
      [Ctrl-a]	 Toggle animations
      [h]	 Help
      [Ctrl-p]	 Print
      [q]	 Quit

é    )ÚButtonÚFrameÚIntVarÚLabelÚListboxÚMenuÚ	ScrollbarÚTk)ÚFont)Ú	CFGEditorÚTreeSegmentWidgetÚtree_to_treesegment)ÚCanvasFrameÚEntryDialogÚShowTextÚ
TextWidget)ÚSteppingShiftReduceParser)ÚTree)Úin_idlec                   óæ   — e Zd 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„ Zd„ Zd„ 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%„ Z&y)(ÚShiftReduceAppaË  
    A graphical tool for exploring the shift-reduce parser.  The tool
    displays the parser's stack and the remaining text, and allows the
    user to control the parser's operation.  In particular, the user
    can shift tokens onto the stack, and can perform reductions on the
    top elements of the stack.  A "step" button simply steps through
    the parsing process, performing the operations that
    ``nltk.parse.ShiftReduceParser`` would use.
    c                 óD  — || _         t        ||«      | _        t        «       | _        | j                  j                  d«       d| _        t        | j                  «      | _        | j                  j                  d«       t        | j                  «      | _
        | j                  j                  d«       | j                  | j                  «       | j                  «        | j                  | j                  «       | j                  | j                  «       | j                  | j                  «       | j!                  | j                  «       | j#                  | j                  «       t%        | j&                  d¬«      | _        | j+                  «        d| j,                  d<   y )NzShift Reduce Parser Applicationr   é
   é   ©ÚtearoffÚ Útext)Ú_sentr   Ú_parserr
   Ú_topÚtitleÚ_animating_lockr   Ú_animateÚsetÚ_show_grammarÚ_init_fontsÚ_init_bindingsÚ_init_menubarÚ_init_buttonsÚ_init_feedbackÚ_init_grammarÚ_init_canvasr   Ú_canvasÚ_reduce_menuÚresetÚ
_lastoper1)ÚselfÚgrammarÚsentÚtraces       új/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/nltk/app/srparser_app.pyÚ__init__zShiftReduceApp.__init__b   s2  € ØˆŒ
Ü0°¸%Ó@ˆŒô “DˆŒ	Ø�	‰	�‰Ð9Ô:ð  !ˆÔÜ˜tŸy™yÓ)ˆŒØ�‰×Ñ˜"Ôô $ D§I¡IÓ.ˆÔØ×Ñ×Ñ˜qÔ!ð 	×Ñ˜Ÿ™Ô#ð 	×ÑÔð 	×Ñ˜4Ÿ9™9Ô%Ø×Ñ˜4Ÿ9™9Ô%Ø×Ñ˜DŸI™IÔ&Ø×Ñ˜4Ÿ9™9Ô%Ø×Ñ˜$Ÿ)™)Ô$ô ! §¡°qÔ9ˆÔð 	�
‰
ŒØ"$ˆ�‰˜Òó    c                 ó¦  — t        t        «       d   ¬«      | _        |j                  d| j                  «       t	        |«      | _        | j
                  j                  | j                  j                  d«      «       t        dd| j
                  j                  «       ¬«      | _	        t        d| j
                  j                  «       ¬«      | _
        y )	NÚfont)r:   z*FontÚsizeÚ	helveticaÚbold)ÚfamilyÚweightr;   )r>   r;   )r   r   Ú_sysfontÚ
option_addr   Ú_sizer%   ÚcgetÚgetÚ	_boldfontÚ_font)r2   Úroots     r6   r'   zShiftReduceApp._init_fontsŒ   s‡   € ä¤&£(¨6Ñ"2Ô3ˆŒØ�‰˜ §¡Ô/ô ˜D“\ˆŒ
Ø�
‰
�‰�t—}‘}×)Ñ)¨&Ó1Ô2ä [¸ÀdÇjÁjÇnÁnÓFVÔWˆŒÜ °4·:±:·>±>Ó3CÔDˆ�
r8   c           
      ó˜  — t        |«      x| _        }| j                  j                  ddd¬«       t        | j                  | j                  d¬«      | _        | j
                  j                  «        t        | j                  ddd	d
| j                  dd¬«      | _        | j                  j                  ddd¬«       t        | j                  j                  «       j                  «       «      | _        | j                  D ]!  }| j                  j                  dd|z  «       Œ# | j                  j                  t!        t#        | j                  «      d«      ¬«       	 t%        | j                  d¬«      }| j                  j                  |j&                  ¬«       |j                  | j                  j(                  ¬«       |j                  dd¬«       | j                  j+                  d| j,                  «       d| _        | j                  j+                  d| j0                  «       | j                  j+                  d| j2                  «       y )NÚbothÚlefté   )ÚfillÚsideÚpadxzAvailable Reductions)r:   r   ÚsingleÚgrooveÚwhitez#909090ú#004040z#c0f0c0)Ú
selectmodeÚreliefÚ
backgroundÚ
foregroundr:   ÚselectforegroundÚselectbackgroundÚrightr   ©rM   rL   ÚexpandÚendú %sé   )ÚheightÚvertical)Úorient)Úyscrollcommand)ÚcommandÚy)rM   rL   z<<ListboxSelect>>éÿÿÿÿz<Motion>z<Leave>)r   Ú
_prodframeÚpackr   rE   Ú_prodlist_labelr   rF   Ú	_prodlistÚlistr    r3   ÚproductionsÚ_productionsÚinsertÚconfigÚminÚlenr	   r%   ÚyviewÚbindÚ_prodlist_selectÚ_hoverÚ_highlight_hoverÚ_clear_hover)r2   ÚparentÚ	listframeÚ
productionÚ
listscrolls        r6   r,   zShiftReduceApp._init_grammar˜   sÎ  € ä&+¨F£mÐ3ˆŒ˜)Ø�‰×Ñ &¨v¸AÐÔ>Ü$Ø�O‰O $§.¡.Ð7Mô 
ˆÔð 	×Ñ×!Ñ!Ô#Ü Ø�O‰OØØØØ Ø—‘Ø&Ø&ô	
ˆŒð 	�‰×Ñ ¨v¸aÐÔ@ä  §¡×!5Ñ!5Ó!7×!CÑ!CÓ!EÓFˆÔØ×+Ñ+ò 	?ˆJØ�N‰N×!Ñ! %¨%°*Ñ*<Õ>ð	?à�‰×Ñ¤S¬¨T×->Ñ->Ó)?ÀÓ%DÐÔEð Ü" 4§?¡?¸:ÔFˆJØ�N‰N×!Ñ!°·±Ð!Ô@Ø×Ñ d§n¡n×&:Ñ&:ÐÔ;Ø�O‰O ¨cˆOÔ2ð 	�‰×ÑÐ/°×1FÑ1FÔGð ˆŒØ�‰×Ñ˜J¨×(=Ñ(=Ô>Ø�‰×Ñ˜I t×'8Ñ'8Õ9r8   c                 ó‚  — | j                   j                  d| j                  «       | j                   j                  d| j                  «       | j                   j                  d| j                  «       | j                   j                  d| j                  «       | j                   j                  d| j                  «       | j                   j                  d| j                  «       | j                   j                  d| j                  «       | j                   j                  d| j                  «       | j                   j                  d	| j
                  «       | j                   j                  d
| j
                  «       | j                   j                  d| j
                  «       | j                   j                  d| j                  «       | j                   j                  d| j                  «       | j                   j                  d| j                  «       | j                   j                  d| j                  «       | j                   j                  d| j                  «       | j                   j                  d| j                  «       | j                   j                  d| j                  «       | j                   j                  d| j                  «       | j                   j                  d| j                  «       | j                   j                  d| j                  «       | j                   j                  d| j                  «       | j                   j                  d| j                  fd„«       | j                   j                  d| j                  fd„«       | j                   j                  d| j                  fd„«       y )Nz<Control-q>z<Control-x>z<Alt-q>z<Alt-x>z<space>z<s>z<Alt-s>z<Control-s>z<r>z<Alt-r>z<Control-r>z<Delete>z<u>z<Alt-u>z<Control-u>z<Control-z>z<BackSpace>z<Control-p>z<Control-h>z<F1>z<Control-g>z<Control-t>ú-c                 ó$   — |j                  d«      S )Né   ©r%   ©ÚeÚas     r6   ú<lambda>z/ShiftReduceApp._init_bindings.<locals>.<lambda>ß   ó   € °q·u±u¸R³y€ r8   ú=c                 ó$   — |j                  d«      S )Nr   r   r€   s     r6   rƒ   z/ShiftReduceApp._init_bindings.<locals>.<lambda>à   r„   r8   ú+c                 ó$   — |j                  d«      S )Né   r   r€   s     r6   rƒ   z/ShiftReduceApp._init_bindings.<locals>.<lambda>á   s   € °q·u±u¸Q³x€ r8   )r!   rr   ÚdestroyÚstepÚshiftÚreducer0   ÚundoÚ
postscriptÚhelpÚedit_grammarÚedit_sentencer$   )r2   s    r6   r(   zShiftReduceApp._init_bindingsÁ   s;  € à�	‰	�‰�} d§l¡lÔ3Ø�	‰	�‰�} d§l¡lÔ3Ø�	‰	�‰�y $§,¡,Ô/Ø�	‰	�‰�y $§,¡,Ô/ð 	�	‰	�‰�y $§)¡)Ô,Ø�	‰	�‰�u˜dŸj™jÔ)Ø�	‰	�‰�y $§*¡*Ô-Ø�	‰	�‰�} d§j¡jÔ1Ø�	‰	�‰�u˜dŸk™kÔ*Ø�	‰	�‰�y $§+¡+Ô.Ø�	‰	�‰�} d§k¡kÔ2Ø�	‰	�‰�z 4§:¡:Ô.Ø�	‰	�‰�u˜dŸi™iÔ(Ø�	‰	�‰�y $§)¡)Ô,Ø�	‰	�‰�} d§i¡iÔ0Ø�	‰	�‰�} d§i¡iÔ0Ø�	‰	�‰�} d§i¡iÔ0ð 	�	‰	�‰�} d§o¡oÔ6Ø�	‰	�‰�} d§i¡iÔ0Ø�	‰	�‰�v˜tŸy™yÔ)Ø�	‰	�‰�} d×&7Ñ&7Ô8Ø�	‰	�‰�} d×&8Ñ&8Ô9ð 	�	‰	�‰�s¨¯©Ò@ÔAØ�	‰	�‰�s¨¯©Ò@ÔAØ�	‰	�‰�s¨¯©Ò?Õ@r8   c                 ó¤  — t        |«      x| _        }|j                  dd¬«       t        |ddd| j                  ¬«      j                  d¬	«       t        |d
ddd| j
                  ¬«      j                  d¬	«       t        |dddd| j                  ¬«      j                  d¬	«       t        |dddd| j                  ¬«      j                  d¬	«       y )NÚnoneÚbottom)rL   rM   ÚStepz#90c0d0Úblack)r   rU   rV   rc   rJ   ©rM   ÚShiftr   z#90f090)r   Ú	underlinerU   rV   rc   ÚReduceÚUndoz#f0a0a0)r   Ú_buttonframerg   r   r‹   rŒ   r�   rŽ   )r2   rw   Úbuttonframes      r6   r*   zShiftReduceApp._init_buttonsã   sÓ   € ä*/°«-Ð7ˆÔ˜KØ×Ñ˜f¨8ÐÔ4ÜØØØ ØØ—I‘Iô	
÷ ‰$�Fˆ$Ô
ÜØØØØ ØØ—J‘Jô	
÷ ‰$�Fˆ$Ô
ÜØØØØ ØØ—K‘Kô	
÷ ‰$�Fˆ$Ô
ÜØØØØ ØØ—I‘Iô	
÷ ‰$�Fˆ$Õ
r8   c                 óÆ  — t        |«      }t        |d¬«      }|j                  dd| j                  d¬«       |j                  dd| j                  d¬«       |j                  dd	| j                  d
¬«       |j                  dd|¬«       t        |d¬«      }|j                  dd| j                  d¬«       |j                  dd| j                  d¬«       |j                  dd|¬«       t        |d¬«      }|j                  dd	| j                  d¬«       |j                  «        |j                  dd| j                  d¬«       |j                  dd| j                  d¬«       |j                  «        |j                  dd| j                  d¬«       |j                  dd|¬«       t        |d¬«      }|j                  dd| j                  | j                  ¬«       |j                  «        |j!                  d| j"                  dd| j$                  ¬ «       |j!                  d!| j"                  dd"| j$                  ¬ «       |j!                  d#| j"                  dd$| j$                  ¬ «       |j!                  d%| j"                  dd&| j$                  ¬ «       |j!                  d'| j"                  dd(| j$                  ¬ «       |j                  d)d|¬«       t        |d¬«      }|j!                  d*d| j&                  d¬+«       |j!                  d,d| j&                  d-d.¬/«       |j!                  d0d| j&                  dd1¬/«       |j!                  d2d| j&                  d3d4¬/«       |j                  d5d	|¬«       t        |d¬«      }|j                  d6d| j(                  ¬7«       |j                  d8d| j*                  d9¬«       |j                  d:d|¬«       |j-                  |¬;«       y )<Nr   r   zReset ParserÚDel)Úlabelrš   rc   ÚacceleratorzPrint to PostscriptzCtrl-pÚExitr   zCtrl-xÚFile)r¡   rš   ÚmenuzEdit Grammaré   zCtrl-gú	Edit TextzCtrl-tÚEditr–   ÚSpacer™   zCtrl-sr›   zCtrl-rrœ   zCtrl-uÚApplyúShow Grammar)r¡   rš   Úvariablerc   ÚTinyr   )r¡   r¬   rš   Úvaluerc   ÚSmallé   ÚMediumé   ÚLargeé   ÚHugeé   ÚViewzNo Animation)r¡   rš   r¬   r®   zSlow Animationr~   r|   )r¡   rš   r¬   r®   r¢   zNormal Animationr…   zFast Animationr‰   r‡   ÚAnimateÚAbout)r¡   rš   rc   ÚInstructionsÚF1ÚHelp)r¥   )r   Úadd_commandr0   r�   rŠ   Úadd_cascader‘   r’   r‹   Úadd_separatorrŒ   r�   rŽ   Úadd_checkbuttonr&   Ú_toggle_grammarÚadd_radiobuttonrB   Úresizer$   Úaboutr�   rn   )	r2   rw   ÚmenubarÚfilemenuÚeditmenuÚrulemenuÚviewmenuÚanimatemenuÚhelpmenus	            r6   r)   zShiftReduceApp._init_menubar  s   € Ü�v“,ˆä˜¨Ô+ˆØ×ÑØ ¨A°t·z±zÈuð 	ô 	
ð 	×ÑØ'ØØ—O‘OØ ð	 	ô 	
ð 	×ÑØ A¨t¯|©|Èð 	ô 	
ð 	×Ñ &°A¸HÐÔEä˜¨Ô+ˆØ×ÑØ ØØ×%Ñ%Ø ð	 	ô 	
ð 	×ÑØØØ×&Ñ&Ø ð	 	ô 	
ð 	×Ñ &°A¸HÐÔEä˜¨Ô+ˆØ×ÑØ A¨t¯y©yÀgð 	ô 	
ð 	×ÑÔ Ø×ÑØ Q°·
±
Èð 	ô 	
ð 	×ÑØ a°·±È(ð 	ô 	
ð 	×ÑÔ Ø×ÑØ A¨t¯y©yÀhð 	ô 	
ð 	×Ñ '°Q¸XÐÔFä˜¨Ô+ˆØ× Ñ Ø ØØ×'Ñ'Ø×(Ñ(ð	 	!ô 	
ð 	×ÑÔ Ø× Ñ ØØ—Z‘ZØØØ—K‘Kð 	!ô 	
ð 	× Ñ ØØ—Z‘ZØØØ—K‘Kð 	!ô 	
ð 	× Ñ ØØ—Z‘ZØØØ—K‘Kð 	!ô 	
ð 	× Ñ ØØ—Z‘ZØØØ—K‘Kð 	!ô 	
ð 	× Ñ ØØ—Z‘ZØØØ—K‘Kð 	!ô 	
ð 	×Ñ &°A¸HÐÔEä˜7¨AÔ.ˆØ×#Ñ#Ø ¨A¸¿¹ÈQð 	$ô 	
ð 	×#Ñ#Ø"ØØ—]‘]ØØð 	$ô 	
ð 	×#Ñ#Ø$ØØ—]‘]ØØð 	$ô 	
ð 	×#Ñ#Ø"ØØ—]‘]ØØð 	$ô 	
ð 	×Ñ )°q¸{ÐÔKä˜¨Ô+ˆØ×Ñ 7°aÀÇÁÐÔLØ×ÑØ ¨A°t·y±yÈdð 	ô 	
ð 	×Ñ &°A¸HÐÔEà�‰˜7ˆÕ#r8   c                 óú  — t        |«      x| _        }|j                  dddd¬«       t        |d| j                  ¬«      | _        | j
                  j                  d¬«       t        |d	d
¬«      }|j                  ddd
d¬«       t        |dd| j                  ¬«      | _        t        |dddd| j                  ¬«      | _        | j                  j                  d¬«       | j                  j                  ddd
¬«       y )NÚxr•   é   )rL   rM   rN   ÚpadyzLast Operation:)r   r:   rJ   r˜   Úsunkenr   )rT   ÚborderrY   r¦   )rL   rM   r[   rN   z#007070z#f0f0f0)rV   rU   r:   Úwé   rR   )ÚanchorÚwidthrV   rU   r:   rZ   )r   Ú_feedbackframerg   r   rF   Ú_lastoper_labelr1   Ú
_lastoper2)r2   rw   ÚfeedbackframeÚlastoperframes       r6   r+   zShiftReduceApp._init_feedbackŠ  sî   € Ü.3°F«mÐ;ˆÔ˜mØ×Ñ ¨(¸ÀÐÔCÜ$ØÐ 1¸¿
¹
ô 
ˆÔð 	×Ñ×!Ñ! vÐ!Ô.Ü˜m°HÀQÔGˆØ×Ñ ¨'¸!À!ÐÔDÜØ i¸IÈDÏJÉJô
ˆŒô  ØØØØ Ø Ø—‘ô
ˆŒð 	�‰×Ñ &ÐÔ)Ø�‰×Ñ &¨s¸1ÐÕ=r8   c                 ó¶  — t        |ddddd¬«      | _        | j                  j                  ddd	d¬
«       | j                  j                  «       x}| _        g | _        g | _        |j                  dddddd¬«      | _        |j                  ddddd¬«      | _
        |j                  ddddd¬«      | _        | j                  j                  «       dz   }t        |dd| j                  ¬«      | _        t        |dd| j                  ¬«      | _        | j                  j%                  | j                   «       | j                  j%                  | j"                  «       y )NrQ   i  r   rK   rÐ   )rU   rÕ   ÚcloseenoughrÑ   rT   r   rI   Útop)r[   rL   rM   rÏ   r   z#c0f0f0r—   )rL   Úoutlineú.)Údashz#408080)rL   r‰   ÚStackrR   ©Úcolorr:   zRemaining Text)r   Ú_cframerg   Úcanvasr.   Ú_stackwidgetsÚ_rtextwidgetsÚcreate_rectangleÚ	_titlebarÚcreate_lineÚ	_exprlineÚ	_stacktoprB   rD   r   rE   Ú_stacklabelÚ_rtextlabelÚ
add_widget)r2   rw   rå   r;   s       r6   r-   zShiftReduceApp._init_canvas¡  sD  € Ü"ØØØØØØô
ˆŒð 	�‰×Ñ ¨°eÀ!ÐÔDØ $§¡× 3Ñ 3Ó 5Ð5ˆ�”àˆÔØˆÔØ×0Ñ0Øˆq�!�Q˜Y°ð 1ó 
ˆŒð  ×+Ñ+¨A¨q°!°Q¸SÐ+ÓAˆŒØ×+Ñ+¨A¨q°!°Q¸YÐ+ÓGˆŒØ�z‰z�~‰~Ó !Ñ#ˆÜ%Ø�G 9°4·>±>ô
ˆÔô &ØÐ$¨I¸D¿N¹Nô
ˆÔð 	�‰×Ñ × 0Ñ 0Ô1Ø�‰×Ñ × 0Ñ 0Õ1r8   c                 ó
  — | j                   d   j                  «       }d„ |D «       \  }}}}| j                  D ]  }| j                  j	                  |«       Œ g | _        | j
                  D ]  }| j                  j	                  |«       Œ g | _        | j                  j                  «       \  }}	}
}||	z
  dz   }| j                   j                  | j                  ddd|dz
  «       | j                   j                  | j                  d|dz  dz
  d|dz  dz
  «       | j                  j                  «       \  }}	}
}| j                  j                  d	|z
  d
|	z
  «       | j                  j                  «       \  }}	}
}| j                  j                  ||
z
  d	z
  d
|	z
  «       d	}| j                  j                  «       D ]æ  }t        |t         «      rHdd| j"                  dd| j$                  dœ}t'        | j                   |fi |¤Ž}d|j)                  «       d<   n#t+        | j                   |d| j$                  ¬«      }|j-                  | j.                  «       | j                  j1                  |«       | j                  j3                  |||«       |j                  «       d   dz   }Œè d}| j                  j5                  «       D ]s  }t+        | j                   |d| j$                  ¬«      }| j
                  j1                  |«       | j                  j3                  |||«       |j                  «       d   dz   }Œu t7        | j
                  «      dkD  r || j
                  d   j9                  «       z  }t;        || j                  j9                  «       dz   «      }| j                  j9                  «       dz   }||t;        ||«      z
  k\  r|t;        ||«      z   }| j
                  D ]  }|j                  d|z   |z
  d«       Œ | j                  j                  || j                  j                  «       d   z
  d	z
  d«       ||z   t;        ||«      z
  dz  }| j                   j                  | j<                  |d|d«       | j                  j                  «       \  }}	}
}t7        | j
                  «      dkD  rL|| fd„}| j
                  d   j?                  |«       | j
                  d   j-                  | j@                  «       | jC                  «        y )NÚscrollregionc              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)Úint)Ú.0Úcs     r6   ú	<genexpr>z)ShiftReduceApp._redraw.<locals>.<genexpr>Ä  s   è ø€ Ò=¨1¤ A§Ñ=ùs   ‚r   ixìÿÿr   éˆ  r‰   rK   r¦   rÎ   z#4080a0ú#006060)Ú
tree_colorÚ
tree_widthÚ	node_fontÚ
node_colorÚ
leaf_colorÚ	leaf_fontz#000000rã   râ   r^   c                 ór   — | j                  «       d   |k  r|j                  «        y |j                  «        y )Nr   )ÚbboxrŒ   Ú_redraw)ÚwidgetÚmidxr2   s      r6   Ú
drag_shiftz*ShiftReduceApp._redraw.<locals>.drag_shift  s'   € Ø—;‘;“= Ñ# dÒ*Ø—J‘J•Là—L‘L•Nr8   )"r.   Úsplitræ   rä   Údestroy_widgetrç   rí   r  Úcoordsré   rë   Úmoverî   r    ÚstackÚ
isinstancer   rE   rF   r   r¡   r   Ú
bind_clickÚ_popup_reduceÚappendrï   Úremaining_textrp   rÕ   Úmaxrì   Ú	bind_dragrŒ   Ú_highlight_productions)r2   rñ   Úcx1Úcy1Úcx2Úcy2ÚstackwidgetÚrtextwidgetÚx1Úy1Úx2Úy2rd   ÚstackxÚtokÚattribsr  Ú
rtextwidthÚrlabelwidthr  r  s                        r6   r  zShiftReduceApp._redrawÂ  s�  € Ø—|‘| NÑ3×9Ñ9Ó;ˆÙ=°Ô=Ñˆˆc�3˜ð  ×-Ñ-ò 	5ˆKØ�L‰L×'Ñ'¨Õ4ð	5àˆÔØ×-Ñ-ò 	5ˆKØ�L‰L×'Ñ'¨Õ4ð	5àˆÔð  ×+Ñ+×0Ñ0Ó2ÑˆˆR��RØ�‰G�b‰LˆØ�‰×Ñ˜DŸN™N¨E°1°d¸AÀ¹EÔBØ�‰×Ñ˜DŸN™N¨A¨q°1©u°r©z¸4ÀÀQÁÈÁÔLð  ×+Ñ+×0Ñ0Ó2ÑˆˆR��RØ×Ñ×Ñ˜a "™f a¨"¡fÔ-Ø×+Ñ+×0Ñ0Ó2ÑˆˆR��RØ×Ñ×Ñ˜c B™h¨™l¨A°©FÔ3ð ˆØ—<‘<×%Ñ%Ó'ò 	+ˆCÜ˜#œtÔ$à"+Ø"#Ø!%§¡Ø"+Ø"+Ø!%§¡ñ�ô -¨T¯\©\¸3ÑJÀ'ÑJ�Ø*3�—‘“˜wÒ'ä# D§L¡L°#¸YÈTÏZÉZÔX�Ø×Ñ˜d×0Ñ0Ô1Ø×Ñ×%Ñ% fÔ-Ø�L‰L×#Ñ# F¨F°AÔ6Ø—[‘[“] 1Ñ%¨Ñ*‰Fð#	+ð( ˆ
Ø—<‘<×.Ñ.Ó0ò 	.ˆCÜ §¡¨c¸ÈÏÉÔTˆFØ×Ñ×%Ñ% fÔ-Ø�L‰L×#Ñ# F¨J¸Ô:ØŸ™› qÑ)¨AÑ-‰Jð		.ô ˆt×!Ñ!Ó" QÒ&Ø�d×(Ñ(¨Ñ+×1Ñ1Ó3Ñ3ˆFô
 �V˜T×-Ñ-×3Ñ3Ó5¸Ñ:Ó;ˆØ×&Ñ&×,Ñ,Ó.°Ñ3ˆØ�Sœ3˜z¨;Ó7Ñ7Ò7Øœ3˜z¨;Ó7Ñ7ˆCØ×-Ñ-ò 	6ˆKØ×Ñ˜Q ™W zÑ1°1Õ5ð	6à×Ñ×Ñ˜c D×$4Ñ$4×$9Ñ$9Ó$;¸AÑ$>Ñ>ÀÑBÀAÔFà˜‘œs :¨{Ó;Ñ;¸qÑ@ˆØ�‰×Ñ˜DŸN™N¨D°!°T¸4Ô@Ø×+Ñ+×0Ñ0Ó2ÑˆˆR��Rô ˆt×!Ñ!Ó" QÒ&à(,°4ó #ð ×Ñ˜qÑ!×+Ñ+¨JÔ7Ø×Ñ˜qÑ!×,Ñ,¨T¯Z©ZÔ8ð 	×#Ñ#Õ%r8   c                 ó‚   — |j                  «       d   dz   }| j                  j                  | j                  |d|d«       y )NrK   é2   r   rø   )r  r.   r  rì   )r2   r  r  s      r6   Ú_draw_stack_topzShiftReduceApp._draw_stack_top  s5   € à�{‰{‹}˜QÑ "Ñ$ˆØ�‰×Ñ˜DŸN™N¨D°!°T¸4Õ@r8   c                 óæ   — | j                   j                  dd«       | j                  j                  «       D ]8  }| j                  j                  |«      }| j                   j                  |«       Œ: y )Nr   r\   )ri   Úselection_clearr    Úreducible_productionsrl   ÚindexÚselection_set)r2   Úprodr(  s      r6   r  z%ShiftReduceApp._highlight_productions  sZ   € à�‰×&Ñ& q¨%Ô0Ø—L‘L×6Ñ6Ó8ò 	0ˆDØ×%Ñ%×+Ñ+¨DÓ1ˆEØ�N‰N×(Ñ(¨Õ/ñ	0r8   c                 ó`   — | j                   €y | j                   j                  «        d | _         y ró   )r!   rŠ   ©r2   r�   s     r6   rŠ   zShiftReduceApp.destroy)  s&   € Ø�9‰9ÐØØ�	‰	×ÑÔØˆ�	r8   c                 óª   — | j                   j                  | j                  «       d| j                  d<   d| j                  d<   | j                  «        y )Nz	Reset Appr   r   )r    Ú
initializer   r1   rØ   r  r,  s     r6   r0   zShiftReduceApp.reset/  s=   € Ø�‰×Ñ §
¡
Ô+Ø"-ˆ�‰˜ÑØ"$ˆ�‰˜ÑØ�‰�r8   c                 ó  — | j                  «       ry| j                  «       ryt        | j                  j	                  «       «      rd| j
                  d<   d| j                  d<   y d| j
                  d<   d| j                  d<   y )NTz	Finished:r   ÚSuccessÚFailure)r�   rŒ   rj   r    Úparsesr1   rØ   r,  s     r6   r‹   zShiftReduceApp.step5  sg   € Ø�;‰;Œ=ØØ�Z‰ZŒ\Øä�D—L‘L×'Ñ'Ó)Ô*Ø*5�—‘ Ñ'Ø*3�—‘ Ò'à*5�—‘ Ñ'Ø*3�—‘ Ò'r8   c                 óF  — | j                   ry | j                  j                  «       rz| j                  j                  «       d   }d| j                  d<   d|z  | j
                  d<   | j                  j                  «       r| j                  «        y| j                  «        yy)Nre   zShift:r   z%rTF)
r#   r    rŒ   r
  r1   rØ   r$   rD   Ú_animate_shiftr  )r2   r�   r  s      r6   rŒ   zShiftReduceApp.shiftB  s‡   € Ø×ÒØØ�<‰<×ÑÔØ—,‘,×$Ñ$Ó& rÑ*ˆCØ&.ˆD�O‰O˜FÑ#Ø&*¨S¡jˆD�O‰O˜FÑ#Ø�}‰}× Ñ Ô"Ø×#Ñ#Ô%ð ð —‘”ØØr8   c                 ó  — | j                   ry | j                  j                  «       }|r]d| j                  d<   d|z  | j                  d<   | j
                  j                  «       r| j                  «        |S | j                  «        |S )NúReduce:r   ú%s)	r#   r    r�   r1   rØ   r$   rD   Ú_animate_reducer  )r2   r�   ry   s      r6   r�   zShiftReduceApp.reduceP  sy   € Ø×ÒØØ—\‘\×(Ñ(Ó*ˆ
ÙØ&/ˆD�O‰O˜FÑ#Ø&*¨ZÑ&7ˆD�O‰O˜FÑ#Ø�}‰}× Ñ Ô"Ø×$Ñ$Ô&ð Ðð —‘”ØÐr8   c                 ót   — | j                   ry | j                  j                  «       r| j                  «        y y ró   )r#   r    rŽ   r  r,  s     r6   rŽ   zShiftReduceApp.undo]  s,   € Ø×ÒØØ�<‰<×ÑÔØ�L‰L�Nð r8   c                 ó8   — | j                   j                  «        y ró   )rä   Úprint_to_filer,  s     r6   r�   zShiftReduceApp.postscriptc  s   € Ø�‰×"Ñ"Õ$r8   c                 óR   — t        «       ry | j                  j                  |i |¤Ž y)zñ
        Enter the Tkinter mainloop.  This function must be called if
        this demo is created from a non-interactive program (e.g.
        from a secript); otherwise, the demo will close as soon as
        the script completes.
        N)r   r!   Úmainloop)r2   ÚargsÚkwargss      r6   r=  zShiftReduceApp.mainloopf  s%   € ô Œ9ØØˆ�	‰	×Ñ˜DÐ+ FÓ+r8   Nc                 óv  — |�| j                   j                  |«       | j                   j                  «       }| j                  j	                  t        |«       ¬«       | j                  j	                  t        |«       ¬«       | j                  j	                  t        |«       ¬«       | j                  «        y )N)r;   )	rB   r%   rD   rF   Ú	configureÚabsrE   r@   r  )r2   r;   s     r6   rÃ   zShiftReduceApp.resizeu  s„   € ØÐØ�J‰J�N‰N˜4Ô Ø�z‰z�~‰~ÓˆØ�
‰
×Ñ¤C¨£I ,ÐÔ/Ø�‰× Ñ ¬¨D«	 lÐ Ô3Ø�‰×Ñ¤s¨4£y \ÐÔ2ð 	�‰�r8   c                 óâ   — 	 t        | j                  dt        xs dj                  «       dd¬«       y # t        $ r2 t        | j                  dt        xs dj                  «       d¬«       Y y w xY w)Nz%Help: Shift-Reduce Parser Applicationr   éK   Úfixed)rÕ   r:   ©rÕ   )r   r!   Ú__doc__ÚstripÚ	Exceptionr,  s     r6   r�   zShiftReduceApp.help†  se   € ð	ÜØ—	‘	Ø7Ü’˜B×%Ñ%Ó'ØØöøô ò 	ÜØ—	‘	Ø7Ü’˜B×%Ñ%Ó'Ø÷	ð	ús   ‚03 ³8A.Á-A.c                 ó–   — d}d}	 ddl m}  |||¬«      j                  «        y # t        $ r t	        | j
                  ||«       Y y w xY w)Nz<NLTK Shift-Reduce Parser Application
Written by Edward Loperz&About: Shift-Reduce Parser Applicationr   )ÚMessage)Úmessager"   )Útkinter.messageboxrK  ÚshowrI  r   r!   )r2   r�   ÚABOUTÚTITLErK  s        r6   rÄ   zShiftReduceApp.about˜  sF   € ØTˆØ8ˆð	.Ý2á˜E¨Ô/×4Ñ4Õ6øÜò 	.Ü�T—Y‘Y  uÖ-ð	.ús   †% ¥ AÁAc                 óv   — t        | j                  | j                  j                  «       | j                  «       y ró   )r   r!   r    r3   Úset_grammarr,  s     r6   r‘   zShiftReduceApp.edit_grammar¢  s%   € Ü�$—)‘)˜TŸ\™\×1Ñ1Ó3°T×5EÑ5EÕFr8   c                 ó  — | j                   j                  |«       t        |j                  «       «      | _        | j
                  j                  dd«       | j                  D ]!  }| j
                  j                  dd|z  «       Œ# y )Nr   r\   r]   )r    rR  rj   rk   rl   ri   Údeleterm   )r2   r3   ry   s      r6   rR  zShiftReduceApp.set_grammar¥  sl   € Ø�‰× Ñ  Ô)Ü  ×!4Ñ!4Ó!6Ó7ˆÔØ�‰×Ñ˜a Ô'Ø×+Ñ+ò 	?ˆJØ�N‰N×!Ñ! %¨%°*Ñ*<Õ>ñ	?r8   c                 óˆ   — dj                  | j                  «      }d}d}t        | j                  ||| j                  |«       y )Nú r§   zEnter a new sentence to parse.)Újoinr   r   r!   Úset_sentence)r2   r�   Úsentencer"   Úinstrs        r6   r’   zShiftReduceApp.edit_sentence¬  s8   € Ø—8‘8˜DŸJ™JÓ'ˆØˆØ0ˆÜ�D—I‘I˜x¨°×0AÑ0AÀ5ÕIr8   c                 óN   — |j                  «       | _        | j                  «        y ró   )r  r   r0   )r2   r4   s     r6   rX  zShiftReduceApp.set_sentence²  s   € Ø—Z‘Z“\ˆŒ
Ø�
‰
�r8   c                 ó  — | j                   j                  «       r9| j                  j                  ddd| j                  ¬«       d| j
                  d<   n)| j                  j                  «        d| j
                  d<   d| j                  d<   y )	NrI   rJ   rK   )rL   rM   rN   Úafterr«   r   zHide Grammarr   )r&   rD   rf   rg   rÖ   r1   Úpack_forgetrØ   r,  s     r6   rÁ   zShiftReduceApp._toggle_grammarº  sv   € Ø×Ñ×!Ñ!Ô#Ø�O‰O× Ñ Ø &¨q¸×8KÑ8Kð !ô ð '5ˆD�O‰O˜FÒ#à�O‰O×'Ñ'Ô)Ø&4ˆD�O‰O˜FÑ#Ø"$ˆ�‰˜Òr8   c                 ób  — | j                   j                  «       }t        |«      dk7  ry t        |d   «      }| j                  j                  | j                  |   «      }|r]d| j                  d<   d|z  | j                  d<   | j                  j                  «       r| j                  «        y | j                  «        y | j                   j                  dd«       | j                  j                  «       D ]8  }| j                  j                  |«      }| j                   j!                  |«       Œ: y )Nr   r   r6  r   r7  r\   )ri   Úcurselectionrp   rô   r    r�   rl   r1   rØ   r$   rD   r8  r  r&  r'  r(  r)  )r2   ÚeventÚ	selectionr(  ry   r*  s         r6   rs   zShiftReduceApp._prodlist_selectÅ  só   € Ø—N‘N×/Ñ/Ó1ˆ	Üˆy‹>˜QÒØÜ�I˜a‘LÓ!ˆØ—\‘\×(Ñ(¨×):Ñ):¸5Ñ)AÓBˆ
ÙØ&/ˆD�O‰O˜FÑ#Ø&*¨ZÑ&7ˆD�O‰O˜FÑ#Ø�}‰}× Ñ Ô"Ø×$Ñ$Õ&à—‘•ð �N‰N×*Ñ*¨1¨eÔ4ØŸ™×:Ñ:Ó<ò 4�Ø×)Ñ)×/Ñ/°Ó5�Ø—‘×,Ñ,¨UÕ3ñ4r8   c                 ó”  — | j                   j                  «       }t        |«      dk(  ry | j                  j	                  dd«       |D ]2  }| j                  j                  t        |«      | j                  ¬«       Œ4 | j                  j                  | j                  j                  «       | j                  j                  «       «       y )Nr   r\   )r¡   rc   )r    r'  rp   r/   rT  r½   Ústrr�   Úpostr.   Úwinfo_pointerxÚwinfo_pointery)r2   r  rk   ry   s       r6   r  zShiftReduceApp._popup_reduceÙ  sŸ   € à—l‘l×8Ñ8Ó:ˆÜˆ{Ó˜qÒ Øà×Ñ× Ñ   EÔ*Ø%ò 	VˆJØ×Ñ×)Ñ)´°J³ÈÏÉÐ)ÕUð	Và×Ñ×ÑØ�L‰L×'Ñ'Ó)¨4¯<©<×+FÑ+FÓ+Hõ	
r8   c                 ó4  — | j                   d   }|j                  «       d   }t        | j                  «      dk(  rd}n#| j                  d   j                  «       d   dz   }| j                  j                  «       }||z
  dz  |z  }| j                  |||«       y )Nr   r¦   re   rK   r   g      ð?)rç   r  rp   ræ   r$   rD   Ú_animate_shift_frame)r2   r  rY   rJ   ÚdtÚdxs         r6   r4  zShiftReduceApp._animate_shiftê  s˜   € à×#Ñ# AÑ&ˆð —‘“˜aÑ ˆÜˆt×!Ñ!Ó" aÒ'Ø‰Dà×%Ñ% bÑ)×.Ñ.Ó0°Ñ3°bÑ8ˆDð �]‰]×ÑÓ ˆØ�U‰l˜cÑ! BÑ&ˆØ×!Ñ! " f¨bÕ1r8   c                 ó:  — |dkD  rFd| _         |j                  |d«       | j                  j                  d| j                  |dz
  ||«       y | j
                  d= | j                  j                  |«       d| _         | j                  |«       | j                  «        y )Nr   r   r   )
r#   r	  r!   r]  ri  rç   ræ   r  r$  r  )r2   Úframer  rk  s       r6   ri  z#ShiftReduceApp._animate_shift_frameú  s‰   € Ø�1Š9Ø#$ˆDÔ Ø�K‰K˜˜AÔØ�I‰I�O‰O˜B × 9Ñ 9¸5À1¹9ÀfÈbÕQð
 ×"Ñ" 1Ð%Ø×Ñ×%Ñ% fÔ-Ø#$ˆDÔ ð × Ñ  Ô(Ø×'Ñ'Õ)r8   c                 ó|  — t        | j                  j                  «       d   «      }| j                  | d  }t	        |d   t
        «      r%d|d   j                  «       j                  «       z   }nd|d   j                  «       z   }| j                  j                  «       }|dz  |z  }| j                  |dz  ||«       y )Nre   r   é   g       @rK   )rp   r    r
  ræ   r  r   r¡   r_   r$   rD   Ú_animate_reduce_frame)r2   Ú
numwidgetsÚwidgetsÚydistrj  Údys         r6   r8  zShiftReduceApp._animate_reduce  s²   € ä˜Ÿ™×+Ñ+Ó-¨bÑ1Ó2ˆ
Ø×$Ñ$ j [ \Ð2ˆô �g˜a‘jÔ"3Ô4Ø˜ ™×)Ñ)Ó+×2Ñ2Ó4Ñ4‰Eà˜ ™×*Ñ*Ó,Ñ,ˆEð �]‰]×ÑÓ ˆØ�S‰[˜2ÑˆØ×"Ñ" 2¨¡6¨7°BÕ7r8   c                 ó¤  — |dkD  rMd| _         |D ]  }|j                  d|«       Œ | j                  j                  d| j                  |dz
  ||«       y | j
                  t        |«       d …= |D ]  }| j                  j                  |«       Œ | j                  j                  «       d   }t        |t        «      s
t        «       ‚t        | j                  t!        |j#                  «       «      d| j$                  ¬«      }t'        | j                  ||d¬«      }| j(                  j+                  «       \  }}}	}
|
|z
  dz   }| j
                  sd	}n#| j
                  d   j+                  «       d   dz   }| j                  j-                  |||«       | j
                  j/                  |«       | j1                  |«       | j3                  «        d| _         y )
Nr   r   r   re   rù   râ   rK   rF  r¦   )r#   r	  r!   r]  rp  ræ   rp   rä   Úremove_widgetr    r
  r  r   Ú
ValueErrorr   r.   rd  r¡   rE   r   rí   r  rï   r  r$  r  )r2   rm  rr  rt  r  r  r¡   r  r  r  r  rd   rÍ   s                r6   rp  z$ShiftReduceApp._animate_reduce_frame  s˜  € Ø�1Š9Ø#$ˆDÔ Ø!ò #�Ø—‘˜A˜rÕ"ð#à�I‰I�O‰O˜B × :Ñ :¸EÀA¹IÀwÐPRÕSà×"Ñ"¤C¨£L =¡?Ð3Ø!ò 3�Ø—‘×*Ñ*¨6Õ2ð3à—,‘,×$Ñ$Ó& rÑ*ˆCÜ˜c¤4Ô(Ü “lÐ"ÜØ—‘œc #§)¡)£+Ó.°iÀdÇnÁnôˆEô ' t§|¡|°U¸GÈ1ÔMˆFØ#×/Ñ/×4Ñ4Ó6ÑˆR��R˜Ø�R‘˜"‘ˆAØ×%Ò%Ø‘à×&Ñ& rÑ*×/Ñ/Ó1°!Ñ4°rÑ9�Ø�L‰L×#Ñ# F¨A¨qÔ1Ø×Ñ×%Ñ% fÔ-ð × Ñ  Ô(Ø×'Ñ'Ô)ð8 $%ˆDÕ r8   c                 óÖ  — | j                   j                  |j                  «      }| j                  |k(  ry | j	                  «        | j                   j                  «       D �cg c]  }t        |«      ‘Œ }}||v rdt        | j                  |   j                  «       «      }| j                  | d  D ]+  }t        |t        «      rd|j                  «       d<   Œ'd|d<   Œ- || _        y c c}w )Nz#00a000rã   )ri   Únearestrd   rt   rv   r`  rô   rp   rl   Úrhsræ   r  r   r¡   )r2   ra  r(  Úsrb  Úrhslenr  s          r6   ru   zShiftReduceApp._highlight_hoverY  sØ   € à—‘×&Ñ& u§w¡wÓ/ˆØ�;‰;˜%ÒØð 	×ÑÔð &*§^¡^×%@Ñ%@Ó%BÖC ”S˜•VÐCˆ	ÐCØ�IÑÜ˜×*Ñ*¨5Ñ1×5Ñ5Ó7Ó8ˆFØ#×1Ñ1°6°'°(Ð;ò 5�Ü˜kÔ+<Ô=Ø3<�K×%Ñ%Ó'¨Ò0à+4�K Ò(ð	5ð ˆ�ùò Ds   Á"C&c                 ó¦   — | j                   dk(  ry d| _         | j                  D ]+  }t        |t        «      rd|j	                  «       d<   Œ'd|d<   Œ- y )Nre   r—   rã   )rt   ræ   r  r   r¡   )r2   ra  r  s      r6   rv   zShiftReduceApp._clear_hoverp  sU   € à�;‰;˜"ÒØØˆŒØ×-Ñ-ò 	/ˆKÜ˜+Ô'8Ô9Ø/6�×!Ñ!Ó# GÒ,à'.�˜GÒ$ñ		/r8   )r   ró   )'Ú__name__Ú
__module__Ú__qualname__rG  r7   r'   r,   r(   r*   r)   r+   r-   r  r$  r  rŠ   r0   r‹   rŒ   r�   rŽ   r�   r=  rÃ   r�   rÄ   r‘   rR  r’   rX  rÁ   rs   r  r4  ri  r8  rp  ru   rv   © r8   r6   r   r   W   sÅ   „ ñó$%òT
Eò':òR AòD"òHA$òF>ò.2òBU&ònAò
0òòò4òòòò%ò	,óò"ò$.òGò?òJòò	%ò4ò(
ò"2ò *ò"8ò 8%ò|ó.	/r8   r   c                  ó"  ‡— ddl m} mŠm} d}ˆfd„|j	                  «       D «       \	  }}}}}}}	}
} ||||g«       ||||g«       ||||g«       ||||g«       |||
||g«       |||
|g«       ||||g«       ||dg«       ||dg«       ||dg«       ||dg«       ||
d	g«       ||d
g«       ||dg«       ||dg«       ||dg«       ||dg«       ||dg«      f} | ||«      }dj	                  «       }t        ||«      j                  «        y)zP
    Create a shift reduce parser app, using a simple grammar and
    text.
    r   )ÚCFGÚNonterminalÚ
ProductionzS VP NP PP P N Name V Detc              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wró   r�  )rõ   r{  r„  s     €r6   r÷   zapp.<locals>.<genexpr>…  s   øè ø€ Ò*X¸a©;°q¯>Ñ*Xùs   ƒÚIÚther‚   ÚmanÚsawÚinÚwithÚparkÚdogÚstatueÚmyz*my dog saw a man in the park with a statueN)Únltk.grammarrƒ  r„  r…  r  r   r=  )rƒ  r…  ÚnonterminalsÚSÚVPÚNPÚPPÚPÚNÚNameÚVÚDetrk   r3   r4   r„  s                  @r6   Úapprœ  |  sX  ø€ ÷ :Ñ9à.€LÛ*XÀ<×CUÑCUÓCWÔ*XÑ'€QˆˆB��A�q˜$  3ñ 	�1�r˜2�hÓÙ�2˜˜Q�xÓ Ù�2˜˜B�xÓ Ù�2˜˜B�xÓ Ù�2˜˜2˜r�{Ó#Ù�2˜˜2�wÓÙ�2˜˜2�wÓá�2˜�uÓÙ�3˜˜Ó Ù�3˜˜ÓÙ�1�u�gÓÙ�1�u�gÓÙ�1�t�fÓÙ�1�v�hÓÙ�1�v�hÓÙ�1�u�gÓÙ�1�x�jÓ!Ù�3˜˜Óð)€Kñ. �!�[Ó!€Gð 8×=Ñ=Ó?€Dä�7˜DÓ!×*Ñ*Õ,r8   Ú__main__rœ  N)rG  Útkinterr   r   r   r   r   r   r	   r
   Útkinter.fontr   Ú	nltk.drawr   r   r   Únltk.draw.utilr   r   r   r   Ú
nltk.parser   Ú	nltk.treer   Ú	nltk.utilr   r   rœ  r~  Ú__all__r�  r8   r6   ú<module>r¦     s]   ðñ7÷r O× NÓ NÝ ç GÑ Gß IÓ IÝ 0Ý Ý ð
÷b/ñ b/òJ'-ðT ˆzÒÙ„Eàˆ'�r8   