§
    €zIfa†  ã                   óÖ   — 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dS )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&dS ))Ú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.
    r   c                 óD  — || _         t          ||¦  «        | _        t          ¦   «         | _        | j                             d¦  «         d| _        t          | j        ¦  «        | _        | j         	                    d¦  «         t          | j        ¦  «        | _
        | j
         	                    d¦  «         |                      | j        ¦  «         |                      ¦   «          |                      | j        ¦  «         |                      | j        ¦  «         |                      | j        ¦  «         |                      | j        ¦  «         |                      | j        ¦  «         t%          | j        d¬¦  «        | _        |                      ¦   «          d| j        d<   d S )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       úI/var/www/piapp/venv/lib/python3.11/site-packages/nltk/app/srparser_app.pyÚ__init__zShiftReduceApp.__init__b   sn  € ØˆŒ
Ý0°¸%Ñ@Ô@ˆŒõ ‘D”DˆŒ	ØŒ	�ŠÐ9Ñ:Ô:Ð:ð  !ˆÔÝ˜tœyÑ)Ô)ˆŒØŒ×Ò˜"ÑÔÐõ $ D¤IÑ.Ô.ˆÔØÔ×Ò˜qÑ!Ô!Ð!ð 	×Ò˜œÑ#Ô#Ð#ð 	×ÒÑÔÐð 	×Ò˜4œ9Ñ%Ô%Ð%Ø×Ò˜4œ9Ñ%Ô%Ð%Ø×Ò˜DœIÑ&Ô&Ð&Ø×Ò˜4œ9Ñ%Ô%Ð%Ø×Ò˜$œ)Ñ$Ô$Ð$õ ! ¤°qÐ9Ñ9Ô9ˆÔð 	�
Š
‰ŒˆØ"$ˆŒ˜ÑÐÐó    c                 óÌ  — t          t          ¦   «         d         ¬¦  «        | _        |                     d| j        ¦  «         t	          |¦  «        | _        | j                             | j                             d¦  «        ¦  «         t          dd| j                             ¦   «         ¬¦  «        | _	        t          d| j                             ¦   «         ¬¦  «        | _
        d S )	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Ñ3Ô3ˆŒØ�Š˜ ¤Ñ/Ô/Ð/õ ˜D‘\”\ˆŒ
ØŒ
�Š�t”}×)Ò)¨&Ñ1Ô1Ñ2Ô2Ð2å [¸ÀdÄjÇnÂnÑFVÔFVÐWÑWÔWˆŒÝ °4´:·>²>Ñ3CÔ3CÐDÑDÔDˆŒ
ˆ
ˆ
r8   c           
      óP  — t          |¦  «        x| _        }| j                             ddd¬¦  «         t          | j        | j        d¬¦  «        | _        | j                             ¦   «          t          | j        ddd	d
| j        dd¬¦  «        | _        | j                             ddd¬¦  «         t          | j
                             ¦   «                              ¦   «         ¦  «        | _        | j        D ] }| j                             dd|z  ¦  «         Œ!| j                             t!          t#          | j        ¦  «        d¦  «        ¬¦  «         	 t%          | j        d¬¦  «        }| j                             |j        ¬¦  «         |                     | j        j        ¬¦  «         |                     dd¬¦  «         | j                             d| j        ¦  «         d| _        | j                             d| j        ¦  «         | j                             d| j        ¦  «         d S )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¤mÐ3ˆŒ˜)ØŒ×Ò &¨v¸AÐÑ>Ô>Ð>Ý$ØŒO $¤.Ð7Mð 
ñ  
ô  
ˆÔð 	Ô×!Ò!Ñ#Ô#Ð#Ý ØŒOØØØØ Ø”Ø&Ø&ð	
ñ 	
ô 	
ˆŒð 	Œ×Ò ¨v¸aÐÑ@Ô@Ð@å  ¤×!5Ò!5Ñ!7Ô!7×!CÒ!CÑ!EÔ!EÑFÔFˆÔØÔ+ð 	?ð 	?ˆJØŒN×!Ò! %¨%°*Ñ*<Ñ>Ô>Ð>Ð>ØŒ×Ò¥S­¨TÔ->Ñ)?Ô)?ÀÑ%DÔ%DÐÑEÔEÐEð	3Ý" 4¤?¸:ÐFÑFÔFˆJØŒN×!Ò!°´Ð!Ñ@Ô@Ð@Ø×Ò d¤nÔ&:ÐÑ;Ô;Ð;Ø�OŠO ¨cˆOÑ2Ô2Ð2ð 	Œ×ÒÐ/°Ô1FÑGÔGÐGð ˆŒØŒ×Ò˜J¨Ô(=Ñ>Ô>Ð>ØŒ×Ò˜I tÔ'8Ñ9Ô9Ð9Ð9Ð9r8   c                 óX  — | j                              d| j        ¦  «         | j                              d| j        ¦  «         | j                              d| j        ¦  «         | j                              d| j        ¦  «         | j                              d| j        ¦  «         | j                              d| j        ¦  «         | j                              d| j        ¦  «         | j                              d| j        ¦  «         | j                              d	| j        ¦  «         | j                              d
| j        ¦  «         | j                              d| j        ¦  «         | j                              d| j        ¦  «         | j                              d| j        ¦  «         | j                              d| j        ¦  «         | j                              d| j        ¦  «         | j                              d| j        ¦  «         | j                              d| j        ¦  «         | j                              d| j        ¦  «         | j                              d| j	        ¦  «         | j                              d| j	        ¦  «         | j                              d| j
        ¦  «         | j                              d| j        ¦  «         | j                              d| j        fd„¦  «         | j                              d| j        fd„¦  «         | j                              d| j        fd„¦  «         d S )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                 ó,   — |                      d¦  «        S )Né   ©r%   ©ÚeÚas     r6   ú<lambda>z/ShiftReduceApp._init_bindings.<locals>.<lambda>ß   ó   € °q·u²u¸R±y´y€ r8   ú=c                 ó,   — |                      d¦  «        S )Nr   r   r€   s     r6   rƒ   z/ShiftReduceApp._init_bindings.<locals>.<lambda>à   r„   r8   ú+c                 ó,   — |                      d¦  «        S )Né   r   r€   s     r6   rƒ   z/ShiftReduceApp._init_bindings.<locals>.<lambda>á   s   € °q·u²u¸Q±x´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Ñ3Ô3Ð3ØŒ	�Š�} d¤lÑ3Ô3Ð3ØŒ	�Š�y $¤,Ñ/Ô/Ð/ØŒ	�Š�y $¤,Ñ/Ô/Ð/ð 	Œ	�Š�y $¤)Ñ,Ô,Ð,ØŒ	�Š�u˜dœjÑ)Ô)Ð)ØŒ	�Š�y $¤*Ñ-Ô-Ð-ØŒ	�Š�} d¤jÑ1Ô1Ð1ØŒ	�Š�u˜dœkÑ*Ô*Ð*ØŒ	�Š�y $¤+Ñ.Ô.Ð.ØŒ	�Š�} d¤kÑ2Ô2Ð2ØŒ	�Š�z 4¤:Ñ.Ô.Ð.ØŒ	�Š�u˜dœiÑ(Ô(Ð(ØŒ	�Š�y $¤)Ñ,Ô,Ð,ØŒ	�Š�} d¤iÑ0Ô0Ð0ØŒ	�Š�} d¤iÑ0Ô0Ð0ØŒ	�Š�} d¤iÑ0Ô0Ð0ð 	Œ	�Š�} d¤oÑ6Ô6Ð6ØŒ	�Š�} d¤iÑ0Ô0Ð0ØŒ	�Š�v˜tœyÑ)Ô)Ð)ØŒ	�Š�} dÔ&7Ñ8Ô8Ð8ØŒ	�Š�} dÔ&8Ñ9Ô9Ð9ð 	Œ	�Š�s¨¬Ð@Ð@Ð@ÑAÔAÐAØŒ	�Š�s¨¬Ð@Ð@Ð@ÑAÔAÐAØŒ	�Š�s¨¬Ð?Ð?Ð?Ñ@Ô@Ð@Ð@Ð@r8   c                 óÎ  — t          |¦  «        x| _        }|                     dd¬¦  «         t          |ddd| j        ¬¦  «                             d¬	¦  «         t          |d
ddd| j        ¬¦  «                             d¬	¦  «         t          |dddd| j        ¬¦  «                             d¬	¦  «         t          |dddd| j        ¬¦  «                             d¬	¦  «         d S )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Ô4Ð4ÝØØØ ØØ”Ið	
ñ 	
ô 	
÷ Š$�Fˆ$Ñ
Ô
Ð
ÝØØØØ ØØ”Jð	
ñ 	
ô 	
÷ Š$�Fˆ$Ñ
Ô
Ð
ÝØØØØ ØØ”Kð	
ñ 	
ô 	
÷ Š$�Fˆ$Ñ
Ô
Ð
ÝØØØØ ØØ”Ið	
ñ 	
ô 	
÷ Š$�Fˆ$Ñ
Ô
Ð
Ð
Ð
r8   c                 óê  — t          |¦  «        }t          |d¬¦  «        }|                     dd| j        d¬¦  «         |                     dd| j        d¬¦  «         |                     dd	| j        d
¬¦  «         |                     dd|¬¦  «         t          |d¬¦  «        }|                     dd| j        d¬¦  «         |                     dd| j        d¬¦  «         |                     dd|¬¦  «         t          |d¬¦  «        }|                     dd	| j        d¬¦  «         | 	                    ¦   «          |                     dd| j
        d¬¦  «         |                     dd| j        d¬¦  «         | 	                    ¦   «          |                     dd| j        d¬¦  «         |                     dd|¬¦  «         t          |d¬¦  «        }|                     dd| j        | j        ¬¦  «         | 	                    ¦   «          |                     d| j        dd| j        ¬ ¦  «         |                     d!| j        dd"| j        ¬ ¦  «         |                     d#| j        dd$| j        ¬ ¦  «         |                     d%| j        dd&| j        ¬ ¦  «         |                     d'| j        dd(| j        ¬ ¦  «         |                     d)d|¬¦  «         t          |d¬¦  «        }|                     d*d| j        d¬+¦  «         |                     d,d| j        d-d.¬/¦  «         |                     d0d| j        dd1¬/¦  «         |                     d2d| j        d3d4¬/¦  «         |                     d5d	|¬¦  «         t          |d¬¦  «        }|                     d6d| j        ¬7¦  «         |                     d8d| j        d9¬¦  «         |                     d:d|¬¦  «         |                     |¬;¦  «         d S )<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Èuð 	ñ 	
ô 	
ð 	
ð 	×ÒØ'ØØ”OØ ð	 	ñ 	
ô 	
ð 	
ð 	×ÒØ A¨t¬|Èð 	ñ 	
ô 	
ð 	
ð 	×Ò &°A¸HÐÑEÔEÐEå˜¨Ð+Ñ+Ô+ˆØ×ÒØ ØØÔ%Ø ð	 	ñ 	
ô 	
ð 	
ð 	×ÒØØØÔ&Ø ð	 	ñ 	
ô 	
ð 	
ð 	×Ò &°A¸HÐÑEÔEÐEå˜¨Ð+Ñ+Ô+ˆØ×ÒØ A¨t¬yÀgð 	ñ 	
ô 	
ð 	
ð 	×ÒÑ Ô Ð Ø×ÒØ Q°´
Èð 	ñ 	
ô 	
ð 	
ð 	×ÒØ a°´È(ð 	ñ 	
ô 	
ð 	
ð 	×ÒÑ Ô Ð Ø×ÒØ A¨t¬yÀhð 	ñ 	
ô 	
ð 	
ð 	×Ò '°Q¸XÐÑFÔFÐFå˜¨Ð+Ñ+Ô+ˆØ× Ò Ø ØØÔ'ØÔ(ð	 	!ñ 	
ô 	
ð 	
ð 	×ÒÑ Ô Ð Ø× Ò ØØ”ZØØØ”Kð 	!ñ 	
ô 	
ð 	
ð 	× Ò ØØ”ZØØØ”Kð 	!ñ 	
ô 	
ð 	
ð 	× Ò ØØ”ZØØØ”Kð 	!ñ 	
ô 	
ð 	
ð 	× Ò ØØ”ZØØØ”Kð 	!ñ 	
ô 	
ð 	
ð 	× Ò ØØ”ZØØØ”Kð 	!ñ 	
ô 	
ð 	
ð 	×Ò &°A¸HÐÑEÔEÐEå˜7¨AÐ.Ñ.Ô.ˆØ×#Ò#Ø ¨A¸¼ÈQð 	$ñ 	
ô 	
ð 	
ð 	×#Ò#Ø"ØØ”]ØØð 	$ñ 	
ô 	
ð 	
ð 	×#Ò#Ø$ØØ”]ØØð 	$ñ 	
ô 	
ð 	
ð 	×#Ò#Ø"ØØ”]ØØð 	$ñ 	
ô 	
ð 	
ð 	×Ò )°q¸{ÐÑKÔKÐKå˜¨Ð+Ñ+Ô+ˆØ×Ò 7°aÀÄÐÑLÔLÐLØ×ÒØ ¨A°t´yÈdð 	ñ 	
ô 	
ð 	
ð 	×Ò &°A¸HÐÑEÔEÐEà�Š˜7ˆÑ#Ô#Ð#Ð#Ð#r8   c                 ó  — t          |¦  «        x| _        }|                     dddd¬¦  «         t          |d| j        ¬¦  «        | _        | j                             d¬¦  «         t          |d	d
¬¦  «        }|                     ddd
d¬¦  «         t          |dd| j        ¬¦  «        | _        t          |dddd| j        ¬¦  «        | _        | j                             d¬¦  «         | j                             ddd
¬¦  «         d S )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Ð;ˆÔ˜mØ×Ò ¨(¸ÀÐÑCÔCÐCÝ$ØÐ 1¸¼
ð 
ñ  
ô  
ˆÔð 	Ô×!Ò! vÐ!Ñ.Ô.Ð.Ý˜m°HÀQÐGÑGÔGˆØ×Ò ¨'¸!À!ÐÑDÔDÐDÝØ i¸IÈDÌJð
ñ 
ô 
ˆŒõ  ØØØØ Ø Ø”ð
ñ 
ô 
ˆŒð 	Œ×Ò &ÐÑ)Ô)Ð)ØŒ×Ò &¨s¸1ÐÑ=Ô=Ð=Ð=Ð=r8   c                 ó¶  — t          |ddddd¬¦  «        | _        | j                             ddd	d¬
¦  «         | j                             ¦   «         x}| _        g | _        g | _        |                     dddddd¬¦  «        | _        | 	                    ddddd¬¦  «        | _
        | 	                    ddddd¬¦  «        | _        | j                             ¦   «         dz   }t          |dd| j        ¬¦  «        | _        t          |dd| j        ¬¦  «        | _        | j                             | j        ¦  «         | j                             | j        ¦  «         d S )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¡  sw  € Ý"ØØØØØØð
ñ 
ô 
ˆŒð 	Œ×Ò ¨°eÀ!ÐÑDÔDÐDØ $¤× 3Ò 3Ñ 5Ô 5Ð5ˆ�”àˆÔØˆÔØ×0Ò0Øˆq�!�Q˜Y°ð 1ñ 
ô 
ˆŒð  ×+Ò+¨A¨q°!°Q¸SÐ+ÑAÔAˆŒØ×+Ò+¨A¨q°!°Q¸YÐ+ÑGÔGˆŒØŒz�~Š~ÑÔ !Ñ#ˆÝ%Ø�G 9°4´>ð
ñ 
ô 
ˆÔõ &ØÐ$¨I¸D¼Nð
ñ 
ô 
ˆÔð 	Œ×Ò Ô 0Ñ1Ô1Ð1ØŒ×Ò Ô 0Ñ1Ô1Ð1Ð1Ð1r8   c                 óÚ	  — | j         d                              ¦   «         }d„ |D ¦   «         \  }}}}| j        D ]}| j                             |¦  «         Œg | _        | j        D ]}| j                             |¦  «         Œg | _        | j                             ¦   «         \  }}	}
}||	z
  dz   }| j                              | j	        ddd|dz
  ¦  «         | j                              | j
        d|dz  dz
  d|dz  dz
  ¦  «         | j                             ¦   «         \  }}	}
}| j                             d	|z
  d
|	z
  ¦  «         | j                             ¦   «         \  }}	}
}| j                             ||
z
  d	z
  d
|	z
  ¦  «         d	}| j                             ¦   «         D ]ß}t          |t           ¦  «        r>dd| j        dd| j        dœ}t'          | j         |fi |¤Ž}d|                     ¦   «         d<   nt+          | j         |d| j        ¬¦  «        }|                     | j        ¦  «         | j                             |¦  «         | j                             |||¦  «         |                     ¦   «         d         dz   }Œàd}| j                             ¦   «         D ]r}t+          | j         |d| j        ¬¦  «        }| j                             |¦  «         | j                             |||¦  «         |                     ¦   «         d         dz   }Œst7          | j        ¦  «        dk    r"|| j        d                              ¦   «         z  }t;          || j                             ¦   «         dz   ¦  «        }| j                             ¦   «         dz   }||t;          ||¦  «        z
  k    r|t;          ||¦  «        z   }| j        D ]}|                     d|z   |z
  d¦  «         Œ| j                             || j                             ¦   «         d         z
  d	z
  d¦  «         ||z   t;          ||¦  «        z
  dz  }| j                              | j        |d|d¦  «         | j                             ¦   «         \  }}	}
}t7          | j        ¦  «        dk    rK|| fd„}| j        d                              |¦  «         | j        d                              | j         ¦  «         |  !                    ¦   «          d S )NÚscrollregionc              3   ó4   K  — | ]}t          |¦  «        V — Œd S ©N©Úint)Ú.0Úcs     r6   ú	<genexpr>z)ShiftReduceApp._redraw.<locals>.<genexpr>Ä  s(   è è € Ð=Ð=¨1¥ A¡¤Ð=Ð=Ð=Ð=Ð=Ð=r8   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                 ó–   — |                       ¦   «         d         |k     r|                     ¦   «          d S |                     ¦   «          d S )Nr   )ÚbboxrŒ   Ú_redraw)ÚwidgetÚmidxr2   s      r6   Ú
drag_shiftz*ShiftReduceApp._redraw.<locals>.drag_shift  s<   € Ø—;’;‘=”= Ô# dÒ*Ð*Ø—J’J‘L”L�L�L�Là—L’L‘N”N�N�N�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ð 	5ˆKØŒL×'Ò'¨Ñ4Ô4Ð4Ð4ØˆÔØÔ-ð 	5ð 	5ˆKØŒL×'Ò'¨Ñ4Ô4Ð4Ð4ØˆÔð  Ô+×0Ò0Ñ2Ô2ÑˆˆR��RØ�‰G�b‰LˆØŒ×Ò˜DœN¨E°1°d¸AÀ¹EÑBÔBÐBØŒ×Ò˜DœN¨A¨q°1©u°r©z¸4ÀÀQÁÈÁÑLÔLÐLð  Ô+×0Ò0Ñ2Ô2ÑˆˆR��RØÔ×Ò˜a "™f a¨"¡fÑ-Ô-Ð-ØÔ+×0Ò0Ñ2Ô2ÑˆˆR��RØÔ×Ò˜c B™h¨™l¨A°©FÑ3Ô3Ð3ð ˆØ”<×%Ò%Ñ'Ô'ð 	+ð 	+ˆCÝ˜#�tÑ$Ô$ð Yà"+Ø"#Ø!%¤Ø"+Ø"+Ø!%¤ðð �õ -¨T¬\¸3ÐJÐJÀ'ÐJÐJ�Ø*3�—’‘”˜wÑ'Ð'å# D¤L°#¸YÈTÌZÐXÑXÔX�Ø×Ò˜dÔ0Ñ1Ô1Ð1ØÔ×%Ò% fÑ-Ô-Ð-ØŒL×#Ò# F¨F°AÑ6Ô6Ð6Ø—[’[‘]”] 1Ô%¨Ñ*ˆFˆFð ˆ
Ø”<×.Ò.Ñ0Ô0ð 	.ð 	.ˆCÝ ¤¨c¸ÈÌÐTÑTÔTˆFØÔ×%Ò% fÑ-Ô-Ð-ØŒL×#Ò# F¨J¸Ñ:Ô:Ð:ØŸš™œ qÔ)¨AÑ-ˆJˆJõ ˆtÔ!Ñ"Ô" QÒ&Ð&Ø�dÔ(¨Ô+×1Ò1Ñ3Ô3Ñ3ˆFõ
 �V˜TÔ-×3Ò3Ñ5Ô5¸Ñ:Ñ;Ô;ˆØÔ&×,Ò,Ñ.Ô.°Ñ3ˆØ�S�3˜z¨;Ñ7Ô7Ñ7Ò7Ð7Ø�3˜z¨;Ñ7Ô7Ñ7ˆCØÔ-ð 	6ð 	6ˆKØ×Ò˜Q ™W zÑ1°1Ñ5Ô5Ð5Ð5ØÔ×Ò˜c DÔ$4×$9Ò$9Ñ$;Ô$;¸AÔ$>Ñ>ÀÑBÀAÑFÔFÐFà˜‘�s :¨{Ñ;Ô;Ñ;¸qÑ@ˆØŒ×Ò˜DœN¨D°!°T¸4Ñ@Ô@Ð@ØÔ+×0Ò0Ñ2Ô2ÑˆˆR��Rõ ˆtÔ!Ñ"Ô" QÒ&Ð&à(,°4ð #ð #ð #ð #ð Ô˜qÔ!×+Ò+¨JÑ7Ô7Ð7ØÔ˜qÔ!×,Ò,¨T¬ZÑ8Ô8Ð8ð 	×#Ò#Ñ%Ô%Ð%Ð%Ð%r8   c                 ó†   — |                      ¦   «         d         dz   }| j                             | j        |d|d¦  «         d S )NrK   é2   r   rù   )r  r.   r	  rì   )r2   r  r  s      r6   Ú_draw_stack_topzShiftReduceApp._draw_stack_top  s?   € à�{Š{‰}Œ}˜QÔ "Ñ$ˆØŒ×Ò˜DœN¨D°!°T¸4Ñ@Ô@Ð@Ð@Ð@r8   c                 óÜ   — | j                              dd¦  «         | j                             ¦   «         D ]6}| j                             |¦  «        }| j                              |¦  «         Œ7d S )Nr   r\   )ri   Úselection_clearr    Úreducible_productionsrl   ÚindexÚselection_set)r2   Úprodr)  s      r6   r  z%ShiftReduceApp._highlight_productions  sp   € àŒ×&Ò& q¨%Ñ0Ô0Ð0Ø”L×6Ò6Ñ8Ô8ð 	0ð 	0ˆDØÔ%×+Ò+¨DÑ1Ô1ˆEØŒN×(Ò(¨Ñ/Ô/Ð/Ð/ð	0ð 	0r8   c                 óX   — | j         €d S | j                              ¦   «          d | _         d S ró   )r!   rŠ   ©r2   r�   s     r6   rŠ   zShiftReduceApp.destroy)  s.   € ØŒ9ÐØˆFØŒ	×ÒÑÔÐØˆŒ	ˆ	ˆ	r8   c                 ó”   — | j                              | j        ¦  «         d| j        d<   d| j        d<   |                      ¦   «          d S )Nz	Reset Appr   r   )r    Ú
initializer   r1   rØ   r  r-  s     r6   r0   zShiftReduceApp.reset/  sC   € ØŒ×Ò ¤
Ñ+Ô+Ð+Ø"-ˆŒ˜ÑØ"$ˆŒ˜ÑØ�Š‰Œˆˆˆr8   c                 óþ   — |                       ¦   «         rdS |                      ¦   «         rdS t          | j                             ¦   «         ¦  «        rd| j        d<   d| j        d<   d S d| j        d<   d| j        d<   d S )NTz	Finished:r   ÚSuccessÚFailure)r�   rŒ   rj   r    Úparsesr1   rØ   r-  s     r6   r‹   zShiftReduceApp.step5  s†   € Ø�;Š;‰=Œ=ð 
	4Ø�4Ø�ZŠZ‰\Œ\ð 	4Ø�4å�D”L×'Ò'Ñ)Ô)Ñ*Ô*ð 4Ø*5�” Ñ'Ø*3�” Ñ'Ð'Ð'à*5�” Ñ'Ø*3�” Ñ'Ð'Ð'r8   c                 ó>  — | j         rd S | j                             ¦   «         rz| j                             ¦   «         d         }d| j        d<   d|z  | j        d<   | j                             ¦   «         r|                      ¦   «          n|  	                    ¦   «          dS dS )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ž   € ØÔð 	ØˆFØŒ<×ÒÑÔð 	Ø”,×$Ò$Ñ&Ô& rÔ*ˆCØ&.ˆDŒO˜FÑ#Ø&*¨S¡jˆDŒO˜FÑ#ØŒ}× Ò Ñ"Ô"ð Ø×#Ò#Ñ%Ô%Ð%Ð%à—’‘”�Ø�4Øˆur8   c                 ó   — | j         rd S | j                             ¦   «         }|rYd| j        d<   d|z  | j        d<   | j                             ¦   «         r|                      ¦   «          n|                      ¦   «          |S )NúReduce:r   ú%s)	r#   r    r�   r1   rØ   r$   rD   Ú_animate_reducer  )r2   r�   ry   s      r6   r�   zShiftReduceApp.reduceP  sˆ   € ØÔð 	ØˆFØ”\×(Ò(Ñ*Ô*ˆ
Øð 	Ø&/ˆDŒO˜FÑ#Ø&*¨ZÑ&7ˆDŒO˜FÑ#ØŒ}× Ò Ñ"Ô"ð Ø×$Ò$Ñ&Ô&Ð&Ð&à—’‘”�ØÐr8   c                 óv   — | j         rd S | j                             ¦   «         r|                      ¦   «          d S d S ró   )r#   r    rŽ   r  r-  s     r6   rŽ   zShiftReduceApp.undo]  sC   € ØÔð 	ØˆFØŒ<×ÒÑÔð 	Ø�LŠL‰NŒNˆNˆNˆNð	ð 	r8   c                 ó8   — | j                              ¦   «          d S ró   )rä   Úprint_to_filer-  s     r6   r�   zShiftReduceApp.postscriptc  s   € ØŒ×"Ò"Ñ$Ô$Ð$Ð$Ð$r8   c                 óJ   — t          ¦   «         rdS  | j        j        |i |¤Ž dS )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  s5   € õ ‰9Œ9ð 	ØˆFØˆŒ	Ô˜DÐ+ FÐ+Ð+Ð+Ð+Ð+r8   Nc                 óŽ  — |�| j                              |¦  «         | j                              ¦   «         }| j                             t          |¦  «         ¬¦  «         | j                             t          |¦  «         ¬¦  «         | j                             t          |¦  «         ¬¦  «         |                      ¦   «          d S )N)r;   )	rB   r%   rD   rF   Ú	configureÚabsrE   r@   r  )r2   r;   s     r6   rÃ   zShiftReduceApp.resizeu  s£   € ØÐØŒJ�NŠN˜4Ñ Ô Ð ØŒz�~Š~ÑÔˆØŒ
×Ò¥C¨¡I¤I ,ÐÑ/Ô/Ð/ØŒ× Ò ­¨D©	¬	 lÐ Ñ3Ô3Ð3ØŒ×Ò¥s¨4¡y¤y \ÐÑ2Ô2Ð2ð 	�Š‰Œˆˆˆr8   c                 óÞ   — 	 t          | j        dt          pd                     ¦   «         dd¬¦  «         d S #  t          | j        dt          pd                     ¦   «         d¬¦  «         Y d S xY w)Nz%Help: Shift-Reduce Parser Applicationr   éK   Úfixed)rÕ   r:   ©rÕ   )r   r!   Ú__doc__Ústripr-  s     r6   r�   zShiftReduceApp.help†  s–   € ð	ÝØ”	Ø7Ý�˜B×%Ò%Ñ'Ô'ØØðñ ô ð ð ð øð	ÝØ”	Ø7Ý�˜B×%Ò%Ñ'Ô'Øð	ñ ô ð ð ð ð øøøs	   ‚26 ¶3A,c                 ó–   — d}d}	 ddl m}  |||¬¦  «                             ¦   «          d S #  t          | j        ||¦  «         Y d S xY w)Nz<NLTK Shift-Reduce Parser Application
Written by Edward Loperz&About: Shift-Reduce Parser Applicationr   )ÚMessage)Úmessager"   )Útkinter.messageboxrK  Úshowr   r!   )r2   r�   ÚABOUTÚTITLErK  s        r6   rÄ   zShiftReduceApp.about˜  sp   € ØTˆØ8ˆð	.Ø2Ð2Ð2Ð2Ð2Ð2àˆG˜E¨Ð/Ñ/Ô/×4Ò4Ñ6Ô6Ð6Ð6Ð6øð	.Ý�T”Y  uÑ-Ô-Ð-Ð-Ð-Ð-øøøs	   †%- ­Ac                 ój   — t          | j        | j                             ¦   «         | j        ¦  «         d S ró   )r   r!   r    r3   Úset_grammarr-  s     r6   r‘   zShiftReduceApp.edit_grammar¢  s-   € Ý�$”)˜Tœ\×1Ò1Ñ3Ô3°TÔ5EÑFÔFÐFÐFÐFr8   c                 ó  — | j                              |¦  «         t          |                     ¦   «         ¦  «        | _        | j                             dd¦  «         | j        D ] }| j                             dd|z  ¦  «         Œ!d S )Nr   r\   r]   )r    rR  rj   rk   rl   ri   Údeleterm   )r2   r3   ry   s      r6   rR  zShiftReduceApp.set_grammar¥  sˆ   € ØŒ× Ò  Ñ)Ô)Ð)Ý  ×!4Ò!4Ñ!6Ô!6Ñ7Ô7ˆÔØŒ×Ò˜a Ñ'Ô'Ð'ØÔ+ð 	?ð 	?ˆJØŒN×!Ò! %¨%°*Ñ*<Ñ>Ô>Ð>Ð>ð	?ð 	?r8   c                 ó|   — d                      | j        ¦  «        }d}d}t          | j        ||| j        |¦  «         d S )Nú r§   zEnter a new sentence to parse.)Újoinr   r   r!   Úset_sentence)r2   r�   Úsentencer"   Úinstrs        r6   r’   zShiftReduceApp.edit_sentence¬  s@   € Ø—8’8˜DœJÑ'Ô'ˆØˆØ0ˆÝ�D”I˜x¨°Ô0AÀ5ÑIÔIÐIÐIÐIr8   c                 ó`   — |                      ¦   «         | _        |                      ¦   «          d S ró   )r  r   r0   )r2   r4   s     r6   rX  zShiftReduceApp.set_sentence²  s"   € Ø—Z’Z‘\”\ˆŒ
Ø�
Š
‰Œˆˆˆr8   c                 óî   — | j                              ¦   «         r.| j                             ddd| j        ¬¦  «         d| j        d<   n#| j                             ¦   «          d| j        d<   d| j        d<   d S )	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º  s‡   € ØÔ×!Ò!Ñ#Ô#ð 	5ØŒO× Ò Ø &¨q¸Ô8Kð !ñ ô ð ð '5ˆDŒO˜FÑ#Ð#àŒO×'Ò'Ñ)Ô)Ð)Ø&4ˆDŒO˜FÑ#Ø"$ˆŒ˜ÑÐÐr8   c                 óh  — | j                              ¦   «         }t          |¦  «        dk    rd S t          |d         ¦  «        }| j                             | j        |         ¦  «        }|r\d| j        d<   d|z  | j        d<   | j	         
                    ¦   «         r|                      ¦   «          d S |                      ¦   «          d S | j                              dd¦  «         | j                             ¦   «         D ]6}| j                             |¦  «        }| j                              |¦  «         Œ7d S )Nr   r   r7  r   r8  r\   )ri   Úcurselectionrp   rõ   r    r�   rl   r1   rØ   r$   rD   r9  r  r'  r(  r)  r*  )r2   ÚeventÚ	selectionr)  ry   r+  s         r6   rs   zShiftReduceApp._prodlist_selectÅ  s-  € Ø”N×/Ò/Ñ1Ô1ˆ	Ýˆy‰>Œ>˜QÒÐØˆFÝ�I˜a”LÑ!Ô!ˆØ”\×(Ò(¨Ô):¸5Ô)AÑBÔBˆ
Øð 	4Ø&/ˆDŒO˜FÑ#Ø&*¨ZÑ&7ˆDŒO˜FÑ#ØŒ}× Ò Ñ"Ô"ð Ø×$Ò$Ñ&Ô&Ð&Ð&Ð&à—’‘”���ð ŒN×*Ò*¨1¨eÑ4Ô4Ð4Øœ×:Ò:Ñ<Ô<ð 4ð 4�ØÔ)×/Ò/°Ñ5Ô5�Ø”×,Ò,¨UÑ3Ô3Ð3Ð3ð4ð 4r8   c                 ó�  — | j                              ¦   «         }t          |¦  «        dk    rd S | j                             dd¦  «         |D ]0}| j                             t          |¦  «        | j        ¬¦  «         Œ1| j                             | j	         
                    ¦   «         | j	                             ¦   «         ¦  «         d S )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×8Ò8Ñ:Ô:ˆÝˆ{ÑÔ˜qÒ Ð ØˆFàÔ× Ò   EÑ*Ô*Ð*Ø%ð 	Vð 	VˆJØÔ×)Ò)µ°J±´ÈÌÐ)ÑUÔUÐUÐUØÔ×ÒØŒL×'Ò'Ñ)Ô)¨4¬<×+FÒ+FÑ+HÔ+Hñ	
ô 	
ð 	
ð 	
ð 	
r8   c                 óP  — | j         d         }|                     ¦   «         d         }t          | j        ¦  «        dk    rd}n(| j        d                              ¦   «         d         dz   }| j                             ¦   «         }||z
  dz  |z  }|                      |||¦  «         d S )Nr   r¦   re   rK   r   g      ð?)rç   r  rp   ræ   r$   rD   Ú_animate_shift_frame)r2   r  rY   rJ   ÚdtÚdxs         r6   r5  zShiftReduceApp._animate_shiftê  s©   € àÔ# AÔ&ˆð —’‘”˜aÔ ˆÝˆtÔ!Ñ"Ô" aÒ'Ð'ØˆDˆDàÔ% bÔ)×.Ò.Ñ0Ô0°Ô3°bÑ8ˆDð Œ]×ÒÑ Ô ˆØ�U‰l˜cÑ! BÑ&ˆØ×!Ò! " f¨bÑ1Ô1Ð1Ð1Ð1r8   c                 ó@  — |dk    rEd| _         |                     |d¦  «         | j                             d| j        |dz
  ||¦  «         d S | j        d= | j                             |¦  «         d| _         |                      |¦  «         |  	                    ¦   «          d S )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ˆ9Ø#$ˆDÔ Ø�KŠK˜˜AÑÔÐØŒI�OŠO˜B Ô 9¸5À1¹9ÀfÈbÑQÔQÐQÐQÐQð
 Ô" 1Ð%ØÔ×%Ò% fÑ-Ô-Ð-Ø#$ˆDÔ ð × Ò  Ñ(Ô(Ð(Ø×'Ò'Ñ)Ô)Ð)Ð)Ð)r8   c                 óÄ  — t          | j                             ¦   «         d         ¦  «        }| j        | d …         }t	          |d         t
          ¦  «        r0d|d                              ¦   «                              ¦   «         z   }nd|d                              ¦   «         z   }| j         	                    ¦   «         }|dz  |z  }|  
                    |dz  ||¦  «         d S )Nre   r   é   g       @rK   )rp   r    r  ræ   r  r   r¡   r_   r$   rD   Ú_animate_reduce_frame)r2   Ú
numwidgetsÚwidgetsÚydistrj  Údys         r6   r9  zShiftReduceApp._animate_reduce  sÕ   € å˜œ×+Ò+Ñ-Ô-¨bÔ1Ñ2Ô2ˆ
ØÔ$ j [ \ \Ô2ˆõ �g˜a”jÕ"3Ñ4Ô4ð 	-Ø˜ œ×)Ò)Ñ+Ô+×2Ò2Ñ4Ô4Ñ4ˆEˆEà˜ œ×*Ò*Ñ,Ô,Ñ,ˆEð Œ]×ÒÑ Ô ˆØ�S‰[˜2ÑˆØ×"Ò" 2¨¡6¨7°BÑ7Ô7Ð7Ð7Ð7r8   c                 ó¼  — |dk    rJd| _         |D ]}|                     d|¦  «         Œ| j                             d| j        |dz
  ||¦  «         d S | j        t          |¦  «         d …= |D ]}| j                             |¦  «         Œ| j	         
                    ¦   «         d         }t          |t          ¦  «        st          ¦   «         ‚t          | j        t!          |                     ¦   «         ¦  «        d| j        ¬¦  «        }t'          | j        ||d¬¦  «        }| j                             ¦   «         \  }}}	}
|
|z
  dz   }| j        sd	}n(| j        d                              ¦   «         d         dz   }| j                             |||¦  «         | j                             |¦  «         |                      |¦  «         |                      ¦   «          d| _         d S )
Nr   r   r   re   rú   râ   rK   rG  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ˆ9Ø#$ˆDÔ Ø!ð #ð #�Ø—’˜A˜rÑ"Ô"Ð"Ð"ØŒI�OŠO˜B Ô :¸EÀA¹IÀwÐPRÑSÔSÐSÐSÐSàÔ"¥C¨¡L¤L = ? ?Ð3Ø!ð 3ð 3�Ø”×*Ò*¨6Ñ2Ô2Ð2Ð2Ø”,×$Ò$Ñ&Ô& rÔ*ˆCÝ˜c¥4Ñ(Ô(ð #Ý ‘l”lÐ"ÝØ”�c #§)¢)¡+¤+Ñ.Ô.°iÀdÄnðñ ô ˆEõ ' t¤|°U¸GÈ1ÐMÑMÔMˆFØ#Ô/×4Ò4Ñ6Ô6ÑˆR��R˜Ø�R‘˜"‘ˆAØÔ%ð :Ø��àÔ& rÔ*×/Ò/Ñ1Ô1°!Ô4°rÑ9�ØŒL×#Ò# F¨A¨qÑ1Ô1Ð1ØÔ×%Ò% fÑ-Ô-Ð-ð × Ò  Ñ(Ô(Ð(Ø×'Ò'Ñ)Ô)Ð)ð8 $%ˆDÔ Ð Ð r8   c                 óÄ  — | j                              |j        ¦  «        }| j        |k    rd S |                      ¦   «          d„ | j                              ¦   «         D ¦   «         }||v rqt          | j        |                              ¦   «         ¦  «        }| j	        | d …         D ]4}t          |t          ¦  «        rd|                     ¦   «         d<   Œ/d|d<   Œ5|| _        d S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS © rô   )rö   Úss     r6   ú
<listcomp>z3ShiftReduceApp._highlight_hover.<locals>.<listcomp>d  s   € ÐCÐCÐC •S˜‘V”VÐCÐCÐCr8   z#00a000rã   )ri   Únearestrd   rt   rv   r`  rp   rl   Úrhsræ   r  r   r¡   )r2   ra  r)  rb  Úrhslenr  s         r6   ru   zShiftReduceApp._highlight_hoverY  sò   € à”×&Ò& u¤wÑ/Ô/ˆØŒ;˜%ÒÐØˆFð 	×ÒÑÔÐð DÐC T¤^×%@Ò%@Ñ%BÔ%BÐCÑCÔCˆ	Ø�IÐÐÝ˜Ô*¨5Ô1×5Ò5Ñ7Ô7Ñ8Ô8ˆFØ#Ô1°6°'°(°(Ô;ð 5ð 5�Ý˜kÕ+<Ñ=Ô=ð 5Ø3<�K×%Ò%Ñ'Ô'¨Ñ0Ð0à+4�K Ñ(Ð(ð ˆŒˆˆr8   c                 ó¦   — | j         dk    rd S d| _         | j        D ]4}t          |t          ¦  «        rd|                     ¦   «         d<   Œ/d|d<   Œ5d S )Nre   r—   rã   )rt   ræ   r  r   r¡   )r2   ra  r  s      r6   rv   zShiftReduceApp._clear_hoverp  sp   € àŒ;˜"ÒÐØˆFØˆŒØÔ-ð 	/ð 	/ˆKÝ˜+Õ'8Ñ9Ô9ð /Ø/6�×!Ò!Ñ#Ô# GÑ,Ð,à'.�˜GÑ$Ð$ð		/ð 	/r8   )r   ró   )'Ú__name__Ú
__module__Ú__qualname__rH  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  r5  ri  r9  rp  ru   rv   rz  r8   r6   r   r   W   sR  € € € € € ðð ð$%ð $%ð $%ð $%ðT
Eð 
Eð 
Eð':ð ':ð ':ðR Að  Að  AðD"ð "ð "ðHA$ð A$ð A$ðF>ð >ð >ð.2ð 2ð 2ðBU&ð U&ð U&ðnAð Að Að
0ð 0ð 0ðð ð ðð ð ð4ð 4ð 4ðð ð ðð ð ðð ð ð%ð %ð %ð	,ð 	,ð 	,ðð ð ð ð"ð ð ð$.ð .ð .ðGð Gð Gð?ð ?ð ?ðJð Jð Jðð ð ð	%ð 	%ð 	%ð4ð 4ð 4ð(
ð 
ð 
ð"2ð 2ð 2ð *ð *ð *ð"8ð 8ð 8ð 8%ð 8%ð 8%ð|ð ð ð.	/ð 	/ð 	/ð 	/ð 	/r8   r   c                  ó¼  ‡— ddl m} mŠm} d}ˆfd„|                     ¦   «         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                     ¦   «         }t          ||¦  «                             ¦   «          dS )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  — | ]} ‰|¦  «        V — Œd S ró   rz  )rö   r{  r†  s     €r6   rø   zapp.<locals>.<genexpr>…  s+   øè è € Ð*XÐ*X¸a¨;¨;°q©>¬>Ð*XÐ*XÐ*XÐ*XÐ*XÐ*Xr8   Ú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ž  |  só  ø€ ð :Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9à.€LØ*XÐ*XÐ*XÐ*XÀ<×CUÒCUÑCWÔCWÐ*XÑ*XÔ*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ð. ˆc�!�[Ñ!Ô!€Gð 8×=Ò=Ñ?Ô?€Då�7˜DÑ!Ô!×*Ò*Ñ,Ô,Ð,Ð,Ð,r8   Ú__main__rž  N)rH  Ú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__rz  r8   r6   ú<module>r¨     sB  ðð7ð 7ðr OÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NØ Ð Ð Ð Ð Ð à GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð
ðb/ð b/ð b/ð b/ð b/ñ b/ô b/ð b/ðJ'-ð '-ð '-ðT ˆzÒÐØ€C�E„E€Eàˆ'€€€r8   