+
    ÖÇÜhy�  ã                   óÊ   € R t ^ RIHtHtHtHtHtHtHtH	t	 ^ RI
Ht ^ RIHtHtHt ^ RIHtHtHtHt ^ RIHt ^ RIHt ^ RIHt  ! R R	4      tR
 t]R8X  d   ]! 4        R.tR# )aÏ	  
A graphical tool for exploring the recursive descent parser.

The recursive descent parser maintains a tree, which records the
structure of the portion of the text that has been parsed.  It uses
CFG productions to expand the fringe of the tree, and matches its
leaves against the text.  Initially, the tree contains the start
symbol ("S").  It is shown in the main canvas, to the right of the
list of available expansions.

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

  - "expand" uses a CFG production to add children to a node on the
    fringe of the tree.
  - "match" compares a leaf in the tree to a text token.
  - "backtrack" returns the tree to its state before the most recent
    expand or match operation.

The parser maintains a list of tree locations called a "frontier" to
remember which nodes have not yet been expanded and which leaves have
not yet been matched against the text.  The leftmost frontier node is
shown in green, and the other frontier nodes are shown in blue.  The
parser always performs expand and match operations on the leftmost
element of the frontier.

You can control the parser's operation by using the "expand," "match,"
and "backtrack" 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:

  - If the leftmost frontier element is a token, try matching it.
  - If the leftmost frontier element is a node, try expanding it with
    the first untried expansion.
  - Otherwise, backtrack.

The "expand" button applies the untried expansion whose CFG production
is listed earliest in the grammar.  To manually choose which expansion
to apply, click on a CFG production from the list of available
expansions, on the left side of the main window.

The "autostep" button will let the parser continue applying
applications to the tree until it reaches a complete parse.  You can
cancel an autostep in progress at any time by clicking on the
"autostep" button again.

Keyboard Shortcuts::
      [Space]    Perform the next expand, match, or backtrack operation
      [a]        Step through operations until the next complete parse
      [e]        Perform an expand operation
      [m]        Perform a match operation
      [b]        Perform a backtrack operation
      [Delete]   Reset the parser
      [g]        Show/hide available expansions list
      [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)ÚSteppingRecursiveDescentParser)ÚTree)Úin_idlec                   óP  a € ] tR t^Mt o RtR4R ltR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR5R ltR tR tR tR tR tR tR tR tR tR tR tR t R t!R  t"R! t#R" t$R5R# lt%R$ t&R% t'R& t(R' t)R( t*R) t+R* t,R+ t-R, t.R- t/R. t0R/ t1R0 t2R1 t3R2 t4R3t5V t6R# )6ÚRecursiveDescentAppa®  
A graphical tool for exploring the recursive descent parser.  The tool
displays the parser's tree and the remaining text, and allows the
user to control the parser's operation.  In particular, the user
can expand subtrees on the frontier, match tokens on the frontier
against the text, and backtrack.  A "step" button simply steps
through the parsing process, performing the operations that
``RecursiveDescentParser`` would use.
c                óp  € W n         \        W4      V n        \        4       V n        V P                  P                  R 4       V P                  4        V P                  V P                  4       \        V P                  4      V n	        V P                  P                  ^4       ^ V n        ^ V n        \        V P                  4      V n        V P                  P                  ^4       V P                  V P                  4       V P                  V P                  4       V P!                  V P                  4       V P#                  V P                  4       V P%                  V P                  4       V P                  P'                  V P                   4       V P(                  P+                  RV P,                  4       R# )z$Recursive Descent Parser Applicationz<Configure>N)Ú_sentr   Ú_parserr	   Ú_topÚtitleÚ_init_bindingsÚ_init_fontsr   Ú_animation_framesÚsetÚ_animating_lockÚ	_autostepÚ_show_grammarÚ_init_menubarÚ_init_buttonsÚ_init_feedbackÚ_init_grammarÚ_init_canvasÚ
initializeÚ_canvasÚbindÚ
_configure)ÚselfÚgrammarÚsentÚtraces   &&&&Ú7/usr/lib/python3/dist-packages/nltk/app/rdparser_app.pyÚ__init__ÚRecursiveDescentApp.__init__X   s<  € ØŒ
Ü5°gÓEˆŒô “DˆŒ	Ø�	‰	�‰Ð>Ô?ð 	×ÑÔð 	×Ñ˜Ÿ™Ô#ô "(¨¯	©	Ó!2ˆÔØ×Ñ×"Ñ" 1Ô%Ø ˆÔØˆŒô $ D§I¡IÓ.ˆÔØ×Ñ×Ñ˜qÔ!ð 	×Ñ˜4Ÿ9™9Ô%Ø×Ñ˜4Ÿ9™9Ô%Ø×Ñ˜DŸI™IÔ&Ø×Ñ˜4Ÿ9™9Ô%Ø×Ñ˜$Ÿ)™)Ô$ð 	�‰×Ñ §
¡
Ô+ð 	�‰×Ñ˜-¨¯©Ö9ó    c                óš  € \        \        4       R ,          R7      V n        VP                  RV P                  4       \	        V4      V n        V P
                  P                  V P                  P                  R4      4       \        RRV P
                  P                  4       R7      V n	        \        RV P
                  P                  4       R7      V n
        V P
                  P                  4       ^ 8  d#   V P
                  P                  4       ^,
          pM!V P
                  P                  4       ^,           p\        RRVR7      V n        R# )	Úfont©r5   z*FontÚsizeÚ	helveticaÚbold)ÚfamilyÚweightr7   )r:   r7   N)r
   r   Ú_sysfontÚ
option_addr   Ú_sizer   ÚcgetÚgetÚ	_boldfontÚ_fontÚ_bigfont)r,   ÚrootÚbigs   && r0   r   ÚRecursiveDescentApp._init_fonts‚   sÔ   € ä¤&£(¨6Õ"2Ô3ˆŒØ�‰˜ §¡Ô/ô ˜D“\ˆŒ
Ø�
‰
�‰�t—}‘}×)Ñ)¨&Ó1Ô2ä [¸ÀdÇjÁjÇnÁnÓFVÔWˆŒÜ °4·:±:·>±>Ó3CÔDˆŒ
Ø�:‰:�>‰>Ó˜aÔØ—*‘*—.‘.Ó" QÕ&‰Cà—*‘*—.‘.Ó" QÕ&ˆCÜ K¸ÀSÔIˆŽr3   c                ó2  € \        V4      ;V n        pV P                  P                  R R^R7       \        V P                  V P                  RR7      V n        V P
                  P                  4        \        V P                  RRRRV P                  R	R
R7      V n        V P                  P                  RR ^R7       \        V P                  P                  4       P                  4       4      V n        V P                   F&  pV P                  P                  RRV,          4       K(  	  V P                  P                  \!        \#        V P                  4      ^4      R7       \#        V P                  4      ^8”  dw   \%        V P                  RR7      pV P                  P                  VP&                  R7       VP                  V P                  P(                  R7       VP                  RRR7       V P                  P+                  RV P,                  4       R# )ÚbothÚleft)ÚfillÚsideÚpadxzAvailable Expansions)r5   ÚtextÚsingleÚgrooveÚwhitez#909090ú#004040z#c0f0c0)Ú
selectmodeÚreliefÚ
backgroundÚ
foregroundr5   ÚselectforegroundÚselectbackgroundÚright©rK   rJ   ÚexpandÚendz  %s)ÚheightÚvertical)Úorient)Úyscrollcommand)ÚcommandÚy)rK   rJ   z<<ListboxSelect>>N)r   Ú
_prodframeÚpackr   rA   Ú_prodlist_labelr   rB   Ú	_prodlistÚlistr   r-   ÚproductionsÚ_productionsÚinsertÚconfigÚminÚlenr   r   Úyviewr*   Ú_prodlist_select)r,   ÚparentÚ	listframeÚ
productionÚ
listscrolls   &&   r0   r&   Ú!RecursiveDescentApp._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ô ˆt× Ñ Ó! BÔ&Ü" 4§?¡?¸:ÔFˆJØ�N‰N×!Ñ!°·±Ð!Ô@Ø×Ñ d§n¡n×&:Ñ&:ÐÔ;Ø�O‰O ¨cˆOÔ2ð 	�‰×ÑÐ/°×1FÑ1FÖGr3   c                óŽ  € V P                   P                  R V P                  4       V P                   P                  RV P                  4       V P                   P                  RV P                  4       V P                   P                  RV P                  4       V P                   P                  RV P                  4       V P                   P                  RV P                  4       V P                   P                  RV P                  4       V P                   P                  RV P
                  4       V P                   P                  RV P
                  4       V P                   P                  R	V P
                  4       V P                   P                  R
V P
                  4       V P                   P                  RV P
                  4       V P                   P                  RV P                  4       V P                   P                  RV P                  4       V P                   P                  RV P                  4       V P                   P                  RV P                  4       V P                   P                  RV P                  4       V P                   P                  RV P                  4       V P                   P                  RV P                  4       V P                   P                  RV P                  4       V P                   P                  RV P                  4       V P                   P                  RV P                  4       R# )z<Control-q>z<Control-x>z<Escape>ÚeÚmz<Alt-m>z<Control-m>Úbz<Alt-b>z<Control-b>z<Control-z>z<BackSpace>Úaz<Control-space>z<Control-c>z<space>z<Delete>z<Control-p>z<Control-h>z<F1>z<Control-g>z<Control-t>N)r   r*   ÚdestroyrZ   ÚmatchÚ	backtrackÚautostepÚcancel_autostepÚstepÚresetÚ
postscriptÚhelpÚedit_grammarÚedit_sentence©r,   s   &r0   r   Ú"RecursiveDescentApp._init_bindings·   só  € à�	‰	�‰�} d§l¡lÔ3Ø�	‰	�‰�} d§l¡lÔ3Ø�	‰	�‰�z 4§<¡<Ô0Ø�	‰	�‰�s˜DŸK™KÔ(ð 	�	‰	�‰�s˜DŸJ™JÔ'Ø�	‰	�‰�y $§*¡*Ô-Ø�	‰	�‰�} d§j¡jÔ1Ø�	‰	�‰�s˜DŸN™NÔ+Ø�	‰	�‰�y $§.¡.Ô1Ø�	‰	�‰�} d§n¡nÔ5Ø�	‰	�‰�} d§n¡nÔ5Ø�	‰	�‰�} d§n¡nÔ5Ø�	‰	�‰�s˜DŸM™MÔ*à�	‰	�‰Ð(¨$¯-©-Ô8Ø�	‰	�‰�} d×&:Ñ&:Ô;Ø�	‰	�‰�y $§)¡)Ô,Ø�	‰	�‰�z 4§:¡:Ô.Ø�	‰	�‰�} d§o¡oÔ6ð 	�	‰	�‰�} d§i¡iÔ0Ø�	‰	�‰�v˜tŸy™yÔ)ð 	�	‰	�‰�} d×&7Ñ&7Ô8Ø�	‰	�‰�} d×&8Ñ&8Ö9r3   c           	     óþ  € \        V4      ;V n        pVP                  R R^^R7       \        VRRRV P                  R7      P                  RR7       \        VR	RRV P
                  R7      P                  RR7       \        VR
^ RRV P                  R7      P                  RR7       \        VR^ RRV P                  R7      P                  RR7       \        VR^ RRV P                  R7      P                  RR7       R# )ÚnoneÚbottom©rJ   rK   rL   ÚpadyÚStepz#90c0d0Úblack)rM   rT   rU   r`   rI   ©rK   ÚAutostepÚExpandz#90f090)rM   Ú	underlinerT   rU   r`   ÚMatchÚ	Backtrackz#f0a0a0N)	r   Ú_buttonframerc   r   r~   r|   rZ   rz   r{   )r,   ro   Úbuttonframes   && r0   r$   Ú!RecursiveDescentApp._init_buttonsØ   s   € ä*/°«-Ð7ˆÔ˜KØ×Ñ˜f¨8¸!À!ÐÔDÜØØØ ØØ—I‘Iô	
÷ ‰$�Fˆ$Ô
ÜØØØ ØØ—M‘Mô	
÷ ‰$�Fˆ$Ô
ÜØØØØ ØØ—K‘Kô	
÷ ‰$�Fˆ$Ô
ÜØØØØ ØØ—J‘Jô	
÷ ‰$�Fˆ$Ô
ÜØØØØ ØØ—N‘Nô	
÷ ‰$�Fˆ$Ö
r3   c                óÄ   € ^ V n         V P                  P                  4       w  r#rEVP                  ^,
          pRW#WE3,          V P                  R&   V P                  4        R# )é    z%d %d %d %dÚscrollregionN)r!   Ú_cframer˜   r\   r)   Ú_redraw)r,   ÚeventÚx1Úy1Úx2Úy2s   &&    r0   r+   ÚRecursiveDescentApp._configure  sO   € ØˆŒØŸ<™<×4Ñ4Ó6Ñˆ�Ø�\‰\˜AÕˆØ'4¸ÀÐ7GÕ'Gˆ�‰�^Ñ$Ø�‰Žr3   c           	     óü  € \        V4      ;V n        pVP                  R R^^R7       \        VRV P                  R7      V n        V P
                  P                  RR7       \        VR^R7      pVP                  R R	^^R
7       \        VRRV P                  R7      V n        \        VR^RRV P                  R7      V n        V P                  P                  RR7       V P                  P                  RR ^R7       R# )Úxrˆ   r‰   zLast Operation:)rM   r5   rI   r�   Úsunken)rS   ÚborderrX   )rJ   rK   rZ   rL   z#007070z#f0f0f0)rU   rT   r5   ÚwrQ   )ÚanchorÚwidthrU   rT   r5   rY   N)r   Ú_feedbackframerc   r   rB   Ú_lastoper_labelÚ
_lastoper1Ú
_lastoper2)r,   ro   ÚfeedbackframeÚlastoperframes   &&  r0   r%   Ú"RecursiveDescentApp._init_feedback  sî   € Ü.3°F«mÐ;ˆÔ˜mØ×Ñ ¨(¸ÀÐÔCÜ$ØÐ 1¸¿
¹
ô 
ˆÔð 	×Ñ×!Ñ! vÐ!Ô.Ü˜m°HÀQÔGˆØ×Ñ ¨'¸!À!ÐÔDÜØ i¸IÈDÏJÉJô
ˆŒô  ØØØØ Ø Ø—‘ô
ˆŒð 	�‰×Ñ &ÐÔ)Ø�‰×Ñ &¨s¸1ÐÖ=r3   c                óØ   € \        VR ^
^RR7      V n        V P                  P                  ^RR^R7       V P                  P                  4       ;q n        RV n        . V n        RV n        R# )rP   r£   )rT   Úcloseenoughr¤   rS   rH   Útop)rZ   rJ   rK   rŠ   N)r   r™   rc   Úcanvasr)   Ú_treeÚ_textwidgetsÚ	_textline)r,   ro   r²   s   && r0   r'   Ú RecursiveDescentApp._init_canvas&  si   € Ü"ØØàØØô
ˆŒð 	�‰×Ñ ¨°eÀ!ÐÔDØ $§¡× 3Ñ 3Ó 5Ð5ˆ”ð ˆŒ
ØˆÔØˆŽr3   c                óÈ  € \        V4      p\        V^ R7      pVP                  R^ V P                  RR7       VP                  R^ V P                  RR7       VP                  R^V P                  RR7       VP                  R	^ VR
7       \        V^ R7      pVP                  R^V P                  RR7       VP                  R^V P                  RR7       VP                  R^ VR
7       \        V^ R7      pVP                  R^V P                  RR7       VP                  4        VP                  R^ V P                  RR7       VP                  R^ V P                  RR7       VP                  4        VP                  R^ V P                  RR7       VP                  R^ VR
7       \        V^ R7      pVP                  R^ V P                  V P                  R7       VP                  4        VP!                  RV P"                  ^ ^
V P$                  R7       VP!                  RV P"                  ^ ^V P$                  R7       VP!                  RV P"                  ^ ^V P$                  R7       VP!                  RV P"                  ^ ^V P$                  R7       VP!                  R V P"                  ^ ^V P$                  R7       VP                  R!^ VR
7       \        V^ R7      pVP!                  R"^ V P&                  ^ R#7       VP!                  R$^ V P&                  ^
R%R&7       VP!                  R'^ V P&                  ^R(R&7       VP!                  R)^ V P&                  ^R*R&7       VP                  R+^VR
7       \        V^ R7      pVP                  R,^ V P(                  R-7       VP                  R.^ V P*                  R/R7       VP                  R0^ VR
7       VP-                  VR17       R2# )3r—   )ÚtearoffzReset ParserÚDel)Úlabelr�   r`   ÚacceleratorzPrint to PostscriptzCtrl-pÚExitzCtrl-xÚFile)rº   r�   ÚmenuzEdit GrammarzCtrl-gú	Edit TextzCtrl-tÚEditr‹   ÚSpacer‘   zCtrl-mr�   zCtrl-er’   zCtrl-bÚApplyúShow Grammar)rº   r�   Úvariabler`   ÚTiny)rº   rÄ   r�   Úvaluer`   ÚSmallÚMediumÚLargeÚHugeÚViewzNo Animation)rº   r�   rÄ   rÆ   zSlow AnimationÚ-)rº   r�   rÄ   rÆ   r»   zNormal AnimationÚ=zFast AnimationÚ+ÚAnimateÚAbout)rº   r�   r`   ÚInstructionsÚF1ÚHelp)r¾   N)r   Úadd_commandr   r€   ry   Úadd_cascader‚   rƒ   r~   Úadd_separatorrz   rZ   r{   Úadd_checkbuttonr"   Ú_toggle_grammarÚadd_radiobuttonr>   Úresizer   Úaboutr�   rj   )	r,   ro   ÚmenubarÚfilemenuÚeditmenuÚrulemenuÚviewmenuÚanimatemenuÚhelpmenus	   &&       r0   r#   Ú!RecursiveDescentApp._init_menubar7  s*  € Ü�v“,ˆä˜¨Ô+ˆØ×ÑØ ¨A°t·z±zÈuð 	ô 	
ð 	×ÑØ'ØØ—O‘OØ ð	 	ô 	
ð 	×ÑØ A¨t¯|©|Èð 	ô 	
ð 	×Ñ &°A¸HÐÔEä˜¨Ô+ˆØ×ÑØ ØØ×%Ñ%Ø ð	 	ô 	
ð 	×ÑØØØ×&Ñ&Ø ð	 	ô 	
ð 	×Ñ &°A¸HÐÔEä˜¨Ô+ˆØ×ÑØ A¨t¯y©yÀgð 	ô 	
ð 	×ÑÔ Ø×ÑØ Q°·
±
Èð 	ô 	
ð 	×ÑØ a°·±È(ð 	ô 	
ð 	×ÑÔ Ø×ÑØ¨°D·N±NÐPXð 	ô 	
ð 	×Ñ '°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¸×8NÑ8NÐVWð 	$ô 	
ð 	×#Ñ#Ø"ØØ×+Ñ+ØØð 	$ô 	
ð 	×#Ñ#Ø$ØØ×+Ñ+ØØð 	$ô 	
ð 	×#Ñ#Ø"ØØ×+Ñ+ØØð 	$ô 	
ð 	×Ñ )°q¸{ÐÔKä˜¨Ô+ˆØ×Ñ 7°aÀÇÁÐÔLØ×ÑØ ¨A°t·y±yÈdð 	ô 	
ð 	×Ñ &°A¸HÐÔEà�‰˜7ˆÖ#r3   c                ó’   € V F  pVP                  4       V,          pK  	  \        V\        4      '       d   VP                  4       pV# ©N)ÚsubtreesÚ
isinstancer   rº   )r,   ÚwidgetÚtreelocÚis   &&& r0   Ú_getÚRecursiveDescentApp._get¾  s;   € ÛˆAØ—_‘_Ó& qÕ)ŠFñ ä�fÔ/×0Ò0Ø—\‘\“^ˆFØˆr3   c           	     ó"  € V P                   pV P                  e&   V P                  P                  V P                  4       V P                   F  pV P                  P                  V4       K   	  V P
                  e&   V P                   P                  V P
                  4       RV P                  P                  4       ) 3pRV P                  P                  4       ) R3pRRR^RVRV/pV P                  P                  4       p\        W3/ VB V n        V P                  P                  V P                  ^^4       RV P                  P                  4       ) 3pV P                  P                  4       ^,          ;rxV P                   U	u. uF  p	\        WV P                   R7      NK  	  up	V n        V P                   Ft  pV P                  P                  V^ ^ 4       VP#                  ^ WrP%                  4       ^,          ,
          ^,
          4       \'        W‚P%                  4       ^,          4      pKv  	  VP)                  RV^,
          R	V^,
          R
R7      V n        V P+                  4        V P-                  4        V P/                  4        R # u up	i )Nr8   r9   Ú
tree_colorú#000000Ú
tree_widthÚ	node_fontÚ	leaf_fontr6   iˆ  Ú.)Údashixìÿÿ)r)   r³   r™   Údestroy_widgetr´   rµ   Údeleter>   r@   r   Útreer   Ú
add_widgetr˜   r   r   rB   ÚmoveÚbboxrk   Úcreate_lineÚ_highlight_nodesÚ_highlight_prodlistÚ_position_text)
r,   r²   ÚtwidgetÚhelvr9   Úattribsr÷   rˆ   ra   Úwords
   &         r0   rš   ÚRecursiveDescentApp._redrawÉ  s  € Ø—‘ˆð �:‰:Ò!Ø�L‰L×'Ñ'¨¯
©
Ô3Ø×(Ô(ˆGØ�L‰L×'Ñ'¨Ö0ñ )à�>‰>Ò%Ø�L‰L×Ñ §¡Ô/ð ˜dŸj™jŸn™nÓ.Ð.Ð/ˆØ˜dŸj™jŸn™nÓ.Ð.°Ð7ˆà˜)Ø˜!Ø˜Ø˜ð	
ˆð �|‰|× Ñ Ó"ˆÜ(¨ÑA¸ÑAˆŒ
Ø�‰×Ñ §
¡
¨B°Ô2ð ˜dŸj™jŸn™nÓ.Ð.Ð/ˆØ—\‘\×.Ñ.Ó0°Õ3Ð3ˆàBFÇ*Â*ó
ÙBL¸$ŒJ�v¨$¯*©*×5Á*ñ
ˆÔð ×(Ô(ˆGØ�L‰L×#Ñ# G¨Q°Ô2Ø�L‰L˜˜F§\¡\£^°AÕ%6Õ6¸Õ:Ô;Ü�A—|‘|“~ aÕ(Ó)ŠAñ )ð  ×+Ñ+¨E°1°qµ5¸$ÀÀAÅÈCÐ+ÓPˆŒð 	×ÑÔØ× Ñ Ô"ð 	×ÑÖùò!
s   Æ Jc                óf   € V P                  4        V P                  4        V P                  4        R # rå   )rü   rý   rþ   r„   s   &r0   Ú_redraw_quickÚ!RecursiveDescentApp._redraw_quickö  s&   € à×ÑÔØ× Ñ Ô"Ø×ÑÖr3   c                óš  € R V P                   P                  4       ) R3pV P                  P                  4       R,           F@  pRV P	                  V P
                  V4      R&   WP	                  V P
                  V4      R&   KB  	  V P                  P                  4       R,           F"  pRV P	                  V P
                  V4      R&   K$  	  R# )	r8   r9   :Né   Nú#20a050Úcolorr5   ºr  NNz#008080N)r>   r@   r   Úfrontierrë   r³   )r,   r9   ré   s   &  r0   rü   Ú$RecursiveDescentApp._highlight_nodesü  s¥   € à˜dŸj™jŸn™nÓ.Ð.°Ð7ˆØ—|‘|×,Ñ,Ó.¨r×2Ð2ˆGØ6?ˆD�I‰I�d—j‘j 'Ó*¨7Ñ3Ø59�I‰I�d—j‘j 'Ó*¨6Ó2ñ 3ð —|‘|×,Ñ,Ó.¨r×2Ð2ˆGØ6?ˆD�I‰I�d—j‘j 'Ó*¨7Ó3ó 3r3   c                óZ  € V P                   P                  ^ R4       V P                  P                  4       pV P                  P	                  4       pV P
                  p\        \        V4      4       F¶  pW4,          V9   d~   W4,          V9   d+   V P                   P                  VRW4,          ,          4       M)V P                   P                  VRW4,          ,          4       V P                   P                  V4       K�  V P                   P                  VRW4,          ,          4       K¸  	  R# )r—   r[   ú %sz %s (TRIED)N)
re   rö   r   Úexpandable_productionsÚuntried_expandable_productionsrh   Úrangerl   ri   Úselection_set)r,   Ú
expandableÚuntriedrg   Úindexs   &    r0   rý   Ú'RecursiveDescentApp._highlight_prodlist  s×   € ð 	�‰×Ñ˜a Ô'Ø—\‘\×8Ñ8Ó:ˆ
Ø—,‘,×=Ñ=Ó?ˆØ×'Ñ'ˆÜœ3˜{Ó+Ö,ˆEØÕ! ZÔ/ØÕ%¨Ô0Ø—N‘N×)Ñ)¨%°¸Õ9KÕ1KÕLà—N‘N×)Ñ)¨%°ÀÕASÕ1SÔTØ—‘×,Ñ,¨UÖ3à—‘×%Ñ% e¨U°[Õ5GÕ-GÖHó -r3   c                ób  € \        V P                  4      pV\        V P                  P                  4       4      ,
          pV P	                  4       R V pV P
                  P                  4       ^ ,          p\        ^ \        V4      4       F‰  pV P                  V,          pW5,          pRVR&   RVR&   VP                  VP                  4       ^ ,          VP                  4       ^ ,          ,
          ^ 4       VP                  4       ^,          ^
,           pK‹  	  \        \        V4      V4       Ff  pV P                  V,          pRVR&   VP                  WFP                  4       ^ ,          ,
          ^ 4       VP                  4       ^,          ^
,           pKh  	  V P                  P                  4       '       d   V P                   F  pRVR&   K
  	  \        ^ \        V4      4       FÉ  pV P                  V,          pW5,          pVP                  4       ^,          VP                  4       ^,          ,
          R,
          p	\        W—P                  4       P                  4       P                  4       ^,          VP                  4       ^,          ,
          ^
,           4      p	VP                  ^ V	4       KË  	  R # )Nú#006040r
  z#a0a0a0z#00a000ç      $@)rl   r   r   Úremaining_textÚ_tree_leavesr³   rú   r  r´   rù   Úcurrently_completeÚmaxro   rº   )
r,   ÚnumwordsÚnum_matchedÚleavesÚxmaxrê   rè   Úleafrÿ   Údys
   &         r0   rþ   Ú"RecursiveDescentApp._position_text  sû  € ä�t—z‘z“?ˆØ¤ T§\¡\×%@Ñ%@Ó%BÓ!CÕCˆØ×"Ñ"Ó$ \ kÐ2ˆØ�z‰z�‰Ó  Õ#ˆÜ�qœ#˜f›+Ö&ˆAØ×&Ñ& qÕ)ˆFØ•9ˆDØ'ˆF�7‰OØ%ˆD�‰MØ�K‰K˜Ÿ	™	› A�¨¯©«°qÕ)9Õ9¸1Ô=Ø—;‘;“= Õ# bÕ(ŠDñ 'ô ”s˜6“{ HÖ-ˆAØ×&Ñ& qÕ)ˆFØ'ˆF�7‰OØ�K‰K˜Ÿ{™{›}¨QÕ/Õ/°Ô3Ø—;‘;“= Õ# bÕ(ŠDñ	 .ð �<‰<×*Ñ*×,Ò,Ø×,Ô,�Ø#,�˜Ó ñ -ô �qœ#˜f›+Ö&ˆAØ×&Ñ& qÕ)ˆFØ•9ˆDØ—‘“˜qÕ! D§I¡I£K°¥NÕ2°TÕ9ˆBÜ�RŸ™›×,Ñ,Ó.×3Ñ3Ó5°aÕ8¸4¿9¹9»;Àq½>ÕIÈBÕNÓOˆBØ�I‰I�a˜Öó 'r3   Nc                ó¸   € Vf   V P                   p\        V\        4      '       d3   . pVP                  4        F  pW P	                  V4      ,          pK  	  V# V.# rå   )r³   rç   r   ræ   r  )r,   r÷   r!  Úchilds   &&  r0   r  Ú RecursiveDescentApp._tree_leaves9  sR   € ØŠ<Ø—:‘:ˆDÜ�dÔ-×.Ò.ØˆFØŸ™ž�Ø×+Ñ+¨EÓ2Õ2’ñ )àˆMà�6ˆMr3   c                óv   € ^ V n         V P                  f   R# V P                  P                  4        RV n        R# ©r—   N)r!   r   ry   ©r,   ru   s   &*r0   ry   ÚRecursiveDescentApp.destroyH  s-   € ØˆŒØ�9‰9ÒÙØ�	‰	×ÑÔØˆŽ	r3   c                óº   € ^ V n         V P                  P                  V P                  4       RV P                  R&   RV P
                  R&   V P                  4        R# )r—   zReset ApplicationrM   Ú N)r!   r   r(   r   rª   r«   rš   r+  s   &*r0   r   ÚRecursiveDescentApp.resetO  sD   € ØˆŒØ�‰×Ñ §
¡
Ô+Ø"5ˆ�‰˜ÑØ"$ˆ�‰˜ÑØ�‰Žr3   c                óÞ   € V P                   P                  4       ^ 8X  d   V P                   P                  ^4       V P                  '       d
   ^ V n        R# ^V n        V P	                  4        R# r*  )r   r@   r   r!   Ú_stepr+  s   &*r0   r|   ÚRecursiveDescentApp.autostepV  sM   € Ø×!Ñ!×%Ñ%Ó'¨1Ô,Ø×"Ñ"×&Ñ& qÔ)Ø�>�>ˆ>ØˆDŽNàˆDŒNØ�J‰JŽLr3   c                ó   € ^ V n         R# r*  )r!   r+  s   &*r0   r}   Ú#RecursiveDescentApp.cancel_autostep_  s	   € àˆŽr3   c                ó4   € ^ V n         V P                  4        R# r*  )r!   r1  r+  s   &*r0   r~   ÚRecursiveDescentApp.stepd  s   € ØˆŒØ�
‰
Žr3   c                ó4   € ^ V n         V P                  4        R# r*  )r!   Ú_matchr+  s   &*r0   rz   ÚRecursiveDescentApp.matchh  s   € ØˆŒØ�‰Žr3   c                ó4   € ^ V n         V P                  4        R# r*  )r!   Ú_expandr+  s   &*r0   rZ   ÚRecursiveDescentApp.expandl  s   € ØˆŒØ�‰Žr3   c                ó4   € ^ V n         V P                  4        R# r*  )r!   Ú
_backtrackr+  s   &*r0   r{   ÚRecursiveDescentApp.backtrackp  s   € ØˆŒØ�‰Ör3   c                óÒ  € V P                   '       d   R # V P                  4       '       d   MsV P                  P                  4       '       d   V P	                  4       '       d   M<V P                  4       '       d   M%RV P                  R&   RV P                  R&   ^ V n        V P                  P                  4       '       d)   ^ V n        V P                  R;;,          R,          uu&   R # R # )NÚFinishedrM   r.  z    [COMPLETE PARSE])
r    r;  r   Úuntried_matchr8  r>  rª   r«   r!   r  r„   s   &r0   r1  ÚRecursiveDescentApp._stept  sª   € Ø××ÐÙð �<‰<�>Š>ØØ�\‰\×'Ñ'×)Ò)¨d¯k©k¯mªmØØ�_‰_×ÒØà&0ˆD�O‰O˜FÑ#Ø&(ˆD�O‰O˜FÑ#ØˆDŒNð �<‰<×*Ñ*×,Ò,ØˆDŒNØ�O‰O˜F×#Ð'=Õ=Õ#ñ -r3   c                óì  € V P                   '       d   R # V P                  P                  4       pV P                  P                  4       pVeŠ   RV P                  R&   W0P
                  R&   V P                  P                  ^ R4       V P                  P                  V4      pV P                  P                  V4       V P                  V^ ,          4       R# RV P                  R&   RV P
                  R&   R# )NúExpand:rM   r[   Tz(all expansions tried)F)r    r   r  rZ   rª   r«   re   Úselection_clearrh   r  r  Ú_animate_expand)r,   ru   Úold_frontierÚrvr  s   &*   r0   r;  ÚRecursiveDescentApp._expand‰  sÄ   € Ø××ÐÙØ—|‘|×,Ñ,Ó.ˆØ�\‰\× Ñ Ó"ˆØŠ>Ø&/ˆD�O‰O˜FÑ#Ø&(�O‰O˜FÑ#Ø�N‰N×*Ñ*¨1¨eÔ4Ø×%Ñ%×+Ñ+¨BÓ/ˆEØ�N‰N×(Ñ(¨Ô/Ø× Ñ  ¨a¥Ô1Ùà&/ˆD�O‰O˜FÑ#Ø&>ˆD�O‰O˜FÑ#Ùr3   c                óH  € V P                   '       d   R # V P                  P                  4       pV P                  P                  4       pVe8   RV P                  R&   W0P
                  R&   V P                  V^ ,          4       R# RV P                  R&   RV P
                  R&   R# )NzMatch:rM   Tz(failed)F)r    r   r  rz   rª   r«   Ú_animate_match)r,   ru   rH  rI  s   &*  r0   r8  ÚRecursiveDescentApp._match›  sˆ   € Ø××ÐÙØ—|‘|×,Ñ,Ó.ˆØ�\‰\×ÑÓ!ˆØŠ>Ø&.ˆD�O‰O˜FÑ#Ø&(�O‰O˜FÑ#Ø×Ñ ¨Q¥Ô0Ùà&.ˆD�O‰O˜FÑ#Ø&0ˆD�O‰O˜FÑ#Ùr3   c                ó|  € V P                   '       d   R # V P                  P                  4       '       dã   V P                  P                  4       pV P                  P	                  4       ^ ,           F  pW#,          pK  	  RV P
                  R&   RV P                  R&   \        V\        4      '       d3   V P                  V P                  P	                  4       ^ ,          4       R# V P                  V P                  P	                  4       ^ ,          4       R# ^ V n        RV P
                  R&   RV P                  R&   R# )Nr’   rM   r.  TrA  F)r    r   r{   r÷   r  rª   r«   rç   r   Ú_animate_backtrackÚ_animate_match_backtrackr!   )r,   ru   Úeltrê   s   &*  r0   r>  ÚRecursiveDescentApp._backtrackª  sõ   € Ø××ÐÙØ�<‰<×!Ñ!×#Ò#Ø—,‘,×#Ñ#Ó%ˆCØ—\‘\×*Ñ*Ó,¨Q×/Ð/�Ø•f’ñ 0à&1ˆD�O‰O˜FÑ#Ø&(ˆD�O‰O˜FÑ#Ü˜#œt×$Ò$Ø×'Ñ'¨¯©×(=Ñ(=Ó(?ÀÕ(BÔCñ ð ×-Ñ-¨d¯l©l×.CÑ.CÓ.EÀaÕ.HÔIÙàˆDŒNØ&0ˆD�O‰O˜FÑ#Ø&(ˆD�O‰O˜FÑ#Ùr3   c                ó†   € RpRp ^ RI Hp V! W#R7      P                  4        R#    \        T P                  Y24        R# ; i)z*NLTK Recursive Descent Parser Application
z+About: Recursive Descent Parser Application)ÚMessage)Úmessager   NzANLTK Recursive Descent Parser Application
Written by Edward Loper)Útkinter.messageboxrT  Úshowr   r   )r,   ru   ÚABOUTÚTITLErT  s   &*   r0   rÛ   ÚRecursiveDescentApp.about¾  s?   € àUð 	ð >ˆð	.Ý2á˜EÔ/×4Ñ4Ö6øð	.Ü�T—Y‘Y ×-ús	   †% ¥A c                óü   € ^ V n          \        V P                  R\        ;'       g    RP	                  4       ^KRR7       R#    \        T P                  R\        ;'       g    RP	                  4       ^KR7        R# ; i)r—   z*Help: Recursive Descent Parser Applicationr.  Úfixed)r§   r5   )r§   N)r!   r   r   Ú__doc__Ústripr+  s   &*r0   r�   ÚRecursiveDescentApp.helpÊ  sk   € ØˆŒð	ÜØ—	‘	Ø<Ü—�˜B×%Ñ%Ó'ØØ÷øð	ÜØ—	‘	Ø<Ü—�˜B×%Ñ%Ó'Ø÷	ð ús   ‰A §A Á7A;c                óH   € ^ V n         V P                  P                  4        R# r*  )r!   r™   Úprint_to_filer+  s   &*r0   r€   ÚRecursiveDescentApp.postscriptÝ  s   € ØˆŒØ�‰×"Ñ"Ö$r3   c                ób   € \        4       '       d   R# V P                  P                  ! V/ VB  R# )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)r,   ÚargsÚkwargss   &*,r0   rd  ÚRecursiveDescentApp.mainloopá  s%   € ô �9Š9ÙØ�	‰	×Ò˜DÐ+ FÔ+r3   c                óÖ  € Ve   V P                   P                  V4       V P                   P                  4       pV P                  P	                  \        V4      ) R7       V P                  P	                  \        V4      ) R7       V P                  P	                  \        V4      ) R7       V P                  P	                  \        V^,           4      ) R7       V P                  4        R # )N)r7   )
r>   r   r@   rB   Ú	configureÚabsrA   r<   rC   rš   )r,   r7   s   &&r0   rÚ   ÚRecursiveDescentApp.resizeì  s¢   € ØÒØ�J‰J�N‰N˜4Ô Ø�z‰z�~‰~ÓˆØ�
‰
×Ñ¤C¨£I ,ÐÔ/Ø�‰× Ñ ¬¨D«	 lÐ Ô3Ø�‰×Ñ¤s¨4£y \ÐÔ2Ø�‰×Ñ¤s¨4°!­8£}Ð%5ÐÔ6Ø�‰Žr3   c                ó(  € V P                   P                  4       '       d:   V P                  P                  R R^V P                  R7       RV P
                  R&   M)V P                  P                  4        RV P
                  R&   RV P                  R&   R# )rH   rI   )rJ   rK   rL   ÚafterrÃ   rM   zHide Grammarr.  N)r"   r@   rb   rc   r¨   rª   Úpack_forgetr«   r+  s   &*r0   rØ   Ú#RecursiveDescentApp._toggle_grammarú  sy   € Ø×Ñ×!Ñ!×#Ò#Ø�O‰O× Ñ Ø &¨q¸×8KÑ8Kð !ô ð '5ˆD�O‰O˜FÒ#à�O‰O×'Ñ'Ô)Ø&4ˆD�O‰O˜FÑ#Ø"$ˆ�‰˜Ór3   c                óà  € V P                   P                  4       p\        V4      ^8w  d   R# \        V^ ,          4      pV P                  P                  4       pV P                  P                  V P                  V,          4      pV'       do   RV P                  R&   WPP                  R&   V P                   P                  ^ R4       V P                   P                  V4       V P                  V^ ,          4       R# V P                   P                  ^ R4       V P                  P                  4        F9  pV P                  P                  V4      pV P                   P                  V4       K;  	  R# )r  NrE  rM   r[   )re   Úcurselectionrl   Úintr   r  rZ   rh   rª   r«   rF  r  rG  r  r  )r,   r›   Ú	selectionr  rH  rq   Úprods   &&     r0   rn   Ú$RecursiveDescentApp._prodlist_select  s  € Ø—N‘N×/Ñ/Ó1ˆ	Üˆy‹>˜QÔÙÜ�I˜a•LÓ!ˆØ—|‘|×,Ñ,Ó.ˆØ—\‘\×(Ñ(¨×):Ñ):¸5Õ)AÓBˆ
çØ&/ˆD�O‰O˜FÑ#Ø&0�O‰O˜FÑ#Ø�N‰N×*Ñ*¨1¨eÔ4Ø�N‰N×(Ñ(¨Ô/Ø× Ñ  ¨a¥Ö1ð �N‰N×*Ñ*¨1¨eÔ4ØŸ™×;Ñ;Ö=�Ø×)Ñ)×/Ñ/°Ó5�Ø—‘×,Ñ,¨UÖ3ó >r3   c                óú  € V P                  V P                  V4      pVP                  4       p\        VP                  4       \        4      '       * pV P
                  P                  4       pV F  pWV,          pK  	  \        V P                  VV P                  R ^R R V P                  R7      pRVP                  4       R&   VP                  4       P                  4       R,          w  r‰VP                  4       P                  4       R,          w  r«VP                  WŠ,
          W›,
          4       V'       da   V P                  P                  V^ ^4       VP                  ^VP                  4       P                  4       ^ ,          ,
          ^ 4       Wpn        MVP                  4       P!                  W74       VP#                  4       '       dÆ   VVP                  4       P%                  4       ^,          ,           VP#                  4       ^ ,          P                  4       ^ ,          ^,          ,
          VP#                  4       ^ ,          P                  4       ^,          ^,          ,
          pVP#                  4        F  pVP                  V^ 4       K  	  V P'                  V4       V'       d   V P                  P)                  V4       MVP+                  4        \-        V P.                  P1                  4       ^ R4       Uu. uFB  pR^
\3        ^
V,          V P.                  P1                  4       ,          4      ,          ,          NKD  	  ppVP                  4       ^,          ^,           V P                  P5                  V P6                  4      ^,          ,
          pV^ 8”  dM   V P8                   F  pVP                  ^ V4       K  	  V P                  P                  V P6                  ^ V4       V P;                  W4       R# u upi )rP   )rñ   Ú
leaf_colorrð   rî   Ú
node_colorrò   r	  r
  :Né   Núgray%dNéÿÿÿÿ)rë   r³   ro   rç   r   r   r÷   r   r)   rA   rB   rº   rú   rù   r™   rø   Úreplace_childræ   r§   Ú	_makeroomrõ   ry   r  r   r@   rr  Úcoordsrµ   r´   Ú_animate_expand_frame)r,   ré   Ú	oldwidgetÚoldtreer±   r÷   rê   rè   ÚoldxÚoldyÚnewxÚnewyÚdxÚsubtreer¢   Úcolorsr$  rÿ   s   &&                r0   rG  Ú#RecursiveDescentApp._animate_expand)  sý  € Ø—I‘I˜dŸj™j¨'Ó2ˆ	Ø×"Ñ"Ó$ˆÜ˜WŸ^™^Ó-Ô/@ÓAÔAˆà�|‰|× Ñ Ó"ˆÛˆAØ•7ŠDñ ô %Ø�L‰LØØ—n‘nØØØØØ—j‘jô	
ˆð #,ˆ�‰‹�wÑà—}‘}“×+Ñ+Ó-¨bÕ1‰ˆØ—|‘|“~×*Ñ*Ó,¨RÕ0‰ˆØ�‰�D•K ¥Ô-çØ�L‰L×#Ñ# F¨A¨qÔ1Ø�K‰K˜˜VŸ\™\›^×0Ñ0Ó2°1Õ5Õ5°qÔ9Ø�Jà�N‰NÓ×*Ñ*¨7Ô;ð �?‰?×ÒàØ—,‘,“.×&Ñ&Ó(¨1Õ,õ-à—/‘/Ó# AÕ&×+Ñ+Ó-¨aÕ0°1Õ4õ5ð —/‘/Ó# AÕ&×+Ñ+Ó-¨aÕ0°1Õ4õ5ð ð "Ÿ?™?Ö,�Ø—‘˜R Ö#ñ -ð 	�‰�vÔçØ�L‰L×'Ñ'¨Õ0à�O‰OÔô ˜4×1Ñ1×5Ñ5Ó7¸¸BÔ?ó
á?�ð ˜œS  a¥¨$×*@Ñ*@×*DÑ*DÓ*FÕ!FÓGÕG×HÐHÙ?ð 	ð 
ð �[‰[‹]˜1Õ Õ" T§\¡\×%8Ñ%8¸¿¹Ó%HÈÕ%KÕKˆØ�Œ6Ø×,Ô,�Ø—‘˜Q Ö#ñ -à�L‰L×Ñ˜dŸn™n¨a°Ô4à×"Ñ" 6Ö2ùò
s   Ë9AO8c                ó¨  € VP                  4       p\        V\        4      '       g   R# VP                  4       P	                  V4      pVP                  4       V^,           R pV'       d]   VP                  4       ^,          V^ ,          P                  4       ^ ,          ,
          ^
,           pV F  pVP                  V^ 4       K  	  V^ 8”  du   VP                  4       V^,
          ,          p\        ^ VP                  4       ^,          VP                  4       ^ ,          ,
          ^
,           4      pVP                  V^ 4       V P                  V4       R# )z0
Make sure that no sibling tree bbox's overlap.
N)	ro   rç   r   ræ   r  rú   rù   r  r}  )r,   Útreesegro   r  Ú	rsiblingsr†  ÚsiblingÚlsiblings   &&      r0   r}  ÚRecursiveDescentApp._makeroomj  sþ   € ð —‘Ó!ˆÜ˜&Ô"3×4Ò4Ùà—‘Ó!×'Ñ'¨Ó0ˆð —O‘OÓ% e¨a¥i kÐ2ˆ	ßØ—‘“ Õ" Y¨q¥\×%6Ñ%6Ó%8¸Õ%;Õ;¸bÕ@ˆBÛ$�Ø—‘˜R Ö#ñ %ð �1Œ9Ø—‘Ó(¨°­Õ3ˆHÜ�Q˜Ÿ™›¨Õ*¨W¯\©\«^¸AÕ->Õ>ÀÕCÓDˆBØ�L‰L˜˜QÔð 	�‰�vÖr3   c                óŠ  € \        V4      ^ 8”  d™   ^V n        V^ ,          VR&   VP                  4        FA  p\        V\        4      '       d   V^ ,          VP                  4       R&   K5  V^ ,          VR&   KC  	  V P                  P                  ^2V P                  WR,          4       R# RVR&   VP                  4        F3  p\        V\        4      '       d   RVP                  4       R&   K.  RVR&   K5  	  V P                  4        RVP                  4       R&   ^ V n        V P                  '       d   V P                  4        R# R# )r—   r
  r  rŒ   N)rl   r    ræ   rç   r   rº   r   rm  r  r  r!   r1  )r,   rè   rˆ  r‡  s   &&& r0   r  Ú)RecursiveDescentApp._animate_expand_frame„  s  € Üˆv‹;˜Œ?Ø#$ˆDÔ Ø$ Q�iˆF�7‰OØ!Ÿ?™?Ö,�Ü˜gÔ'8×9Ò9Ø/5°a­y�G—M‘M“O GÓ,à'-¨a¥y�G˜GÓ$ñ	 -ð
 �I‰I�O‰O˜B × :Ñ :¸FÈ2ÅJÖOà%ˆF�7‰OØ!Ÿ?™?Ö,�Ü˜gÔ'8×9Ò9Ø/6�G—M‘M“O GÓ,à'.�G˜GÓ$ñ	 -ð
 ×ÑÔ Ø&-ˆF�L‰L‹N˜7Ñ#Ø#$ˆDÔ Ø�~�~ˆ~Ø—
‘
–ñ r3   c                óž  € V P                   P                  4       ^ 8X  d   . pM. ROpT\        ^V P                   P                  4       ^,           4       Uu. uFB  pR^
\        ^
V,          V P                   P                  4       ,          4      ,          ,          NKD  	  up,          pV P	                  V P
                  V4      P                  4       .pV^ ,          P                  4        FK  p\        V\        4      '       d"   VP                  VP                  4       4       K:  VP                  V4       KM  	  V P                  WB4       R# u upi )r—   rz  N)ú#a00000rï   r“  )r   r@   r  rr  rë   r³   ro   ræ   rç   r   Úappendrº   Ú_animate_backtrack_frame)r,   ré   rˆ  r¢   Úwidgetsr‡  s   &&    r0   rO  Ú&RecursiveDescentApp._animate_backtrack›  s  € à×!Ñ!×%Ñ%Ó'¨1Ô,Ø‰Fâ6ˆFØä˜1˜d×4Ñ4×8Ñ8Ó:¸QÕ>Ô?ó
á?�ð ˜œS  a¥¨4×+AÑ+A×+EÑ+EÓ+GÕ!HÓIÕI×JÐJÙ?ñ
õ 	
ˆð
 —9‘9˜TŸZ™Z¨Ó1×8Ñ8Ó:Ð;ˆØ˜q•z×*Ñ*Ö,ˆGÜ˜'Ô#4×5Ò5Ø—‘˜wŸ}™}›Ö/à—‘˜wÖ'ñ	 -ð 	×%Ñ% gÖ6ùò
s   ÁAE
c                óÀ  € \        V4      ^ 8”  dM   ^V n        V F  pV^ ,          VR&   K  	  V P                  P                  ^2V P                  WR,          4       R# V^ ,          P                  4        F+  pV^ ,          P                  V4       VP                  4        K-  	  V P                  4        ^ V n        V P                  '       d   V P                  4        R# R# )r—   r
  r  N)rl   r    r   rm  r•  ræ   Úremove_childry   r  r!   r1  )r,   r–  rˆ  rè   s   &&& r0   r•  Ú,RecursiveDescentApp._animate_backtrack_frame¯  sª   € Üˆv‹;˜Œ?Ø#$ˆDÔ Û!�Ø"(¨¥)��w“ñ "à�I‰I�O‰O˜B × =Ñ =¸wÈrÍ
ÖSà! !�*×-Ñ-Ö/�Ø˜•
×'Ñ'¨Ô/Ø—‘Ö ñ 0ð ×ÑÔ Ø#$ˆDÔ Ø�~�~ˆ~Ø—
‘
–ñ r3   c                ó”  € V P                  V P                  V4      pVP                  4       P                  4       pVP	                  4       ^,          VP	                  4       ^,          ,
          ^,           \        ^V P                  P                  4       4      ,          pV P                  V P                  P                  4       W$4       R# )é   N)	rë   r³   ro   rº   rú   r  r   r@   Ú_animate_match_backtrack_frame)r,   ré   rè   Únoder$  s   &&   r0   rP  Ú,RecursiveDescentApp._animate_match_backtrack¾  s�   € Ø—‘˜4Ÿ:™: wÓ/ˆØ�}‰}‹×$Ñ$Ó&ˆØ�i‰i‹k˜!�n˜vŸ{™{›}¨QÕ/Õ/°"Õ4¼Øˆt×%Ñ%×)Ñ)Ó+ó9
õ 
ˆð 	×+Ñ+¨D×,BÑ,B×,FÑ,FÓ,HÈ&ÖUr3   c                óz  € V P                  V P                  V4      pV P                  ^ ,          P                  4       ^,          VP                  4       ^,          ,
          R,
          \	        ^V P
                  P                  4       4      ,          pV P                  V P
                  P                  4       W#4       R# )r—   r  N)rë   r³   r´   rú   r  r   r@   Ú_animate_match_frame)r,   ré   rè   r$  s   &&  r0   rL  Ú"RecursiveDescentApp._animate_matchÆ  s‹   € Ø—‘˜4Ÿ:™: wÓ/ˆà×Ñ Õ"×'Ñ'Ó)¨!Õ,¨v¯{©{«}¸QÕ/?Õ?À$ÕFÌ#Øˆt×%Ñ%×)Ñ)Ó+óK
õ 
ˆð 	×!Ñ! $×"8Ñ"8×"<Ñ"<Ó">ÀÖKr3   c                ó(  € V^ 8”  dK   ^V n         VP                  ^ V4       V P                  P                  ^
V P                  V^,
          W#4       R# RVR&   V P                  4        ^ V n         V P                  '       d   V P                  4        R# R# )r—   r  r
  N)r    rù   r   rm  r¡  r  r!   r1  ©r,   Úframerè   r$  s   &&&&r0   r¡  Ú(RecursiveDescentApp._animate_match_frameÎ  ss   € Ø�1Œ9Ø#$ˆDÔ Ø�K‰K˜˜2ÔØ�I‰I�O‰O˜B × 9Ñ 9¸5À1½9ÀfÖQà'ˆF�7‰OØ×ÑÔ Ø#$ˆDÔ Ø�~�~ˆ~Ø—
‘
–ñ r3   c                ó\  € V^ 8”  dK   ^V n         VP                  ^ V4       V P                  P                  ^
V P                  V^,
          W#4       R# VP                  4       P                  V4       VP                  4        ^ V n         V P                  '       d   V P                  4        R# R# r*  )
r    rù   r   rm  r�  ro   r™  ry   r!   r1  r¤  s   &&&&r0   r�  Ú2RecursiveDescentApp._animate_match_backtrack_frameÚ  s�   € Ø�1Œ9Ø#$ˆDÔ Ø�K‰K˜˜2ÔØ�I‰I�O‰OØ�D×7Ñ7¸À½ÀFöð �M‰M‹O×(Ñ(¨Ô0Ø�N‰NÔØ#$ˆDÔ Ø�~�~ˆ~Ø—
‘
–ñ r3   c                óx   € \        V P                  V P                  P                  4       V P                  4       R # rå   )r   r   r   r-   Úset_grammarr+  s   &*r0   r‚   Ú RecursiveDescentApp.edit_grammarè  s%   € Ü�$—)‘)˜TŸ\™\×1Ñ1Ó3°T×5EÑ5EÖFr3   c                ó  € V P                   P                  V4       \        VP                  4       4      V n        V P
                  P                  ^ R4       V P                   F&  pV P
                  P                  RRV,          4       K(  	  R# )r—   r[   r  N)r   rª  rf   rg   rh   re   rö   ri   )r,   r-   rq   s   && r0   rª  ÚRecursiveDescentApp.set_grammarë  sg   € Ø�‰× Ñ  Ô)Ü  ×!4Ñ!4Ó!6Ó7ˆÔØ�‰×Ñ˜a Ô'Ø×+Ô+ˆJØ�N‰N×!Ñ! %¨%°*Õ*<Ö>ó ,r3   c                óˆ   € R P                  V P                  4      pRpRp\        V P                  W$V P                  V4       R# )Ú r¿   zEnter a new sentence to parse.N)Újoinr   r   r   Úset_sentence)r,   ru   Úsentencer   Úinstrs   &*   r0   rƒ   Ú!RecursiveDescentApp.edit_sentenceò  s6   € Ø—8‘8˜DŸJ™JÓ'ˆØˆØ0ˆÜ�D—I‘I˜x°×0AÑ0AÀ5ÖIr3   c                óP   € VP                  4       V n        V P                  4        R # rå   )Úsplitr   r   )r,   r²  s   &&r0   r±  Ú RecursiveDescentApp.set_sentenceø  s   € Ø—^‘^Ó%ˆŒ
Ø�
‰
Žr3   )r    r   r!   rC   rA   r“   r)   r™   r¨   rB   rª   r«   r©   r   rb   re   rd   rh   r   r"   r>   r<   rµ   r´   r   r³   )r—   rå   )7Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r]  r1   r   r&   r   r$   r+   r%   r'   r#   rë   rš   r  rü   rý   rþ   r  ry   r   r|   r}   r~   rz   rZ   r{   r1  r;  r8  r>  rÛ   r�   r€   rd  rÚ   rØ   rn   rG  r}  r  rO  r•  rP  rL  r¡  r�  r‚   rª  rƒ   r±  Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r0   r   r   M   s  ø‡ € ñô$:òTJò""HòH:òB)ò`ò>ò.ò"A$òNò+òZò@òIò$ ôD	òòòòò
òòòò>ò*ò$òò(
.òò&%ò	,ôò	%ò,4ò2?3òBò4ò.7ò(òVòLò
òòGò?òJ÷ð r3   r   c                 ó†   € ^ RI Hp  V P                  R4      pRP                  4       p\	        W4      P                  4        R# )zJ
Create a recursive descent parser demo, using a simple grammar and
text.
)ÚCFGaD  
    # Grammatical productions.
        S -> NP VP
        NP -> Det N PP | Det N
        VP -> V NP PP | V NP | V
        PP -> P NP
    # Lexical productions.
        NP -> 'I'
        Det -> 'the' | 'a'
        N -> 'man' | 'park' | 'dog' | 'telescope'
        V -> 'ate' | 'saw'
        P -> 'in' | 'under' | 'with'
    zthe dog saw a man in the parkN)Únltk.grammarrÀ  Ú
fromstringr¶  r   rd  )rÀ  r-   r.   s      r0   ÚapprÃ  ý  s;   € õ
 !à�n‰nð	ó€Gð  +×0Ñ0Ó2€Dä˜Ó&×/Ñ/Ö1r3   Ú__main__rÃ  N)r]  Ú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__© r3   r0   Ú<module>rÎ     sW   ðñ9÷v O× NÓ NÝ ç GÑ Gß IÓ IÝ 5Ý Ý ÷mñ mò`2ð8 ˆzÔÙ„Eàˆ'‚r3   